Merge branch 'dey-3.2/maint'
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
commit
3c6caabcdf
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
import argparse
|
||||
import cgi
|
||||
import errno
|
||||
import http.server
|
||||
import json
|
||||
import logging
|
||||
|
|
@ -38,6 +39,9 @@ APP_NAME = "Demo server"
|
|||
|
||||
PORT = 9090
|
||||
|
||||
EMMC_SIZE_FILE = "/sys/class/mmc_host/mmc0/mmc0:0001/block/mmcblk0/size"
|
||||
NAND_SIZE_FILE = "/proc/mtd"
|
||||
|
||||
SIZE_KB = "KB"
|
||||
SIZE_MB = "MB"
|
||||
SIZE_GB = "GB"
|
||||
|
|
@ -86,7 +90,19 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler):
|
|||
"""
|
||||
Override.
|
||||
"""
|
||||
if re.search("/ajax/get_device_info", self.path) is not None:
|
||||
if re.search("/ajax/get_device_type", self.path) is not None:
|
||||
# Set the response headers.
|
||||
self._set_headers(200)
|
||||
|
||||
log.debug("Get device info")
|
||||
|
||||
info = {
|
||||
"device_type": read_proc_file("/proc/device-tree/digi,machine,name")
|
||||
}
|
||||
|
||||
# Send the JSON value.
|
||||
self.wfile.write(json.dumps(info).encode(encoding="utf_8"))
|
||||
elif re.search("/ajax/get_device_info", self.path) is not None:
|
||||
# Set the response headers.
|
||||
self._set_headers(200)
|
||||
|
||||
|
|
@ -113,8 +129,10 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler):
|
|||
"bluetooth_mac": get_bt_mac("hci0"),
|
||||
"wifi_mac": read_file("/sys/class/net/wlan0/address").strip().upper() if "wlan0" in list_net_ifaces() else ZERO_MAC,
|
||||
"wifi_ip": get_iface_ip("wlan0") if "wlan0" in list_net_ifaces() else ZERO_IP,
|
||||
"ethernet_mac": read_file("/sys/class/net/eth0/address").strip().upper() if "eth0" in list_net_ifaces() else ZERO_MAC,
|
||||
"ethernet_ip": get_iface_ip("eth0") if "eth0" in list_net_ifaces() else ZERO_IP,
|
||||
"ethernet0_mac": read_file("/sys/class/net/eth0/address").strip().upper() if "eth0" in list_net_ifaces() else ZERO_MAC,
|
||||
"ethernet0_ip": get_iface_ip("eth0") if "eth0" in list_net_ifaces() else ZERO_IP,
|
||||
"ethernet1_mac": read_file("/sys/class/net/eth1/address").strip().upper() if "eth1" in list_net_ifaces() else ZERO_MAC,
|
||||
"ethernet1_ip": get_iface_ip("eth1") if "eth1" in list_net_ifaces() else ZERO_IP,
|
||||
}
|
||||
|
||||
# Send the JSON value.
|
||||
|
|
@ -574,7 +592,21 @@ def get_storage_size():
|
|||
Returns:
|
||||
Integer: The internal storage size, -1 if fails.
|
||||
"""
|
||||
size = read_file("/sys/class/mmc_host/mmc0/mmc0:0001/block/mmcblk0/size")
|
||||
if os.path.exists(NAND_SIZE_FILE):
|
||||
return get_nand_size()
|
||||
if os.path.exists(EMMC_SIZE_FILE):
|
||||
return get_emmc_size()
|
||||
return -1
|
||||
|
||||
|
||||
def get_emmc_size():
|
||||
"""
|
||||
Gets the internal eMMC storage size in KB.
|
||||
|
||||
Returns:
|
||||
Integer: The internal eMMC storage size, -1 if fails.
|
||||
"""
|
||||
size = read_file(EMMC_SIZE_FILE)
|
||||
if size == NOT_AVAILABLE:
|
||||
return -1
|
||||
try:
|
||||
|
|
@ -583,6 +615,30 @@ def get_storage_size():
|
|||
return -1
|
||||
|
||||
|
||||
def get_nand_size():
|
||||
"""
|
||||
Gets the internal NAND storage size in KB.
|
||||
|
||||
Returns:
|
||||
Integer: The internal NAND storage size, -1 if fails.
|
||||
"""
|
||||
total_size = 0
|
||||
mtd_contents = read_file(NAND_SIZE_FILE)
|
||||
if mtd_contents == NOT_AVAILABLE:
|
||||
return -1
|
||||
for line in mtd_contents.splitlines():
|
||||
if line.startswith("mtd"):
|
||||
fields = line.split()
|
||||
if len(fields) < 4:
|
||||
continue
|
||||
try:
|
||||
total_size += int(fields[1], 16)
|
||||
except ValueError:
|
||||
return -1
|
||||
|
||||
return total_size / 1024 # kB
|
||||
|
||||
|
||||
def get_video_resolution():
|
||||
"""
|
||||
Gets the video resolution.
|
||||
|
|
@ -594,7 +650,7 @@ def get_video_resolution():
|
|||
if res == NOT_AVAILABLE:
|
||||
return "-"
|
||||
|
||||
return res.split(":")[1].strip()
|
||||
return res.splitlines()[0].split(":")[1].strip()
|
||||
|
||||
|
||||
def is_dual_system():
|
||||
|
|
|
|||
|
|
@ -36,12 +36,12 @@ Digi Demo - Dashboard
|
|||
</a>
|
||||
|
||||
<div class="nav-right-container">
|
||||
|
||||
<div>
|
||||
<img src="./static/images/board.png" class="device-title-img" title="Device">
|
||||
</div>
|
||||
<div id="device-name">DEY DEVICE</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="bg-light" id="body-row">
|
||||
|
|
@ -53,7 +53,7 @@ Digi Demo - Dashboard
|
|||
<!-- Bootstrap List Group -->
|
||||
|
||||
<ul id="sections" data-pjax class="list-group">
|
||||
<li>
|
||||
<li id="section_dashboard">
|
||||
<a data-pjax href="index.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-tachometer-alt fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -61,7 +61,7 @@ Digi Demo - Dashboard
|
|||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li id="section_multimedia">
|
||||
<a data-pjax href="multimedia.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-film fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -69,7 +69,7 @@ Digi Demo - Dashboard
|
|||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li id="section_management">
|
||||
<a data-pjax href="management.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-cog fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -281,80 +281,6 @@ Digi Demo - Dashboard
|
|||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="cores">
|
||||
<div id="core-1" class="core">
|
||||
<table class="core-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td rowspan="2">
|
||||
<div class="core-name-container">
|
||||
<span class="digi-icon-color fas fa-microchip fa-2x"></span>
|
||||
<span>Core 1</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><span id="core-1-usage">-</span> %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span id="core-1-speed">-</span> MHz</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="core-2" class="core">
|
||||
<table class="core-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td rowspan="2">
|
||||
<div class="core-name-container">
|
||||
<span class="digi-icon-color fas fa-microchip fa-2x"></span>
|
||||
<span>Core 2</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><span id="core-2-usage">-</span> %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span id="core-2-speed">-</span> MHz</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="core-3" class="core">
|
||||
<table class="core-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td rowspan="2">
|
||||
<div class="core-name-container">
|
||||
<span class="digi-icon-color fas fa-microchip fa-2x"></span>
|
||||
<span>Core 3</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><span id="core-3-usage">-</span> %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span id="core-3-speed">-</span> MHz</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div id="core-4" class="core">
|
||||
<table class="core-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td rowspan="2">
|
||||
<div class="core-name-container">
|
||||
<span class="digi-icon-color fas fa-microchip fa-2x"></span>
|
||||
<span>Core 4</span>
|
||||
</div>
|
||||
</td>
|
||||
<td><span id="core-4-usage">-</span> %</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span id="core-4-speed">-</span> MHz</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="memory_panel_area" class="panel-area panel-tooltip" onclick="toggleInfoPanelVisibility('memory')">
|
||||
|
|
@ -541,16 +467,16 @@ Digi Demo - Dashboard
|
|||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div id="ethernet_panel_area" class="panel-area panel-tooltip" onclick="toggleInfoPanelVisibility('ethernet')">
|
||||
<span class="panel-tooltip-text">Ethernet stats</span>
|
||||
<span id="ethernet_panel_icon" class="fas fa-ethernet panel-area-icon"></span>
|
||||
<div id="ethernet0_panel_area" class="panel-area panel-tooltip" onclick="toggleInfoPanelVisibility('ethernet0')">
|
||||
<span id="ethernet0_tooltip" class="panel-tooltip-text">Ethernet 0 stats</span>
|
||||
<span id="ethernet0_panel_icon" class="fas fa-ethernet panel-area-icon"></span>
|
||||
</div>
|
||||
<div id="ethernet_panel" class="device-card ethernet-panel shadow-sm">
|
||||
<span id="ethernet_panel_arrow" class="panel-arrow"></span>
|
||||
<div id="ethernet0_panel" class="device-card ethernet-panel shadow-sm">
|
||||
<span id="ethernet0_panel_arrow" class="panel-arrow"></span>
|
||||
<div class="device-card-header">
|
||||
<span class="fas fa-ethernet fa-lg mr-2"></span>
|
||||
<span>Ethernet stats</span>
|
||||
<div class="fas fa-window-close fa-lg device-card-header-button" onclick="setInfoPanelVisible('ethernet', false)"></div>
|
||||
<span id="ethernet0_title">Ethernet 0 stats</span>
|
||||
<div class="fas fa-window-close fa-lg device-card-header-button" onclick="setInfoPanelVisible('ethernet0', false)"></div>
|
||||
</div>
|
||||
<div class="device-card-content">
|
||||
<table>
|
||||
|
|
@ -559,7 +485,7 @@ Digi Demo - Dashboard
|
|||
<span class="device-card-content-text">Status:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet_state" class="device-card-content-value">-</span>
|
||||
<span id="ethernet0_state" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -567,7 +493,7 @@ Digi Demo - Dashboard
|
|||
<span class="device-card-content-text">MAC address:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet_mac" class="device-card-content-value">-</span>
|
||||
<span id="ethernet0_mac" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -575,7 +501,7 @@ Digi Demo - Dashboard
|
|||
<span class="device-card-content-text">IP address:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet_ip" class="device-card-content-value">-</span>
|
||||
<span id="ethernet0_ip" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -583,7 +509,7 @@ Digi Demo - Dashboard
|
|||
<span class="device-card-content-text">Sent data:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet_sent_data" class="device-card-content-value">-</span>
|
||||
<span id="ethernet0_sent_data" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
@ -591,7 +517,63 @@ Digi Demo - Dashboard
|
|||
<span class="device-card-content-text">Received data:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet_received_data" class="device-card-content-value">-</span>
|
||||
<span id="ethernet0_received_data" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div id="ethernet1_panel_area" class="panel-area panel-tooltip" onclick="toggleInfoPanelVisibility('ethernet1')">
|
||||
<span class="panel-tooltip-text">Ethernet 1 stats</span>
|
||||
<span id="ethernet1_panel_icon" class="fas fa-ethernet panel-area-icon"></span>
|
||||
</div>
|
||||
<div id="ethernet1_panel" class="device-card ethernet-panel shadow-sm">
|
||||
<span id="ethernet1_panel_arrow" class="panel-arrow"></span>
|
||||
<div class="device-card-header">
|
||||
<span class="fas fa-ethernet fa-lg mr-2"></span>
|
||||
<span>Ethernet 1 stats</span>
|
||||
<div class="fas fa-window-close fa-lg device-card-header-button" onclick="setInfoPanelVisible('ethernet1', false)"></div>
|
||||
</div>
|
||||
<div class="device-card-content">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="device-card-content-text">Status:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet1_state" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="device-card-content-text">MAC address:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet1_mac" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="device-card-content-text">IP address:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet1_ip" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="device-card-content-text">Sent data:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet1_sent_data" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="device-card-content-text">Received data:</span>
|
||||
</td>
|
||||
<td>
|
||||
<span id="ethernet1_received_data" class="device-card-content-value">-</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -758,6 +740,7 @@ Digi Demo - Dashboard
|
|||
|
||||
<!-- Local JS files and functions -->
|
||||
<script type="text/javascript" src="./static/js/sidebar.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx6ulsbc.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8mm-dvk.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8m-nano.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8x-sbc-pro.js"></script>
|
||||
|
|
@ -803,6 +786,9 @@ Digi Demo - Dashboard
|
|||
});
|
||||
}
|
||||
|
||||
// Update available sections.
|
||||
updateAvailableSections();
|
||||
|
||||
// Set the selected section.
|
||||
setSelectedSection();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ Digi Demo - Management
|
|||
<!-- Bootstrap List Group -->
|
||||
|
||||
<ul id="sections" data-pjax class="list-group">
|
||||
<li>
|
||||
<li id="section_dashboard">
|
||||
<a data-pjax href="index.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-tachometer-alt fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -61,7 +61,7 @@ Digi Demo - Management
|
|||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li id="section_multimedia">
|
||||
<a data-pjax href="multimedia.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-film fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -69,7 +69,7 @@ Digi Demo - Management
|
|||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li id="section_management">
|
||||
<a data-pjax href="management.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-cog fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -286,6 +286,7 @@ Digi Demo - Management
|
|||
|
||||
<!-- Local JS files and functions -->
|
||||
<script type="text/javascript" src="./static/js/sidebar.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx6ulsbc.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8mm-dvk.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8m-nano.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8x-sbc-pro.js"></script>
|
||||
|
|
@ -331,6 +332,9 @@ Digi Demo - Management
|
|||
});
|
||||
}
|
||||
|
||||
// Update available sections.
|
||||
updateAvailableSections();
|
||||
|
||||
// Set the selected section.
|
||||
setSelectedSection();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ Digi Demo - Multimedia
|
|||
<!-- Bootstrap List Group -->
|
||||
|
||||
<ul id="sections" data-pjax class="list-group">
|
||||
<li>
|
||||
<li id="section_dashboard">
|
||||
<a data-pjax href="index.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-tachometer-alt fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -61,7 +61,7 @@ Digi Demo - Multimedia
|
|||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li id="section_multimedia">
|
||||
<a data-pjax href="multimedia.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-film fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -69,7 +69,7 @@ Digi Demo - Multimedia
|
|||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<li id="section_management">
|
||||
<a data-pjax href="management.html" class="list-group-item list-group-item-action d-flex align-items-center">
|
||||
<div class="d-flex w-100 justify-content-start align-items-center">
|
||||
<span class="digi-menu-icon fas fa-cog fa-fw fa-lg mr-3"></span>
|
||||
|
|
@ -227,6 +227,7 @@ Digi Demo - Multimedia
|
|||
|
||||
<!-- Local JS files and functions -->
|
||||
<script type="text/javascript" src="./static/js/sidebar.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx6ulsbc.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8mm-dvk.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8m-nano.js"></script>
|
||||
<script type="text/javascript" src="./static/js/ccimx8x-sbc-pro.js"></script>
|
||||
|
|
@ -272,6 +273,9 @@ Digi Demo - Multimedia
|
|||
});
|
||||
}
|
||||
|
||||
// Update available sections.
|
||||
updateAvailableSections();
|
||||
|
||||
// Set the selected section.
|
||||
setSelectedSection();
|
||||
});
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 564 KiB |
|
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
* Copyright 2022, Digi International Inc.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
class CCIMX6ULSBC extends ConnectCoreDevice {
|
||||
|
||||
// Public constants.
|
||||
static DEVICE_TYPE = "ccimx6ulsbc";
|
||||
static PLATFORM_NAME = "ConnectCore 6UL SBC Pro";
|
||||
|
||||
// Variables.
|
||||
BOARD_IMAGE = "ccimx6ulsbc_board.png";
|
||||
BOARD_IMAGE_SCALE = 70;
|
||||
|
||||
CPU_COMPONENT_VISIBLE = true;
|
||||
CPU_COMPONENT_HAS_PANEL = true;
|
||||
CPU_COMPONENT_HAS_ARROW = true;
|
||||
CPU_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
CPU_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
|
||||
CPU_COMPONENT_PANEL_HORIZONTAL_PERCENT = 83;
|
||||
CPU_COMPONENT_PANEL_VERTICAL_PERCENT = 18;
|
||||
CPU_COMPONENT_ARROW_PERCENT = 32;
|
||||
CPU_COMPONENT_AREA_TOP_PERCENT = 29;
|
||||
CPU_COMPONENT_AREA_LEFT_PERCENT = 74;
|
||||
CPU_COMPONENT_AREA_WIDTH_PERCENT = 7.5;
|
||||
CPU_COMPONENT_AREA_HEIGHT_PERCENT = 10;
|
||||
|
||||
MEMORY_COMPONENT_VISIBLE = true;
|
||||
MEMORY_COMPONENT_HAS_PANEL = true;
|
||||
MEMORY_COMPONENT_HAS_ARROW = true;
|
||||
MEMORY_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
MEMORY_COMPONENT_PANEL_ORIENTATION = VALUE_RIGHT;
|
||||
MEMORY_COMPONENT_PANEL_HORIZONTAL_PERCENT = 40.5;
|
||||
MEMORY_COMPONENT_PANEL_VERTICAL_PERCENT = 28;
|
||||
MEMORY_COMPONENT_ARROW_PERCENT = 32;
|
||||
MEMORY_COMPONENT_AREA_TOP_PERCENT = 25.5;
|
||||
MEMORY_COMPONENT_AREA_LEFT_PERCENT = 61.25;
|
||||
MEMORY_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
|
||||
MEMORY_COMPONENT_AREA_HEIGHT_PERCENT = 17;
|
||||
|
||||
WIFI_BT_COMPONENT_VISIBLE = true;
|
||||
WIFI_BT_COMPONENT_HAS_PANEL = true;
|
||||
WIFI_BT_COMPONENT_HAS_ARROW = true;
|
||||
WIFI_BT_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
WIFI_BT_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
|
||||
WIFI_BT_COMPONENT_PANEL_HORIZONTAL_PERCENT = 83;
|
||||
WIFI_BT_COMPONENT_PANEL_VERTICAL_PERCENT = 42;
|
||||
WIFI_BT_COMPONENT_ARROW_PERCENT = 47;
|
||||
WIFI_BT_COMPONENT_AREA_TOP_PERCENT = 43;
|
||||
WIFI_BT_COMPONENT_AREA_LEFT_PERCENT = 72.75;
|
||||
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 8.7;
|
||||
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 11.5;
|
||||
|
||||
ETHERNET0_COMPONENT_VISIBLE = true;
|
||||
ETHERNET0_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET0_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM;
|
||||
ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = -4;
|
||||
ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 36;
|
||||
ETHERNET0_COMPONENT_ARROW_PERCENT = 18;
|
||||
ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 66;
|
||||
ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 11.5;
|
||||
ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 17.25;
|
||||
ETHERNET0_COMPONENT_AREA_HEIGHT_PERCENT = 29;
|
||||
|
||||
ETHERNET1_COMPONENT_VISIBLE = true;
|
||||
ETHERNET1_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET1_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET1_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET1_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM;
|
||||
ETHERNET1_COMPONENT_PANEL_HORIZONTAL_PERCENT = 33;
|
||||
ETHERNET1_COMPONENT_PANEL_VERTICAL_PERCENT = 36;
|
||||
ETHERNET1_COMPONENT_ARROW_PERCENT = 35;
|
||||
ETHERNET1_COMPONENT_AREA_TOP_PERCENT = 66;
|
||||
ETHERNET1_COMPONENT_AREA_LEFT_PERCENT = 28.5;
|
||||
ETHERNET1_COMPONENT_AREA_WIDTH_PERCENT = 16.5;
|
||||
ETHERNET1_COMPONENT_AREA_HEIGHT_PERCENT = 29;
|
||||
|
||||
CONSOLE_COMPONENT_VISIBLE = true;
|
||||
CONSOLE_COMPONENT_HAS_PANEL = false;
|
||||
CONSOLE_COMPONENT_HAS_ARROW = false;
|
||||
CONSOLE_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
CONSOLE_COMPONENT_AREA_TOP_PERCENT = 20;
|
||||
CONSOLE_COMPONENT_AREA_LEFT_PERCENT = 10;
|
||||
CONSOLE_COMPONENT_AREA_WIDTH_PERCENT = 4.25;
|
||||
CONSOLE_COMPONENT_AREA_HEIGHT_PERCENT = 9.5;
|
||||
|
||||
VIDEO_COMPONENT_VISIBLE = true;
|
||||
VIDEO_COMPONENT_HAS_PANEL = true;
|
||||
VIDEO_COMPONENT_HAS_ARROW = true;
|
||||
VIDEO_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
VIDEO_COMPONENT_PANEL_ORIENTATION = VALUE_TOP;
|
||||
VIDEO_COMPONENT_PANEL_HORIZONTAL_PERCENT = 19;
|
||||
VIDEO_COMPONENT_PANEL_VERTICAL_PERCENT = 16;
|
||||
VIDEO_COMPONENT_ARROW_PERCENT = 25.5;
|
||||
VIDEO_COMPONENT_AREA_TOP_PERCENT = 6;
|
||||
VIDEO_COMPONENT_AREA_LEFT_PERCENT = 16.75;
|
||||
VIDEO_COMPONENT_AREA_WIDTH_PERCENT = 21;
|
||||
VIDEO_COMPONENT_AREA_HEIGHT_PERCENT = 8;
|
||||
|
||||
AUDIO_COMPONENT_VISIBLE = false;
|
||||
AUDIO_COMPONENT_HAS_PANEL = true;
|
||||
AUDIO_COMPONENT_HAS_ARROW = true;
|
||||
AUDIO_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
AUDIO_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM;
|
||||
AUDIO_COMPONENT_PANEL_HORIZONTAL_PERCENT = 51;
|
||||
AUDIO_COMPONENT_PANEL_VERTICAL_PERCENT = 28;
|
||||
AUDIO_COMPONENT_ARROW_PERCENT = 69;
|
||||
AUDIO_COMPONENT_AREA_TOP_PERCENT = 74;
|
||||
AUDIO_COMPONENT_AREA_LEFT_PERCENT = 66;
|
||||
AUDIO_COMPONENT_AREA_WIDTH_PERCENT = 9.3;
|
||||
AUDIO_COMPONENT_AREA_HEIGHT_PERCENT = 18.5;
|
||||
|
||||
LED_COMPONENT_VISIBLE = true;
|
||||
LED_COMPONENT_HAS_PANEL = true;
|
||||
LED_COMPONENT_HAS_ARROW = false;
|
||||
LED_COMPONENT_PANEL_ALWAYS_VISIBLE = true;
|
||||
LED_COMPONENT_PANEL_ORIENTATION = VALUE_TOP;
|
||||
LED_COMPONENT_PANEL_HORIZONTAL_PERCENT = 14.5;
|
||||
LED_COMPONENT_PANEL_VERTICAL_PERCENT = 21;
|
||||
LED_COMPONENT_AREA_TOP_PERCENT = 16;
|
||||
LED_COMPONENT_AREA_LEFT_PERCENT = 15.5;
|
||||
LED_COMPONENT_AREA_WIDTH_PERCENT = 4.5;
|
||||
LED_COMPONENT_AREA_HEIGHT_PERCENT = 4;
|
||||
|
||||
FLASH_MEMORY_COMPONENT_VISIBLE = true;
|
||||
FLASH_MEMORY_COMPONENT_HAS_PANEL = true;
|
||||
FLASH_MEMORY_COMPONENT_HAS_ARROW = true;
|
||||
FLASH_MEMORY_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
FLASH_MEMORY_COMPONENT_PANEL_ORIENTATION = VALUE_TOP;
|
||||
FLASH_MEMORY_COMPONENT_PANEL_HORIZONTAL_PERCENT = 49;
|
||||
FLASH_MEMORY_COMPONENT_PANEL_VERTICAL_PERCENT = 58.5;
|
||||
FLASH_MEMORY_COMPONENT_ARROW_PERCENT = 65.3;
|
||||
FLASH_MEMORY_COMPONENT_AREA_TOP_PERCENT = 43;
|
||||
FLASH_MEMORY_COMPONENT_AREA_LEFT_PERCENT = 61.25;
|
||||
FLASH_MEMORY_COMPONENT_AREA_WIDTH_PERCENT = 11;
|
||||
FLASH_MEMORY_COMPONENT_AREA_HEIGHT_PERCENT = 12.5;
|
||||
|
||||
|
||||
// Capabilities
|
||||
SUPPORTS_VIDEO_BRIGHTNESS = false;
|
||||
SUPPORTS_DUAL_ETHERNET = true;
|
||||
|
||||
// Constructor.
|
||||
constructor(deviceData) {
|
||||
super(CCIMX6ULSBC.DEVICE_TYPE, CCIMX6ULSBC.PLATFORM_NAME, deviceData);
|
||||
}
|
||||
}
|
||||
|
|
@ -62,18 +62,18 @@ class CCIMX8MNANO extends ConnectCoreDevice {
|
|||
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 4;
|
||||
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 6;
|
||||
|
||||
ETHERNET_COMPONENT_VISIBLE = true;
|
||||
ETHERNET_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
|
||||
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21;
|
||||
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 70;
|
||||
ETHERNET_COMPONENT_ARROW_PERCENT = 78;
|
||||
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 77;
|
||||
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 11;
|
||||
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
|
||||
ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT = 16;
|
||||
ETHERNET0_COMPONENT_VISIBLE = true;
|
||||
ETHERNET0_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET0_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
|
||||
ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21;
|
||||
ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 70;
|
||||
ETHERNET0_COMPONENT_ARROW_PERCENT = 78;
|
||||
ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 77;
|
||||
ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 11;
|
||||
ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
|
||||
ETHERNET0_COMPONENT_AREA_HEIGHT_PERCENT = 16;
|
||||
|
||||
CONSOLE_COMPONENT_VISIBLE = true;
|
||||
CONSOLE_COMPONENT_HAS_PANEL = false;
|
||||
|
|
@ -138,6 +138,7 @@ class CCIMX8MNANO extends ConnectCoreDevice {
|
|||
|
||||
// Capabilities
|
||||
SUPPORTS_VIDEO_BRIGHTNESS = false;
|
||||
SUPPORTS_DUAL_ETHERNET = false;
|
||||
|
||||
// Constructor.
|
||||
constructor(deviceData) {
|
||||
|
|
|
|||
|
|
@ -62,18 +62,18 @@ class CCIMX8MMINI extends ConnectCoreDevice {
|
|||
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 4;
|
||||
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 6;
|
||||
|
||||
ETHERNET_COMPONENT_VISIBLE = true;
|
||||
ETHERNET_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
|
||||
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21;
|
||||
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 70;
|
||||
ETHERNET_COMPONENT_ARROW_PERCENT = 78;
|
||||
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 77;
|
||||
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 11;
|
||||
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
|
||||
ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT = 16;
|
||||
ETHERNET0_COMPONENT_VISIBLE = true;
|
||||
ETHERNET0_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET0_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
|
||||
ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21;
|
||||
ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 70;
|
||||
ETHERNET0_COMPONENT_ARROW_PERCENT = 78;
|
||||
ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 77;
|
||||
ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 11;
|
||||
ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
|
||||
ETHERNET0_COMPONENT_AREA_HEIGHT_PERCENT = 16;
|
||||
|
||||
CONSOLE_COMPONENT_VISIBLE = true;
|
||||
CONSOLE_COMPONENT_HAS_PANEL = false;
|
||||
|
|
@ -138,6 +138,7 @@ class CCIMX8MMINI extends ConnectCoreDevice {
|
|||
|
||||
// Capabilities
|
||||
SUPPORTS_VIDEO_BRIGHTNESS = false;
|
||||
SUPPORTS_DUAL_ETHERNET = false;
|
||||
|
||||
// Constructor.
|
||||
constructor(deviceData) {
|
||||
|
|
|
|||
|
|
@ -62,18 +62,31 @@ class CCIMX8X extends ConnectCoreDevice {
|
|||
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
|
||||
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 10;
|
||||
|
||||
ETHERNET_COMPONENT_VISIBLE = true;
|
||||
ETHERNET_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM;
|
||||
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = -7;
|
||||
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 34;
|
||||
ETHERNET_COMPONENT_ARROW_PERCENT = 18;
|
||||
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 68;
|
||||
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 12;
|
||||
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 17;
|
||||
ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT = 27;
|
||||
ETHERNET0_COMPONENT_VISIBLE = true;
|
||||
ETHERNET0_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET0_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM;
|
||||
ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = -7;
|
||||
ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 34;
|
||||
ETHERNET0_COMPONENT_ARROW_PERCENT = 18;
|
||||
ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 68;
|
||||
ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 12;
|
||||
ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 17;
|
||||
ETHERNET0_COMPONENT_AREA_HEIGHT_PERCENT = 27;
|
||||
|
||||
ETHERNET1_COMPONENT_VISIBLE = true;
|
||||
ETHERNET1_COMPONENT_HAS_PANEL = true;
|
||||
ETHERNET1_COMPONENT_HAS_ARROW = true;
|
||||
ETHERNET1_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET1_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM;
|
||||
ETHERNET1_COMPONENT_PANEL_HORIZONTAL_PERCENT = 29;
|
||||
ETHERNET1_COMPONENT_PANEL_VERTICAL_PERCENT = 34;
|
||||
ETHERNET1_COMPONENT_ARROW_PERCENT = 35;
|
||||
ETHERNET1_COMPONENT_AREA_TOP_PERCENT = 68;
|
||||
ETHERNET1_COMPONENT_AREA_LEFT_PERCENT = 28.5;
|
||||
ETHERNET1_COMPONENT_AREA_WIDTH_PERCENT = 17;
|
||||
ETHERNET1_COMPONENT_AREA_HEIGHT_PERCENT = 27;
|
||||
|
||||
CONSOLE_COMPONENT_VISIBLE = true;
|
||||
CONSOLE_COMPONENT_HAS_PANEL = false;
|
||||
|
|
@ -138,6 +151,7 @@ class CCIMX8X extends ConnectCoreDevice {
|
|||
|
||||
// Capabilities
|
||||
SUPPORTS_VIDEO_BRIGHTNESS = false;
|
||||
SUPPORTS_DUAL_ETHERNET = true;
|
||||
|
||||
// Constructor.
|
||||
constructor(deviceData) {
|
||||
|
|
|
|||
|
|
@ -50,12 +50,18 @@ const ID_ERROR = "error";
|
|||
const ID_ERROR_GUIDE = "error_guide";
|
||||
const ID_ERROR_MESSAGE = "error_msg";
|
||||
const ID_ERROR_TITLE = "error_title";
|
||||
const ID_ETHERNET = "ethernet";
|
||||
const ID_ETHERNET_IP = "ethernet_ip";
|
||||
const ID_ETHERNET_MAC = "ethernet_mac";
|
||||
const ID_ETHERNET_READ_DATA = "ethernet_received_data";
|
||||
const ID_ETHERNET_SENT_DATA = "ethernet_sent_data";
|
||||
const ID_ETHERNET_STATE = "ethernet_state";
|
||||
const ID_ETHERNET0 = "ethernet0";
|
||||
const ID_ETHERNET1 = "ethernet1";
|
||||
const ID_ETHERNET0_IP = "ethernet0_ip";
|
||||
const ID_ETHERNET1_IP = "ethernet1_ip";
|
||||
const ID_ETHERNET0_MAC = "ethernet0_mac";
|
||||
const ID_ETHERNET1_MAC = "ethernet1_mac";
|
||||
const ID_ETHERNET0_READ_DATA = "ethernet0_received_data";
|
||||
const ID_ETHERNET1_READ_DATA = "ethernet1_received_data";
|
||||
const ID_ETHERNET0_SENT_DATA = "ethernet0_sent_data";
|
||||
const ID_ETHERNET1_SENT_DATA = "ethernet1_sent_data";
|
||||
const ID_ETHERNET0_STATE = "ethernet0_state";
|
||||
const ID_ETHERNET1_STATE = "ethernet1_state";
|
||||
const ID_FILES = "files";
|
||||
const ID_FLASH_MEMORY = "flash_memory";
|
||||
const ID_FLASH_SIZE = "flash_size";
|
||||
|
|
@ -92,6 +98,9 @@ const ID_PANEL_VERTICAL_MARGIN = "panel-vertical-margin";
|
|||
const ID_PATH = "path";
|
||||
const ID_PROGRESS = "progress";
|
||||
const ID_SAMPLE_RATE = "sample_rate";
|
||||
const ID_SECTION_DASHBOARD = "section_dashboard";
|
||||
const ID_SECTION_MANAGEMENT = "section_management";
|
||||
const ID_SECTION_MULTIMEDIA = "section_multimedia";
|
||||
const ID_SERIAL_NUMBER = "serial_number";
|
||||
const ID_SESSION_ID = "session_id";
|
||||
const ID_SIZE = "size";
|
||||
|
|
@ -480,3 +489,37 @@ function isMultimediaShowing() {
|
|||
function getDeviceName() {
|
||||
return new URLSearchParams(window.location.search).get(ID_DEVICE_NAME);
|
||||
}
|
||||
|
||||
// Updates the available web sections.
|
||||
function updateAvailableSections() {
|
||||
// Remove multimedia section when rendering the demo from a computer.
|
||||
if (!navigator.platform.includes("aarch"))
|
||||
removeSection(ID_SECTION_MULTIMEDIA);
|
||||
// Set visible sections based on device type.
|
||||
$.post(
|
||||
"http://" + getServerAddress() + "/ajax/get_device_type",
|
||||
function(data) {
|
||||
// Process answer.
|
||||
if (data[ID_DEVICE_TYPE] == null || data[ID_DEVICE_TYPE] == "undefined") {
|
||||
// Show error message.
|
||||
toastr.error("Could not get device type");
|
||||
return;
|
||||
}
|
||||
switch (data[ID_DEVICE_TYPE]) {
|
||||
case CCIMX6ULSBC.DEVICE_TYPE:
|
||||
removeSection(ID_SECTION_MULTIMEDIA);
|
||||
break;
|
||||
}
|
||||
}
|
||||
).fail(function(response) {
|
||||
// Process error.
|
||||
processAjaxErrorResponse(response);
|
||||
});
|
||||
}
|
||||
|
||||
// Removes the given section.
|
||||
function removeSection(sectionID) {
|
||||
var sectionElement = document.getElementById(sectionID);
|
||||
if (sectionElement != null && sectionElement != "undefined")
|
||||
sectionElement.parentNode.removeChild(sectionElement);
|
||||
}
|
||||
|
|
@ -31,10 +31,16 @@ const ID_DEVICE_INFO_TOGGLE_BUTTON = "device_info_toggle_button";
|
|||
const ID_DEVICE_INFO_PANEL_HEADER = "device_info_panel_header";
|
||||
const ID_DEVICE_INFO_PANEL_CONTAINER = "device_info_panel_container";
|
||||
const ID_DEVICE_TOOLBAR = "device_toolbar";
|
||||
const ID_ETHERNET_PANEL = "ethernet_panel";
|
||||
const ID_ETHERNET_PANEL_AREA = "ethernet_panel_area";
|
||||
const ID_ETHERNET_PANEL_ARROW = "ethernet_panel_arrow";
|
||||
const ID_ETHERNET_PANEL_ICON = "ethernet_panel_icon";
|
||||
const ID_ETHERNET0_PANEL = "ethernet0_panel";
|
||||
const ID_ETHERNET0_PANEL_AREA = "ethernet0_panel_area";
|
||||
const ID_ETHERNET0_PANEL_ARROW = "ethernet0_panel_arrow";
|
||||
const ID_ETHERNET0_PANEL_ICON = "ethernet0_panel_icon";
|
||||
const ID_ETHERNET0_TITLE = "ethernet0_title";
|
||||
const ID_ETHERNET0_TOOLTIP = "ethernet0_tooltip";
|
||||
const ID_ETHERNET1_PANEL = "ethernet1_panel";
|
||||
const ID_ETHERNET1_PANEL_AREA = "ethernet1_panel_area";
|
||||
const ID_ETHERNET1_PANEL_ARROW = "ethernet1_panel_arrow";
|
||||
const ID_ETHERNET1_PANEL_ICON = "ethernet1_panel_icon";
|
||||
const ID_FLASH_MEMORY_PANEL = "flash_memory_panel";
|
||||
const ID_FLASH_MEMORY_PANEL_AREA = "flash_memory_panel_area";
|
||||
const ID_FLASH_MEMORY_PANEL_ARROW = "flash_memory_panel_arrow";
|
||||
|
|
@ -61,7 +67,8 @@ const ID_WIFI_BT_PANEL_ARROW = "wifi_bt_panel_arrow";
|
|||
const ID_WIFI_BT_PANEL_ICON = "wifi_bt_panel_icon";
|
||||
|
||||
const IFACE_BT = "hci0/";
|
||||
const IFACE_ETHERNET = "eth0/";
|
||||
const IFACE_ETHERNET0 = "eth0/";
|
||||
const IFACE_ETHERNET1 = "eth1/";
|
||||
const IFACE_WIFI = "wlan0/";
|
||||
|
||||
const USER_LED = "user_led";
|
||||
|
|
@ -69,9 +76,12 @@ const USER_LED = "user_led";
|
|||
const STREAM_CPU_FREQUENCY = PREFIX_STREAM + "frequency";
|
||||
const STREAM_CPU_TEMPERATURE = PREFIX_STREAM + "cpu_temperature";
|
||||
const STREAM_CPU_UPTIME = PREFIX_STREAM + "uptime";
|
||||
const STREAM_ETHERNET_READ_BYTES = PREFIX_STREAM + IFACE_ETHERNET + "rx_bytes";
|
||||
const STREAM_ETHERNET_SENT_BYTES = PREFIX_STREAM + IFACE_ETHERNET + "tx_bytes";
|
||||
const STREAM_ETHERNET_STATE = PREFIX_STREAM + IFACE_ETHERNET + "state";
|
||||
const STREAM_ETHERNET0_READ_BYTES = PREFIX_STREAM + IFACE_ETHERNET0 + "rx_bytes";
|
||||
const STREAM_ETHERNET0_SENT_BYTES = PREFIX_STREAM + IFACE_ETHERNET0 + "tx_bytes";
|
||||
const STREAM_ETHERNET0_STATE = PREFIX_STREAM + IFACE_ETHERNET0 + "state";
|
||||
const STREAM_ETHERNET1_READ_BYTES = PREFIX_STREAM + IFACE_ETHERNET1 + "rx_bytes";
|
||||
const STREAM_ETHERNET1_SENT_BYTES = PREFIX_STREAM + IFACE_ETHERNET1 + "tx_bytes";
|
||||
const STREAM_ETHERNET1_STATE = PREFIX_STREAM + IFACE_ETHERNET1 + "state";
|
||||
const STREAM_LED_STATUS = PREFIX_STREAM + "led_status";
|
||||
const STREAM_MEMORY_USED = PREFIX_STREAM + "used_memory";
|
||||
const STREAM_WIFI_READ_BYTES = PREFIX_STREAM + IFACE_WIFI + "rx_bytes";
|
||||
|
|
@ -260,7 +270,7 @@ function refreshDevice() {
|
|||
initializingDevice = false;
|
||||
return;
|
||||
}
|
||||
device.refreshIPs(data[ID_ETHERNET_IP], data[ID_WIFI_IP]);
|
||||
device.refreshIPs(data[ID_ETHERNET0_IP], data[ID_ETHERNET1_IP], data[ID_WIFI_IP]);
|
||||
updateInfoValues();
|
||||
}
|
||||
).fail(function(response) {
|
||||
|
|
@ -322,7 +332,8 @@ function processDeviceStatusResponse(response) {
|
|||
}
|
||||
|
||||
// Check if IP values are initialized.
|
||||
if ((response[STREAM_ETHERNET_STATE] == 1 && device.getEthernetIP() == "0.0.0.0")
|
||||
if ((response[STREAM_ETHERNET0_STATE] == 1 && device.getEthernetIP(0) == "0.0.0.0")
|
||||
|| (response[STREAM_ETHERNET1_STATE] == 1 && device.getEthernetIP(1) == "0.0.0.0")
|
||||
|| (response[STREAM_WIFI_STATE] == 1 && device.getWifiIP() == "0.0.0.0")) {
|
||||
deviceInitialized = false;
|
||||
}
|
||||
|
|
@ -351,6 +362,9 @@ function createDevice(deviceData) {
|
|||
case CCIMX8X.DEVICE_TYPE:
|
||||
device = new CCIMX8X(deviceData);
|
||||
break;
|
||||
case CCIMX6ULSBC.DEVICE_TYPE:
|
||||
device = new CCIMX6ULSBC(deviceData);
|
||||
break;
|
||||
}
|
||||
if (device != null) {
|
||||
// Draw the device.
|
||||
|
|
@ -413,13 +427,26 @@ function initializeComponents() {
|
|||
var wifiBtPanelIcon = document.getElementById(ID_WIFI_BT_PANEL_ICON);
|
||||
var wifiBtInfo = {"panel": wifiBtPanel, "arrow": wifiBtPanelArrow, "area": wifiBtPanelArea, "icon": wifiBtPanelIcon, "data": device.getWifiBtComponentData()};
|
||||
components[ID_WIFI_BT] = wifiBtInfo;
|
||||
// Ethernet component.
|
||||
var ethernetPanel = document.getElementById(ID_ETHERNET_PANEL);
|
||||
var ethernetPanelArrow = document.getElementById(ID_ETHERNET_PANEL_ARROW);
|
||||
var ethernetPanelArea = document.getElementById(ID_ETHERNET_PANEL_AREA);
|
||||
var ethernetPanelIcon = document.getElementById(ID_ETHERNET_PANEL_ICON);
|
||||
var ethernetInfo = {"panel": ethernetPanel, "arrow": ethernetPanelArrow, "area": ethernetPanelArea, "icon": ethernetPanelIcon, "data": device.getEthernetComponentData()};
|
||||
components[ID_ETHERNET] = ethernetInfo;
|
||||
// Ethernet 0 component.
|
||||
var ethernet0Panel = document.getElementById(ID_ETHERNET0_PANEL);
|
||||
var ethernet0PanelArrow = document.getElementById(ID_ETHERNET0_PANEL_ARROW);
|
||||
var ethernet0PanelArea = document.getElementById(ID_ETHERNET0_PANEL_AREA);
|
||||
var ethernet0PanelIcon = document.getElementById(ID_ETHERNET0_PANEL_ICON);
|
||||
var ethernet0Info = {"panel": ethernet0Panel, "arrow": ethernet0PanelArrow, "area": ethernet0PanelArea, "icon": ethernet0PanelIcon, "data": device.getEthernetComponentData(0)};
|
||||
components[ID_ETHERNET0] = ethernet0Info;
|
||||
if (device.supportsDualEthernet()) {
|
||||
// Ethernet 1 component.
|
||||
var ethernet1Panel = document.getElementById(ID_ETHERNET1_PANEL);
|
||||
var ethernet1PanelArrow = document.getElementById(ID_ETHERNET1_PANEL_ARROW);
|
||||
var ethernet1PanelArea = document.getElementById(ID_ETHERNET1_PANEL_AREA);
|
||||
var ethernet1PanelIcon = document.getElementById(ID_ETHERNET1_PANEL_ICON);
|
||||
var ethernet1Info = {"panel": ethernet1Panel, "arrow": ethernet1PanelArrow, "area": ethernet1PanelArea, "icon": ethernet1PanelIcon, "data": device.getEthernetComponentData(1)};
|
||||
components[ID_ETHERNET1] = ethernet1Info;
|
||||
} else {
|
||||
// Update tooltip and title to reflect there is only one Ethernet interface.
|
||||
document.getElementById(ID_ETHERNET0_TOOLTIP).innerText = "Ethernet stats";
|
||||
document.getElementById(ID_ETHERNET0_TITLE).innerText = "Ethernet stats";
|
||||
}
|
||||
// Video component.
|
||||
var videoPanel = document.getElementById(ID_VIDEO_PANEL);
|
||||
var videoPanelArrow = document.getElementById(ID_VIDEO_PANEL_ARROW);
|
||||
|
|
@ -605,10 +632,13 @@ function updateInfoValues() {
|
|||
updateFieldValue(ID_MCA_FW_VERSION, device.getMCAFWVersion());
|
||||
// Set MCA HW version.
|
||||
updateFieldValue(ID_MCA_HW_VERSION, device.getMCAHWVersion());
|
||||
// Iterate Ethernet interfaces.
|
||||
for (var index = 0; index < device.NUM_ETHERNET_INTERFACES; index++) {
|
||||
// Set Ethernet MAC address.
|
||||
updateFieldValue(ID_ETHERNET_MAC, device.getEthernetMAC());
|
||||
updateFieldValue(eval("ID_ETHERNET" + index + "_MAC"), device.getEthernetMAC(index));
|
||||
// Set Ethernet IP address.
|
||||
updateFieldValue(ID_ETHERNET_IP, device.getEthernetIP());
|
||||
updateFieldValue(eval("ID_ETHERNET" + index + "_IP"), device.getEthernetIP(index));
|
||||
}
|
||||
// Set Wi-Fi MAC address.
|
||||
updateFieldValue(ID_WIFI_MAC, device.getWifiMAC());
|
||||
// Set Wi-Fi IP address.
|
||||
|
|
@ -628,6 +658,7 @@ function updateDataPointsValues(response) {
|
|||
// Iterate the streams in the response.
|
||||
for (var key in response)
|
||||
updateDataPointValue(key, response[key]);
|
||||
positionComponents();
|
||||
}
|
||||
|
||||
// Updates the given data stream value.
|
||||
|
|
@ -658,14 +689,23 @@ function updateDataPointValue(streamID, value) {
|
|||
case STREAM_MEMORY_USED:
|
||||
updateValueWithEffect(ID_MEMORY_USED, kiloBytesToMegaBytes(value));
|
||||
break;
|
||||
case STREAM_ETHERNET_STATE:
|
||||
updateValueWithEffect(ID_ETHERNET_STATE, onOffStatus(value));
|
||||
case STREAM_ETHERNET0_STATE:
|
||||
updateValueWithEffect(ID_ETHERNET0_STATE, onOffStatus(value));
|
||||
break;
|
||||
case STREAM_ETHERNET_READ_BYTES:
|
||||
updateValueWithEffect(ID_ETHERNET_READ_DATA, sizeToHumanRead(value));
|
||||
case STREAM_ETHERNET0_READ_BYTES:
|
||||
updateValueWithEffect(ID_ETHERNET0_READ_DATA, sizeToHumanRead(value));
|
||||
break;
|
||||
case STREAM_ETHERNET_SENT_BYTES:
|
||||
updateValueWithEffect(ID_ETHERNET_SENT_DATA, sizeToHumanRead(value));
|
||||
case STREAM_ETHERNET0_SENT_BYTES:
|
||||
updateValueWithEffect(ID_ETHERNET0_SENT_DATA, sizeToHumanRead(value));
|
||||
break;
|
||||
case STREAM_ETHERNET1_STATE:
|
||||
updateValueWithEffect(ID_ETHERNET1_STATE, onOffStatus(value));
|
||||
break;
|
||||
case STREAM_ETHERNET1_READ_BYTES:
|
||||
updateValueWithEffect(ID_ETHERNET1_READ_DATA, sizeToHumanRead(value));
|
||||
break;
|
||||
case STREAM_ETHERNET1_SENT_BYTES:
|
||||
updateValueWithEffect(ID_ETHERNET1_SENT_DATA, sizeToHumanRead(value));
|
||||
break;
|
||||
case STREAM_WIFI_STATE:
|
||||
updateValueWithEffect(ID_WIFI_STATE, onOffStatus(value));
|
||||
|
|
|
|||
|
|
@ -81,19 +81,33 @@ class ConnectCoreDevice {
|
|||
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 0;
|
||||
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 0;
|
||||
|
||||
// Ethernet panel.
|
||||
ETHERNET_COMPONENT_VISIBLE = false;
|
||||
ETHERNET_COMPONENT_HAS_PANEL = false;
|
||||
ETHERNET_COMPONENT_HAS_ARROW = false;
|
||||
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_TOP;
|
||||
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = 0;
|
||||
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 0;
|
||||
ETHERNET_COMPONENT_ARROW_PERCENT = 0;
|
||||
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 0;
|
||||
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 0;
|
||||
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 0;
|
||||
ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT = 0;
|
||||
// Ethernet0 panel.
|
||||
ETHERNET0_COMPONENT_VISIBLE = false;
|
||||
ETHERNET0_COMPONENT_HAS_PANEL = false;
|
||||
ETHERNET0_COMPONENT_HAS_ARROW = false;
|
||||
ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_TOP;
|
||||
ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = 0;
|
||||
ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 0;
|
||||
ETHERNET0_COMPONENT_ARROW_PERCENT = 0;
|
||||
ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 0;
|
||||
ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 0;
|
||||
ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 0;
|
||||
ETHERNET0_COMPONENT_AREA_HEIGHT_PERCENT = 0;
|
||||
|
||||
// Ethernet1 panel.
|
||||
ETHERNET1_COMPONENT_VISIBLE = false;
|
||||
ETHERNET1_COMPONENT_HAS_PANEL = false;
|
||||
ETHERNET1_COMPONENT_HAS_ARROW = false;
|
||||
ETHERNET1_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
|
||||
ETHERNET1_COMPONENT_PANEL_ORIENTATION = VALUE_TOP;
|
||||
ETHERNET1_COMPONENT_PANEL_HORIZONTAL_PERCENT = 0;
|
||||
ETHERNET1_COMPONENT_PANEL_VERTICAL_PERCENT = 0;
|
||||
ETHERNET1_COMPONENT_ARROW_PERCENT = 0;
|
||||
ETHERNET1_COMPONENT_AREA_TOP_PERCENT = 0;
|
||||
ETHERNET1_COMPONENT_AREA_LEFT_PERCENT = 0;
|
||||
ETHERNET1_COMPONENT_AREA_WIDTH_PERCENT = 0;
|
||||
ETHERNET1_COMPONENT_AREA_HEIGHT_PERCENT = 0;
|
||||
|
||||
// Console.
|
||||
CONSOLE_COMPONENT_VISIBLE = false;
|
||||
|
|
@ -167,6 +181,9 @@ class ConnectCoreDevice {
|
|||
|
||||
// Capabilities
|
||||
SUPPORTS_VIDEO_BRIGHTNESS;
|
||||
SUPPORTS_DUAL_ETHERNET;
|
||||
|
||||
NUM_ETHERNET_INTERFACES = 2;
|
||||
|
||||
// Device information.
|
||||
#deviceType;
|
||||
|
|
@ -180,8 +197,8 @@ class ConnectCoreDevice {
|
|||
#boardID;
|
||||
#mcaHWVersion;
|
||||
#mcaFWVersion;
|
||||
#ethernetMAC;
|
||||
#ethernetIP;
|
||||
#ethernetMAC = [];
|
||||
#ethernetIP = [];
|
||||
#wifiMAC;
|
||||
#wifiIP;
|
||||
#bluetoothMAC;
|
||||
|
|
@ -209,8 +226,6 @@ class ConnectCoreDevice {
|
|||
this.#boardID = deviceData[ID_BOARD_ID];
|
||||
this.#mcaHWVersion = deviceData[ID_MCA_HW_VERSION];
|
||||
this.#mcaFWVersion = deviceData[ID_MCA_FW_VERSION];
|
||||
this.#ethernetMAC = deviceData[ID_ETHERNET_MAC];
|
||||
this.#ethernetIP = deviceData[ID_ETHERNET_IP];
|
||||
this.#wifiMAC = deviceData[ID_WIFI_MAC];
|
||||
this.#wifiIP = deviceData[ID_WIFI_IP];
|
||||
this.#bluetoothMAC = deviceData[ID_BLUETOOTH_MAC];
|
||||
|
|
@ -219,10 +234,15 @@ class ConnectCoreDevice {
|
|||
this.#videoResolution = deviceData[ID_VIDEO_RESOLUTION];
|
||||
this.#sampleRate = deviceData[ID_SAMPLE_RATE];
|
||||
this.#numSamplesUpload = deviceData[ID_NUM_SAMPLES_UPLOAD];
|
||||
for (var index = 0; index < this.NUM_ETHERNET_INTERFACES; index++) {
|
||||
this.#ethernetMAC[index] = deviceData[eval("ID_ETHERNET" + index + "_MAC")];
|
||||
this.#ethernetIP[index] = deviceData[eval("ID_ETHERNET" + index + "_IP")];
|
||||
}
|
||||
}
|
||||
|
||||
refreshIPs(eth_ip, wifi_ip) {
|
||||
this.#ethernetIP = eth_ip;
|
||||
refreshIPs(eth0_ip, eth1_ip, wifi_ip) {
|
||||
this.#ethernetIP[0] = eth0_ip;
|
||||
this.#ethernetIP[1] = eth1_ip;
|
||||
this.#wifiIP = wifi_ip;
|
||||
}
|
||||
|
||||
|
|
@ -291,14 +311,18 @@ class ConnectCoreDevice {
|
|||
return this.#mcaFWVersion;
|
||||
}
|
||||
|
||||
// Returns the device Ethernet MAC address.
|
||||
getEthernetMAC() {
|
||||
return this.#ethernetMAC;
|
||||
// Returns the device Ethernet MAC address for the given interface index.
|
||||
getEthernetMAC(index=0) {
|
||||
if (index >= this.NUM_ETHERNET_INTERFACES)
|
||||
return "";
|
||||
return this.#ethernetMAC[index];
|
||||
}
|
||||
|
||||
// Returns the device Ethernet IP address.
|
||||
getEthernetIP() {
|
||||
return this.#ethernetIP;
|
||||
// Returns the device Ethernet IP address for the given interface index.
|
||||
getEthernetIP(index=0) {
|
||||
if (index >= this.NUM_ETHERNET_INTERFACES)
|
||||
return "";
|
||||
return this.#ethernetIP[index];
|
||||
}
|
||||
|
||||
// Returns the device WiFi MAC address.
|
||||
|
|
@ -389,20 +413,22 @@ class ConnectCoreDevice {
|
|||
this.WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT));
|
||||
}
|
||||
|
||||
// Returns the Ethernet panel data.
|
||||
getEthernetComponentData() {
|
||||
return JSON.parse(TEMPLATE_COMPONENT_DATA.format(this.ETHERNET_COMPONENT_VISIBLE,
|
||||
this.ETHERNET_COMPONENT_HAS_PANEL,
|
||||
this.ETHERNET_COMPONENT_HAS_ARROW,
|
||||
this.ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE,
|
||||
this.ETHERNET_COMPONENT_PANEL_ORIENTATION,
|
||||
this.ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT,
|
||||
this.ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT,
|
||||
this.ETHERNET_COMPONENT_ARROW_PERCENT,
|
||||
this.ETHERNET_COMPONENT_AREA_TOP_PERCENT,
|
||||
this.ETHERNET_COMPONENT_AREA_LEFT_PERCENT,
|
||||
this.ETHERNET_COMPONENT_AREA_WIDTH_PERCENT,
|
||||
this.ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT));
|
||||
// Returns the Ethernet panel data for the given interface index.
|
||||
getEthernetComponentData(index=0) {
|
||||
if (index >= this.NUM_ETHERNET_INTERFACES)
|
||||
return "";
|
||||
return JSON.parse(TEMPLATE_COMPONENT_DATA.format(eval("this.ETHERNET" + index + "_COMPONENT_VISIBLE"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_HAS_PANEL"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_HAS_ARROW"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_PANEL_ALWAYS_VISIBLE"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_PANEL_ORIENTATION"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_PANEL_HORIZONTAL_PERCENT"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_PANEL_VERTICAL_PERCENT"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_ARROW_PERCENT"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_AREA_TOP_PERCENT"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_AREA_LEFT_PERCENT"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_AREA_WIDTH_PERCENT"),
|
||||
eval("this.ETHERNET" + index + "_COMPONENT_AREA_HEIGHT_PERCENT")));
|
||||
}
|
||||
|
||||
// Returns the Console panel data.
|
||||
|
|
@ -489,4 +515,9 @@ class ConnectCoreDevice {
|
|||
supportsVideoBrightness() {
|
||||
return this.SUPPORTS_VIDEO_BRIGHTNESS;
|
||||
}
|
||||
|
||||
// Returns whether the device supports dual ethernet or not.
|
||||
supportsDualEthernet() {
|
||||
return this.SUPPORTS_DUAL_ETHERNET;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue