mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-07-30 08:49:15 +02:00
add some dps things and run at ratio 14
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user