Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
pdec.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2026 Fabien-B <fabien-b@github.com>
3 *
4 * This file is part of paparazzi. See LICENCE file.
5 *
6 * Pprz Decawave driver. Allows ranging, as well as TDOA.
7 */
8
9#pragma once
10
11#include <stdbool.h>
12#include <stdint.h>
13
14struct uart_periph;
15
16#ifndef PDEC_MAX_DEVICES
17#define PDEC_MAX_DEVICES 32
18#endif
19
20#ifndef PDEC_MAX_TDOA_REPORTS
21#define PDEC_MAX_TDOA_REPORTS 32
22#endif
23
24#define PDEC_MAX_PAYLOAD_LEN 255
25#define PDEC_MAX_DATA_LEN 252
26
33
43
52
58
66
72
79
87
94
102
107
118
127
128typedef struct {
130
131 struct pdec_error_response last_error;
132 struct pdec_distance_result last_range;
133 struct pdec_distance_result last_distance;
134 struct pdec_device_list devices;
135 struct pdec_send_data_result last_send_data;
136 struct pdec_ranging_event last_ranging_event;
137 struct pdec_tdoa_report_event last_tdoa_report_event;
138 struct pdec_counters counters;
139
140 /* Driver-owned parser state. */
146} pdec_t;
147
148extern pdec_t pdec;
149
150void pdec_init(void);
151void pdec_periodic_report(void);
152void pdec_event(void);
153
154bool pdec_range(uint16_t dst_id);
155bool pdec_get_distance(uint16_t dst_id);
156bool pdec_list_devices(void);
157bool pdec_send_data(uint16_t dst_id, const uint8_t *data, uint8_t len);
uint32_t tx_drops
Definition pdec.h:125
enum pdec_status status
Definition pdec.h:91
bool pdec_range(uint16_t dst_id)
Definition pdec.c:368
uint16_t dst_id
Definition pdec.h:99
pdec_status
Definition pdec.h:44
@ PDEC_STATUS_ERROR
Definition pdec.h:46
@ PDEC_STATUS_OK
Definition pdec.h:45
@ PDEC_STATUS_MESSAGE_TOO_LONG
Definition pdec.h:50
@ PDEC_STATUS_RANGE_FAILED
Definition pdec.h:49
@ PDEC_STATUS_INVALID_LENGTH
Definition pdec.h:47
@ PDEC_STATUS_NOT_FOUND
Definition pdec.h:48
uint8_t command
Definition pdec.h:69
uint8_t sent_len
Definition pdec.h:92
uint8_t expected_count
Definition pdec.h:111
bool pdec_get_distance(uint16_t dst_id)
Definition pdec.c:377
enum pdec_status status
Definition pdec.h:70
uint32_t rx_unknown_messages
Definition pdec.h:123
float distance
Definition pdec.h:105
bool truncated
Definition pdec.h:84
uint8_t count
Definition pdec.h:82
uint16_t src_id
Definition pdec.h:98
uint16_t reporter_id
Definition pdec.h:104
bool pdec_send_data(uint16_t dst_id, const uint8_t *data, uint8_t len)
Definition pdec.c:394
#define PDEC_MAX_PAYLOAD_LEN
Definition pdec.h:24
uint8_t rx_len
Definition pdec.h:142
uint8_t rx_idx
Definition pdec.h:143
enum pdec_status status
Definition pdec.h:76
uint16_t dst_id
Definition pdec.h:75
uint8_t rx_checksum
Definition pdec.h:144
void pdec_event(void)
Definition pdec.c:427
uint16_t dst_id
Definition pdec.h:90
struct uart_periph * dev
Definition pdec.h:129
struct pdec_tdoa_report reports[PDEC_MAX_TDOA_REPORTS]
Definition pdec.h:116
pdec_t pdec
Definition pdec.c:22
uint32_t rx_checksum_errors
Definition pdec.h:121
void pdec_periodic_report(void)
Definition pdec.c:422
pdec_event_kind
Definition pdec.h:53
@ PDEC_EVENT_DOUBLE_SIDED
Definition pdec.h:55
@ PDEC_EVENT_SINGLE_SIDED
Definition pdec.h:54
@ PDEC_EVENT_INDIRECT
Definition pdec.h:56
uint32_t blink_id
Definition pdec.h:110
enum pdec_event_kind kind
Definition pdec.h:97
enum pdec_rx_state rx_state
Definition pdec.h:141
bool updated
Definition pdec.h:81
pdec_command
Definition pdec.h:27
@ PDEC_CMD_GET_DISTANCE
Definition pdec.h:29
@ PDEC_CMD_SEND_DATA
Definition pdec.h:31
@ PDEC_CMD_RANGE
Definition pdec.h:28
@ PDEC_CMD_LIST_DEVICES
Definition pdec.h:30
uint32_t rx_length_errors
Definition pdec.h:122
pdec_msg
Definition pdec.h:34
@ PDEC_MSG_ERROR
Definition pdec.h:35
@ PDEC_MSG_DEVICE_LIST
Definition pdec.h:38
@ PDEC_MSG_SEND_DATA_RESULT
Definition pdec.h:39
@ PDEC_MSG_RANGING_EVENT
Definition pdec.h:40
@ PDEC_MSG_RANGE_RESULT
Definition pdec.h:36
@ PDEC_MSG_DISTANCE
Definition pdec.h:37
@ PDEC_MSG_TDOA_REPORT_EVENT
Definition pdec.h:41
void pdec_init(void)
Definition pdec.c:417
uint8_t total_count
Definition pdec.h:113
uint32_t rx_frames
Definition pdec.h:120
uint32_t tx_frames
Definition pdec.h:124
pdec_rx_state
Definition pdec.h:59
@ PDEC_RX_CHECKSUM
Definition pdec.h:64
@ PDEC_RX_LEN
Definition pdec.h:62
@ PDEC_RX_SYNC_2
Definition pdec.h:61
@ PDEC_RX_PAYLOAD
Definition pdec.h:63
@ PDEC_RX_SYNC_1
Definition pdec.h:60
#define PDEC_MAX_DEVICES
Definition pdec.h:17
uint16_t device_ids[PDEC_MAX_DEVICES]
Definition pdec.h:85
#define PDEC_MAX_TDOA_REPORTS
Definition pdec.h:21
uint8_t total_count
Definition pdec.h:83
bool pdec_list_devices(void)
Definition pdec.c:386
Definition pdec.h:128
UART peripheral.
Definition uart.h:72
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.