'use strict'; const path = require('path'); const mspHelper = require('./../js/msp/MSPHelper'); const MSPCodes = require('./../js/msp/MSPCodes'); const MSP = require('./../js/msp'); const { GUI, TABS } = require('./../js/gui'); const FC = require('./../js/fc'); const i18n = require('./../js/localization'); const serialPortHelper = require('./../js/serialPortHelper'); TABS.ports = {}; TABS.ports.initialize = function (callback) { var columns = ['data', 'logging', 'sensors', 'telemetry', 'rx', 'peripherals']; if (GUI.active_tab != 'ports') { GUI.active_tab = 'ports'; } mspHelper.loadSerialPorts(function () { GUI.load(path.join(__dirname, "ports.html"), on_tab_loaded_handler) }); function update_ui() { $(".tab-ports").addClass("supported"); var i, $elements; $elements = $('select.sensors_baudrate'); for (i = 0; i < serialPortHelper.getBauds('SENSOR').length; i++) { $elements.append(''); } $elements = $('select.msp_baudrate'); for (i = 0; i < serialPortHelper.getBauds('MSP').length; i++) { $elements.append(''); } $elements = $('select.telemetry_baudrate'); for (i = 0; i < serialPortHelper.getBauds('TELEMETRY').length; i++) { $elements.append(''); } $elements = $('select.peripherals_baudrate'); for (i = 0; i < serialPortHelper.getBauds('PERIPHERAL').length; i++) { $elements.append(''); } var ports_e = $('.tab-ports .ports'); var port_configuration_template_e = $('#tab-ports-templates .portConfiguration'); for (var portIndex = 0; portIndex < FC.SERIAL_CONFIG.ports.length; portIndex++) { var port_configuration_e = port_configuration_template_e.clone(); var serialPort = FC.SERIAL_CONFIG.ports[portIndex]; port_configuration_e.data('serialPort', serialPort); //Append only port different than USB VCP if (serialPort.identifier != 20) { port_configuration_e.find('select.msp_baudrate').val(serialPort.msp_baudrate); port_configuration_e.find('select.telemetry_baudrate').val(serialPort.telemetry_baudrate); port_configuration_e.find('select.sensors_baudrate').val(serialPort.sensors_baudrate); port_configuration_e.find('select.peripherals_baudrate').val(serialPort.peripherals_baudrate); port_configuration_e.find('.identifier').text(serialPortHelper.getPortName(serialPort.identifier)); if (serialPort.identifier >= 30) { port_configuration_e.find('.softSerialWarning').css("display", "inline") } else { port_configuration_e.find('.softSerialWarning').css("display", "none") } port_configuration_e.data('index', portIndex); port_configuration_e.data('port', serialPort); for (var columnIndex = 0; columnIndex < columns.length; columnIndex++) { var column = columns[columnIndex]; var functions_e = $(port_configuration_e).find('.functionsCell-' + column); let functions_e_id = "portFunc-" + column + "-" + portIndex; functions_e.attr("id", functions_e_id); for (i = 0; i < serialPortHelper.getRules().length; i++) { var functionRule = serialPortHelper.getRules()[i]; var functionName = functionRule.name; if (functionRule.groups.indexOf(column) == -1) { continue; } var select_e; if (column !== 'telemetry' && column !== 'peripherals' && column !== 'sensors') { var checkboxId = 'functionCheckbox-' + portIndex + '-' + columnIndex + '-' + i; functions_e.prepend(''); if (serialPort.functions.indexOf(functionName) >= 0) { var checkbox_e = functions_e.find('#' + checkboxId); checkbox_e.prop("checked", true); } } else { var selectElementName = 'function-' + column; var selectElementSelector = 'select[name=' + selectElementName + ']'; select_e = functions_e.find(selectElementSelector); if (select_e.length == 0) { functions_e.prepend('