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 <stdint.h>
5#include <stdio.h>
6#include <stdbool.h>
7#include <stdatomic.h>
8#include "esp_log.h"
9#include "esp_err.h"
10
11#define PACKET_BYTES (109)
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17typedef enum : uint8_t {
18 DOMAIN_TM = 0x00,
19 DOMAIN_TC = 0x01,
21} domain_t;
22
23typedef enum : uint8_t {
24 TM_SDATA = 0x00,
25 TM_BDATA = 0x01,
26 TM_EVENT = 0x02
28
29typedef enum : uint8_t {
33
34typedef enum : uint8_t {
38
39typedef enum : uint8_t {
44
45typedef enum : uint8_t {
46 TC_CTRL = 0x00,
47 TC_REQ = 0x01
49
50typedef enum : uint8_t {
55 TC_REQ_LOG = 0x04,
59
60typedef enum : uint8_t {
63
64typedef enum : uint8_t {
65 TEST_WIMG = 0x00,
66 TEST_FRM = 0x01
68
69typedef struct packet packet_t;
72
79
88
89typedef struct {
93 uint16_t index;
94 uint16_t total;
95} header_t;
96
103
104packet_t* pkt_create(void);
105void pkt_destroy(packet_t* restrict pkt);
106
108void pkt_enc_pool_destroy(pkt_enc_pool_t* restrict pool);
109
111void pkt_dec_pool_destroy(pkt_dec_pool_t* restrict pool);
112
114 packet_t* restrict pkt,
115 pkt_enc_pool_t* restrict pool
116);
117
119 const packet_t* restrict pkt,
120 pkt_dec_pool_t* restrict pool
121);
122
124 const packet_t* restrict pkt,
125 uint16_t* id
126);
127
129 const packet_t* restrict pkt,
130 header_t* header
131);
132
134 packet_t* restrict pkt,
135 const header_t* restrict header
136);
137
139 const packet_t* restrict pkt,
140 uint8_t* payload,
141 size_t len
142);
143
145 packet_t* restrict pkt,
146 const uint8_t* restrict payload,
147 size_t len
148);
149
150#ifdef __cplusplus
151}
152#endif
153
154#endif // __PACKET_UTILS_H__
155
Definition packet_utils.c:19
Definition packet_utils.c:49
Definition packet_utils.c:36
tm_category_t
Definition packet_utils.h:23
@ TM_EVENT
Definition packet_utils.h:26
@ TM_BDATA
Definition packet_utils.h:25
@ TM_SDATA
Definition packet_utils.h:24
struct packet packet_t
Definition packet_utils.h:69
pkt_err_t
Definition packet_utils.h:97
@ PKT_OK
Definition packet_utils.h:98
@ PKT_ERR_SYNC
Definition packet_utils.h:101
@ PKT_ERR_INVALID_ARG
Definition packet_utils.h:100
@ PKT_FAIL
Definition packet_utils.h:99
uint8_t u8
Definition packet_utils.h:77
pkt_err_t pkt_set_header(packet_t *restrict pkt, const header_t *restrict header)
Definition packet_utils.c:293
tm_sdata_type_t
Definition packet_utils.h:29
@ TM_SDATA_STATUS
Definition packet_utils.h:31
@ TM_SDATA_SENSORS
Definition packet_utils.h:30
tc_category_t
Definition packet_utils.h:45
@ TC_CTRL
Definition packet_utils.h:46
@ TC_REQ
Definition packet_utils.h:47
tc_ctrl_type_t ctrl
Definition packet_utils.h:85
pkt_err_t pkt_get_id(const packet_t *restrict pkt, uint16_t *id)
Definition packet_utils.c:269
domain_t
Definition packet_utils.h:17
@ DOMAIN_TM
Telemetry domain (CubeSat to Ground).
Definition packet_utils.h:18
@ DOMAIN_TC
Telecommand domain (Ground to CubeSat).
Definition packet_utils.h:19
@ DOMAIN_TEST
Test domain (Ground to CubeSat, for tests only).
Definition packet_utils.h:20
tm_category_t tm
Definition packet_utils.h:74
tc_req_type_t req
Definition packet_utils.h:84
void pkt_destroy(packet_t *restrict pkt)
Definition packet_utils.c:169
pkt_enc_pool_t * pkt_enc_pool_create(void)
Definition packet_utils.c:179
tm_bdata_type_t bdata
Definition packet_utils.h:82
tm_event_type_t event
Definition packet_utils.h:83
pkt_err_t pkt_get_payload(const packet_t *restrict pkt, uint8_t *payload, size_t len)
Definition packet_utils.c:312
uint16_t total
Definition packet_utils.h:94
tm_sdata_type_t sdata
Definition packet_utils.h:81
struct pkt_enc_pool pkt_enc_pool_t
Definition packet_utils.h:70
packet_t * pkt_create(void)
Definition packet_utils.c:160
uint8_t u8
Definition packet_utils.h:86
struct pkt_dec_pool pkt_dec_pool_t
Definition packet_utils.h:71
category_t category
Definition packet_utils.h:91
tc_req_type_t
Definition packet_utils.h:50
@ TC_REQ_IMAGE
Definition packet_utils.h:53
@ TC_REQ_SENSORS
Definition packet_utils.h:51
@ TC_REQ_LOG
Definition packet_utils.h:55
@ TC_REQ_ERROR
Definition packet_utils.h:56
@ TC_REQ_CRASH
Definition packet_utils.h:57
@ TC_REQ_STATUS
Definition packet_utils.h:52
@ TC_REQ_VIDEO
Definition packet_utils.h:54
test_category_t
Definition packet_utils.h:64
@ TEST_WIMG
Write an image to OBC memory.
Definition packet_utils.h:65
@ TEST_FRM
Remove a file from OBC file system.
Definition packet_utils.h:66
pkt_dec_pool_t * pkt_dec_pool_create(void)
Definition packet_utils.c:201
type_t type
Definition packet_utils.h:92
tc_ctrl_type_t
Definition packet_utils.h:60
@ TC_CTRL_REBOOT
Definition packet_utils.h:61
pkt_err_t pkt_decode(const packet_t *restrict pkt, pkt_dec_pool_t *restrict pool)
Definition packet_utils.c:246
tm_bdata_type_t
Definition packet_utils.h:34
@ TM_BDATA_IMAGE
Definition packet_utils.h:35
@ TM_BDATA_VIDEO
Definition packet_utils.h:36
tm_event_type_t
Definition packet_utils.h:39
@ TM_EVENT_CRASH
Definition packet_utils.h:42
@ TM_EVENT_ERROR
Definition packet_utils.h:41
@ TM_EVENT_LOG
Definition packet_utils.h:40
uint16_t index
Definition packet_utils.h:93
tc_category_t tc
Definition packet_utils.h:75
test_category_t test
Definition packet_utils.h:76
pkt_err_t pkt_encode(packet_t *restrict pkt, pkt_enc_pool_t *restrict pool)
Definition packet_utils.c:223
void pkt_dec_pool_destroy(pkt_dec_pool_t *restrict pool)
Definition packet_utils.c:212
domain_t domain
Definition packet_utils.h:90
void pkt_enc_pool_destroy(pkt_enc_pool_t *restrict pool)
Definition packet_utils.c:190
pkt_err_t pkt_get_header(const packet_t *restrict pkt, header_t *header)
Definition packet_utils.c:277
pkt_err_t pkt_set_payload(packet_t *restrict pkt, const uint8_t *restrict payload, size_t len)
Definition packet_utils.c:327
Definition packet_utils.h:89
Definition packet_utils.h:73
Definition packet_utils.h:80