From f85c9d89950f9a4c1594d4cb92e5e28a38212534 Mon Sep 17 00:00:00 2001 From: error414 Date: Sun, 2 Apr 2017 19:58:33 +0200 Subject: [PATCH 1/2] rebase and fix reference to https://github.com/cleanflight/cleanflight-configurator/pull/445 --- _locales/en/messages.json | 41 ++++-- tabs/transponder.html | 56 +++++--- tabs/transponder.js | 267 +++++++++++++++++++++++++++++++------- 3 files changed, 288 insertions(+), 76 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 94a6dad0a..a76428257 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -876,9 +876,6 @@ "receiverRcInterpolationIntervalHelp": { "message": "Interpolation interval for manual RC interpolation mode in milliseconds" }, - "receiverRcInterpolation": { - "message": "RC Interpolation" - }, "receiverRcInterpolationOff": { "message": "Off" }, @@ -1219,24 +1216,48 @@ "transponderNotSupported": { "message": "Your flight controller's firmware does not support transponder functionality." }, - "transponderHelp": { - "message": "Configure your transponder code here. Note: Only valid codes will be recognised by race timing systems. Valid transponder codes can be obtained from Seriously Pro." - }, "transponderInformation": { "message": "Transponders systems allow race organizers to time your laps. The transponder is fitted to your aircraft and when your aircraft passes the timing gate the track-side receiver registers your code and records your laptime. When fitting an IR based transponder your should ensure that it points outward from your aircraft towards the track-side receivers and that the light beam is not obstructed by your airframe, battery-straps, cables, propellers, etc." }, - "transponderConfiguration": { - "message": "Configuration" + "transponderConfigurationType": { + "message": "Transponder type" + }, + "transponderType0": { + "message": "None" + }, + "transponderType1": { + "message": "iLap" + }, + "transponderType2": { + "message": "aRCiTimer" }, - "transponderData": { + "transponderConfiguration1": { + "message": "Configuration iLap" + }, + "transponderConfiguration2": { + "message": "Configuration aRCiTimer" + }, + "transponderData1": { "message": "Data" }, - "transponderDataHelp": { + "transponderData2": { + "message": "Transponder ID" + }, + "transponderDataHelp1": { "message": "Hexadecimal digits only, 0-9, A-F" }, + "transponderHelp1": { + "message": "Configure your transponder code here. Note: Only valid codes will be recognised by race timing systems. Valid transponder codes can be obtained from Seriously Pro." + }, + "transponderHelp2": { + "message": "For more information please visit aRCiTimer site" + }, "transponderButtonSave": { "message": "Save" }, + "transponderButtonSaveReboot": { + "message": "Save and Reboot" + }, "transponderDataInvalid": { "message": "Transponder data is invalid" }, diff --git a/tabs/transponder.html b/tabs/transponder.html index c345326f7..972eed2e9 100644 --- a/tabs/transponder.html +++ b/tabs/transponder.html @@ -1,10 +1,12 @@
+
Transponder
+
- +

@@ -12,41 +14,61 @@
- -
-
-

-
-
-
-
+
+
+
+
+ +
+
+ +
+
+
+
+

+
+
+
+ +
+
+ +
+
-
+
- +

- +
+
-
+
+
diff --git a/tabs/transponder.js b/tabs/transponder.js index 8135c4ab7..4e40669ad 100644 --- a/tabs/transponder.js +++ b/tabs/transponder.js @@ -1,19 +1,50 @@ 'use strict'; + TABS.transponder = { available: false }; TABS.transponder.initialize = function (callback, scrollPosition) { - var self = this; + + var dataTypes = { + NONE : 0, + TEXT : 1, + LIST : 2, + }; + + var transponderConfigurations = { + 0: { + dataType: dataTypes.NONE // empty + }, //NONE + 1: { + dataType: dataTypes.TEXT // + }, //ilap + 2: { + dataType: dataTypes.LIST, // + dataOptions: { + 'ID 1' : 'E00370FC0FFE07E0FF', + 'ID 2' : '007C003EF800FC0FFE', + 'ID 3' : 'F8811FF8811FFFC7FF', + 'ID 4' : '007C003EF81F800FFE', + 'ID 5' : 'F00FFF00FFF00FF0FF', + 'ID 6' : '007CF0C1071F7C00F0', + 'ID 7' : 'E003F03F00FF03F0C1', + 'ID 8' : '00FC0FFE071F3E00FE', + 'ID 9' : 'E083BFF00F9E38C0FF', + } + }, //arcitimer + }; if (GUI.active_tab != 'transponder') { GUI.active_tab = 'transponder'; + googleAnalytics.sendAppView('Transponder'); } - // transponder supported added in MSP API Version 1.16.0 - TABS.transponder.available = semver.gte(CONFIG.apiVersion, "1.16.0"); - + if (CONFIG) { + TABS.transponder.available = semver.gte(CONFIG.apiVersion, "1.16.0"); + } + ////////////// if (!TABS.transponder.available) { load_html(); return; @@ -23,13 +54,11 @@ TABS.transponder.initialize = function (callback, scrollPosition) { $('#content').load("./tabs/transponder.html", process_html); } - // get the transponder data and a flag to see if transponder support is enabled on the FC - MSP.send_message(MSPCodes.MSP_TRANSPONDER_CONFIG, false, false, load_html); - + //HELPERS // Convert a hex string to a byte array function hexToBytes(hex) { for (var bytes = [], c = 0; c < hex.length; c += 2) - bytes.push(~parseInt(hex.substr(c, 2), 16)); + bytes.push(~parseInt(hex.substr(c, 2), 16)); return bytes; } @@ -37,63 +66,203 @@ TABS.transponder.initialize = function (callback, scrollPosition) { n = n + ''; return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n; } - + // Convert a byte array to a hex string function bytesToHex(bytes) { for (var hex = [], i = 0; i < bytes.length; i++) { - hex.push(pad(((~bytes[i]) & 0xFF).toString(16),2)); + hex.push(pad(((~bytes[i]) & 0xFF).toString(16), 2)); } return hex.join("").toUpperCase(); } - function process_html() { - // translate to user-selected language - localize(); - - $(".tab-transponder") - .toggleClass("transponder-supported", TABS.transponder.available && TRANSPONDER.supported); - - if (TABS.transponder.available) { - - var data = bytesToHex(TRANSPONDER.data); - - $('input[name="data"]').val(data); - $('input[name="data"]').prop('maxLength', data.length); - - $('a.save').click(function () { - - - // gather data that doesn't have automatic change event bound - - var dataString = $('input[name="data"]').val(); - var expectedLength = TRANSPONDER.data.length; - var hexRegExp = new RegExp('[0-9a-fA-F]{' + (expectedLength * 2) + '}', 'gi'); - if (!dataString.match(hexRegExp)) { - GUI.log(chrome.i18n.getMessage('transponderDataInvalid')); - return; + ///////////// + + function fillByTransponderProviders(transponderProviders, transponderProviderID, toggleTransponderType){ + var transponderTypeSelect = $('#transponder_type_select'); + transponderTypeSelect.attr('data-defaultValue', transponderProviderID); + transponderTypeSelect.off('change').change(toggleTransponderType); + transponderTypeSelect.html(''); + + //build radio buttons + transponderTypeSelect.append( + $('
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
diff --git a/tabs/transponder.js b/tabs/transponder.js index 4e40669ad..64ca0d756 100644 --- a/tabs/transponder.js +++ b/tabs/transponder.js @@ -5,15 +5,18 @@ TABS.transponder = { available: false }; -TABS.transponder.initialize = function (callback, scrollPosition) { +TABS.transponder.initialize = function(callback, scrollPosition) { - var dataTypes = { - NONE : 0, - TEXT : 1, - LIST : 2, + let _persistentInputValues = {}; + + let dataTypes = { + NONE: 0, + TEXT: 1, + LIST: 2, }; - var transponderConfigurations = { + // CONFIGURATION HERE FOR ADD NEW TRANSPONDER + let transponderConfigurations = { 0: { dataType: dataTypes.NONE // empty }, //NONE @@ -23,29 +26,30 @@ TABS.transponder.initialize = function (callback, scrollPosition) { 2: { dataType: dataTypes.LIST, // dataOptions: { - 'ID 1' : 'E00370FC0FFE07E0FF', - 'ID 2' : '007C003EF800FC0FFE', - 'ID 3' : 'F8811FF8811FFFC7FF', - 'ID 4' : '007C003EF81F800FFE', - 'ID 5' : 'F00FFF00FFF00FF0FF', - 'ID 6' : '007CF0C1071F7C00F0', - 'ID 7' : 'E003F03F00FF03F0C1', - 'ID 8' : '00FC0FFE071F3E00FE', - 'ID 9' : 'E083BFF00F9E38C0FF', + 'ID 1': 'E00370FC0FFE07E0FF', + 'ID 2': '007C003EF800FC0FFE', + 'ID 3': 'F8811FF8811FFFC7FF', + 'ID 4': '007C003EF81F800FFE', + 'ID 5': 'F00FFF00FFF00FF0FF', + 'ID 6': '007CF0C1071F7C00F0', + 'ID 7': 'E003F03F00FF03F0C1', + 'ID 8': '00FC0FFE071F3E00FE', + 'ID 9': 'E083BFF00F9E38C0FF', } }, //arcitimer }; + ///////////////////////////////////////////// - if (GUI.active_tab != 'transponder') { + if ( GUI.active_tab != 'transponder' ) { GUI.active_tab = 'transponder'; googleAnalytics.sendAppView('Transponder'); } // transponder supported added in MSP API Version 1.16.0 - if (CONFIG) { + if ( CONFIG ) { TABS.transponder.available = semver.gte(CONFIG.apiVersion, "1.16.0"); } ////////////// - if (!TABS.transponder.available) { + if ( !TABS.transponder.available ) { load_html(); return; } @@ -57,8 +61,11 @@ TABS.transponder.initialize = function (callback, scrollPosition) { //HELPERS // Convert a hex string to a byte array function hexToBytes(hex) { - for (var bytes = [], c = 0; c < hex.length; c += 2) + var bytes = []; + for ( let c = 0; c < hex.length; c += 2 ) { bytes.push(~parseInt(hex.substr(c, 2), 16)); + } + return bytes; } @@ -69,15 +76,17 @@ TABS.transponder.initialize = function (callback, scrollPosition) { // Convert a byte array to a hex string function bytesToHex(bytes) { - for (var hex = [], i = 0; i < bytes.length; i++) { + var hex = []; + for ( let i = 0; i < bytes.length; i++ ) { hex.push(pad(((~bytes[i]) & 0xFF).toString(16), 2)); } return hex.join("").toUpperCase(); } + ///////////// - function fillByTransponderProviders(transponderProviders, transponderProviderID, toggleTransponderType){ - var transponderTypeSelect = $('#transponder_type_select'); + function fillByTransponderProviders(transponderProviders, transponderProviderID, toggleTransponderType) { + let transponderTypeSelect = $('#transponder_type_select'); transponderTypeSelect.attr('data-defaultValue', transponderProviderID); transponderTypeSelect.off('change').change(toggleTransponderType); transponderTypeSelect.html(''); @@ -87,10 +96,10 @@ TABS.transponder.initialize = function (callback, scrollPosition) { $('