18#define PDEC_SYNC_BYTE 0xff
19#define PDEC_FRAME_OVERHEAD 4
20#define PDEC_PACKED __attribute__((packed))
92 if (payload_len == 0) {
99 frame[2] = payload_len;
100 for (
uint8_t i = 0; i < payload_len; i++) {
101 frame[3 + i] = payload[i];
239 src_id[i] =
msg->reports[i].reporter_id;
342 int len =
snprintf(buf,
sizeof(buf),
"[RNG]%x->%x:%0.2f",
407 memcpy(payload, &header,
sizeof(header));
409 memcpy(&payload[
sizeof(header)], data, len);
Main include for ABI (AirBorneInterface).
Convenience defines for ABI sender IDs.
uint32_t get_sys_time_usec(void)
Get the time in microseconds since startup.
Common code for AP and FBW telemetry.
uint8_t msg[10]
Buffer used for general comunication over SPI (out buffer)
int uart_char_available(struct uart_periph *p)
Check UART for available chars in receive buffer.
uint8_t uart_getch(struct uart_periph *p)
struct pdec_tdoa_report_payload reports[]
bool pdec_range(uint16_t dst_id)
bool pdec_get_distance(uint16_t dst_id)
static void pdec_parse_byte(pdec_t *pdec, uint8_t byte)
static bool pdec_send_frame(pdec_t *pdec, const uint8_t *payload, uint8_t payload_len)
static void pdec_parse_distance_result(struct pdec_distance_result *result, const struct pdec_distance_payload *payload)
bool pdec_send_data(uint16_t dst_id, const uint8_t *data, uint8_t len)
static void _pdec_event(pdec_t *pdec)
void uwb_range(uint16_t dst_id)
void pdec_periodic_report(void)
static void pdec_dispatch_frame(pdec_t *pdec)
#define PDEC_FRAME_OVERHEAD
static void _pdec_periodic_report(pdec_t *pdec)
static void _pdec_init(pdec_t *pdec)
bool pdec_list_devices(void)
struct pdec_distance_result last_range
struct pdec_error_response last_error
struct pdec_tdoa_report_event last_tdoa_report_event
uint32_t rx_unknown_messages
struct pdec_device_list devices
#define PDEC_MAX_PAYLOAD_LEN
struct pdec_counters counters
struct pdec_send_data_result last_send_data
#define PDEC_MAX_DATA_LEN
struct pdec_tdoa_report reports[PDEC_MAX_TDOA_REPORTS]
uint32_t rx_checksum_errors
enum pdec_event_kind kind
struct pdec_ranging_event last_ranging_event
enum pdec_rx_state rx_state
struct pdec_distance_result last_distance
uint32_t rx_length_errors
uint8_t rx_payload[PDEC_MAX_PAYLOAD_LEN]
@ PDEC_MSG_SEND_DATA_RESULT
@ PDEC_MSG_TDOA_REPORT_EVENT
uint16_t device_ids[PDEC_MAX_DEVICES]
#define PDEC_MAX_TDOA_REPORTS
void WEAK uart_put_buffer(struct uart_periph *p, long fd, const uint8_t *data, uint16_t len)
arch independent UART (Universal Asynchronous Receiver/Transmitter) API
static const float offset[]
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.