C-Netz: Reset FSK decoder when switching channel mode
This prevents corrupt frames, as well as clear pending frames that were received during the old mode, but may not be received during the new mode.
This commit is contained in:
parent
eac595bd17
commit
8ef966aa21
|
@ -855,6 +855,8 @@ void cnetz_set_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode)
|
|||
{
|
||||
PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "DSP mode %d -> %d\n", cnetz->dsp_mode, mode);
|
||||
cnetz->dsp_mode = mode;
|
||||
/* we must get rid of partly received frame */
|
||||
fsk_demod_reset(&cnetz->fsk_demod);
|
||||
}
|
||||
|
||||
void cnetz_set_sched_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode, int frames_ahead)
|
||||
|
|
|
@ -501,3 +501,8 @@ void fsk_correct_sync(cnetz_t *cnetz, double offset)
|
|||
bit_time = fmod(bit_time - offset + BITS_PER_SUPERFRAME, BITS_PER_SUPERFRAME);
|
||||
}
|
||||
|
||||
void fsk_demod_reset(fsk_fm_demod_t *fsk)
|
||||
{
|
||||
fsk->sync = FSK_SYNC_NONE;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,4 +53,5 @@ typedef struct fsk_fm_demod {
|
|||
int fsk_fm_init(fsk_fm_demod_t *fsk, cnetz_t *cnetz, int samplerate, double bitrate);
|
||||
void fsk_fm_demod(fsk_fm_demod_t *fsk, int16_t *samples, int length);
|
||||
void fsk_correct_sync(cnetz_t *cnetz, double offset);
|
||||
void fsk_demod_reset(fsk_fm_demod_t *fsk);
|
||||
|
||||
|
|
Loading…
Reference in New Issue