osmocom-analog/src/jolly/jolly.h

57 lines
2.2 KiB
C

#include "../libsquelch/squelch.h"
#include "../libmobile/sender.h"
#include "../libdtmf/dtmf_decode.h"
enum jolly_state {
STATE_NULL = 0,
STATE_IDLE,
STATE_OUT_DIALING,
STATE_OUT_VERIFY,
STATE_CALL,
STATE_CALL_DIALING,
STATE_IN_PAGING,
STATE_RELEASED,
};
typedef struct jolly {
sender_t sender;
/* sender's states */
enum jolly_state state; /* current sender's state */
int callref; /* call reference */
char station_id[32]; /* current station ID */
char dialing[32]; /* dial string */
struct timer timer;
/* display measurements */
dispmeasparam_t *dmp_dtmf_low;
dispmeasparam_t *dmp_dtmf_high;
/* dsp states */
int repeater; /* mix audio of RX signal to TX signal */
jitter_t repeater_dejitter; /* forwarding audio */
int repeater_count; /* counter to count down repeater's "transmitter on" */
int repeater_max; /* duration in samples */
squelch_t squelch; /* squelch detection process */
int is_mute; /* set if quelch has muted */
dtmf_dec_t dtmf; /* dtmf decoder */
double dt_phaseshift65536[2]; /* how much the phase of sine wave changes per sample */
double dt_phase65536[2]; /* current phase */
double ack_phaseshift65536; /* how much the phase of sine wave changes per sample */
double ack_phase65536; /* current phase */
int ack_count; /* counter to count down while playing ack tone */
int ack_max; /* duration in samples */
struct timer speech_timer;
char speech_string[40]; /* speech string */
int speech_digit; /* counts digits */
int speech_pos; /* counts samples */
sample_t *delay_spl; /* delay buffer for delaying audio */
int delay_pos; /* position in delay buffer */
int delay_max; /* number of samples in delay buffer */
} jolly_t;
int jolly_create(int kanal, double dl_freq, double ul_freq, double step, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, int nbfm, int repeater);
void jolly_destroy(sender_t *sender);
void speech_finished(jolly_t *jolly);
void jolly_receive_dtmf(void *priv, char digit, dtmf_meas_t *meas);