Merge branch 'dey-3.2/maint'

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2022-07-07 13:44:21 +02:00
commit 3c6caabcdf
12 changed files with 588 additions and 248 deletions

View File

@ -16,6 +16,7 @@
import argparse import argparse
import cgi import cgi
import errno
import http.server import http.server
import json import json
import logging import logging
@ -38,6 +39,9 @@ APP_NAME = "Demo server"
PORT = 9090 PORT = 9090
EMMC_SIZE_FILE = "/sys/class/mmc_host/mmc0/mmc0:0001/block/mmcblk0/size"
NAND_SIZE_FILE = "/proc/mtd"
SIZE_KB = "KB" SIZE_KB = "KB"
SIZE_MB = "MB" SIZE_MB = "MB"
SIZE_GB = "GB" SIZE_GB = "GB"
@ -86,7 +90,19 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler):
""" """
Override. 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. # Set the response headers.
self._set_headers(200) self._set_headers(200)
@ -113,8 +129,10 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler):
"bluetooth_mac": get_bt_mac("hci0"), "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_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, "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, "ethernet0_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_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. # Send the JSON value.
@ -574,7 +592,21 @@ def get_storage_size():
Returns: Returns:
Integer: The internal storage size, -1 if fails. 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: if size == NOT_AVAILABLE:
return -1 return -1
try: try:
@ -583,6 +615,30 @@ def get_storage_size():
return -1 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(): def get_video_resolution():
""" """
Gets the video resolution. Gets the video resolution.
@ -594,7 +650,7 @@ def get_video_resolution():
if res == NOT_AVAILABLE: if res == NOT_AVAILABLE:
return "-" return "-"
return res.split(":")[1].strip() return res.splitlines()[0].split(":")[1].strip()
def is_dual_system(): def is_dual_system():

View File

@ -35,12 +35,12 @@ Digi Demo - Dashboard
</div> </div>
</a> </a>
<div class="nav-right-container"> <div class="nav-right-container">
<div>
<div> <img src="./static/images/board.png" class="device-title-img" title="Device">
<img src="./static/images/board.png" class="device-title-img" title="Device"> </div>
</div> <div id="device-name">DEY DEVICE</div>
<div id="device-name">DEY DEVICE</div> </div>
</div> </div>
</nav> </nav>
@ -53,7 +53,7 @@ Digi Demo - Dashboard
<!-- Bootstrap List Group --> <!-- Bootstrap List Group -->
<ul id="sections" data-pjax class="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"> <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"> <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> <span class="digi-menu-icon fas fa-tachometer-alt fa-fw fa-lg mr-3"></span>
@ -61,7 +61,7 @@ Digi Demo - Dashboard
</div> </div>
</a> </a>
</li> </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"> <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"> <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> <span class="digi-menu-icon fas fa-film fa-fw fa-lg mr-3"></span>
@ -69,7 +69,7 @@ Digi Demo - Dashboard
</div> </div>
</a> </a>
</li> </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"> <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"> <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> <span class="digi-menu-icon fas fa-cog fa-fw fa-lg mr-3"></span>
@ -246,114 +246,40 @@ Digi Demo - Dashboard
</div> </div>
<div class="device-card-content"> <div class="device-card-content">
<div class="cpu-info"> <div class="cpu-info">
<table> <table>
<tr style="vertical-align: baseline;"> <tr style="vertical-align: baseline;">
<td> <td>
<span class="device-card-content-text">Usage:</span> <span class="device-card-content-text">Usage:</span>
</td> </td>
<td> <td>
<span id="cpu_load" class="device-card-content-value">-</span> % <span id="cpu_load" class="device-card-content-value">-</span> %
</td> </td>
</tr> </tr>
<tr style="vertical-align: baseline;"> <tr style="vertical-align: baseline;">
<td> <td>
<span class="device-card-content-text">Uptime:</span> <span class="device-card-content-text">Uptime:</span>
</td> </td>
<td> <td>
<span id="cpu_uptime" class="device-card-content-value">-</span> <span id="cpu_uptime" class="device-card-content-value">-</span>
</td> </td>
</tr> </tr>
<tr style="vertical-align: baseline;"> <tr style="vertical-align: baseline;">
<td> <td>
<span class="device-card-content-text">Frequency:</span> <span class="device-card-content-text">Frequency:</span>
</td> </td>
<td> <td>
<span id="cpu_frequency" class="device-card-content-value">-</span> MHz <span id="cpu_frequency" class="device-card-content-value">-</span> MHz
</td> </td>
</tr> </tr>
<tr style="vertical-align: baseline;"> <tr style="vertical-align: baseline;">
<td> <td>
<span class="device-card-content-text">Temperature:</span> <span class="device-card-content-text">Temperature:</span>
</td> </td>
<td> <td>
<span id="cpu_temperature" class="device-card-content-value">-</span> C <span id="cpu_temperature" class="device-card-content-value">-</span> C
</td> </td>
</tr> </tr>
</table> </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>
</div> </div>
@ -541,16 +467,16 @@ Digi Demo - Dashboard
</table> </table>
</div> </div>
</div> </div>
<div id="ethernet_panel_area" class="panel-area panel-tooltip" onclick="toggleInfoPanelVisibility('ethernet')"> <div id="ethernet0_panel_area" class="panel-area panel-tooltip" onclick="toggleInfoPanelVisibility('ethernet0')">
<span class="panel-tooltip-text">Ethernet stats</span> <span id="ethernet0_tooltip" class="panel-tooltip-text">Ethernet 0 stats</span>
<span id="ethernet_panel_icon" class="fas fa-ethernet panel-area-icon"></span> <span id="ethernet0_panel_icon" class="fas fa-ethernet panel-area-icon"></span>
</div> </div>
<div id="ethernet_panel" class="device-card ethernet-panel shadow-sm"> <div id="ethernet0_panel" class="device-card ethernet-panel shadow-sm">
<span id="ethernet_panel_arrow" class="panel-arrow"></span> <span id="ethernet0_panel_arrow" class="panel-arrow"></span>
<div class="device-card-header"> <div class="device-card-header">
<span class="fas fa-ethernet fa-lg mr-2"></span> <span class="fas fa-ethernet fa-lg mr-2"></span>
<span>Ethernet stats</span> <span id="ethernet0_title">Ethernet 0 stats</span>
<div class="fas fa-window-close fa-lg device-card-header-button" onclick="setInfoPanelVisible('ethernet', false)"></div> <div class="fas fa-window-close fa-lg device-card-header-button" onclick="setInfoPanelVisible('ethernet0', false)"></div>
</div> </div>
<div class="device-card-content"> <div class="device-card-content">
<table> <table>
@ -559,7 +485,7 @@ Digi Demo - Dashboard
<span class="device-card-content-text">Status:</span> <span class="device-card-content-text">Status:</span>
</td> </td>
<td> <td>
<span id="ethernet_state" class="device-card-content-value">-</span> <span id="ethernet0_state" class="device-card-content-value">-</span>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -567,7 +493,7 @@ Digi Demo - Dashboard
<span class="device-card-content-text">MAC address:</span> <span class="device-card-content-text">MAC address:</span>
</td> </td>
<td> <td>
<span id="ethernet_mac" class="device-card-content-value">-</span> <span id="ethernet0_mac" class="device-card-content-value">-</span>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -575,7 +501,7 @@ Digi Demo - Dashboard
<span class="device-card-content-text">IP address:</span> <span class="device-card-content-text">IP address:</span>
</td> </td>
<td> <td>
<span id="ethernet_ip" class="device-card-content-value">-</span> <span id="ethernet0_ip" class="device-card-content-value">-</span>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -583,7 +509,7 @@ Digi Demo - Dashboard
<span class="device-card-content-text">Sent data:</span> <span class="device-card-content-text">Sent data:</span>
</td> </td>
<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> </td>
</tr> </tr>
<tr> <tr>
@ -591,7 +517,63 @@ Digi Demo - Dashboard
<span class="device-card-content-text">Received data:</span> <span class="device-card-content-text">Received data:</span>
</td> </td>
<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> </td>
</tr> </tr>
</table> </table>
@ -758,6 +740,7 @@ Digi Demo - Dashboard
<!-- Local JS files and functions --> <!-- Local JS files and functions -->
<script type="text/javascript" src="./static/js/sidebar.js"></script> <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/ccimx8mm-dvk.js"></script>
<script type="text/javascript" src="./static/js/ccimx8m-nano.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> <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. // Set the selected section.
setSelectedSection(); setSelectedSection();
}); });

View File

@ -53,7 +53,7 @@ Digi Demo - Management
<!-- Bootstrap List Group --> <!-- Bootstrap List Group -->
<ul id="sections" data-pjax class="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"> <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"> <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> <span class="digi-menu-icon fas fa-tachometer-alt fa-fw fa-lg mr-3"></span>
@ -61,7 +61,7 @@ Digi Demo - Management
</div> </div>
</a> </a>
</li> </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"> <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"> <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> <span class="digi-menu-icon fas fa-film fa-fw fa-lg mr-3"></span>
@ -69,7 +69,7 @@ Digi Demo - Management
</div> </div>
</a> </a>
</li> </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"> <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"> <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> <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 --> <!-- Local JS files and functions -->
<script type="text/javascript" src="./static/js/sidebar.js"></script> <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/ccimx8mm-dvk.js"></script>
<script type="text/javascript" src="./static/js/ccimx8m-nano.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> <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. // Set the selected section.
setSelectedSection(); setSelectedSection();
}); });

View File

@ -53,7 +53,7 @@ Digi Demo - Multimedia
<!-- Bootstrap List Group --> <!-- Bootstrap List Group -->
<ul id="sections" data-pjax class="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"> <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"> <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> <span class="digi-menu-icon fas fa-tachometer-alt fa-fw fa-lg mr-3"></span>
@ -61,7 +61,7 @@ Digi Demo - Multimedia
</div> </div>
</a> </a>
</li> </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"> <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"> <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> <span class="digi-menu-icon fas fa-film fa-fw fa-lg mr-3"></span>
@ -69,7 +69,7 @@ Digi Demo - Multimedia
</div> </div>
</a> </a>
</li> </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"> <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"> <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> <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 --> <!-- Local JS files and functions -->
<script type="text/javascript" src="./static/js/sidebar.js"></script> <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/ccimx8mm-dvk.js"></script>
<script type="text/javascript" src="./static/js/ccimx8m-nano.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> <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. // Set the selected section.
setSelectedSection(); setSelectedSection();
}); });

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 KiB

View File

@ -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);
}
}

View File

@ -62,18 +62,18 @@ class CCIMX8MNANO extends ConnectCoreDevice {
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 4; WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 4;
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 6; WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 6;
ETHERNET_COMPONENT_VISIBLE = true; ETHERNET0_COMPONENT_VISIBLE = true;
ETHERNET_COMPONENT_HAS_PANEL = true; ETHERNET0_COMPONENT_HAS_PANEL = true;
ETHERNET_COMPONENT_HAS_ARROW = true; ETHERNET0_COMPONENT_HAS_ARROW = true;
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false; ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT; ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21; ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21;
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 70; ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 70;
ETHERNET_COMPONENT_ARROW_PERCENT = 78; ETHERNET0_COMPONENT_ARROW_PERCENT = 78;
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 77; ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 77;
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 11; ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 11;
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 8.5; ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT = 16; ETHERNET0_COMPONENT_AREA_HEIGHT_PERCENT = 16;
CONSOLE_COMPONENT_VISIBLE = true; CONSOLE_COMPONENT_VISIBLE = true;
CONSOLE_COMPONENT_HAS_PANEL = false; CONSOLE_COMPONENT_HAS_PANEL = false;
@ -138,6 +138,7 @@ class CCIMX8MNANO extends ConnectCoreDevice {
// Capabilities // Capabilities
SUPPORTS_VIDEO_BRIGHTNESS = false; SUPPORTS_VIDEO_BRIGHTNESS = false;
SUPPORTS_DUAL_ETHERNET = false;
// Constructor. // Constructor.
constructor(deviceData) { constructor(deviceData) {

View File

@ -62,18 +62,18 @@ class CCIMX8MMINI extends ConnectCoreDevice {
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 4; WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 4;
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 6; WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 6;
ETHERNET_COMPONENT_VISIBLE = true; ETHERNET0_COMPONENT_VISIBLE = true;
ETHERNET_COMPONENT_HAS_PANEL = true; ETHERNET0_COMPONENT_HAS_PANEL = true;
ETHERNET_COMPONENT_HAS_ARROW = true; ETHERNET0_COMPONENT_HAS_ARROW = true;
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false; ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT; ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_LEFT;
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21; ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = 21;
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 70; ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 70;
ETHERNET_COMPONENT_ARROW_PERCENT = 78; ETHERNET0_COMPONENT_ARROW_PERCENT = 78;
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 77; ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 77;
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 11; ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 11;
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 8.5; ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT = 16; ETHERNET0_COMPONENT_AREA_HEIGHT_PERCENT = 16;
CONSOLE_COMPONENT_VISIBLE = true; CONSOLE_COMPONENT_VISIBLE = true;
CONSOLE_COMPONENT_HAS_PANEL = false; CONSOLE_COMPONENT_HAS_PANEL = false;
@ -138,6 +138,7 @@ class CCIMX8MMINI extends ConnectCoreDevice {
// Capabilities // Capabilities
SUPPORTS_VIDEO_BRIGHTNESS = false; SUPPORTS_VIDEO_BRIGHTNESS = false;
SUPPORTS_DUAL_ETHERNET = false;
// Constructor. // Constructor.
constructor(deviceData) { constructor(deviceData) {

View File

@ -62,18 +62,31 @@ class CCIMX8X extends ConnectCoreDevice {
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 8.5; WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 8.5;
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 10; WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 10;
ETHERNET_COMPONENT_VISIBLE = true; ETHERNET0_COMPONENT_VISIBLE = true;
ETHERNET_COMPONENT_HAS_PANEL = true; ETHERNET0_COMPONENT_HAS_PANEL = true;
ETHERNET_COMPONENT_HAS_ARROW = true; ETHERNET0_COMPONENT_HAS_ARROW = true;
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false; ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM; ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_BOTTOM;
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = -7; ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = -7;
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 34; ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 34;
ETHERNET_COMPONENT_ARROW_PERCENT = 18; ETHERNET0_COMPONENT_ARROW_PERCENT = 18;
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 68; ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 68;
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 12; ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 12;
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 17; ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 17;
ETHERNET_COMPONENT_AREA_HEIGHT_PERCENT = 27; 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_VISIBLE = true;
CONSOLE_COMPONENT_HAS_PANEL = false; CONSOLE_COMPONENT_HAS_PANEL = false;
@ -138,6 +151,7 @@ class CCIMX8X extends ConnectCoreDevice {
// Capabilities // Capabilities
SUPPORTS_VIDEO_BRIGHTNESS = false; SUPPORTS_VIDEO_BRIGHTNESS = false;
SUPPORTS_DUAL_ETHERNET = true;
// Constructor. // Constructor.
constructor(deviceData) { constructor(deviceData) {

View File

@ -50,12 +50,18 @@ const ID_ERROR = "error";
const ID_ERROR_GUIDE = "error_guide"; const ID_ERROR_GUIDE = "error_guide";
const ID_ERROR_MESSAGE = "error_msg"; const ID_ERROR_MESSAGE = "error_msg";
const ID_ERROR_TITLE = "error_title"; const ID_ERROR_TITLE = "error_title";
const ID_ETHERNET = "ethernet"; const ID_ETHERNET0 = "ethernet0";
const ID_ETHERNET_IP = "ethernet_ip"; const ID_ETHERNET1 = "ethernet1";
const ID_ETHERNET_MAC = "ethernet_mac"; const ID_ETHERNET0_IP = "ethernet0_ip";
const ID_ETHERNET_READ_DATA = "ethernet_received_data"; const ID_ETHERNET1_IP = "ethernet1_ip";
const ID_ETHERNET_SENT_DATA = "ethernet_sent_data"; const ID_ETHERNET0_MAC = "ethernet0_mac";
const ID_ETHERNET_STATE = "ethernet_state"; 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_FILES = "files";
const ID_FLASH_MEMORY = "flash_memory"; const ID_FLASH_MEMORY = "flash_memory";
const ID_FLASH_SIZE = "flash_size"; const ID_FLASH_SIZE = "flash_size";
@ -92,6 +98,9 @@ const ID_PANEL_VERTICAL_MARGIN = "panel-vertical-margin";
const ID_PATH = "path"; const ID_PATH = "path";
const ID_PROGRESS = "progress"; const ID_PROGRESS = "progress";
const ID_SAMPLE_RATE = "sample_rate"; 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_SERIAL_NUMBER = "serial_number";
const ID_SESSION_ID = "session_id"; const ID_SESSION_ID = "session_id";
const ID_SIZE = "size"; const ID_SIZE = "size";
@ -480,3 +489,37 @@ function isMultimediaShowing() {
function getDeviceName() { function getDeviceName() {
return new URLSearchParams(window.location.search).get(ID_DEVICE_NAME); 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);
}

View File

@ -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_HEADER = "device_info_panel_header";
const ID_DEVICE_INFO_PANEL_CONTAINER = "device_info_panel_container"; const ID_DEVICE_INFO_PANEL_CONTAINER = "device_info_panel_container";
const ID_DEVICE_TOOLBAR = "device_toolbar"; const ID_DEVICE_TOOLBAR = "device_toolbar";
const ID_ETHERNET_PANEL = "ethernet_panel"; const ID_ETHERNET0_PANEL = "ethernet0_panel";
const ID_ETHERNET_PANEL_AREA = "ethernet_panel_area"; const ID_ETHERNET0_PANEL_AREA = "ethernet0_panel_area";
const ID_ETHERNET_PANEL_ARROW = "ethernet_panel_arrow"; const ID_ETHERNET0_PANEL_ARROW = "ethernet0_panel_arrow";
const ID_ETHERNET_PANEL_ICON = "ethernet_panel_icon"; 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 = "flash_memory_panel";
const ID_FLASH_MEMORY_PANEL_AREA = "flash_memory_panel_area"; const ID_FLASH_MEMORY_PANEL_AREA = "flash_memory_panel_area";
const ID_FLASH_MEMORY_PANEL_ARROW = "flash_memory_panel_arrow"; 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 ID_WIFI_BT_PANEL_ICON = "wifi_bt_panel_icon";
const IFACE_BT = "hci0/"; const IFACE_BT = "hci0/";
const IFACE_ETHERNET = "eth0/"; const IFACE_ETHERNET0 = "eth0/";
const IFACE_ETHERNET1 = "eth1/";
const IFACE_WIFI = "wlan0/"; const IFACE_WIFI = "wlan0/";
const USER_LED = "user_led"; const USER_LED = "user_led";
@ -69,9 +76,12 @@ const USER_LED = "user_led";
const STREAM_CPU_FREQUENCY = PREFIX_STREAM + "frequency"; const STREAM_CPU_FREQUENCY = PREFIX_STREAM + "frequency";
const STREAM_CPU_TEMPERATURE = PREFIX_STREAM + "cpu_temperature"; const STREAM_CPU_TEMPERATURE = PREFIX_STREAM + "cpu_temperature";
const STREAM_CPU_UPTIME = PREFIX_STREAM + "uptime"; const STREAM_CPU_UPTIME = PREFIX_STREAM + "uptime";
const STREAM_ETHERNET_READ_BYTES = PREFIX_STREAM + IFACE_ETHERNET + "rx_bytes"; const STREAM_ETHERNET0_READ_BYTES = PREFIX_STREAM + IFACE_ETHERNET0 + "rx_bytes";
const STREAM_ETHERNET_SENT_BYTES = PREFIX_STREAM + IFACE_ETHERNET + "tx_bytes"; const STREAM_ETHERNET0_SENT_BYTES = PREFIX_STREAM + IFACE_ETHERNET0 + "tx_bytes";
const STREAM_ETHERNET_STATE = PREFIX_STREAM + IFACE_ETHERNET + "state"; 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_LED_STATUS = PREFIX_STREAM + "led_status";
const STREAM_MEMORY_USED = PREFIX_STREAM + "used_memory"; const STREAM_MEMORY_USED = PREFIX_STREAM + "used_memory";
const STREAM_WIFI_READ_BYTES = PREFIX_STREAM + IFACE_WIFI + "rx_bytes"; const STREAM_WIFI_READ_BYTES = PREFIX_STREAM + IFACE_WIFI + "rx_bytes";
@ -260,7 +270,7 @@ function refreshDevice() {
initializingDevice = false; initializingDevice = false;
return; 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(); updateInfoValues();
} }
).fail(function(response) { ).fail(function(response) {
@ -322,7 +332,8 @@ function processDeviceStatusResponse(response) {
} }
// Check if IP values are initialized. // 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")) { || (response[STREAM_WIFI_STATE] == 1 && device.getWifiIP() == "0.0.0.0")) {
deviceInitialized = false; deviceInitialized = false;
} }
@ -351,6 +362,9 @@ function createDevice(deviceData) {
case CCIMX8X.DEVICE_TYPE: case CCIMX8X.DEVICE_TYPE:
device = new CCIMX8X(deviceData); device = new CCIMX8X(deviceData);
break; break;
case CCIMX6ULSBC.DEVICE_TYPE:
device = new CCIMX6ULSBC(deviceData);
break;
} }
if (device != null) { if (device != null) {
// Draw the device. // Draw the device.
@ -413,13 +427,26 @@ function initializeComponents() {
var wifiBtPanelIcon = document.getElementById(ID_WIFI_BT_PANEL_ICON); var wifiBtPanelIcon = document.getElementById(ID_WIFI_BT_PANEL_ICON);
var wifiBtInfo = {"panel": wifiBtPanel, "arrow": wifiBtPanelArrow, "area": wifiBtPanelArea, "icon": wifiBtPanelIcon, "data": device.getWifiBtComponentData()}; var wifiBtInfo = {"panel": wifiBtPanel, "arrow": wifiBtPanelArrow, "area": wifiBtPanelArea, "icon": wifiBtPanelIcon, "data": device.getWifiBtComponentData()};
components[ID_WIFI_BT] = wifiBtInfo; components[ID_WIFI_BT] = wifiBtInfo;
// Ethernet component. // Ethernet 0 component.
var ethernetPanel = document.getElementById(ID_ETHERNET_PANEL); var ethernet0Panel = document.getElementById(ID_ETHERNET0_PANEL);
var ethernetPanelArrow = document.getElementById(ID_ETHERNET_PANEL_ARROW); var ethernet0PanelArrow = document.getElementById(ID_ETHERNET0_PANEL_ARROW);
var ethernetPanelArea = document.getElementById(ID_ETHERNET_PANEL_AREA); var ethernet0PanelArea = document.getElementById(ID_ETHERNET0_PANEL_AREA);
var ethernetPanelIcon = document.getElementById(ID_ETHERNET_PANEL_ICON); var ethernet0PanelIcon = document.getElementById(ID_ETHERNET0_PANEL_ICON);
var ethernetInfo = {"panel": ethernetPanel, "arrow": ethernetPanelArrow, "area": ethernetPanelArea, "icon": ethernetPanelIcon, "data": device.getEthernetComponentData()}; var ethernet0Info = {"panel": ethernet0Panel, "arrow": ethernet0PanelArrow, "area": ethernet0PanelArea, "icon": ethernet0PanelIcon, "data": device.getEthernetComponentData(0)};
components[ID_ETHERNET] = ethernetInfo; 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. // Video component.
var videoPanel = document.getElementById(ID_VIDEO_PANEL); var videoPanel = document.getElementById(ID_VIDEO_PANEL);
var videoPanelArrow = document.getElementById(ID_VIDEO_PANEL_ARROW); var videoPanelArrow = document.getElementById(ID_VIDEO_PANEL_ARROW);
@ -605,10 +632,13 @@ function updateInfoValues() {
updateFieldValue(ID_MCA_FW_VERSION, device.getMCAFWVersion()); updateFieldValue(ID_MCA_FW_VERSION, device.getMCAFWVersion());
// Set MCA HW version. // Set MCA HW version.
updateFieldValue(ID_MCA_HW_VERSION, device.getMCAHWVersion()); updateFieldValue(ID_MCA_HW_VERSION, device.getMCAHWVersion());
// Set Ethernet MAC address. // Iterate Ethernet interfaces.
updateFieldValue(ID_ETHERNET_MAC, device.getEthernetMAC()); for (var index = 0; index < device.NUM_ETHERNET_INTERFACES; index++) {
// Set Ethernet IP address. // Set Ethernet MAC address.
updateFieldValue(ID_ETHERNET_IP, device.getEthernetIP()); updateFieldValue(eval("ID_ETHERNET" + index + "_MAC"), device.getEthernetMAC(index));
// Set Ethernet IP address.
updateFieldValue(eval("ID_ETHERNET" + index + "_IP"), device.getEthernetIP(index));
}
// Set Wi-Fi MAC address. // Set Wi-Fi MAC address.
updateFieldValue(ID_WIFI_MAC, device.getWifiMAC()); updateFieldValue(ID_WIFI_MAC, device.getWifiMAC());
// Set Wi-Fi IP address. // Set Wi-Fi IP address.
@ -628,6 +658,7 @@ function updateDataPointsValues(response) {
// Iterate the streams in the response. // Iterate the streams in the response.
for (var key in response) for (var key in response)
updateDataPointValue(key, response[key]); updateDataPointValue(key, response[key]);
positionComponents();
} }
// Updates the given data stream value. // Updates the given data stream value.
@ -658,14 +689,23 @@ function updateDataPointValue(streamID, value) {
case STREAM_MEMORY_USED: case STREAM_MEMORY_USED:
updateValueWithEffect(ID_MEMORY_USED, kiloBytesToMegaBytes(value)); updateValueWithEffect(ID_MEMORY_USED, kiloBytesToMegaBytes(value));
break; break;
case STREAM_ETHERNET_STATE: case STREAM_ETHERNET0_STATE:
updateValueWithEffect(ID_ETHERNET_STATE, onOffStatus(value)); updateValueWithEffect(ID_ETHERNET0_STATE, onOffStatus(value));
break; break;
case STREAM_ETHERNET_READ_BYTES: case STREAM_ETHERNET0_READ_BYTES:
updateValueWithEffect(ID_ETHERNET_READ_DATA, sizeToHumanRead(value)); updateValueWithEffect(ID_ETHERNET0_READ_DATA, sizeToHumanRead(value));
break; break;
case STREAM_ETHERNET_SENT_BYTES: case STREAM_ETHERNET0_SENT_BYTES:
updateValueWithEffect(ID_ETHERNET_SENT_DATA, sizeToHumanRead(value)); 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; break;
case STREAM_WIFI_STATE: case STREAM_WIFI_STATE:
updateValueWithEffect(ID_WIFI_STATE, onOffStatus(value)); updateValueWithEffect(ID_WIFI_STATE, onOffStatus(value));

View File

@ -81,19 +81,33 @@ class ConnectCoreDevice {
WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 0; WIFI_BT_COMPONENT_AREA_WIDTH_PERCENT = 0;
WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 0; WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT = 0;
// Ethernet panel. // Ethernet0 panel.
ETHERNET_COMPONENT_VISIBLE = false; ETHERNET0_COMPONENT_VISIBLE = false;
ETHERNET_COMPONENT_HAS_PANEL = false; ETHERNET0_COMPONENT_HAS_PANEL = false;
ETHERNET_COMPONENT_HAS_ARROW = false; ETHERNET0_COMPONENT_HAS_ARROW = false;
ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE = false; ETHERNET0_COMPONENT_PANEL_ALWAYS_VISIBLE = false;
ETHERNET_COMPONENT_PANEL_ORIENTATION = VALUE_TOP; ETHERNET0_COMPONENT_PANEL_ORIENTATION = VALUE_TOP;
ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT = 0; ETHERNET0_COMPONENT_PANEL_HORIZONTAL_PERCENT = 0;
ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT = 0; ETHERNET0_COMPONENT_PANEL_VERTICAL_PERCENT = 0;
ETHERNET_COMPONENT_ARROW_PERCENT = 0; ETHERNET0_COMPONENT_ARROW_PERCENT = 0;
ETHERNET_COMPONENT_AREA_TOP_PERCENT = 0; ETHERNET0_COMPONENT_AREA_TOP_PERCENT = 0;
ETHERNET_COMPONENT_AREA_LEFT_PERCENT = 0; ETHERNET0_COMPONENT_AREA_LEFT_PERCENT = 0;
ETHERNET_COMPONENT_AREA_WIDTH_PERCENT = 0; ETHERNET0_COMPONENT_AREA_WIDTH_PERCENT = 0;
ETHERNET_COMPONENT_AREA_HEIGHT_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.
CONSOLE_COMPONENT_VISIBLE = false; CONSOLE_COMPONENT_VISIBLE = false;
@ -167,6 +181,9 @@ class ConnectCoreDevice {
// Capabilities // Capabilities
SUPPORTS_VIDEO_BRIGHTNESS; SUPPORTS_VIDEO_BRIGHTNESS;
SUPPORTS_DUAL_ETHERNET;
NUM_ETHERNET_INTERFACES = 2;
// Device information. // Device information.
#deviceType; #deviceType;
@ -180,8 +197,8 @@ class ConnectCoreDevice {
#boardID; #boardID;
#mcaHWVersion; #mcaHWVersion;
#mcaFWVersion; #mcaFWVersion;
#ethernetMAC; #ethernetMAC = [];
#ethernetIP; #ethernetIP = [];
#wifiMAC; #wifiMAC;
#wifiIP; #wifiIP;
#bluetoothMAC; #bluetoothMAC;
@ -209,8 +226,6 @@ class ConnectCoreDevice {
this.#boardID = deviceData[ID_BOARD_ID]; this.#boardID = deviceData[ID_BOARD_ID];
this.#mcaHWVersion = deviceData[ID_MCA_HW_VERSION]; this.#mcaHWVersion = deviceData[ID_MCA_HW_VERSION];
this.#mcaFWVersion = deviceData[ID_MCA_FW_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.#wifiMAC = deviceData[ID_WIFI_MAC];
this.#wifiIP = deviceData[ID_WIFI_IP]; this.#wifiIP = deviceData[ID_WIFI_IP];
this.#bluetoothMAC = deviceData[ID_BLUETOOTH_MAC]; this.#bluetoothMAC = deviceData[ID_BLUETOOTH_MAC];
@ -219,10 +234,15 @@ class ConnectCoreDevice {
this.#videoResolution = deviceData[ID_VIDEO_RESOLUTION]; this.#videoResolution = deviceData[ID_VIDEO_RESOLUTION];
this.#sampleRate = deviceData[ID_SAMPLE_RATE]; this.#sampleRate = deviceData[ID_SAMPLE_RATE];
this.#numSamplesUpload = deviceData[ID_NUM_SAMPLES_UPLOAD]; 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) { refreshIPs(eth0_ip, eth1_ip, wifi_ip) {
this.#ethernetIP = eth_ip; this.#ethernetIP[0] = eth0_ip;
this.#ethernetIP[1] = eth1_ip;
this.#wifiIP = wifi_ip; this.#wifiIP = wifi_ip;
} }
@ -291,14 +311,18 @@ class ConnectCoreDevice {
return this.#mcaFWVersion; return this.#mcaFWVersion;
} }
// Returns the device Ethernet MAC address. // Returns the device Ethernet MAC address for the given interface index.
getEthernetMAC() { getEthernetMAC(index=0) {
return this.#ethernetMAC; if (index >= this.NUM_ETHERNET_INTERFACES)
return "";
return this.#ethernetMAC[index];
} }
// Returns the device Ethernet IP address. // Returns the device Ethernet IP address for the given interface index.
getEthernetIP() { getEthernetIP(index=0) {
return this.#ethernetIP; if (index >= this.NUM_ETHERNET_INTERFACES)
return "";
return this.#ethernetIP[index];
} }
// Returns the device WiFi MAC address. // Returns the device WiFi MAC address.
@ -389,20 +413,22 @@ class ConnectCoreDevice {
this.WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT)); this.WIFI_BT_COMPONENT_AREA_HEIGHT_PERCENT));
} }
// Returns the Ethernet panel data. // Returns the Ethernet panel data for the given interface index.
getEthernetComponentData() { getEthernetComponentData(index=0) {
return JSON.parse(TEMPLATE_COMPONENT_DATA.format(this.ETHERNET_COMPONENT_VISIBLE, if (index >= this.NUM_ETHERNET_INTERFACES)
this.ETHERNET_COMPONENT_HAS_PANEL, return "";
this.ETHERNET_COMPONENT_HAS_ARROW, return JSON.parse(TEMPLATE_COMPONENT_DATA.format(eval("this.ETHERNET" + index + "_COMPONENT_VISIBLE"),
this.ETHERNET_COMPONENT_PANEL_ALWAYS_VISIBLE, eval("this.ETHERNET" + index + "_COMPONENT_HAS_PANEL"),
this.ETHERNET_COMPONENT_PANEL_ORIENTATION, eval("this.ETHERNET" + index + "_COMPONENT_HAS_ARROW"),
this.ETHERNET_COMPONENT_PANEL_HORIZONTAL_PERCENT, eval("this.ETHERNET" + index + "_COMPONENT_PANEL_ALWAYS_VISIBLE"),
this.ETHERNET_COMPONENT_PANEL_VERTICAL_PERCENT, eval("this.ETHERNET" + index + "_COMPONENT_PANEL_ORIENTATION"),
this.ETHERNET_COMPONENT_ARROW_PERCENT, eval("this.ETHERNET" + index + "_COMPONENT_PANEL_HORIZONTAL_PERCENT"),
this.ETHERNET_COMPONENT_AREA_TOP_PERCENT, eval("this.ETHERNET" + index + "_COMPONENT_PANEL_VERTICAL_PERCENT"),
this.ETHERNET_COMPONENT_AREA_LEFT_PERCENT, eval("this.ETHERNET" + index + "_COMPONENT_ARROW_PERCENT"),
this.ETHERNET_COMPONENT_AREA_WIDTH_PERCENT, eval("this.ETHERNET" + index + "_COMPONENT_AREA_TOP_PERCENT"),
this.ETHERNET_COMPONENT_AREA_HEIGHT_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. // Returns the Console panel data.
@ -489,4 +515,9 @@ class ConnectCoreDevice {
supportsVideoBrightness() { supportsVideoBrightness() {
return this.SUPPORTS_VIDEO_BRIGHTNESS; return this.SUPPORTS_VIDEO_BRIGHTNESS;
} }
// Returns whether the device supports dual ethernet or not.
supportsDualEthernet() {
return this.SUPPORTS_DUAL_ETHERNET;
}
} }