rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
outputs_hw.h
Go to the documentation of this file.
1
17#ifndef RCBENCH_OUTPUTS_HW_H
18#define RCBENCH_OUTPUTS_HW_H
19
20#include <stdbool.h>
21#include <stdint.h>
22
23#include "dshot.h"
24#include "outputs.h"
25
31void outputs_hw_init(void);
32
46void outputs_hw_apply(const outputs_t *o, const uint16_t *rate_hz);
47
64void outputs_hw_apply_only(const outputs_t *o, const uint16_t *rate_hz,
65 uint8_t may_bind);
66
78void outputs_hw_service(const outputs_t *o);
79
103void outputs_hw_ports(const uint8_t *pin, const uint16_t *rate_hz,
104 uint8_t parked, uint8_t dshot, uint8_t channel0);
105
112uint8_t outputs_hw_ports_bound(void);
113
124void outputs_hw_ports_drive(uint8_t ports);
125
138void outputs_hw_watch(int ch);
139
147bool outputs_hw_edge(uint64_t *us);
148
155bool outputs_hw_bound(uint8_t slot);
156
169bool outputs_hw_erpm(uint32_t *erpm, uint32_t *age_ms);
170
188bool outputs_hw_edt(dshot_telem_kind_t kind, uint16_t *value, uint32_t *age_ms);
189
190#endif /* RCBENCH_OUTPUTS_HW_H */
DShot: sixteen bits per frame to an ESC (electronic speed controller), and the GCR (group-coded recor...
dshot_telem_kind_t
What one response carried.
Definition dshot.h:187
The intermediary every output goes through: one set of rules for arming, clamping,...
void outputs_hw_ports_drive(uint8_t ports)
Which bound ports render their channel's pulse while the bank drives, bit n for port n.
Definition outputs_hw.c:571
void outputs_hw_apply(const outputs_t *o, const uint16_t *rate_hz)
Make the bindings match the bank's slot table, each slot at the rate in rate_hz (OUT_MAX_SLOTS entrie...
Definition outputs_hw.c:235
bool outputs_hw_edt(dshot_telem_kind_t kind, uint16_t *value, uint32_t *age_ms)
The last extended-telemetry reading of kind, and how long ago in milliseconds.
Definition outputs_hw.c:743
void outputs_hw_init(void)
Forget every binding.
Definition outputs_hw.c:161
void outputs_hw_watch(int ch)
Watch output channel ch for a move capture's edge; a negative ch stops watching.
Definition outputs_hw.c:576
bool outputs_hw_bound(uint8_t slot)
Whether slot slot is configured and bound to real silicon.
Definition outputs_hw.c:170
bool outputs_hw_erpm(uint32_t *erpm, uint32_t *age_ms)
The last electrical rpm a bidirectional DShot ESC (electronic speed controller) reported,...
Definition outputs_hw.c:731
void outputs_hw_ports(const uint8_t *pin, const uint16_t *rate_hz, uint8_t parked, uint8_t dshot, uint8_t channel0)
The programming ports' pins: pin[n] for port n, LINK_PG_PORTS_MAX entries, a value above OUT_MAX_PIN ...
Definition outputs_hw.c:503
bool outputs_hw_edge(uint64_t *us)
The edge stamped since the last call, once: true with its time in us.
Definition outputs_hw.c:582
void outputs_hw_apply_only(const outputs_t *o, const uint16_t *rate_hz, uint8_t may_bind)
As outputs_hw_apply(), with only the slots in may_bind bound; a slot outside it is released and left ...
Definition outputs_hw.c:240
void outputs_hw_service(const outputs_t *o)
Render the bank onto the pins.
Definition outputs_hw.c:643
uint8_t outputs_hw_ports_bound(void)
The ports whose function holds their pin, bit n for port n: bound to the generator or to DShot,...
Definition outputs_hw.c:560
The state of a bank of channels and slots.
Definition outputs.h:143