aboutsummaryrefslogtreecommitdiff
path: root/src/freedv_api.c
diff options
context:
space:
mode:
authordrowe67 <[email protected]>2024-05-06 06:11:39 +0930
committerGitHub <[email protected]>2024-05-06 06:11:39 +0930
commitd21ff74c5f830a275d291a00043b2526a1bf9e62 (patch)
tree17b1f1003a76d2db0e26a6113a9c631dd3549bdd /src/freedv_api.c
parent609ece431cf7ee5fd6ba6acc32c4ff6ffce30f52 (diff)
parent7f6188ccce691d8d93a1dd98ab86a9f0b23ffe36 (diff)
Merge pull request #44 from drowe67/dr-datac14
datac14 - FreeDATA Feature Request 002 for a < 1s, 5 byte signalling mode
Diffstat (limited to 'src/freedv_api.c')
-rw-r--r--src/freedv_api.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/freedv_api.c b/src/freedv_api.c
index 5172959..3ccf63d 100644
--- a/src/freedv_api.c
+++ b/src/freedv_api.c
@@ -125,7 +125,8 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) {
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode) ||
- FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode)) == false)
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode) ||
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, mode)) == false)
return NULL;
/* set everything to zero just in case */
@@ -154,6 +155,7 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) {
if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode)) freedv_ofdm_data_open(f);
if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode)) freedv_ofdm_data_open(f);
if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode)) freedv_ofdm_data_open(f);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, mode)) freedv_ofdm_data_open(f);
varicode_decode_init(&f->varicode_dec_states, 1);
@@ -235,7 +237,8 @@ void freedv_close(struct freedv *freedv) {
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, freedv->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, freedv->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, freedv->mode) ||
- FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, freedv->mode)) {
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, freedv->mode) ||
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, freedv->mode)) {
FREE(freedv->rx_syms);
FREE(freedv->rx_amps);
FREE(freedv->ldpc);
@@ -266,7 +269,8 @@ static int is_ofdm_mode(struct freedv *f) {
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) ||
- FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode);
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) ||
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode);
}
static int is_ofdm_data_mode(struct freedv *f) {
@@ -274,7 +278,8 @@ static int is_ofdm_data_mode(struct freedv *f) {
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) ||
- FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode);
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) ||
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode);
}
/*---------------------------------------------------------------------------*\
@@ -464,7 +469,8 @@ void freedv_rawdatacomptx(struct freedv *f, COMP mod_out[],
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) ||
- FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode))
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) ||
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode))
freedv_comptx_ofdm(f, mod_out);
if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, f->mode)) {
@@ -1063,7 +1069,8 @@ int freedv_rawdatacomprx(struct freedv *f, unsigned char *packed_payload_bits,
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, f->mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, f->mode) ||
- FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode))
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, f->mode) ||
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, f->mode))
rx_status = freedv_comp_short_rx_ofdm(f, (void *)demod_in, 0, 1.0f);
if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, f->mode)) {
rx_status = freedv_rx_fsk_ldpc_data(f, demod_in);