0
1
mirror of https://github.com/radio95-rnt/rds95.git synced 2026-02-26 20:33:53 +01:00
This commit is contained in:
2025-03-17 03:32:17 +01:00
parent b275f759c8
commit 002415a041
2 changed files with 17 additions and 5 deletions

View File

@@ -198,6 +198,7 @@ static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) {
if(enc->state[enc->program].dps1_update && dps1_on) { if(enc->state[enc->program].dps1_update && dps1_on) {
memcpy(enc->state[enc->program].dps1_text, enc->data[enc->program].dps1, PS_LENGTH); memcpy(enc->state[enc->program].dps1_text, enc->data[enc->program].dps1, PS_LENGTH);
enc->state[enc->program].dps1_update = 0; enc->state[enc->program].dps1_update = 0;
enc->state[enc->program].dps1_repeat_count = 0;
} }
if(dps1_on) { if(dps1_on) {
@@ -224,14 +225,23 @@ static void get_rds_ps_group(RDSEncoder* enc, uint16_t *blocks) {
if(enc->state[enc->program].dynamic_ps_position >= enc->data[enc->program].dps1_len) { 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].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;
}
} }
} else { } else {
memcpy(enc->state[enc->program].ps_text, enc->state[enc->program].dps1_text, PS_LENGTH); memcpy(enc->state[enc->program].ps_text, enc->state[enc->program].dps1_text, PS_LENGTH);
} enc->state[enc->program].dynamic_ps_period++;
if(enc->state[enc->program].dynamic_ps_period >= enc->data[enc->program].dps_label_period) { // For short messages, use the period to determine how many times to repeat
enc->state[enc->program].dynamic_ps_state = 0; if(enc->state[enc->program].dynamic_ps_period >= enc->data[enc->program].dps_label_period) {
enc->state[enc->program].dynamic_ps_period = 0; enc->state[enc->program].dynamic_ps_state = 0;
enc->state[enc->program].dynamic_ps_period = 0;
}
} }
} }
} }
@@ -572,6 +582,7 @@ void set_rds_defaults(RDSEncoder* enc, uint8_t program) {
enc->data[program].static_ps_period = 6; enc->data[program].static_ps_period = 6;
enc->data[program].dps_label_period = 4; enc->data[program].dps_label_period = 4;
enc->data[program].dps1_numberofrepeats = 1;
enc->state[program].rt_ab = 1; enc->state[program].rt_ab = 1;
enc->state[program].ptyn_ab = 1; enc->state[program].ptyn_ab = 1;

View File

@@ -156,6 +156,7 @@ typedef struct {
uint8_t dps1_update : 1; uint8_t dps1_update : 1;
char dps1_text[DPS_LENGTH]; char dps1_text[DPS_LENGTH];
char dps1_nexttext[127]; char dps1_nexttext[127];
uint8_t dps1_repeat_count : 7;
uint8_t static_ps_period : 4; uint8_t static_ps_period : 4;
uint8_t dynamic_ps_period : 4; uint8_t dynamic_ps_period : 4;
uint8_t dynamic_ps_position : 4; uint8_t dynamic_ps_position : 4;