ESP32-P4 OBC Firmware
ESP-IDF firmware for Plant-B CubeSat OBC
 
Loading...
Searching...
No Matches
packet_utils.c File Reference
#include "packet_utils.h"

Data Structures

struct  packet
 
struct  tx_strip_pkt
 
struct  pkt_enc_pool
 
struct  rx_strip_pkt
 
struct  pkt_dec_pool
 

Macros

#define U16_BYTES   (2)
 
#define PAYLOAD_BYTES   (48)
 
#define XOR_BYTES   (53)
 
#define POOL_DEPTH   (32)
 
#define SYNC8   (0xAA)
 
#define PKT_CHECK(cond, tag, msg)
 

Functions

static void enc_pool_update_slot (pkt_enc_pool_t *restrict pool, const packet_t *restrict pkt)
 
static void enc_pool_next_slot (pkt_enc_pool_t *restrict pool)
 
static const struct tx_strip_pktenc_pool_get_slot_n (const pkt_enc_pool_t *restrict pool, uint8_t n)
 
static void dec_pool_update_slot (pkt_dec_pool_t *restrict pool, const packet_t *restrict pkt)
 
static void dec_pool_mark_known (pkt_dec_pool_t *restrict pool, const packet_t *restrict pkt)
 
static const struct rx_strip_pktdec_pool_get_slot_n (const pkt_dec_pool_t *restrict pool, uint16_t n)
 
static void pkt_set_xor_part (const pkt_enc_pool_t *restrict pool, packet_t *restrict pkt)
 
static void pkt_set_sync8 (packet_t *restrict pkt)
 
static uint8_t pkt_get_sync8 (const packet_t *restrict pkt)
 
static bool pkt_sync8_is_valid (const packet_t *restrict pkt)
 
packet_tpkt_create (void)
 
void pkt_destroy (packet_t *restrict pkt)
 
pkt_enc_pool_tpkt_enc_pool_create (void)
 
void pkt_enc_pool_destroy (pkt_enc_pool_t *restrict pool)
 
pkt_dec_pool_tpkt_dec_pool_create (void)
 
void pkt_dec_pool_destroy (pkt_dec_pool_t *restrict pool)
 
pkt_err_t pkt_encode (packet_t *restrict pkt, pkt_enc_pool_t *restrict pool)
 
pkt_err_t pkt_decode (const packet_t *restrict pkt, pkt_dec_pool_t *restrict pool)
 
pkt_err_t pkt_get_id (const packet_t *restrict pkt, uint16_t *id)
 
pkt_err_t pkt_get_header (const packet_t *restrict pkt, header_t *header)
 
pkt_err_t pkt_set_header (packet_t *restrict pkt, const header_t *restrict header)
 
pkt_err_t pkt_get_payload (const packet_t *restrict pkt, uint8_t *payload, size_t len)
 
pkt_err_t pkt_set_payload (packet_t *restrict pkt, const uint8_t *restrict payload, size_t len)
 

Variables

static const char * TAG = "pkt_utils"
 
static _Atomic uint16_t id = 0
 

Data Structure Documentation

◆ packet

struct packet
Data Fields
uint8_t dct
uint8_t id[U16_BYTES]
uint8_t index[U16_BYTES]
uint8_t payload[PAYLOAD_BYTES]
uint8_t sync8
uint8_t total[U16_BYTES]
uint8_t xor_part[XOR_BYTES]

◆ tx_strip_pkt

struct tx_strip_pkt
Data Fields
uint8_t dct
uint8_t index[U16_BYTES]
uint8_t payload[PAYLOAD_BYTES]
uint8_t total[U16_BYTES]

◆ pkt_enc_pool

struct pkt_enc_pool
Data Fields
struct tx_strip_pkt * pkt
struct tx_strip_pkt pool[POOL_DEPTH]

◆ rx_strip_pkt

struct rx_strip_pkt
Data Fields
uint8_t dct
uint8_t index[U16_BYTES]
uint8_t payload[PAYLOAD_BYTES]
uint8_t total[U16_BYTES]
uint8_t xor_part[XOR_BYTES]

◆ pkt_dec_pool

struct pkt_dec_pool
Data Fields
uint32_t known
struct rx_strip_pkt * pkt
struct rx_strip_pkt pool[POOL_DEPTH]

Macro Definition Documentation

◆ PAYLOAD_BYTES

#define PAYLOAD_BYTES   (48)

◆ PKT_CHECK

#define PKT_CHECK ( cond,
tag,
msg )
Value:
do { \
if (!(cond)) { \
ESP_LOGE(tag, msg); \
} \
} while (0)
@ PKT_ERR_INVALID_ARG
Definition packet_utils.h:100

◆ POOL_DEPTH

#define POOL_DEPTH   (32)

◆ SYNC8

#define SYNC8   (0xAA)

◆ U16_BYTES

#define U16_BYTES   (2)

◆ XOR_BYTES

#define XOR_BYTES   (53)

Function Documentation

◆ dec_pool_get_slot_n()

static const struct rx_strip_pkt * dec_pool_get_slot_n ( const pkt_dec_pool_t *restrict pool,
uint16_t n )
inlinestatic

◆ dec_pool_mark_known()

static void dec_pool_mark_known ( pkt_dec_pool_t *restrict pool,
const packet_t *restrict pkt )
inlinestatic

◆ dec_pool_update_slot()

static void dec_pool_update_slot ( pkt_dec_pool_t *restrict pool,
const packet_t *restrict pkt )
inlinestatic

◆ enc_pool_get_slot_n()

static const struct tx_strip_pkt * enc_pool_get_slot_n ( const pkt_enc_pool_t *restrict pool,
uint8_t n )
inlinestatic

◆ enc_pool_next_slot()

static void enc_pool_next_slot ( pkt_enc_pool_t *restrict pool)
inlinestatic

◆ enc_pool_update_slot()

static void enc_pool_update_slot ( pkt_enc_pool_t *restrict pool,
const packet_t *restrict pkt )
inlinestatic

◆ pkt_create()

packet_t * pkt_create ( void )

◆ pkt_dec_pool_create()

pkt_dec_pool_t * pkt_dec_pool_create ( void )

◆ pkt_dec_pool_destroy()

void pkt_dec_pool_destroy ( pkt_dec_pool_t *restrict pool)

◆ pkt_decode()

pkt_err_t pkt_decode ( const packet_t *restrict pkt,
pkt_dec_pool_t *restrict pool )

◆ pkt_destroy()

void pkt_destroy ( packet_t *restrict pkt)

◆ pkt_enc_pool_create()

pkt_enc_pool_t * pkt_enc_pool_create ( void )

◆ pkt_enc_pool_destroy()

void pkt_enc_pool_destroy ( pkt_enc_pool_t *restrict pool)

◆ pkt_encode()

pkt_err_t pkt_encode ( packet_t *restrict pkt,
pkt_enc_pool_t *restrict pool )

◆ pkt_get_header()

pkt_err_t pkt_get_header ( const packet_t *restrict pkt,
header_t * header )

◆ pkt_get_id()

pkt_err_t pkt_get_id ( const packet_t *restrict pkt,
uint16_t * id )

◆ pkt_get_payload()

pkt_err_t pkt_get_payload ( const packet_t *restrict pkt,
uint8_t * payload,
size_t len )

◆ pkt_get_sync8()

static uint8_t pkt_get_sync8 ( const packet_t *restrict pkt)
inlinestatic

◆ pkt_set_header()

pkt_err_t pkt_set_header ( packet_t *restrict pkt,
const header_t *restrict header )

◆ pkt_set_payload()

pkt_err_t pkt_set_payload ( packet_t *restrict pkt,
const uint8_t *restrict payload,
size_t len )

◆ pkt_set_sync8()

static void pkt_set_sync8 ( packet_t *restrict pkt)
inlinestatic

◆ pkt_set_xor_part()

static void pkt_set_xor_part ( const pkt_enc_pool_t *restrict pool,
packet_t *restrict pkt )
static

◆ pkt_sync8_is_valid()

static bool pkt_sync8_is_valid ( const packet_t *restrict pkt)
inlinestatic

Variable Documentation

◆ id

_Atomic uint16_t id = 0
static

◆ TAG

const char* TAG = "pkt_utils"
static