diff --git a/css/style.css b/css/style.css
index 2ed8f840..19f42c93 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 a82344a4..547c2110 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 19072cb0..98e71d88 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 53b17d2a..4d5c4c7b 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 00000000..2c4f5918
--- /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 ID |
+ Qty |
+ Signal Strength |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+ 0 |
+ 0 |
+ |
+
+
+
+
\ No newline at end of file
diff --git a/tabs/gps.js b/tabs/gps.js
new file mode 100644
index 00000000..81600fc7
--- /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 cf208275..52688976 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 798d2b4a..5306137d 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