23
23
* along with this program; if not, write to the Free Software
24
24
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26
* $Id: fsk_tests.c,v 1.23 2006/05/05 10:51:53 steveu Exp $
26
* $Id: fsk_tests.c,v 1.25 2006/06/25 11:07:38 steveu Exp $
29
29
/*! \page fsk_tests_page FSK modem tests
170
170
int line_model_no;
171
171
int modem_under_test_1;
172
172
int modem_under_test_2;
174
175
line_model_no = 0;
175
176
decode_test_file = NULL;
176
177
noise_sweep = FALSE;
177
178
modem_under_test_1 = FSK_V21CH1;
178
179
modem_under_test_2 = FSK_V21CH2;
179
181
for (i = 1; i < argc; i++)
181
183
if (strcmp(argv[i], "-d") == 0)
203
205
noise_sweep = TRUE;
208
if (strcmp(argv[i], "-l") == 0)
207
if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
215
filesetup = AF_NULL_FILESETUP;
216
outhandle = AF_NULL_FILEHANDLE;
209
fprintf(stderr, " Failed to create file setup\n");
220
if ((filesetup = afNewFileSetup()) == AF_NULL_FILESETUP)
222
fprintf(stderr, " Failed to create file setup\n");
225
afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
226
afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
227
afInitFileFormat(filesetup, AF_FILE_WAVE);
228
afInitChannels(filesetup, AF_DEFAULT_TRACK, 2);
212
afInitSampleFormat(filesetup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
213
afInitRate(filesetup, AF_DEFAULT_TRACK, (float) SAMPLE_RATE);
214
afInitFileFormat(filesetup, AF_FILE_WAVE);
215
afInitChannels(filesetup, AF_DEFAULT_TRACK, 2);
217
230
noise_level = -200;
218
231
bits_per_test = 0;
224
237
fprintf(stderr, " Cannot open wave file '%s'\n", decode_test_file);
227
fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_1], TRUE, put_bit, NULL);
240
fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_1], TRUE, 0, put_bit, NULL);
228
241
test_bps = preset_fsk_specs[modem_under_test_1].baud_rate;
233
246
if (modem_under_test_1 >= 0)
235
248
fsk_tx_init(&caller_tx, &preset_fsk_specs[modem_under_test_1], (get_bit_func_t) bert_get_bit, &caller_bert);
236
fsk_rx_init(&answerer_rx, &preset_fsk_specs[modem_under_test_1], TRUE, (put_bit_func_t) bert_put_bit, &answerer_bert);
249
fsk_rx_init(&answerer_rx, &preset_fsk_specs[modem_under_test_1], TRUE, 0, (put_bit_func_t) bert_put_bit, &answerer_bert);
238
251
if (modem_under_test_2 >= 0)
240
253
fsk_tx_init(&answerer_tx, &preset_fsk_specs[modem_under_test_2], (get_bit_func_t) bert_get_bit, &answerer_bert);
241
fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_2], TRUE, (put_bit_func_t) bert_put_bit, &caller_bert);
254
fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_2], TRUE, 0, (put_bit_func_t) bert_put_bit, &caller_bert);
243
256
test_bps = preset_fsk_specs[modem_under_test_1].baud_rate;
258
if ((outhandle = afOpenFile(OUTPUT_FILE_NAME, "w", filesetup)) == AF_NULL_FILEHANDLE)
260
fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
273
if ((outhandle = afOpenFile(OUTPUT_FILE_NAME, "w", filesetup)) == AF_NULL_FILEHANDLE)
275
fprintf(stderr, " Cannot create wave file '%s'\n", OUTPUT_FILE_NAME);
264
280
if (modem_under_test_1 >= 0)
312
328
out_amp[2*i + 1] = answerer_model_amp[i];
313
329
for ( ; i < BLOCK_LEN; i++)
314
330
out_amp[2*i + 1] = 0;
316
outframes = afWriteFrames(outhandle,
320
if (outframes != BLOCK_LEN)
322
fprintf(stderr, " Error writing wave file\n");
334
outframes = afWriteFrames(outhandle,
338
if (outframes != BLOCK_LEN)
340
fprintf(stderr, " Error writing wave file\n");
326
345
if (samples < BLOCK_LEN)
358
377
/* Put a little silence between the chunks in the file. */
359
378
memset(out_amp, 0, sizeof(out_amp));
360
for (i = 0; i < 200; i++)
362
outframes = afWriteFrames(outhandle,
381
for (i = 0; i < 200; i++)
383
outframes = afWriteFrames(outhandle,
367
389
if (modem_under_test_1 >= 0)
369
391
fsk_tx_init(&caller_tx, &preset_fsk_specs[modem_under_test_1], (get_bit_func_t) bert_get_bit, &caller_bert);
370
fsk_rx_init(&answerer_rx, &preset_fsk_specs[modem_under_test_1], TRUE, (put_bit_func_t) bert_put_bit, &answerer_bert);
392
fsk_rx_init(&answerer_rx, &preset_fsk_specs[modem_under_test_1], TRUE, 0, (put_bit_func_t) bert_put_bit, &answerer_bert);
372
394
if (modem_under_test_2 >= 0)
374
396
fsk_tx_init(&answerer_tx, &preset_fsk_specs[modem_under_test_2], (get_bit_func_t) bert_get_bit, &answerer_bert);
375
fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_2], TRUE, (put_bit_func_t) bert_put_bit, &caller_bert);
397
fsk_rx_init(&caller_rx, &preset_fsk_specs[modem_under_test_2], TRUE, 0, (put_bit_func_t) bert_put_bit, &caller_bert);
378
400
if ((model = both_ways_line_model_init(line_model_no, noise_level, line_model_no, noise_level)) == NULL)
390
if (afCloseFile(outhandle) != 0)
392
fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
414
if (afCloseFile(outhandle) != 0)
416
fprintf(stderr, " Cannot close wave file '%s'\n", OUTPUT_FILE_NAME);
419
afFreeFileSetup(filesetup);
395
421
if (decode_test_file)