diff --git a/src/rds.c b/src/rds.c index 1487828..a36b922 100644 --- a/src/rds.c +++ b/src/rds.c @@ -237,23 +237,23 @@ static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) { } } else { if(enc->data[enc->program].dps1_len > PS_LENGTH) { - if(enc->state[enc->program].dynamic_ps_position >= enc->data[enc->program].dps1_len) { - enc->state[enc->program].dynamic_ps_position = 0; - enc->state[enc->program].dps1_repeat_count++; - - if(enc->state[enc->program].dps1_repeat_count >= enc->data[enc->program].dps1_numberofrepeats) { - enc->state[enc->program].dynamic_ps_state = 0; - enc->state[enc->program].dynamic_ps_period = 0; - enc->state[enc->program].dps1_repeat_count = 0; - enc->state[enc->program].dynamic_ps_scroll_counter = 0; - enc->state[enc->program].static_ps_period = 0; - memcpy(enc->state[enc->program].ps_text, enc->data[enc->program].ps, PS_LENGTH); - } - } - uint8_t scroll_threshold = (enc->data[enc->program].dps_speed == 0) ? 4 : 2; if(enc->state[enc->program].dynamic_ps_scroll_counter >= scroll_threshold) { + if(enc->state[enc->program].dynamic_ps_position >= enc->data[enc->program].dps1_len) { + enc->state[enc->program].dynamic_ps_position = 0; + enc->state[enc->program].dps1_repeat_count++; + + if(enc->state[enc->program].dps1_repeat_count >= enc->data[enc->program].dps1_numberofrepeats) { + enc->state[enc->program].dynamic_ps_state = 0; + enc->state[enc->program].dynamic_ps_period = 0; + enc->state[enc->program].dps1_repeat_count = 0; + enc->state[enc->program].dynamic_ps_scroll_counter = 0; + enc->state[enc->program].static_ps_period = 0; + memcpy(enc->state[enc->program].ps_text, enc->data[enc->program].ps, PS_LENGTH); + } + } + switch(enc->data[enc->program].dps1_mode) { case 0: memcpy(enc->state[enc->program].ps_text, &(enc->state[enc->program].dps1_text[enc->state[enc->program].dynamic_ps_position]), PS_LENGTH);