Updated layout

This commit is contained in:
Christoffer Martinsson 2025-03-08 18:09:07 +01:00
parent c3d29e6b49
commit 61bcb0d1f8

View File

@ -22,7 +22,7 @@
// ---------------------------------------------------------------
// | Fn L| B2 U| B26 U| | B3 | | B28 U| B5 U| B4 L|
// ---------------------------------------------------------------
// | | TH | B6 | B8 | | B13 | B12 | B11 | |
// | | B1 | B6 | B8 | | B13 | B12 | B11 | |
// | |
// | | B9 | | B14 | |
// | | B10 | | B15 | |
@ -34,7 +34,7 @@
//
// USB HID joystick map (Fn):
// ---------------------------------------------------------------
// | Fn L| B21 U| B27 U| | B3 | | B28 U| B5 U| B22 L|
// | Fn L| B21 U| B27 U| | B3 | | B28 U| B32 U| B22 L|
// ---------------------------------------------------------------
// | | TH | B7 | B16 | | B17 | B24 | B23 | |
// | |
@ -310,8 +310,13 @@ fn main() -> ! {
let mut buttons: [Button; NUMBER_OF_BUTTONS + 2] = [Button::default(); NUMBER_OF_BUTTONS + 2];
let mut gimbal_mode: u8;
// Special button functions
// Throttle hold:
pub const TH_BUTTON: u8 = 5;
pub const TH_BUTTON_TRIGGER: u8 = 0;
// Set up usb button layout
buttons[0].usb_button = 0;
buttons[0].usb_button = 0; // Fn
buttons[1].usb_button = 2;
buttons[1].usb_button_sec_enable = true;
buttons[1].usb_button_sec = 21;
@ -322,7 +327,15 @@ fn main() -> ! {
buttons[3].usb_button_sec = 22;
buttons[3].usb_button_sec_trigger_index = 0;
buttons[4].usb_button = 5;
buttons[5].usb_button = 0;
buttons[4].usb_button_sec_enable = true;
buttons[4].usb_button_sec = 32;
buttons[4].usb_button_sec_trigger_index = 0;
buttons[5].usb_button = 1;
buttons[5].usb_button_sec_enable = true;
// Dummy definition to inhibit button press on throttle hold
buttons[5].usb_button_sec = 0;
buttons[5].usb_button_sec_trigger_index = 0;
// Dummy end -----------------------------------------------
buttons[6].usb_button = 6;
buttons[6].usb_button_sec_enable = true;
buttons[6].usb_button_sec = 7;
@ -332,10 +345,10 @@ fn main() -> ! {
buttons[7].usb_button_sec = 16;
buttons[7].usb_button_sec_trigger_index = 0;
buttons[8].usb_button = 9;
buttons[8].usb_button_sec_enable = true;
buttons[8].usb_button_sec = 29;
buttons[8].usb_button_sec_trigger_index = 0;
buttons[9].usb_button = 10;
buttons[9].usb_button_sec_enable = true;
buttons[9].usb_button_sec = 29;
buttons[9].usb_button_sec_trigger_index = 0;
buttons[10].usb_button = 11;
buttons[10].usb_button_sec_enable = true;
buttons[10].usb_button_sec = 23;
@ -349,10 +362,10 @@ fn main() -> ! {
buttons[12].usb_button_sec = 17;
buttons[12].usb_button_sec_trigger_index = 0;
buttons[13].usb_button = 14;
buttons[13].usb_button_sec_enable = true;
buttons[13].usb_button_sec = 31;
buttons[13].usb_button_sec_trigger_index = 0;
buttons[14].usb_button = 15;
buttons[14].usb_button_sec_enable = true;
buttons[14].usb_button_sec = 31;
buttons[14].usb_button_sec_trigger_index = 0;
buttons[15].usb_button = 18;
buttons[15].usb_button_sec_enable = true;
buttons[15].usb_button_sec = 20;
@ -587,6 +600,12 @@ fn main() -> ! {
}
// Generate led activity when a button is pressed
let mut th_trigger_pressed: bool = false;
for (index, key) in buttons.iter_mut().enumerate() {
if key.pressed && index == TH_BUTTON_TRIGGER.into() {
th_trigger_pressed = true;
}
}
for (index, key) in buttons.iter_mut().enumerate() {
if key.pressed != key.previous_pressed {
key.usb_changed = true;
@ -596,14 +615,16 @@ fn main() -> ! {
// Set throttle_hold_value
if key.pressed != key.previous_pressed
&& key.pressed
&& index == 5
&& index == TH_BUTTON.into()
&& th_trigger_pressed
&& unprocessed_value != AXIS_CENTER
{
axis[GIMBAL_AXIS_LEFT_Y].hold = axis[GIMBAL_AXIS_LEFT_Y].value;
axis[GIMBAL_AXIS_LEFT_Y].hold_pending = true;
} else if key.pressed != key.previous_pressed
&& key.pressed
&& index == 5
&& index == TH_BUTTON.into()
&& th_trigger_pressed
&& unprocessed_value == AXIS_CENTER
{
axis[GIMBAL_AXIS_LEFT_Y].hold = AXIS_CENTER;
@ -796,7 +817,12 @@ fn get_joystick_report(
// Sec button mode
} else if key.pressed && key.usb_button_sec != 0 && key.usb_button_sec_pressed {
buttons |= 1 << (key.usb_button_sec - 1);
} else if key.pressed && key.usb_button != 0 && !key.usb_button_toggle_enable {
// Standard mode
} else if key.pressed
&& key.usb_button != 0
&& !key.usb_button_toggle_enable
&& !key.usb_button_sec_pressed
{
buttons |= 1 << (key.usb_button - 1);
}
}