24 #if HAL_USE_PWM == TRUE 29 void set_freq(uint32_t chmask, uint16_t freq_hz);
33 void write(uint8_t ch, uint16_t period_us);
34 uint16_t
read(uint8_t ch);
35 void read(uint16_t* period_us, uint8_t len);
53 void cork(
void)
override;
54 void push(
void)
override;
152 const stm32_dma_stream_t *
dma;
302 #endif // HAL_USE_PWM systime_t byte_start_tick
bool serial_setup_output(uint8_t chan, uint32_t baudrate) override
void set_freq_group(pwm_group &group)
bool setup_group_DMA(pwm_group &group, uint32_t bitrate, uint32_t bit_width, bool active_high)
uint64_t last_dshot_send_us
bool enable_px4io_sbus_out(uint16_t rate_hz) override
uint16_t read_last_sent(uint8_t ch) override
void set_telem_request_mask(uint16_t mask)
void fill_DMA_buffer_byte(uint32_t *buffer, uint8_t stride, uint8_t b, uint32_t bitval)
static uint8_t buffer[SRXL_FRAMELEN_MAX]
void force_safety_off(void) override
void set_output_mode(uint16_t mask, enum output_mode mode) override
void send_pulses_DMAR(pwm_group &group, uint32_t buffer_length)
void timer_tick(void) override
void set_default_rate(uint16_t rate_hz) override
void serial_end(void) override
enum output_mode current_mode
void set_freq(uint32_t chmask, uint16_t freq_hz)
uint16_t last_sent[max_channels]
uint16_t trigger_widest_pulse
bool serial_read_byte(uint8_t &b)
const uint16_t dshot_bit_length
uint64_t min_pulse_trigger_us
uint16_t io_fast_channel_mask
uint32_t safety_update_ms
bool force_safety_on(void) override
uint16_t create_dshot_packet(const uint16_t value, bool telem_request)
uint16_t serial_read_bytes(uint8_t *buf, uint16_t len) override
bool get_esc_scaling(uint16_t &min_pwm, uint16_t &max_pwm) override
void dma_allocate(Shared_DMA *ctx)
struct pwm_group * serial_group
static pwm_group pwm_group_list[]
uint16_t safe_pwm[max_channels]
uint32_t dshot_pulse_time_us
void write(uint8_t ch, uint16_t period_us)
void fill_DMA_buffer_dshot(uint32_t *buffer, uint8_t stride, uint16_t packet, uint16_t clockmul)
void set_safety_pwm(uint32_t chmask, uint16_t period_us) override
static void serial_bit_irq(void)
bool serial_write_bytes(const uint8_t *bytes, uint16_t len) override
static const eventmask_t serial_event_mask
uint8_t trigger_groupmask
AP_HAL::Util::safety_state _safety_switch_state(void)
void set_esc_scaling(uint16_t min_pwm, uint16_t max_pwm) override
void dma_deallocate(Shared_DMA *ctx)
AP_HAL::Util::safety_state safety_state
AP_HAL::AnalogSource * chan
void set_group_mode(pwm_group &group)
bool serial_write_byte(uint8_t b)
float scale_esc_to_unity(uint16_t pwm) override
bool mode_requires_dma(enum output_mode mode) const
void trigger_groups(void)
void enable_ch(uint8_t ch)
void disable_ch(uint8_t ch)
uint8_t active_fmu_channels
int8_t safety_button_counter
static struct ChibiOS::RCOutput::irq_state irq
uint16_t period[max_channels]
uint16_t get_freq(uint8_t ch)
bool setup_serial_output(uint16_t chan_mask, ByteBuffer *buffer, uint32_t baudrate)
void dshot_send(pwm_group &group, bool blocking)
static void dma_irq_callback(void *p, uint32_t flags)
const stm32_dma_stream_t * dma
uint16_t telem_request_mask
static const uint8_t max_channels
const uint16_t dshot_buffer_length
struct ChibiOS::RCOutput::pwm_group::@40 serial
uint16_t fast_channel_mask
uint16_t read(uint8_t ch)