bnetz: Simplifying 'telegramm' handling

This commit is contained in:
Andreas Eversberg
2016-03-05 09:57:11 +01:00
parent d21be383a6
commit 287b914b56
4 changed files with 28 additions and 18 deletions

View File

@@ -331,6 +331,7 @@ static void fsk_tone(bnetz_t *bnetz, int16_t *samples, int length, int tone)
static int fsk_telegramm(bnetz_t *bnetz, int16_t *samples, int length)
{
int16_t *spl;
const char *telegramm;
int i, j;
double phaseshift, phase;
int count, max;
@@ -339,17 +340,18 @@ next_telegramm:
if (!bnetz->telegramm) {
/* request telegramm */
// PDEBUG(DFSK, DEBUG_DEBUG, "Request new 'Telegramm'.\n");
bnetz->telegramm = bnetz_get_telegramm(bnetz);
if (!bnetz->telegramm) {
telegramm = bnetz_get_telegramm(bnetz);
if (!telegramm) {
PDEBUG(DFSK, DEBUG_DEBUG, "Stop sending 'Telegramm'.\n");
return length;
}
bnetz->telegramm = 1;
bnetz->telegramm_pos = 0;
spl = bnetz->telegramm_spl;
/* render telegramm */
phase = bnetz->phase256;
for (i = 0; i < 16; i++) {
phaseshift = bnetz->phaseshift256[bnetz->telegramm[i] == '1'];
phaseshift = bnetz->phaseshift256[telegramm[i] == '1'];
for (j = 0; j < bnetz->samples_per_bit; j++) {
*spl++ = dsp_sine[((uint8_t)phase) & 0xff];
phase += phaseshift;
@@ -372,7 +374,7 @@ next_telegramm:
bnetz->telegramm_pos += count;
/* check for end of telegramm */
if (bnetz->telegramm_pos == max) {
bnetz->telegramm = NULL;
bnetz->telegramm = 0;
/* we need more ? */
if (length)
goto next_telegramm;
@@ -414,3 +416,11 @@ again:
}
}
void bnetz_set_dsp_mode(bnetz_t *bnetz, enum dsp_mode mode)
{
/* reset telegramm */
if (mode == DSP_MODE_TELEGRAMM && bnetz->dsp_mode != mode)
bnetz->telegramm = 0;
bnetz->dsp_mode = mode;
}