mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-23 09:47:35 +08:00
Build test code for S.BUS output, send test characters once S.BUS1 or S.BUS2 is enabled
This commit is contained in:
@@ -254,10 +254,24 @@ mixer_tick(void)
|
||||
for (unsigned i = 0; i < PX4IO_SERVO_COUNT; i++)
|
||||
up_pwm_servo_set(i, r_page_servos[i]);
|
||||
|
||||
/* set S.BUS1 or S.BUS2 outputs */
|
||||
if (r_setup_features & PX4IO_P_SETUP_FEATURES_SBUS1_OUT)
|
||||
sbus1_output(r_page_servos, PX4IO_SERVO_COUNT);
|
||||
|
||||
if (r_setup_features & PX4IO_P_SETUP_FEATURES_SBUS2_OUT)
|
||||
sbus2_output(r_page_servos, PX4IO_SERVO_COUNT);
|
||||
|
||||
} else if (mixer_servos_armed && should_always_enable_pwm) {
|
||||
/* set the disarmed servo outputs. */
|
||||
for (unsigned i = 0; i < PX4IO_SERVO_COUNT; i++)
|
||||
up_pwm_servo_set(i, r_page_servo_disarmed[i]);
|
||||
|
||||
/* set S.BUS1 or S.BUS2 outputs */
|
||||
if (r_setup_features & PX4IO_P_SETUP_FEATURES_SBUS1_OUT)
|
||||
sbus1_output(r_page_servos, PX4IO_SERVO_COUNT);
|
||||
|
||||
if (r_setup_features & PX4IO_P_SETUP_FEATURES_SBUS2_OUT)
|
||||
sbus2_output(r_page_servos, PX4IO_SERVO_COUNT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -218,6 +218,8 @@ extern bool dsm_input(uint16_t *values, uint16_t *num_values);
|
||||
extern void dsm_bind(uint16_t cmd, int pulses);
|
||||
extern int sbus_init(const char *device);
|
||||
extern bool sbus_input(uint16_t *values, uint16_t *num_values, bool *sbus_failsafe, bool *sbus_frame_drop, uint16_t max_channels);
|
||||
extern bool sbus1_output(uint16_t *values, uint16_t num_values);
|
||||
extern bool sbus2_output(uint16_t *values, uint16_t num_values);
|
||||
|
||||
/** global debug level for isr_debug() */
|
||||
extern volatile uint8_t debug_level;
|
||||
|
||||
@@ -93,7 +93,7 @@ int
|
||||
sbus_init(const char *device)
|
||||
{
|
||||
if (sbus_fd < 0)
|
||||
sbus_fd = open(device, O_RDONLY | O_NONBLOCK);
|
||||
sbus_fd = open(device, O_RDWR | O_NONBLOCK);
|
||||
|
||||
if (sbus_fd >= 0) {
|
||||
struct termios t;
|
||||
@@ -117,6 +117,18 @@ sbus_init(const char *device)
|
||||
return sbus_fd;
|
||||
}
|
||||
|
||||
bool
|
||||
sbus1_output(uint16_t *values, uint16_t num_values)
|
||||
{
|
||||
write(sbus_fd, 'A', 1);
|
||||
}
|
||||
|
||||
bool
|
||||
sbus2_output(uint16_t *values, uint16_t num_values)
|
||||
{
|
||||
write(sbus_fd, 'B', 1);
|
||||
}
|
||||
|
||||
bool
|
||||
sbus_input(uint16_t *values, uint16_t *num_values, bool *sbus_failsafe, bool *sbus_frame_drop, uint16_t max_channels)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user