aboutsummaryrefslogtreecommitdiff
path: root/src/freedv_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/freedv_api.c')
-rw-r--r--src/freedv_api.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/freedv_api.c b/src/freedv_api.c
index 3ccf63d..a158d2a 100644
--- a/src/freedv_api.c
+++ b/src/freedv_api.c
@@ -60,7 +60,7 @@
/* The API version number. The first version is 10. Increment if the API
changes in a way that would require changes by the API user. */
-#define VERSION 15
+#define VERSION 16
/*
Version 10 Initial version August 2, 2015.
@@ -79,6 +79,9 @@
Version 15 December 2022 Removing rarely used DPSK support which is not
needed given fast fading modes
+
+ Version 16 April 2024, added field to struct freedv_advanced to support
+ FREEDV_MODE_DATA_CUSTOM
*/
char *ofdm_statemode[] = {"search", "trial", "synced"};
@@ -101,7 +104,8 @@ char *rx_sync_flags_to_text[] = {"----", "---T", "--S-", "--ST", "-B--", "-B-T",
struct freedv *freedv_open(int mode) {
// defaults for those modes that support the use of adv
- struct freedv_advanced adv = {0, 2, 100, 8000, 1000, 200, "H_256_512_4"};
+ struct freedv_advanced adv = {0, 2, 100, 8000,
+ 1000, 200, "H_256_512_4", NULL};
return freedv_open_advanced(mode, &adv);
}
@@ -126,7 +130,8 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) {
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode) ||
FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode) ||
- FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, mode)) == false)
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, mode) ||
+ FDV_MODE_ACTIVE(FREEDV_MODE_DATA_CUSTOM, mode)) == false)
return NULL;
/* set everything to zero just in case */
@@ -150,12 +155,16 @@ struct freedv *freedv_open_advanced(int mode, struct freedv_advanced *adv) {
if (FDV_MODE_ACTIVE(FREEDV_MODE_2400B, mode)) freedv_2400b_open(f);
if (FDV_MODE_ACTIVE(FREEDV_MODE_800XA, mode)) freedv_800xa_open(f);
if (FDV_MODE_ACTIVE(FREEDV_MODE_FSK_LDPC, mode)) freedv_fsk_ldpc_open(f, adv);
- if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, mode)) freedv_ofdm_data_open(f);
- if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, mode)) freedv_ofdm_data_open(f);
- 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);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC0, mode)) freedv_ofdm_data_open(f, NULL);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC1, mode)) freedv_ofdm_data_open(f, NULL);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC3, mode)) freedv_ofdm_data_open(f, NULL);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC4, mode)) freedv_ofdm_data_open(f, NULL);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC13, mode))
+ freedv_ofdm_data_open(f, NULL);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATAC14, mode))
+ freedv_ofdm_data_open(f, NULL);
+ if (FDV_MODE_ACTIVE(FREEDV_MODE_DATA_CUSTOM, mode))
+ freedv_ofdm_data_open(f, adv);
varicode_decode_init(&f->varicode_dec_states, 1);