1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-17 21:35:44 +03:00

Update servos tab to support cleanflight's cleaner implementation of

channel forwarding which doesn't re-use 'middle'

This essentially removes the legacy multiwii hack support.
This commit is contained in:
Dominic Clifton 2014-07-06 12:26:41 +01:00
parent 7e62e98bac
commit 9c6fdf81c8
2 changed files with 32 additions and 18 deletions

View file

@ -21,6 +21,7 @@ var MSP_codes = {
MSP_WP: 118, MSP_WP: 118,
MSP_BOXIDS: 119, MSP_BOXIDS: 119,
MSP_SERVO_CONF: 120, MSP_SERVO_CONF: 120,
MSP_CHANNEL_FORWARDING: 123,
MSP_SET_RAW_RC: 200, MSP_SET_RAW_RC: 200,
MSP_SET_RAW_GPS: 201, MSP_SET_RAW_GPS: 201,
@ -35,6 +36,7 @@ var MSP_codes = {
MSP_SELECT_SETTING: 210, MSP_SELECT_SETTING: 210,
MSP_SET_HEAD: 211, MSP_SET_HEAD: 211,
MSP_SET_SERVO_CONF: 212, MSP_SET_SERVO_CONF: 212,
MSP_SET_CHANNEL_FORWARDING: 213,
MSP_SET_MOTOR: 214, MSP_SET_MOTOR: 214,
// MSP_BIND: 240, // MSP_BIND: 240,
@ -371,6 +373,11 @@ MSP.process_data = function(code, message_buffer, message_length) {
SERVO_CONFIG.push(arr); SERVO_CONFIG.push(arr);
} }
break; break;
case MSP_codes.MSP_CHANNEL_FORWARDING:
for (var i = 0; i < 8; i ++) {
SERVO_CONFIG[i].indexOfChannelToForward = data.getUint8(i);
}
break;
case MSP_codes.MSP_SET_RAW_RC: case MSP_codes.MSP_SET_RAW_RC:
break; break;
case MSP_codes.MSP_SET_RAW_GPS: case MSP_codes.MSP_SET_RAW_GPS:

View file

@ -12,7 +12,11 @@ function tab_initialize_servos() {
MSP.send_message(MSP_codes.MSP_IDENT, false, false, get_servo_conf_data); MSP.send_message(MSP_codes.MSP_IDENT, false, false, get_servo_conf_data);
function get_servo_conf_data() { function get_servo_conf_data() {
MSP.send_message(MSP_codes.MSP_SERVO_CONF, false, false, get_boxnames_data); MSP.send_message(MSP_codes.MSP_SERVO_CONF, false, false, get_channel_forwarding_data);
}
function get_channel_forwarding_data() {
MSP.send_message(MSP_codes.MSP_CHANNEL_FORWARDING, false, false, get_boxnames_data);
} }
function get_boxnames_data() { function get_boxnames_data() {
@ -57,7 +61,7 @@ function tab_initialize_servos() {
$('div.tab-servos table.fields').append('\ $('div.tab-servos table.fields').append('\
<tr> \ <tr> \
<td style="text-align: center">' + name + '</td>\ <td style="text-align: center">' + name + '</td>\
<td class="middle"><input type="number" min="1000" max="2000" value="' + ((SERVO_CONFIG[obj].middle <= 7) ? 1500 : SERVO_CONFIG[obj].middle) + '" /></td>\ <td class="middle"><input type="number" min="1000" max="2000" value="' + SERVO_CONFIG[obj].middle + '" /></td>\
<td class="min"><input type="number" min="1000" max="2000" value="' + SERVO_CONFIG[obj].min +'" /></td>\ <td class="min"><input type="number" min="1000" max="2000" value="' + SERVO_CONFIG[obj].min +'" /></td>\
<td class="max"><input type="number" min="1000" max="2000" value="' + SERVO_CONFIG[obj].max +'" /></td>\ <td class="max"><input type="number" min="1000" max="2000" value="' + SERVO_CONFIG[obj].max +'" /></td>\
<td class="channel"><input type="checkbox"/></td>\ <td class="channel"><input type="checkbox"/></td>\
@ -75,10 +79,7 @@ function tab_initialize_servos() {
</tr> \ </tr> \
'); ');
if (SERVO_CONFIG[obj].middle <= 7) { $('div.tab-servos table.fields tr:last td.channel input').eq(SERVO_CONFIG[obj].indexOfChannelToForward).prop('checked', true);
$('div.tab-servos table.fields tr:last td.middle input').prop('disabled', true);
$('div.tab-servos table.fields tr:last td.channel input').eq(SERVO_CONFIG[obj].middle).prop('checked', true);
}
if (directions == true) { if (directions == true) {
$('div.tab-servos table.fields tr:last td.direction input:first').prop('checked', bit_check(SERVO_CONFIG[obj].rate, 0)); $('div.tab-servos table.fields tr:last td.direction input:first').prop('checked', bit_check(SERVO_CONFIG[obj].rate, 0));
@ -108,12 +109,11 @@ function tab_initialize_servos() {
$('div.tab-servos table.fields tr:last').data('info', {'obj': obj}); $('div.tab-servos table.fields tr:last').data('info', {'obj': obj});
// UI hooks // UI hooks
// only one checkbox for indicating a channel to forward can be selected at a time, perhaps a radio group would be best here.
$('div.tab-servos table.fields tr:last td.channel input').click(function() { $('div.tab-servos table.fields tr:last td.channel input').click(function() {
if($(this).is(':checked')) { if($(this).is(':checked')) {
$(this).parent().parent().find('td.middle input').prop('disabled', true);
$(this).parent().parent().find('.channel input').not($(this)).prop('checked', false); $(this).parent().parent().find('.channel input').not($(this)).prop('checked', false);
} else {
$(this).parent().parent().find('td.middle input').prop('disabled', false).val(1500);
} }
}); });
} }
@ -133,15 +133,14 @@ function tab_initialize_servos() {
$('div.tab-servos table.fields tr:not(".main")').each(function() { $('div.tab-servos table.fields tr:not(".main")').each(function() {
var info = $(this).data('info'); var info = $(this).data('info');
if ($('.middle input', this).is(':disabled')) {
var selection = $('.channel input', this); var selection = $('.channel input', this);
var val = selection.index(selection.filter(':checked')); var val = selection.index(selection.filter(':checked'));
SERVO_CONFIG[info.obj].middle = parseInt(val); SERVO_CONFIG[info.obj].indexOfChannelToForward = parseInt(val);
} else {
SERVO_CONFIG[info.obj].middle = parseInt($('.middle input', this).val());
}
SERVO_CONFIG[info.obj].middle = parseInt($('.middle input', this).val());
SERVO_CONFIG[info.obj].min = parseInt($('.min input', this).val()); SERVO_CONFIG[info.obj].min = parseInt($('.min input', this).val());
SERVO_CONFIG[info.obj].max = parseInt($('.max input', this).val()); SERVO_CONFIG[info.obj].max = parseInt($('.max input', this).val());
@ -174,9 +173,17 @@ function tab_initialize_servos() {
buffer_out[needle++] = lowByte(SERVO_CONFIG[i].rate); buffer_out[needle++] = lowByte(SERVO_CONFIG[i].rate);
} }
MSP.send_message(MSP_codes.MSP_SET_SERVO_CONF, buffer_out); MSP.send_message(MSP_codes.MSP_SET_SERVO_CONF, buffer_out);
// send channel forwarding over to mcu
buffer_out = [];
var needle = 0;
for (var i = 0; i < SERVO_CONFIG.length; i++) {
buffer_out[needle++] = SERVO_CONFIG[i].indexOfChannelToForward;
}
MSP.send_message(MSP_codes.MSP_SET_CHANNEL_FORWARDING, buffer_out);
if (save_to_eeprom) { if (save_to_eeprom) {
// Save changes to EEPROM // Save changes to EEPROM
MSP.send_message(MSP_codes.MSP_EEPROM_WRITE, false, false, function() { MSP.send_message(MSP_codes.MSP_EEPROM_WRITE, false, false, function() {