27 #include <sys/types.h> 29 #include <sys/ioctl.h> 33 #include <sys/audioio.h> 35 #if defined(BSD) && !defined(__APPLE__) 36 #include <sys/soundcard.h> 45 #define SAMPLE_RATE_IN 48000 46 #define SAMPLE_RATE_OUT 8000 49 #include "portaudio.h" 50 #define PA_FRAMES_PER_BUFFER 64 53 #define PA_LATENCY_IN 0.500 57 #define PA_LATENCY_OUT 0.100 64 char mbe_in_file[1024];
75 char audio_in_dev[1024];
80 PaStream* audio_in_pa_stream;
83 char audio_out_dev[1024];
88 PaStream* audio_out_pa_stream;
93 char mbe_out_dir[1024];
94 char mbe_out_file[1024];
95 char mbe_out_path[1024];
99 char wav_out_file[1024];
103 char serial_dev[1024];
137 float audio_out_temp_buf[160];
181 float aout_max_buf[200];
194 unsigned int debug_audio_errors;
195 unsigned int debug_header_errors;
196 unsigned int debug_header_critical_errors;
210 unsigned int debug_sample_index;
211 unsigned int debug_sample_left_edge;
212 unsigned int debug_sample_right_edge;
213 FILE* debug_label_file;
214 FILE* debug_label_dibit_file;
215 FILE* debug_label_imbe_file;
237 #define INV_P25P1_SYNC "333331331133111131311111" 238 #define P25P1_SYNC "111113113311333313133333" 240 #define X2TDMA_BS_VOICE_SYNC "113131333331313331113311" 241 #define X2TDMA_BS_DATA_SYNC "331313111113131113331133" 242 #define X2TDMA_MS_DATA_SYNC "313113333111111133333313" 243 #define X2TDMA_MS_VOICE_SYNC "131331111333333311111131" 245 #define DSTAR_HD "131313131333133113131111" 246 #define INV_DSTAR_HD "313131313111311331313333" 247 #define DSTAR_SYNC "313131313133131113313111" 248 #define INV_DSTAR_SYNC "131313131311313331131333" 250 #define NXDN_MS_DATA_SYNC "313133113131111333" 251 #define INV_NXDN_MS_DATA_SYNC "131311331313333111" 252 #define NXDN_MS_VOICE_SYNC "313133113131113133" 253 #define INV_NXDN_MS_VOICE_SYNC "131311331313331311" 254 #define INV_NXDN_BS_DATA_SYNC "131311331313333131" 255 #define NXDN_BS_DATA_SYNC "313133113131111313" 256 #define INV_NXDN_BS_VOICE_SYNC "131311331313331331" 257 #define NXDN_BS_VOICE_SYNC "313133113131113113" 259 #define DMR_BS_DATA_SYNC "313333111331131131331131" 260 #define DMR_BS_VOICE_SYNC "131111333113313313113313" 261 #define DMR_MS_DATA_SYNC "311131133313133331131113" 262 #define DMR_MS_VOICE_SYNC "133313311131311113313331" 264 #define INV_PROVOICE_SYNC "31313111333133133311331133113311" 265 #define PROVOICE_SYNC "13131333111311311133113311331133" 266 #define INV_PROVOICE_EA_SYNC "13313133113113333311313133133311" 267 #define PROVOICE_EA_SYNC "31131311331331111133131311311133" 297 int comp (
const void *a,
const void *b);
304 int main (
int argc,
char **argv);
const float * input_samples
Definition: dsd.h:220
int audio_out_type
Definition: dsd.h:90
float * audio_out_temp_buf_p
Definition: dsd.h:138
int audio_in_type
Definition: dsd.h:82
void openAudioOutDevice(dsd_opts *opts, int speed)
int input_offset
Definition: dsd.h:222
int lastsample
Definition: dsd.h:151
void processDMRvoice(dsd_opts *opts, dsd_state *state)
P25Heuristics inv_p25_heuristics
Definition: dsd.h:205
void noCarrier(dsd_opts *opts, dsd_state *state)
int aout_max_buf_idx
Definition: dsd.h:183
short * audio_out_buf
Definition: dsd.h:133
int jitter
Definition: dsd.h:143
int last_dibit
Definition: dsd.h:199
void processX2TDMAdata(dsd_opts *opts, dsd_state *state)
int numtdulc
Definition: dsd.h:176
void openMbeOutFile(dsd_opts *opts, dsd_state *state)
void processDSTAR(dsd_opts *opts, dsd_state *state)
int comp(const void *a, const void *b)
void closeWavOutFile(dsd_opts *opts, dsd_state *state)
void openMbeInFile(dsd_opts *opts, dsd_state *state)
int center
Definition: dsd.h:142
void processMbeFrame(dsd_opts *opts, dsd_state *state, char imbe_fr[8][23], char ambe_fr[4][24], char imbe7100_fr[7][24])
int getDibit(dsd_opts *opts, dsd_state *state)
int midx
Definition: dsd.h:156
int frame_p25p1
Definition: dsd.h:108
int output_offset
Definition: dsd.h:227
int readAmbe2450Data(dsd_opts *opts, dsd_state *state, char *ambe_d)
void saveAmbe2450Data(dsd_opts *opts, dsd_state *state, char *ambe_d)
float * aout_max_buf_p
Definition: dsd.h:182
int serial_fd
Definition: dsd.h:104
int main(int argc, char **argv)
int mod_gfsk
Definition: dsd.h:115
int mod_c4fm
Definition: dsd.h:113
int get_dibit_and_analog_signal(dsd_opts *opts, dsd_state *state, int *out_analog_signal)
int frame_dmr
Definition: dsd.h:111
void skipDibit(dsd_opts *opts, dsd_state *state, int count)
void processTDU(dsd_opts *opts, dsd_state *state)
void processLDU2(dsd_opts *opts, dsd_state *state)
void writeSynthesizedVoice(dsd_opts *opts, dsd_state *state)
int repeat
Definition: dsd.h:132
int synctype
Definition: dsd.h:144
FILE * mbe_out_f
Definition: dsd.h:96
Definition: p25p1_heuristics.h:16
float * output_samples
Definition: dsd.h:228
int lastp25type
Definition: dsd.h:164
pthread_mutex_t output_mutex
Definition: dsd.h:224
void processAudio(dsd_opts *opts, dsd_state *state)
void processDMRdata(dsd_opts *opts, dsd_state *state)
SNDFILE * wav_out_f
Definition: dsd.h:100
int delay
Definition: dsd.h:123
int readImbe4400Data(dsd_opts *opts, dsd_state *state, char *imbe_d)
int lasttg
Definition: dsd.h:169
int mbe_file_type
Definition: dsd.h:174
int tgcount
Definition: dsd.h:168
int mod_threshold
Definition: dsd.h:119
void processFrame(dsd_opts *opts, dsd_state *state)
int p25kid
Definition: dsd.h:192
int mod_qpsk
Definition: dsd.h:114
mbe_parms * prev_mp
Definition: dsd.h:190
FILE * mbe_in_f
Definition: dsd.h:65
int umid
Definition: dsd.h:148
void openAudioInDevice(dsd_opts *opts)
int resume
Definition: dsd.h:105
P25Heuristics p25_heuristics
Definition: dsd.h:202
int symbolCenter
Definition: dsd.h:185
mbe_parms * cur_mp
Definition: dsd.h:189
int optind
Definition: dsd.h:175
void playMbeFiles(dsd_opts *opts, dsd_state *state, int argc, char **argv)
int * dibit_buf_p
Definition: dsd.h:131
int nac
Definition: dsd.h:171
int output_finished
Definition: dsd.h:231
int frame_dstar
Definition: dsd.h:106
float aout_gain
Definition: dsd.h:180
void printFrameInfo(dsd_opts *opts, dsd_state *state)
int maxref
Definition: dsd.h:150
int unmute_encrypted_p25
Definition: dsd.h:125
mbe_parms * prev_mp_enhanced
Definition: dsd.h:191
int inverted_dmr
Definition: dsd.h:118
float audio_gain
Definition: dsd.h:97
void processLDU1(dsd_opts *opts, dsd_state *state)
int firstframe
Definition: dsd.h:177
int frame_provoice
Definition: dsd.h:112
int max
Definition: dsd.h:146
int carrier
Definition: dsd.h:166
int audio_out_idx2
Definition: dsd.h:140
pthread_cond_t input_ready
Definition: dsd.h:219
int playoffset
Definition: dsd.h:92
int symboltiming
Definition: dsd.h:68
int getSymbol(dsd_opts *opts, dsd_state *state, int have_sync)
SNDFILE * audio_in_file
Definition: dsd.h:77
int lmid
Definition: dsd.h:147
void upsample(dsd_state *state, float invalue)
float * audio_out_float_buf_p
Definition: dsd.h:136
void closeMbeOutFile(dsd_opts *opts, dsd_state *state)
int audio_in_fd
Definition: dsd.h:76
int getFrameSync(dsd_opts *opts, dsd_state *state)
short * audio_out_buf_p
Definition: dsd.h:134
void processP25lcw(dsd_opts *opts, dsd_state *state, char *lcformat, char *mfid, char *lcinfo)
int samplesPerSymbol
Definition: dsd.h:184
void resumeScan(dsd_opts *opts, dsd_state *state)
int output_length
Definition: dsd.h:230
int numflips
Definition: dsd.h:162
void initState(dsd_state *state)
int offset
Definition: dsd.h:165
void openWavOutFile(dsd_opts *opts, dsd_state *state)
int frame_nxdn96
Definition: dsd.h:110
SF_INFO * audio_in_file_info
Definition: dsd.h:78
int audio_out_idx
Definition: dsd.h:139
void processX2TDMAvoice(dsd_opts *opts, dsd_state *state)
void liveScanner(dsd_opts *opts, dsd_state *state)
int verbose
Definition: dsd.h:69
void processProVoice(dsd_opts *opts, dsd_state *state)
int audio_out
Definition: dsd.h:98
SF_INFO * audio_out_file_info
Definition: dsd.h:86
int minref
Definition: dsd.h:149
int min
Definition: dsd.h:145
int errs
Definition: dsd.h:172
int p25enc
Definition: dsd.h:70
SNDFILE * audio_out_file
Definition: dsd.h:85
void playSynthesizedVoice(dsd_opts *opts, dsd_state *state)
void processHDU(dsd_opts *opts, dsd_state *state)
int p25lc
Definition: dsd.h:71
int playfiles
Definition: dsd.h:122
int datascope
Definition: dsd.h:67
int serial_baud
Definition: dsd.h:102
short nxdn_filter(short sample)
void initOpts(dsd_opts *opts)
short dmr_filter(short sample)
int * dibit_buf
Definition: dsd.h:130
void processNXDNVoice(dsd_opts *opts, dsd_state *state)
int ssize
Definition: dsd.h:120
int sidx
Definition: dsd.h:153
int lastsrc
Definition: dsd.h:170
int use_cosine_filter
Definition: dsd.h:124
int msize
Definition: dsd.h:121
int errorbars
Definition: dsd.h:66
void processNXDNData(dsd_opts *opts, dsd_state *state)
short * output_buffer
Definition: dsd.h:226
int split
Definition: dsd.h:91
void saveImbe4400Data(dsd_opts *opts, dsd_state *state, char *imbe_d)
int frame_x2tdma
Definition: dsd.h:107
int scoperate
Definition: dsd.h:74
pthread_mutex_t input_mutex
Definition: dsd.h:218
float * audio_out_float_buf
Definition: dsd.h:135
int symbolcnt
Definition: dsd.h:160
int onesymbol
Definition: dsd.h:63
int currentslot
Definition: dsd.h:188
int output_num_samples
Definition: dsd.h:229
void printFrameSync(dsd_opts *opts, dsd_state *state, char *frametype, int offset, char *modulation)
void processDSTAR_HD(dsd_opts *opts, dsd_state *state)
int rf_mod
Definition: dsd.h:161
void cleanupAndExit(dsd_opts *opts, dsd_state *state)
void processTDULC(dsd_opts *opts, dsd_state *state)
int uvquality
Definition: dsd.h:116
pthread_cond_t output_ready
Definition: dsd.h:225
int errs2
Definition: dsd.h:173
int frame_nxdn48
Definition: dsd.h:109
int inverted_x2tdma
Definition: dsd.h:117
int lastsynctype
Definition: dsd.h:163
int p25status
Definition: dsd.h:72
void openSerial(dsd_opts *opts, dsd_state *state)
int input_length
Definition: dsd.h:221
int audio_out_fd
Definition: dsd.h:84
int p25tg
Definition: dsd.h:73