From 9cb255a8bdf93bdeb209a97013fed354acd127ee Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Sun, 13 Apr 2025 16:06:50 +0200 Subject: [PATCH] add fast tuning information --- src/rds.c | 20 ++++++++++++++++++++ src/rds.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/rds.c b/src/rds.c index b03d655..c38a1df 100644 --- a/src/rds.c +++ b/src/rds.c @@ -173,6 +173,22 @@ static void get_rds_ps_group(RDSEncoder* enc, RDSGroup *group) { if (enc->state[enc->program].ps_csegment == 4) enc->state[enc->program].ps_csegment = 0; } +static void get_rds_fasttuning_group(RDSEncoder* enc, RDSGroup *group) { + group.b |= 1 << 11; + + group->b |= enc->data[enc->program].ta << 4; + if(enc->state[enc->program].fasttuning_state == 0) group->b |= enc->data[enc->program].dpty << 2; + group->b |= enc->state[enc->program].fasttuning_state; + + // are blocks b and d the same or not? + group->d = group->b; + + enc->state[enc->program].fasttuning_state++; + if (enc->state[enc->program].fasttuning_state == 4) enc->state[enc->program].fasttuning_state = 0; + + group->is_type_b = 1; +} + static void get_rds_rt_group(RDSEncoder* enc, RDSGroup *group) { if (enc->state[enc->program].rt_update && enc->data[enc->program].rt1_enabled && !enc->state[enc->program].current_rt) { memcpy(enc->state[enc->program].rt_text, enc->data[enc->program].rt1, RT_LENGTH); @@ -482,6 +498,9 @@ static void get_rds_sequence_group(RDSEncoder* enc, RDSGroup *group, char* grp, case 'F': get_rds_lps_group(enc, group); goto group_coded; + case 'T': + get_rds_fasttuning_group(enc, group); + goto group_coded; } group_coded: return; @@ -507,6 +526,7 @@ static uint8_t check_rds_good_group(RDSEncoder* enc, char* grp, uint8_t stream) if(*grp == 'R' && enc->rtpData[enc->program].enabled) good_group = 1; if(*grp == 'S' && enc->data[enc->program].ert[0] != '\0') good_group = 1; if(*grp == 'F' && enc->data[enc->program].lps[0] != '\0') good_group = 1; + if(*grp == 'T') good_group = 1; return good_group; } diff --git a/src/rds.h b/src/rds.h index b244df1..f0f2320 100644 --- a/src/rds.h +++ b/src/rds.h @@ -143,6 +143,8 @@ typedef struct { uint8_t data_ecc : 1; uint8_t grp_seq_idx[4]; uint8_t udg_idxs[2]; + + uint8_t fasttuning_state : 3; uint8_t last_minute : 6; uint8_t ta_timeout : 7;