diff --git a/src/rds.c b/src/rds.c index 5af2e0b..08c6205 100644 --- a/src/rds.c +++ b/src/rds.c @@ -185,6 +185,11 @@ static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) { memcpy(enc->state[enc->program].tps_text, enc->data[enc->program].tps, PS_LENGTH); enc->state[enc->program].tps_update = 0; } + if(enc->state[enc->program].ps_csegment == 0 && enc->state[enc->program].dps1_update && enc->data[enc->program].dps1_enabled) { + memcpy(enc->state[enc->program].dps1_text, enc->data[enc->program].dps1, PS_LENGTH); + enc->state[enc->program].dps1_update= 0; + } + if(enc->data[enc->program].dps1_enabled && enc->state[enc->program].ps_csegment == 0 && enc->state[enc->program].dynamic_ps_state != 0) { // Copy Static PS @@ -198,7 +203,7 @@ static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) { if(enc->data[enc->program].dps1_enabled && enc->state[enc->program].ps_csegment == 0 && enc->state[enc->program].dynamic_ps_state != 1) { // Copy DPS1 - memcpy(enc->state[enc->program].ps, &(enc->state[enc->program].dps1_text[enc->state->dynamic_ps_position]),, PS_LENGTH); + memcpy(enc->state[enc->program].ps, &(enc->state[enc->program].dps1_text[enc->state->dynamic_ps_position]), PS_LENGTH); switch (enc->data[enc->program].dps1_mode) { case 0: diff --git a/src/rds.h b/src/rds.h index a2e49e9..f8e5d94 100644 --- a/src/rds.h +++ b/src/rds.h @@ -152,6 +152,7 @@ typedef struct { char tps_text[PS_LENGTH]; uint8_t ps_csegment : 4; + uint8_t dps1_update : 1; char dps1_text[255]; char dps1_nexttext[127]; uint8_t static_ps_period : 4;