ESP32-P4 OBC Firmware
ESP-IDF firmware for Plant-B CubeSat OBC
 
Loading...
Searching...
No Matches
packet_utils.h
Go to the documentation of this file.
1#ifndef __PACKET_UTILS_H__
2#define __PACKET_UTILS_H__
3
4#include "pal_log.h"
5#include <stdint.h>
6#include <stdio.h>
7#include <stdbool.h>
8#include <stdatomic.h>
9#include "esp_random.h"
10#include "rom/crc.h"
11
12#define PACKET_BYTES (111)
13#define PAYLOAD_BYTES (48)
14#define PKT_NO_LOCATION (-1)
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20typedef enum : uint8_t {
21 DOMAIN_TM = 0x00,
22 DOMAIN_TC = 0x01,
24} domain_t;
25
26typedef enum : uint8_t {
27 TM_SDATA = 0x00,
28 TM_BDATA = 0x01,
29 TM_EVENT = 0x02
31
32typedef enum : uint8_t {
36
37typedef enum : uint8_t {
41
42typedef enum : uint8_t {
47
48typedef enum : uint8_t {
49 TC_CTRL = 0x00,
50 TC_REQ = 0x01
52
53typedef enum : uint8_t {
58 TC_REQ_LOG = 0x04,
62
63typedef enum : uint8_t {
66
67typedef enum : uint8_t {
68 TEST_WIMG = 0x00,
69 TEST_FRM = 0x01,
70 TEST_MSG = 0x02
72
73typedef struct packet packet_t;
76
83
92
93typedef struct {
97 uint16_t index;
98 uint16_t total;
99} header_t;
100
108
109packet_t* pkt_create(void);
110void pkt_destroy(packet_t* restrict pkt);
111
113void enc_pool_destroy(pkt_enc_pool_t* restrict pool);
114
116void dec_pool_destroy(pkt_dec_pool_t* restrict pool);
117
119 packet_t* restrict pkt,
120 pkt_enc_pool_t* restrict pool
121);
122
124 const packet_t* restrict pkt,
125 pkt_dec_pool_t* restrict pool,
126 int8_t* restrict relative_loc
127);
128
130 const pkt_dec_pool_t* restrict pool,
131 int8_t relative_loc,
132 packet_t* restrict pkt
133);
134
136 const packet_t* restrict pkt,
137 uint16_t* id
138);
139
140pkt_err_t header_sensor_config(header_t* restrict header);
141pkt_err_t header_old_sensor_config(header_t* restrict header, uint16_t old_id);
142
144 const packet_t* restrict pkt,
145 header_t* header
146);
147
149 packet_t* restrict pkt,
150 const header_t* restrict header
151);
152
154 const packet_t* restrict pkt,
155 uint8_t* payload,
156 size_t len
157);
158
160 packet_t* restrict pkt,
161 const uint8_t* restrict payload,
162 size_t len
163);
164
165bool pkt_is_chunked(const packet_t* restrict pkt);
166
167pkt_err_t pkt_log(const packet_t* restrict pkt);
168
169pkt_err_t pkt_test_random_set_sync8(packet_t* restrict pkt, bool* failed);
170
172
173#ifdef __cplusplus
174}
175#endif
176
177#endif // __PACKET_UTILS_H__
178
Definition packet_utils.c:30
Definition packet_utils.c:61
Definition packet_utils.c:48
tm_category_t
Definition packet_utils.h:26
@ TM_EVENT
Definition packet_utils.h:29
@ TM_BDATA
Definition packet_utils.h:28
@ TM_SDATA
Definition packet_utils.h:27
struct packet packet_t
Definition packet_utils.h:73
void dec_pool_destroy(pkt_dec_pool_t *restrict pool)
Definition packet_utils.c:458
pkt_err_t header_old_sensor_config(header_t *restrict header, uint16_t old_id)
Definition packet_utils.c:581
pkt_err_t
Definition packet_utils.h:101
@ PKT_OK
Definition packet_utils.h:102
@ PKT_ERR_SYNC
Definition packet_utils.h:105
@ PKT_ERR_INVALID_ARG
Definition packet_utils.h:104
@ PKT_FAIL
Definition packet_utils.h:103
@ PKT_ERR_CRC
Definition packet_utils.h:106
uint8_t u8
Definition packet_utils.h:81
pkt_err_t pkt_set_header(packet_t *restrict pkt, const header_t *restrict header)
Definition packet_utils.c:608
tm_sdata_type_t
Definition packet_utils.h:32
@ TM_SDATA_STATUS
Definition packet_utils.h:34
@ TM_SDATA_SENSORS
Definition packet_utils.h:33
pkt_err_t header_sensor_config(header_t *restrict header)
Definition packet_utils.c:570
tc_category_t
Definition packet_utils.h:48
@ TC_CTRL
Definition packet_utils.h:49
@ TC_REQ
Definition packet_utils.h:50
tc_ctrl_type_t ctrl
Definition packet_utils.h:89
pkt_err_t pkt_get_id(const packet_t *restrict pkt, uint16_t *id)
Definition packet_utils.c:562
domain_t
Definition packet_utils.h:20
@ DOMAIN_TM
Telemetry domain (CubeSat to Ground).
Definition packet_utils.h:21
@ DOMAIN_TC
Telecommand domain (Ground to CubeSat).
Definition packet_utils.h:22
@ DOMAIN_TEST
Test domain (Ground to CubeSat, for tests only).
Definition packet_utils.h:23
pkt_err_t pkt_log(const packet_t *restrict pkt)
Definition packet_utils.c:666
tm_category_t tm
Definition packet_utils.h:78
tc_req_type_t req
Definition packet_utils.h:88
void pkt_destroy(packet_t *restrict pkt)
Definition packet_utils.c:417
tm_bdata_type_t bdata
Definition packet_utils.h:86
pkt_enc_pool_t * enc_pool_create(void)
Definition packet_utils.c:426
tm_event_type_t event
Definition packet_utils.h:87
pkt_err_t pkt_get_payload(const packet_t *restrict pkt, uint8_t *payload, size_t len)
Definition packet_utils.c:627
uint16_t total
Definition packet_utils.h:98
tm_sdata_type_t sdata
Definition packet_utils.h:85
struct pkt_enc_pool pkt_enc_pool_t
Definition packet_utils.h:74
packet_t * pkt_create(void)
Definition packet_utils.c:408
uint8_t u8
Definition packet_utils.h:90
pkt_err_t dec_pool_get_pkt_from_relative_loc(const pkt_dec_pool_t *restrict pool, int8_t relative_loc, packet_t *restrict pkt)
Definition packet_utils.c:535
pkt_err_t pkt_test_random_set_sync8(packet_t *restrict pkt, bool *failed)
Definition packet_utils.c:716
pkt_dec_pool_t * dec_pool_create(void)
Definition packet_utils.c:447
struct pkt_dec_pool pkt_dec_pool_t
Definition packet_utils.h:75
pkt_err_t pkt_test_random_set_crc16(packet_t *restrict pkt)
Definition packet_utils.c:730
category_t category
Definition packet_utils.h:95
tc_req_type_t
Definition packet_utils.h:53
@ TC_REQ_IMAGE
Definition packet_utils.h:56
@ TC_REQ_SENSORS
Definition packet_utils.h:54
@ TC_REQ_LOG
Definition packet_utils.h:58
@ TC_REQ_ERROR
Definition packet_utils.h:59
@ TC_REQ_CRASH
Definition packet_utils.h:60
@ TC_REQ_STATUS
Definition packet_utils.h:55
@ TC_REQ_VIDEO
Definition packet_utils.h:57
test_category_t
Definition packet_utils.h:67
@ TEST_WIMG
Write an image to OBC memory.
Definition packet_utils.h:68
@ TEST_FRM
Remove a file from OBC file system.
Definition packet_utils.h:69
@ TEST_MSG
Send a text message.
Definition packet_utils.h:70
type_t type
Definition packet_utils.h:96
tc_ctrl_type_t
Definition packet_utils.h:63
@ TC_CTRL_REBOOT
Definition packet_utils.h:64
tm_bdata_type_t
Definition packet_utils.h:37
@ TM_BDATA_IMAGE
Definition packet_utils.h:38
@ TM_BDATA_VIDEO
Definition packet_utils.h:39
tm_event_type_t
Definition packet_utils.h:42
@ TM_EVENT_CRASH
Definition packet_utils.h:45
@ TM_EVENT_ERROR
Definition packet_utils.h:44
@ TM_EVENT_LOG
Definition packet_utils.h:43
uint16_t index
Definition packet_utils.h:97
pkt_err_t pkt_decode(const packet_t *restrict pkt, pkt_dec_pool_t *restrict pool, int8_t *restrict relative_loc)
Definition packet_utils.c:496
void enc_pool_destroy(pkt_enc_pool_t *restrict pool)
Definition packet_utils.c:437
tc_category_t tc
Definition packet_utils.h:79
test_category_t test
Definition packet_utils.h:80
pkt_err_t pkt_encode(packet_t *restrict pkt, pkt_enc_pool_t *restrict pool)
Definition packet_utils.c:468
domain_t domain
Definition packet_utils.h:94
pkt_err_t pkt_get_header(const packet_t *restrict pkt, header_t *header)
Definition packet_utils.c:592
pkt_err_t pkt_set_payload(packet_t *restrict pkt, const uint8_t *restrict payload, size_t len)
Definition packet_utils.c:642
bool pkt_is_chunked(const packet_t *restrict pkt)
Definition packet_utils.c:661
Definition packet_utils.h:93
Definition packet_utils.h:77
Definition packet_utils.h:84