diff --git a/js/serial_backend.js b/js/serial_backend.js
index 171543e0e2..55b4ada65f 100644
--- a/js/serial_backend.js
+++ b/js/serial_backend.js
@@ -445,8 +445,10 @@ function process_message(code, data, bytes) {
$('.software-version').html(CONFIG.version);
// IDENT received, show the tab content
- configuration_received = true;
- $('#tabs li a:first').click();
+ if (!configuration_received) {
+ configuration_received = true;
+ $('#tabs li a:first').click();
+ }
break;
case MSP_codes.MSP_STATUS:
CONFIG.cycleTime = view.getUint16(0, 1);
diff --git a/tabs/initial_setup.js b/tabs/initial_setup.js
index af0a7d4c0d..7696811c22 100644
--- a/tabs/initial_setup.js
+++ b/tabs/initial_setup.js
@@ -60,6 +60,15 @@ function tab_initialize_initial_setup() {
case 18: // HEX6 H
str = 'HEX6 H';
break;
+ case 19: // PPM to SERVO
+ str = 'PPM to SERVO';
+ break;
+ case 20: // Dualcopter
+ str = 'Dualcopter';
+ break;
+ case 21: //
+ str = 'Singlecopter';
+ break;
}
$('span.model').html('Model: ' + str);
diff --git a/tabs/servos.html b/tabs/servos.html
index 87a9f9dfef..9fa0afc152 100644
--- a/tabs/servos.html
+++ b/tabs/servos.html
@@ -1,3 +1,79 @@
+
- servos
+ Model:
+
+
+ Name |
+ MID |
+ MIN |
+ MAX |
+ Throt | Roll | Pitch | Yaw | AUX1 | AUX2 | AUX3 | AUX4 |
+ Reverse Direction |
+
+
+
Save
\ No newline at end of file
diff --git a/tabs/servos.js b/tabs/servos.js
index 15ca4d3854..96303427a7 100644
--- a/tabs/servos.js
+++ b/tabs/servos.js
@@ -1,6 +1,115 @@
function tab_initialize_servos() {
ga_tracker.sendAppView('Servos');
- // request current Servo Config
+ // request current Servos Config
+ send_message(MSP_codes.MSP_IDENT, MSP_codes.MSP_IDENT);
send_message(MSP_codes.MSP_SERVO_CONF, MSP_codes.MSP_SERVO_CONF);
+
+ var model = $('div.tab-servos strong.model');
+ var servos = [];
+
+ setTimeout(function() {
+ switch (CONFIG.multiType) {
+ case 1: // TRI
+ model.html('TRI');
+
+ process_servos('Rear', SERVO_CONFIG[5], 5);
+
+ servos = [5];
+ break;
+ case 4: // BI
+ model.html('BI');
+
+ process_servos('Left', SERVO_CONFIG[4], 4);
+ process_servos('Right', SERVO_CONFIG[5], 5);
+
+ servos = [4, 5];
+ break;
+ case 5: // Gimbal
+ model.html('Gimbal');
+
+ process_servos('Pitch Servo', SERVO_CONFIG[0], 0);
+ process_servos('Roll Servo', SERVO_CONFIG[1], 1);
+
+ servos = [0, 1];
+ break;
+ case 8: // Flying Wing
+ model.html('Flying Wing');
+
+ process_servos('Left', SERVO_CONFIG[3], 3);
+ process_servos('Right', SERVO_CONFIG[4], 4);
+
+ servos = [3, 4];
+ break;
+ case 14: // Airplane
+ model.html('Airplane');
+
+ process_servos('Wing 1', SERVO_CONFIG[3], 3);
+ process_servos('Wing 2', SERVO_CONFIG[4], 4);
+ process_servos('Rudd', SERVO_CONFIG[5], 5);
+ process_servos('Elev', SERVO_CONFIG[6], 6);
+ process_servos('Thro', SERVO_CONFIG[7], 7);
+
+ servos = [2, 3, 4, 5, 6, 7];
+ break;
+ case 20: // Dualcopter
+ model.html('Dualcopter');
+
+ process_servos('Pitch', SERVO_CONFIG[4], 4);
+ process_servos('Roll', SERVO_CONFIG[5], 5);
+ process_servos('M 1', SERVO_CONFIG[6], 6);
+ process_servos('M 0', SERVO_CONFIG[7], 7);
+
+ servos = [4, 5, 6, 7];
+ break;
+ case 21: // Singlecopter
+ model.html('Singlecopter');
+
+ process_servos('Right', SERVO_CONFIG[3], 3);
+ process_servos('Left', SERVO_CONFIG[4], 4);
+ process_servos('Front', SERVO_CONFIG[5], 5);
+ process_servos('Rear', SERVO_CONFIG[6], 6);
+ process_servos('Motor', SERVO_CONFIG[7], 7);
+
+ servos = [3, 4, 5, 6, 7];
+ break;
+ }
+ }, 50);
+}
+
+function process_servos(name, obj, pos) {
+ $('div.tab-servos table.fields').append('\
+ \
+ ' + name + ' | \
+ | \
+ | \
+ | \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ | \
+ | \
+
\
+ '
+ );
+
+ if (obj.middle <= 7) {
+ $('div.tab-servos table.fields tr:last td.channel').find('input').eq(obj.middle).prop('checked', true);
+ }
+
+ // UI hooks
+ $('div.tab-servos table.fields tr:last td.channel').find('input').click(function() {
+ if($(this).is(':checked')) {
+ $(this).parent().parent().parent().find('td.middle input').prop('disabled', true);
+ $('div.tab-servos table.fields tr:last td.channel').find('input').not($(this)).prop('checked', false);
+ } else {
+ $(this).parent().parent().parent().find('td.middle input').prop('disabled', false);
+ }
+ });
}
\ No newline at end of file