Small bug fixes

This commit is contained in:
Christoffer Martinsson 2025-09-15 23:09:45 +02:00
parent 87b3da3e89
commit 6cf9bde7e0
4 changed files with 11 additions and 14 deletions

View File

@ -174,13 +174,14 @@ impl VirtualAxis {
} else if (self.value != AXIS_CENTER && !up_pressed && !down_pressed) } else if (self.value != AXIS_CENTER && !up_pressed && !down_pressed)
|| (up_pressed && down_pressed) || (up_pressed && down_pressed)
{ {
// Return to center when no buttons pressed or both pressed // Return to center when no buttons are pressed or both are pressed
if self.value < AXIS_CENTER + self.step { let before = self.value;
self.value += self.step; if self.value > AXIS_CENTER {
} else if self.value > AXIS_CENTER - self.step { self.value = self.value.saturating_sub(self.step);
self.value -= self.step; } else if self.value < AXIS_CENTER {
self.value = self.value.saturating_add(self.step);
} }
activity = true; activity |= self.value != before;
} }
activity activity

View File

@ -79,9 +79,6 @@ pub mod timers {
/// Status LED update interval (250ms) /// Status LED update interval (250ms)
pub const STATUS_LED_INTERVAL_MS: u32 = 250; pub const STATUS_LED_INTERVAL_MS: u32 = 250;
/// Millisecond timer interval (1ms)
pub const MS_INTERVAL_MS: u32 = 1;
/// Scan timer interval (200us) /// Scan timer interval (200us)
pub const SCAN_INTERVAL_US: u32 = 200; pub const SCAN_INTERVAL_US: u32 = 200;

View File

@ -271,8 +271,7 @@ fn main() -> ! {
let mut status_led_count_down = timer.count_down(); let mut status_led_count_down = timer.count_down();
status_led_count_down.start(timers::STATUS_LED_INTERVAL_MS.millis()); status_led_count_down.start(timers::STATUS_LED_INTERVAL_MS.millis());
let mut ms_count_down = timer.count_down(); // Removed unused millisecond countdown timer
ms_count_down.start(timers::MS_INTERVAL_MS.millis());
let mut scan_count_down = timer.count_down(); let mut scan_count_down = timer.count_down();
scan_count_down.start(timers::SCAN_INTERVAL_US.micros()); scan_count_down.start(timers::SCAN_INTERVAL_US.micros());

View File

@ -62,8 +62,8 @@ pub fn get_joystick_report(
let mut slider: i16 = axis_12bit_to_i16(ADC_MIN); let mut slider: i16 = axis_12bit_to_i16(ADC_MIN);
let mut hat: u8 = 8; // Hat center position let mut hat: u8 = 8; // Hat center position
// Virtual axis control: Disables z and rx axis and uses right gimbal Y axis to control // Virtual axis control: Disables z axis and uses right gimbal X axis to control
// slider axis. Values from center stick to max or min will be recalculated to min to max. // the slider axis. Values from center stick to max or min will be recalculated to min to max.
if *vt_enable { if *vt_enable {
if axis[GIMBAL_AXIS_RIGHT_X].value >= AXIS_CENTER { if axis[GIMBAL_AXIS_RIGHT_X].value >= AXIS_CENTER {
slider = axis_12bit_to_i16(remap( slider = axis_12bit_to_i16(remap(
@ -379,4 +379,4 @@ mod tests {
assert_eq!(report.buttons & (1 << 7), 1 << 7); // Button 8 assert_eq!(report.buttons & (1 << 7), 1 << 7); // Button 8
assert_eq!(report.hat, 0); // HAT up direction assert_eq!(report.hat, 0); // HAT up direction
} }
} }