diff --git a/platforms/nuttx/src/px4/stm/stm32_common/dshot/dshot.c b/platforms/nuttx/src/px4/stm/stm32_common/dshot/dshot.c index 01f5ea7b0f..8951f601af 100644 --- a/platforms/nuttx/src/px4/stm/stm32_common/dshot/dshot.c +++ b/platforms/nuttx/src/px4/stm/stm32_common/dshot/dshot.c @@ -200,7 +200,7 @@ void up_dshot_trigger(void) * bit 12 - dshot telemetry enable/disable * bits 13-16 - XOR checksum **/ -static void dshot_motor_data_set(uint32_t motor_number, uint16_t throttle, bool telemetry) +void dshot_motor_data_set(unsigned motor_number, uint16_t throttle, bool telemetry) { uint16_t packet = 0; uint16_t checksum = 0; @@ -234,16 +234,6 @@ static void dshot_motor_data_set(uint32_t motor_number, uint16_t throttle, bool motor_buffer[motor_number * ONE_MOTOR_BUFF_SIZE + DSHOT_END_OF_STREAM] = 0; } -void up_dshot_motor_data_set(unsigned motor_number, uint16_t throttle, bool telemetry) -{ - dshot_motor_data_set(motor_number, throttle + DShot_cmd_MIN_throttle, telemetry); -} - -void up_dshot_motor_command(unsigned channel, uint16_t command, bool telemetry) -{ - dshot_motor_data_set(channel, command, telemetry); -} - void dshot_dmar_data_prepare(uint8_t timer, uint8_t first_motor, uint8_t motors_number) { uint32_t *buffer = dshot_burst_buffer[timer]; diff --git a/src/drivers/drv_pwm_output.h b/src/drivers/drv_pwm_output.h index 25d0c659d0..aa44f4d508 100644 --- a/src/drivers/drv_pwm_output.h +++ b/src/drivers/drv_pwm_output.h @@ -408,6 +408,11 @@ __EXPORT extern servo_position_t up_pwm_servo_get(unsigned channel); */ __EXPORT extern int up_dshot_init(uint32_t channel_mask, unsigned dshot_pwm_freq); +/** + * Set Dshot motor data, used by up_dshot_motor_data_set() and up_dshot_motor_command() (internal method) + */ +__EXPORT extern void dshot_motor_data_set(unsigned motor_number, uint16_t throttle, bool telemetry); + /** * Set the current dshot throttle value for a channel (motor). * @@ -415,7 +420,10 @@ __EXPORT extern int up_dshot_init(uint32_t channel_mask, unsigned dshot_pwm_freq * @param throttle The output dshot throttle value in [0 = DSHOT_DISARM_VALUE, 1 = DSHOT_MIN_THROTTLE, 1999 = DSHOT_MAX_THROTTLE]. * @param telemetry If true, request telemetry from that motor */ -__EXPORT extern void up_dshot_motor_data_set(unsigned channel, uint16_t throttle, bool telemetry); +static inline void up_dshot_motor_data_set(unsigned channel, uint16_t throttle, bool telemetry) +{ + dshot_motor_data_set(channel, throttle + DShot_cmd_MIN_throttle, telemetry); +} /** * Send DShot command to a channel (motor). @@ -424,7 +432,11 @@ __EXPORT extern void up_dshot_motor_data_set(unsigned channel, uint16_t throttle * @param command dshot_command_t * @param telemetry If true, request telemetry from that motor */ -__EXPORT extern void up_dshot_motor_command(unsigned channel, uint16_t command, bool telemetry); +static inline void up_dshot_motor_command(unsigned channel, uint16_t command, bool telemetry) +{ + dshot_motor_data_set(channel, command, telemetry); +} + /** * Trigger dshot data transfer.