add some dps things and run at ratio 14

This commit is contained in:
2025-03-17 18:02:21 +01:00
parent c8c503bade
commit 6a9dfcfbc5
6 changed files with 37 additions and 17 deletions
+22 -9
View File
@@ -182,6 +182,7 @@ static uint16_t get_next_af(RDSEncoder* enc) {
// #region Group encoding
static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) {
uint8_t dps1_on = (enc->data[enc->program].dps1_enabled && enc->data[enc->program].dps1_len != 0);
uint8_t dps2_on = (enc->data[enc->program].dps2_enabled && enc->data[enc->program].dps2_len != 0);
if(enc->state[enc->program].ps_csegment == 0) {
if(enc->state[enc->program].ps_update && !dps1_on) {
memcpy(enc->state[enc->program].ps_text, enc->data[enc->program].ps, PS_LENGTH);
@@ -198,6 +199,12 @@ static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) {
enc->state[enc->program].dps1_update = 0;
enc->state[enc->program].dps1_repeat_count = 0;
}
if(enc->state[enc->program].dps2_update && dps2_on) {
memcpy(enc->state[enc->program].dps2_text, enc->data[enc->program].dps2, DPS_LENGTH);
enc->state[enc->program].dps2_update = 0;
enc->state[enc->program].dps2_repeat_count = 0;
}
if(dps1_on) {
if(enc->state[enc->program].dynamic_ps_state == 0) {
@@ -210,15 +217,21 @@ static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) {
}
} else {
if(enc->data[enc->program].dps1_len > 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);
enc->state[enc->program].dynamic_ps_position += PS_LENGTH;
break;
case 1:
memcpy(enc->state[enc->program].ps_text, &(enc->state[enc->program].dps1_text[enc->state[enc->program].dynamic_ps_position]), PS_LENGTH);
enc->state[enc->program].dynamic_ps_position++;
break;
uint8_t scroll_threshold = (enc->data[enc->program].dps1_mode == 0) ? 8 : 6;
if(enc->state[enc->program].dynamic_ps_scroll_counter >= scroll_threshold) {
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);
enc->state[enc->program].dynamic_ps_position += PS_LENGTH;
break;
case 1:
memcpy(enc->state[enc->program].ps_text, &(enc->state[enc->program].dps1_text[enc->state[enc->program].dynamic_ps_position]), PS_LENGTH);
enc->state[enc->program].dynamic_ps_position++;
break;
}
} else {
enc->state[enc->program].dynamic_ps_scroll_counter++;
}
if(enc->state[enc->program].dynamic_ps_position >= enc->data[enc->program].dps1_len) {