52 lines
1.1 KiB
C
52 lines
1.1 KiB
C
|
#ifndef PACKET_MOD
|
||
|
#define PACKET_MOD
|
||
|
|
||
|
#include <stdlib.h>
|
||
|
#include <complex.h>
|
||
|
|
||
|
#include <liquid/liquid.h>
|
||
|
|
||
|
#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
|