// Set integers
void freedv_set_test_frames (struct freedv *f, int val) {f->test_frames = val;}
void freedv_set_squelch_en (struct freedv *f, int val) {f->squelch_en = val;}
-void freedv_zero_total_bit_errors (struct freedv *f) {f->total_bit_errors = 0;}
+void freedv_set_total_bit_errors (struct freedv *f, int val) {f->total_bit_errors = val;}
+void freedv_set_total_bits (struct freedv *f, int val) {f->total_bits = val;}
+void freedv_set_clip (struct freedv *f, int val) {f->clip = val;}
+void freedv_set_varicode_code_num (struct freedv *f, int val) {varicode_set_code_num(&f->varicode_dec_states, val);}
+
// Set floats
void freedv_set_snr_squelch_thresh (struct freedv *f, float val) {f->snr_squelch_thresh = val;}
+void freedv_set_callback_error_pattern (struct freedv *f, freedv_calback_error_pattern cb, void *state)
+{
+ f->freedv_put_error_pattern = cb;
+ f->error_pattern_callback_state = state;
+}
+
/*---------------------------------------------------------------------------*\
FUNCTIONS...: freedv_get_*
\*---------------------------------------------------------------------------*/
// Get integers
+int freedv_get_mode (struct freedv *f) {return f->mode;}
int freedv_get_test_frames (struct freedv *f) {return f->test_frames;}
int freedv_get_n_speech_samples (struct freedv *f) {return f->n_speech_samples;}
-//int freedv_get_modem_sample_rate (struct freedv *f) {return f->modem_sample_rate;}
+int freedv_get_modem_sample_rate (struct freedv *f) {return FS;}
int freedv_get_n_max_modem_samples (struct freedv *f) {return f->n_max_modem_samples;}
int freedv_get_n_nom_modem_samples (struct freedv *f) {return f->n_nom_modem_samples;}
int freedv_get_total_bits (struct freedv *f) {return f->total_bits;}
int freedv_get_total_bit_errors (struct freedv *f) {return f->total_bit_errors;}
int freedv_get_sync (struct freedv *f) {return f->stats.sync;}
+int freedv_get_sz_error_pattern (struct freedv *f) {return f->sz_error_pattern;}
// Get floats
+struct CODEC2 *freedv_get_codec2 (struct freedv *f){return f->codec2;}
+
+void freedv_get_modem_extended_stats(struct freedv *f, struct MODEM_STATS *stats)
+ { memcpy(stats, &f->stats, sizeof(struct MODEM_STATS)); }
/*-- Functions below this line are private, and not meant for public use --*/
/*---------------------------------------------------------------------------*\
typedef void (*freedv_callback_rx)(void *, char);
typedef char (*freedv_callback_tx)(void *);
+typedef void (*freedv_calback_error_pattern)
+ (void *error_pattern_callback_state, short error_pattern[], int sz_error_pattern);
// FreeDV API functions:
// open, close
void freedv_set_smooth_symbols (struct freedv *freedv, int smooth_symbols);
void freedv_set_squelch_en (struct freedv *freedv, int squelch_en);
void freedv_set_snr_squelch_thresh (struct freedv *freedv, float snr_squelch_thresh);
+void freedv_set_clip (struct freedv *freedv, int val);
+void freedv_set_total_bit_errors (struct freedv *freedv, int val);
+void freedv_set_total_bits (struct freedv *freedv, int val);
+void freedv_set_callback_error_pattern (struct freedv *freedv, freedv_calback_error_pattern cb, void *state);
+void freedv_set_varicode_code_num (struct freedv *freedv, int val);
+
// Get parameters
int freedv_get_version(void);
+int freedv_get_mode (struct freedv *freedv);
void freedv_get_modem_stats(struct freedv *freedv, int *sync, float *snr_est);
+void freedv_get_modem_extended_stats(struct freedv *freedv, struct MODEM_STATS *stats);
int freedv_get_test_frames (struct freedv *freedv);
int freedv_get_n_speech_samples (struct freedv *freedv);
int freedv_get_modem_sample_rate (struct freedv *freedv);
int freedv_get_n_nom_modem_samples (struct freedv *freedv);
int freedv_get_total_bits (struct freedv *freedv);
int freedv_get_total_bit_errors (struct freedv *freedv);
-void freedv_zero_total_bit_errors (struct freedv *freedv);
int freedv_get_sync (struct freedv *freedv);
+struct CODEC2 *freedv_get_codec2 (struct freedv *freedv);
+int freedv_get_sz_error_pattern (struct freedv *freedv);
#endif
#ifdef __cplusplus