diff --git a/src/rds.c b/src/rds.c index 0211d2c..77901ec 100644 --- a/src/rds.c +++ b/src/rds.c @@ -561,16 +561,19 @@ static void init_rtplus(RDSEncoder* enc, uint8_t group, uint8_t program) { } void reset_rds_state(RDSEncoder* enc, uint8_t program) { + uint8_t old_program = enc->program; + enc->program = program; + memset(&(enc->state[program]), 0, sizeof(RDSState)); enc->state[program].rt_ab = 1; enc->state[program].ptyn_ab = 1; - enc->state[program].rt_update = 1; - enc->state[program].ps_update = 1; - enc->state[program].dps1_update = 1; - enc->state[program].tps_update = 1; - enc->state[program].ptyn_update = 1; - enc->state[program].lps_update = 1; + set_rds_rt1(enc, enc->data[program].rt1); + set_rds_ps(enc, enc->data[program].ps); + set_rds_dps1(enc, enc->data[program].dps1); + set_rds_tps(enc, enc->data[program].tps); + set_rds_ptyn(enc, enc->data[program].ptyn); + set_rds_lps(enc, enc->data[program].lps); } void set_rds_defaults(RDSEncoder* enc, uint8_t program) {