From 58d34ee9e50ae2a9e89d66c4c185c1cab4df7483 Mon Sep 17 00:00:00 2001 From: cTn Date: Wed, 29 May 2013 19:24:34 +0200 Subject: [PATCH] initial code for gps strength indicator --- css/style.css | 49 +++++++++++++--- js/main.js | 4 +- js/serial_backend.js | 28 +++++++++- main.html | 2 + tabs/gps.html | 121 ++++++++++++++++++++++++++++++++++++++++ tabs/gps.js | 29 ++++++++++ tabs/initial_setup.html | 29 ---------- tabs/initial_setup.js | 9 --- 8 files changed, 222 insertions(+), 49 deletions(-) create mode 100644 tabs/gps.html create mode 100644 tabs/gps.js diff --git a/css/style.css b/css/style.css index 2ed8f8402e..19f42c93eb 100644 --- a/css/style.css +++ b/css/style.css @@ -317,7 +317,6 @@ a:hover { -webkit-transform: rotateX(90deg) translateZ(100px); background-color: silver; } - .tab-initial_setup .GPS_info, .tab-initial_setup .battery, .tab-initial_setup .acc-trim { float: left; @@ -330,7 +329,6 @@ a:hover { border: 1px solid silver; } - .tab-initial_setup .GPS_info .head, .tab-initial_setup .battery .head, .tab-initial_setup .acc-trim .head { display: block; @@ -342,10 +340,6 @@ a:hover { border-bottom: 1px solid silver; background-color: #ececec; } - .tab-initial_setup .GPS_info table { - padding: 5px; - line-height: 18px; - } .tab-initial_setup .battery .fields { padding: 5px; } @@ -401,8 +395,8 @@ a:hover { .tab-initial_setup .compass-wrapper { float: left; - margin-top: 60px; - margin-left: 80px; + margin-top: 50px; + margin-left: 180px; border: 1px solid silver; @@ -723,6 +717,45 @@ a:hover { cursor: pointer; background-color: #13d81d; } +.tab-gps { +} + .tab-gps .GPS_info { + float: left; + display: block; + + + width: 155px; + + border: 1px solid silver; + } + .tab-gps .GPS_info table { + padding: 5px; + line-height: 18px; + } + .tab-gps .GPS_signal_strength { + float: left; + + margin-left: 10px; + + width: 200px; + + border: 1px solid silver; + } + .tab-gps .GPS_signal_strength table { + padding: 5px; + line-height: 18px; + } + .tab-gps .GPS_info .head, + .tab-gps .GPS_signal_strength .head { + display: block; + + text-align: center; + line-height: 20px; + font-weight: bold; + + border-bottom: 1px solid silver; + background-color: #ececec; + } .tab-motor_outputs { } .tab-motor_outputs .right.servos { diff --git a/js/main.js b/js/main.js index a82344a499..547c21108a 100644 --- a/js/main.js +++ b/js/main.js @@ -37,6 +37,8 @@ $(document).ready(function() { $('#content').load("./tabs/receiver.html", tab_initialize_receiver); } else if ($(this).parent().hasClass('tab_auxiliary_configuration')) { $('#content').load("./tabs/auxiliary_configuration.html", tab_initialize_auxiliary_configuration); + } else if ($(this).parent().hasClass('tab_gps')) { + $('#content').load("./tabs/gps.html", tab_initialize_gps); } else if ($(this).parent().hasClass('tab_motor_outputs')) { $('#content').load("./tabs/motor_outputs.html", tab_initialize_motor_outputs); } else if ($(this).parent().hasClass('tab_sensors')) { @@ -50,7 +52,7 @@ $(document).ready(function() { }); // temporary - //$('#content').load("./tabs/initial_setup.html", tab_initialize_initial_setup); + //$('#content').load("./tabs/gps.html", tab_initialize_gps); }); function disable_timers() { diff --git a/js/serial_backend.js b/js/serial_backend.js index 19072cb0fb..98e71d8857 100644 --- a/js/serial_backend.js +++ b/js/serial_backend.js @@ -43,7 +43,8 @@ var MSP_codes = { // Additional baseflight commands that are not compatible with MultiWii MSP_UID: 160, MSP_ACC_TRIM: 240, - MSP_SET_ACC_TRIM: 239 + MSP_SET_ACC_TRIM: 239, + MSP_GPSSVINFO: 164 // get Signal Strength (only U-Blox) } var CONFIG = { @@ -109,7 +110,13 @@ var GPS_DATA = { speed: 0, distanceToHome: 0, ditectionToHome: 0, - update: 0 + update: 0, + + // baseflight specific gps stuff + chn: new Array(), + svid: new Array(), + quality: new Array(), + cno: new Array() } var BATTERY = { @@ -654,6 +661,23 @@ function process_message(code, data) { case MSP_codes.MSP_SET_ACC_TRIM: console.log('Accelerometer trimms saved.'); break; + case MSP_codes.MSP_GPSSVINFO: + if (data.byteLength > 0) { + var numCh = view.getUint8(0); + + var needle = 1; + for (var i = 0; i < numCh; i++) { + GPS_DATA.chn[i] = view.getUint8(needle); + GPS_DATA.svid[i] = view.getUint8(needle + 1); + GPS_DATA.quality[i] = view.getUint8(needle + 2); + GPS_DATA.cno[i] = view.getUint8(needle + 3); + + needle += 4; + } + } + break; + default: + console.log('Unknown code detected: ' + code); } } diff --git a/main.html b/main.html index 53b17d2a66..4d5c4c7bf6 100644 --- a/main.html +++ b/main.html @@ -18,6 +18,7 @@ + @@ -84,6 +85,7 @@
  • PID Tuning
  • Receiver
  • Auxiliary Configuration
  • +
  • GPS
  • Motor/Servo Outputs
  • Raw Sensor Data
  • CLI
  • diff --git a/tabs/gps.html b/tabs/gps.html new file mode 100644 index 0000000000..2c4f591859 --- /dev/null +++ b/tabs/gps.html @@ -0,0 +1,121 @@ +
    +
    + GPS + + + + + + + + + + + + + + + + + + + + + + + + + +
    Altitude:0
    Latitude:0
    Longitude:0
    Speed:0
    Sats:0
    Dist to Home:0
    +
    +
    + GPS Signal Strength + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Sat IDQtySignal Strength
    00
    00
    00
    00
    00
    00
    00
    00
    00
    00
    00
    00
    00
    00
    00
    00
    +
    +
    \ No newline at end of file diff --git a/tabs/gps.js b/tabs/gps.js new file mode 100644 index 0000000000..81600fc789 --- /dev/null +++ b/tabs/gps.js @@ -0,0 +1,29 @@ +function tab_initialize_gps () { + // enable data pulling + timers.push(setInterval(gps_pull, 75)); +} + +function gps_pull() { + // Update GPS data + $('.GPS_info td.alt').html(GPS_DATA.alt); + $('.GPS_info td.lat').html(GPS_DATA.lat / 10000000); + $('.GPS_info td.lon').html(GPS_DATA.lon / 10000000); + $('.GPS_info td.speed').html(GPS_DATA.speed); + $('.GPS_info td.sats').html(GPS_DATA.numSat); + $('.GPS_info td.distToHome').html(GPS_DATA.distanceToHome); + + // Update GPS Signal Strengths + + var e_ss_table = $('div.GPS_signal_strength table tr:not(.titles)') + + for (var i = 0; i < GPS_DATA.chn.length; i++) { + var row = e_ss_table.eq(i); + + $('td', row).eq(0).html(GPS_DATA.svid[i]); + $('td', row).eq(1).html(GPS_DATA.quality); + $('td', row).eq(2).find('progress').val(GPS_DATA.cno); + } + + send_message(MSP_codes.MSP_RAW_GPS, MSP_codes.MSP_RAW_GPS); + send_message(MSP_codes.MSP_GPSSVINFO, MSP_codes.MSP_GPSSVINFO); +} \ No newline at end of file diff --git a/tabs/initial_setup.html b/tabs/initial_setup.html index cf2082754c..52688976a1 100644 --- a/tabs/initial_setup.html +++ b/tabs/initial_setup.html @@ -35,35 +35,6 @@ -
    - GPS - - - - - - - - - - - - - - - - - - - - - - - - - -
    Altitude:0
    Latitude:0
    Longitude:0
    Speed:0
    Sats:0
    Dist to Home:0
    -
    Battery
    diff --git a/tabs/initial_setup.js b/tabs/initial_setup.js index 798d2b4a54..5306137dcf 100644 --- a/tabs/initial_setup.js +++ b/tabs/initial_setup.js @@ -61,14 +61,6 @@ function data_poll() { cube.css('-webkit-transform', 'rotateY(' + ((SENSOR_DATA.kinematicsZ * -1.0) - yaw_fix) + 'deg)'); $('#cubePITCH', cube).css('-webkit-transform', 'rotateX(' + SENSOR_DATA.kinematicsY + 'deg)'); $('#cubeROLL', cube).css('-webkit-transform', 'rotateZ(' + SENSOR_DATA.kinematicsX + 'deg)'); - - // Update GPS data - $('td.alt').html(GPS_DATA.alt); - $('td.lat').html(GPS_DATA.lat); - $('td.long').html(GPS_DATA.lon); - $('td.speed').html(GPS_DATA.speed); - $('td.sats').html(GPS_DATA.numSat); - $('td.distToHome').html(GPS_DATA.distanceToHome); // Update Compass $('div#compass .pointer').css('-webkit-transform', 'rotate(' + (SENSOR_DATA.kinematicsZ) + 'deg)'); @@ -79,7 +71,6 @@ function data_poll() { // Request new data send_message(MSP_codes.MSP_ATTITUDE, MSP_codes.MSP_ATTITUDE); - send_message(MSP_codes.MSP_RAW_GPS, MSP_codes.MSP_RAW_GPS); send_message(MSP_codes.MSP_COMP_GPS, MSP_codes.MSP_COMP_GPS); send_message(MSP_codes.MSP_BAT, MSP_codes.MSP_BAT); } \ No newline at end of file