#ifndef PACKET_MOD #define PACKET_MOD #include #include #include #include "results.h" typedef enum { NOT_STARTED, DATA_RAW, DATA_CODED, DATA_MODULATED, HEADER_ADDED, PREAMBLE_ADDED, } packet_mod_state_t; typedef struct { unsigned char *pkt_bytes; float complex *pkt_symbols; packet_mod_state_t state; modem modem; fec fec; uint16_t raw_data_crc; size_t length; } packet_mod_ctx_t; result_t packet_mod_init(packet_mod_ctx_t *ctx); result_t packet_mod_free(packet_mod_ctx_t *ctx); result_t packet_mod_set_data(packet_mod_ctx_t *ctx, const unsigned char *data, size_t length); result_t packet_mod_encode(packet_mod_ctx_t *ctx); result_t packet_mod_modulate(packet_mod_ctx_t *ctx); result_t packet_mod_add_header(packet_mod_ctx_t *ctx); result_t packet_mod_add_preamble(packet_mod_ctx_t *ctx); result_t packet_mod_dump(packet_mod_ctx_t *ctx, const char *filename); result_t packet_mod_get_result_b(packet_mod_ctx_t *ctx, unsigned char *data, size_t *length); result_t packet_mod_get_result_cf(packet_mod_ctx_t *ctx, float complex *data, size_t *length); #endif // PACKET_MOD