AP_IOMCU: account for possibility of SBUS_OUT in PWM structures

This commit is contained in:
Andy Piper 2024-04-16 17:56:58 +01:00 committed by Andrew Tridgell
parent abb94b03f9
commit 2a786616b1
3 changed files with 6 additions and 6 deletions

View File

@ -346,7 +346,7 @@ void AP_IOMCU::thread_main(void)
// update failsafe pwm // update failsafe pwm
if (pwm_out.failsafe_pwm_set != pwm_out.failsafe_pwm_sent) { if (pwm_out.failsafe_pwm_set != pwm_out.failsafe_pwm_sent) {
uint8_t set = pwm_out.failsafe_pwm_set; uint8_t set = pwm_out.failsafe_pwm_set;
if (write_registers(PAGE_FAILSAFE_PWM, 0, IOMCU_MAX_CHANNELS, pwm_out.failsafe_pwm)) { if (write_registers(PAGE_FAILSAFE_PWM, 0, IOMCU_MAX_RC_CHANNELS, pwm_out.failsafe_pwm)) {
pwm_out.failsafe_pwm_sent = set; pwm_out.failsafe_pwm_sent = set;
} }
} }
@ -372,7 +372,7 @@ void AP_IOMCU::send_servo_out()
if (rate.sbus_rate_hz == 0) { if (rate.sbus_rate_hz == 0) {
n = MIN(n, 8); n = MIN(n, 8);
} else { } else {
n = MIN(n, IOMCU_MAX_CHANNELS); n = MIN(n, IOMCU_MAX_RC_CHANNELS);
} }
uint32_t now = AP_HAL::micros(); uint32_t now = AP_HAL::micros();
if (now - last_servo_out_us >= 2000 || AP_BoardConfig::io_dshot()) { if (now - last_servo_out_us >= 2000 || AP_BoardConfig::io_dshot()) {

View File

@ -966,7 +966,7 @@ bool AP_IOMCU_FW::handle_code_write()
} }
/* copy channel data */ /* copy channel data */
uint16_t i = 0, num_values = rx_io_packet.count; uint16_t i = 0, num_values = rx_io_packet.count;
while ((i < IOMCU_MAX_CHANNELS) && (num_values > 0)) { while ((i < IOMCU_MAX_RC_CHANNELS) && (num_values > 0)) {
/* XXX range-check value? */ /* XXX range-check value? */
if (rx_io_packet.regs[i] != PWM_IGNORE_THIS_CHANNEL) { if (rx_io_packet.regs[i] != PWM_IGNORE_THIS_CHANNEL) {
reg_direct_pwm.pwm[i] = rx_io_packet.regs[i]; reg_direct_pwm.pwm[i] = rx_io_packet.regs[i];

View File

@ -93,17 +93,17 @@ public:
// PAGE_SERVO values // PAGE_SERVO values
struct { struct {
uint16_t pwm[IOMCU_MAX_CHANNELS]; uint16_t pwm[IOMCU_MAX_RC_CHANNELS]; // size has to account for virtual channels via SBUS_OUT
} reg_servo; } reg_servo;
// PAGE_DIRECT_PWM values // PAGE_DIRECT_PWM values
struct { struct {
uint16_t pwm[IOMCU_MAX_CHANNELS]; uint16_t pwm[IOMCU_MAX_RC_CHANNELS];
} reg_direct_pwm; } reg_direct_pwm;
// PAGE_FAILSAFE_PWM // PAGE_FAILSAFE_PWM
struct { struct {
uint16_t pwm[IOMCU_MAX_CHANNELS]; uint16_t pwm[IOMCU_MAX_RC_CHANNELS];
} reg_failsafe_pwm; } reg_failsafe_pwm;
// output rates // output rates