mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-07-30 00:39:15 +02:00
add fast tuning information
This commit is contained in:
@@ -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;
|
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) {
|
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) {
|
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);
|
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':
|
case 'F':
|
||||||
get_rds_lps_group(enc, group);
|
get_rds_lps_group(enc, group);
|
||||||
goto group_coded;
|
goto group_coded;
|
||||||
|
case 'T':
|
||||||
|
get_rds_fasttuning_group(enc, group);
|
||||||
|
goto group_coded;
|
||||||
}
|
}
|
||||||
group_coded:
|
group_coded:
|
||||||
return;
|
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 == 'R' && enc->rtpData[enc->program].enabled) good_group = 1;
|
||||||
if(*grp == 'S' && enc->data[enc->program].ert[0] != '\0') 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 == 'F' && enc->data[enc->program].lps[0] != '\0') good_group = 1;
|
||||||
|
if(*grp == 'T') good_group = 1;
|
||||||
return good_group;
|
return good_group;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -144,6 +144,8 @@ typedef struct {
|
|||||||
uint8_t grp_seq_idx[4];
|
uint8_t grp_seq_idx[4];
|
||||||
uint8_t udg_idxs[2];
|
uint8_t udg_idxs[2];
|
||||||
|
|
||||||
|
uint8_t fasttuning_state : 3;
|
||||||
|
|
||||||
uint8_t last_minute : 6;
|
uint8_t last_minute : 6;
|
||||||
uint8_t ta_timeout : 7;
|
uint8_t ta_timeout : 7;
|
||||||
uint8_t original_ta_timeout : 7;
|
uint8_t original_ta_timeout : 7;
|
||||||
|
|||||||
Reference in New Issue
Block a user