ACwing FC firmware
STM32WB55: attitude IEKF, altitude Kalman filter, flight core, protocol v2
Loading...
Searching...
No Matches
tlm_ble.h
Go to the documentation of this file.
1
33#ifndef TLM_BLE_H
34#define TLM_BLE_H
35
36#include <stdint.h>
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42#define TLM_BLE_RING_SIZE 2048u
43#define TLM_BLE_MTU_DEFAULT 23u
44typedef enum {
48 TLM_BLE_STREAMING = 3 /* notifications enabled: data is flowing */
50
51/* Legacy commands written on the CMD characteristic (phase 2, unchanged) */
52#define TLM_BLE_CMD_SEND_INIT 0x01u
53#define TLM_BLE_CMD_STATE_DECIM 0x02u
54void tlm_ble_reset(void);
55
56/* ---- producers ---- */
59int tlm_ble_push(const uint8_t *frame, uint16_t len);
60int tlm_ble_push_hi(const uint8_t *frame, uint16_t len);
61uint16_t tlm_ble_hi_free(void);
63int tlm_ble_want_state(uint16_t seq);
68void tlm_ble_open_streams(void);
69
70/* ---- consumer side (BLE TX thread) ---- */
73uint16_t tlm_ble_peek(uint8_t *dst, uint16_t max);
74void tlm_ble_consume(uint16_t n);
75void tlm_ble_discard(void);
76uint16_t tlm_ble_queued(void);
77
78/* ---- link events (BLE stack glue) ---- */
80void tlm_ble_set_mtu(uint16_t att_mtu);
81void tlm_ble_set_error(uint8_t ble_status);
82void tlm_ble_on_command(const uint8_t *data, uint16_t len);
84/* ---- diagnostics (STATUS frame) ---- */
86uint16_t tlm_ble_mtu(void);
87uint16_t tlm_ble_chunk_max(void);
88uint32_t tlm_ble_dropped(void);
89uint8_t tlm_ble_error(void);
90uint8_t tlm_ble_state_decim(void);
91
95extern volatile uint8_t g_dbg_ble_stall;
96
97#ifdef __cplusplus
98}
99#endif
100#endif /* TLM_BLE_H */
static batt_state_t s
Definition battery.c:21
uint32_t n
Definition calib_mgr.c:35
uint8_t seq
Definition log_task.c:48
int tlm_ble_push(const uint8_t *frame, uint16_t len)
Queue a whole frame or nothing.
Definition tlm_ble.c:98
uint16_t tlm_ble_peek(uint8_t *dst, uint16_t max)
Copies up to max bytes of the next notification into dst without removing them; tlm_ble_consume(n) wi...
Definition tlm_ble.c:152
void tlm_ble_set_state(tlm_ble_state_t s)
Definition tlm_ble.c:198
int tlm_ble_want_state(uint16_t seq)
1 if a STATE frame with this sequence number must go over BLE (decimation)
Definition tlm_ble.c:115
volatile uint8_t g_dbg_ble_stall
Bench test of HANDOVER_FW.md §6 / §16.12 (debugger Live Expression): 1 = the BLE path stops on purpos...
Definition tlm_ble.c:43
void tlm_ble_consume(uint16_t n)
Definition tlm_ble.c:180
void tlm_ble_on_command(const uint8_t *data, uint16_t len)
legacy 0x01/0x02
Definition tlm_ble.c:219
uint16_t tlm_ble_hi_free(void)
bytes free in HI
Definition tlm_ble.c:110
int tlm_ble_take_subscribe(void)
1 once after a client enabled notifications (AppTask: CAPS, INIT, CHECKS)
Definition tlm_ble.c:135
void tlm_ble_reset(void)
Definition tlm_ble.c:53
uint16_t tlm_ble_mtu(void)
Definition tlm_ble.c:236
int tlm_ble_push_hi(const uint8_t *frame, uint16_t len)
HI: AppTask
Definition tlm_ble.c:104
uint8_t tlm_ble_state_decim(void)
Definition tlm_ble.c:240
tlm_ble_state_t
Definition tlm_ble.h:44
@ TLM_BLE_STREAMING
Definition tlm_ble.h:48
@ TLM_BLE_OFF
BLE not compiled in or stack not started
Definition tlm_ble.h:45
@ TLM_BLE_CONNECTED
central connected, notifications not enabled
Definition tlm_ble.h:47
@ TLM_BLE_READY
service registered, advertising
Definition tlm_ble.h:46
uint16_t tlm_ble_chunk_max(void)
ATT_MTU - 3.
Definition tlm_ble.c:237
uint32_t tlm_ble_dropped(void)
Definition tlm_ble.c:238
void tlm_ble_discard(void)
drop everything queued (consumer side)
Definition tlm_ble.c:190
uint16_t tlm_ble_queued(void)
Definition tlm_ble.c:147
tlm_ble_state_t tlm_ble_state(void)
Definition tlm_ble.c:235
void tlm_ble_set_mtu(uint16_t att_mtu)
Definition tlm_ble.c:211
void tlm_ble_set_error(uint8_t ble_status)
last non-recoverable stack error
Definition tlm_ble.c:217
void tlm_ble_open_streams(void)
Definition tlm_ble.c:142
uint8_t tlm_ble_error(void)
Definition tlm_ble.c:239
int tlm_ble_take_init_request(void)
1 once after the legacy [0x01] command: send INIT now (TelemetryTask)
Definition tlm_ble.c:128