From 474a610a307bb3ae84b24baf786bae6a0b9dffab Mon Sep 17 00:00:00 2001 From: cTn Date: Sat, 9 Nov 2013 04:05:33 +0100 Subject: [PATCH] utilizing new MSP callback api this resolves a lot of underlying bugs, however bug that causes failed initialization after leaving CLI tab and entering Servo tab is still there. --- tabs/servos.js | 154 +++++++++++++++++++++++++------------------------ 1 file changed, 78 insertions(+), 76 deletions(-) diff --git a/tabs/servos.js b/tabs/servos.js index 2ce9c46daa..ab5e8fc300 100644 --- a/tabs/servos.js +++ b/tabs/servos.js @@ -1,84 +1,86 @@ function tab_initialize_servos() { ga_tracker.sendAppView('Servos'); - - // 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'); - - // rate - 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; - default: - model.html('Doesn\'t support servos'); - } - }, 50); - + // request current Servos Config + send_message(MSP_codes.MSP_IDENT, MSP_codes.MSP_IDENT, false, function() { + send_message(MSP_codes.MSP_SERVO_CONF, MSP_codes.MSP_SERVO_CONF, false, function() { + // drop previous table + $('div.tab-servos table.fields tr:not(:first)').remove(); + + 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'); + + // rate + 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; + default: + model.html('Doesn\'t support servos'); + } + }); + }); + // UI hooks $('a.update').click(function() { // update objects