next_state = state;
switch(state) {
+
case SRX_IDLE:
if (sync) {
next_state = SRX_MAYBE_SYNC;
freedv_set_total_bits(f, 0);
}
break;
+
case SRX_MAYBE_SYNC:
if (sync) {
syncTimer += dT;
if (syncTimer >= SYNC_TIMER) {
- /* OK we really are in sync */
-
- /* kick off recording of two files */
-
- char timeStr[MAX_CHAR];
- char recFileFromRadioName[MAX_CHAR], recFileDecAudioName[MAX_CHAR];
- getTimeStr(timeStr);
- sprintf(recFileFromRadioName,"%s/%s_from_radio.wav", waveFileWritePath, timeStr);
- sprintf(recFileDecAudioName,"%s/%s_decoded_speech.wav", waveFileWritePath, timeStr);
- sfRecFileFromRadio = openRecFile(recFileFromRadioName, fsm);
- sfRecFileDecAudio = openRecFile(recFileDecAudioName, FS8);
- tnout = 0;
+ /* OK we really are in sync */
next_state = SRX_SYNC;
}
else
next_state = SRX_IDLE;
break;
+
case SRX_SYNC:
syncTimer += dT;
if (!sync) {
syncTimer = 0;
next_state = SRX_MAYBE_UNSYNC;
}
+
+ /* if triggered kick off recording of two files */
+
+ if (triggered) {
+
+ char timeStr[MAX_CHAR];
+ char recFileFromRadioName[MAX_CHAR], recFileDecAudioName[MAX_CHAR];
+
+ getTimeStr(timeStr);
+ sprintf(recFileFromRadioName,"%s/%s_from_radio.wav", waveFileWritePath, timeStr);
+ sprintf(recFileDecAudioName,"%s/%s_decoded_speech.wav", waveFileWritePath, timeStr);
+ sfRecFileFromRadio = openRecFile(recFileFromRadioName, fsm);
+ sfRecFileDecAudio = openRecFile(recFileDecAudioName, FS8);
+ tnout = 0;
+ }
+
break;
+
case SRX_MAYBE_UNSYNC:
if (!sync) {
syncTimer += dT;
else
next_state = SRX_SYNC; /* sync is back so false alarm */
break;
+
case STX:
if (sfPlayFile == NULL) {
break;
}
+ /* end switch statement for case statement */
+
logTimer += dT;
if (logTimer >= LOG_TIMER) {
logTimer = 0;
}
state = next_state;
- }
+ } /* end while loop */
+ /* Ctrl-C has been pressed lets shut down gracefully ------------------*/
+
/* lower PTT lines, shut down ports */
if (com_handle != COM_HANDLE_INVALID) {
Pa_CloseStream(stream);
Pa_Terminate();
+ /* clean up states */
+
fifo_destroy(fifo);
src_delete(rxsrc);
src_delete(txsrc);