0
1
mirror of https://github.com/radio95-rnt/rds95.git synced 2026-02-27 04:43:52 +01:00

oda in lua?

This commit is contained in:
2025-12-27 11:41:26 +01:00
parent b39a0e78ed
commit 3a6c701157
10 changed files with 203 additions and 137 deletions

View File

@@ -311,36 +311,4 @@ int get_rdsp_lua_group(RDSGroup *group, const char grp) {
int generated = lua_group(group, grp);
if(generated) group->is_type_b = (IS_TYPE_B(group->b) != 0);
return generated;
}
void get_rds_user_oda_group(RDSEncoder* enc, RDSGroup *group) {
uint8_t pointer = enc->state[enc->program].user_oda.oda_pointer++;
if(enc->state[enc->program].user_oda.oda_pointer >= enc->state[enc->program].user_oda.oda_len) enc->state[enc->program].user_oda.oda_pointer = 0;
RDSODA oda = enc->state[enc->program].user_oda.odas[pointer];
group->b |= 3 << 12;
group->b |= oda.group << 1;
group->b |= oda.group_version;
group->c = oda.id_data;
group->d = oda.id;
}
int get_rds_user_oda_group_content(RDSEncoder* enc, RDSGroup *group) {
RDSODAState *oda_state = &enc->state[enc->program].user_oda;
if (oda_state->oda_len == 0) return 0;
for (uint8_t i = 0; i < oda_state->oda_len; i++) {
uint8_t current_idx = oda_state->oda_runner_pointer;
oda_state->oda_runner_pointer = (oda_state->oda_runner_pointer + 1) % oda_state->oda_len;
if (oda_state->odas[current_idx].lua_handler != 0 && oda_state->odas[current_idx].group != 3) {
lua_group_ref(group, oda_state->odas[current_idx].lua_handler);
group->b |= oda_state->odas[current_idx].group << 12;
group->b |= oda_state->odas[current_idx].group_version << 11;
group->is_type_b = (IS_TYPE_B(group->b) != 0);
return 1;
}
}
return 0;
}