mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-02-27 04:43:52 +01:00
do ert in lua
This commit is contained in:
@@ -311,9 +311,6 @@ STR_SETTER(rt2, set_rds_rt2)
|
||||
STR_RAW_SETTER(lps, set_rds_lps)
|
||||
STR_RAW_GETTER(lps, LPS_LENGTH)
|
||||
|
||||
STR_RAW_SETTER(ert, set_rds_ert)
|
||||
STR_RAW_GETTER(ert, ERT_LENGTH)
|
||||
|
||||
STR_RAW_SETTER(grp_sqc_rds2, set_rds_grpseq2)
|
||||
STR_RAW_GETTER(grp_sqc_rds2, 24)
|
||||
|
||||
@@ -589,9 +586,6 @@ void init_lua(RDSModulator* rds_mod) {
|
||||
lua_register(L, "set_rds_lps", lua_set_rds_lps);
|
||||
lua_register(L, "get_rds_lps", lua_get_rds_lps);
|
||||
|
||||
lua_register(L, "set_rds_ert", lua_set_rds_ert);
|
||||
lua_register(L, "get_rds_ert", lua_get_rds_ert);
|
||||
|
||||
lua_register(L, "set_rds_rtplus_tags", lua_set_rds_rtplus_tags);
|
||||
lua_register(L, "get_rds_rtplus_tags", lua_get_rds_rtplus_tags);
|
||||
lua_register(L, "toggle_rds_rtp", lua_toggle_rds_rtp);
|
||||
|
||||
11
src/rds.c
11
src/rds.c
@@ -14,7 +14,6 @@ void get_rds_fasttuning_group(RDSEncoder* enc, RDSGroup *group);
|
||||
void get_rds_rt_group(RDSEncoder* enc, RDSGroup *group);
|
||||
void get_rdsp_rtp_oda_group(RDSGroup *group);
|
||||
void get_rdsp_ertp_oda_group(RDSGroup *group);
|
||||
void get_rdsp_ert_oda_group(RDSGroup *group);
|
||||
void get_rdsp_oda_af_oda_group(RDSGroup *group);
|
||||
void get_rds_oda_af_group(RDSEncoder* enc, RDSGroup *group);
|
||||
void get_rdsp_ct_group(RDSGroup *group, time_t now);
|
||||
@@ -25,7 +24,6 @@ void get_rds_ptyn_group(RDSEncoder* enc, RDSGroup *group);
|
||||
void get_rds_rtplus_group(RDSEncoder* enc, RDSGroup *group);
|
||||
void get_rds_ertplus_group(RDSEncoder* enc, RDSGroup *group);
|
||||
void get_rds_eon_group(RDSEncoder* enc, RDSGroup *group);
|
||||
void get_rds_ert_group(RDSEncoder* enc, RDSGroup *group);
|
||||
uint8_t get_rds_custom_groups(RDSEncoder* enc, RDSGroup *group);
|
||||
uint8_t get_rds_custom_groups2(RDSEncoder* enc, RDSGroup *group);
|
||||
int get_rdsp_lua_group(RDSGroup *group);
|
||||
@@ -100,11 +98,6 @@ static void get_rds_sequence_group(RDSEncoder* enc, RDSGroup *group, char* grp,
|
||||
else get_rdsp_ertp_oda_group(group);
|
||||
TOGGLE(enc->state[enc->program].ert_oda);
|
||||
break;
|
||||
case 'S':
|
||||
if(enc->state[enc->program].ert_oda == 0) get_rds_ert_group(enc, group);
|
||||
else get_rdsp_ert_oda_group(group);
|
||||
TOGGLE(enc->state[enc->program].ert_oda);
|
||||
break;
|
||||
case 'F':
|
||||
get_rds_lps_group(enc, group);
|
||||
break;
|
||||
@@ -145,8 +138,7 @@ static uint8_t check_rds_good_group(RDSEncoder* enc, char* grp) {
|
||||
if(*grp == 'X' && enc->data[enc->program].udg1_len != 0) good_group = 1;
|
||||
if(*grp == 'Y' && enc->data[enc->program].udg2_len != 0) good_group = 1;
|
||||
if(*grp == 'R' && enc->rtpData[enc->program][0].enabled) good_group = 1;
|
||||
if(*grp == 'P' && enc->rtpData[enc->program][1].enabled && (_strnlen(enc->data[enc->program].ert, 65) < 64)) good_group = 1;
|
||||
if(*grp == 'S' && enc->data[enc->program].ert[0] != '\0') good_group = 1;
|
||||
if(*grp == 'P' && enc->rtpData[enc->program][1].enabled) good_group = 1;
|
||||
if(*grp == 'F' && enc->data[enc->program].lps[0] != '\0') good_group = 1;
|
||||
if(*grp == 'T') good_group = 1;
|
||||
if(*grp == 'L') good_group = 1;
|
||||
@@ -364,7 +356,6 @@ void reset_rds_state(RDSEncoder* enc, uint8_t program) {
|
||||
tempCoder.state[program].ptyn_ab = 1;
|
||||
set_rds_rt1(&tempCoder, enc->data[program].rt1);
|
||||
set_rds_rt2(&tempCoder, enc->data[program].rt2);
|
||||
set_rds_ert(&tempCoder, enc->data[program].ert);
|
||||
set_rds_ps(&tempCoder, enc->data[program].ps);
|
||||
set_rds_tps(&tempCoder, enc->data[program].tps);
|
||||
set_rds_ptyn(&tempCoder, enc->data[program].ptyn);
|
||||
|
||||
14
src/rds.h
14
src/rds.h
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
#include "common.h"
|
||||
#define LUA_USER_DATA 512
|
||||
#define LUA_USER_DATA 768
|
||||
|
||||
/* The RDS error-detection code generator polynomial is
|
||||
* x^10 + x^8 + x^7 + x^5 + x^4 + x^3 + x^0
|
||||
@@ -14,7 +14,6 @@
|
||||
#define RDS_SAMPLE_RATE 4750
|
||||
|
||||
#define RT_LENGTH 64
|
||||
#define ERT_LENGTH 128
|
||||
#define PS_LENGTH 8
|
||||
#define PTYN_LENGTH 8
|
||||
#define LPS_LENGTH 32
|
||||
@@ -30,7 +29,6 @@
|
||||
|
||||
// List of ODAs: https://www.nrscstandards.org/committees/dsm/archive/rds-oda-aids.pdf
|
||||
#define ODA_AID_RTPLUS 0x4bd7
|
||||
#define ODA_AID_ERT 0x6552
|
||||
#define ODA_AID_ERTPLUS 0x4BD8
|
||||
#define ODA_AID_ODAAF 0x6365
|
||||
|
||||
@@ -79,10 +77,6 @@ typedef struct {
|
||||
char default_rt[RT_LENGTH];
|
||||
char rt2[RT_LENGTH];
|
||||
|
||||
uint8_t ert_switching_period;
|
||||
uint8_t orignal_ert_switching_period;
|
||||
char ert[ERT_LENGTH];
|
||||
|
||||
uint8_t ptyn_enabled : 1;
|
||||
char ptyn[PTYN_LENGTH];
|
||||
|
||||
@@ -144,11 +138,6 @@ typedef struct {
|
||||
uint8_t rt_segments : 5;
|
||||
uint8_t rt2_segments : 5;
|
||||
|
||||
char ert_text[ERT_LENGTH];
|
||||
uint8_t ert_state : 6;
|
||||
uint8_t ert_update : 1;
|
||||
uint8_t ert_segments : 6;
|
||||
|
||||
char ptyn_text[PTYN_LENGTH];
|
||||
uint8_t ptyn_state : 1;
|
||||
uint8_t ptyn_update : 1;
|
||||
@@ -254,7 +243,6 @@ void set_rds_rt2(RDSEncoder* enc, const char *rt2);
|
||||
void set_rds_ps(RDSEncoder* enc, const char *ps);
|
||||
void set_rds_tps(RDSEncoder* enc, const char *tps);
|
||||
void set_rds_lps(RDSEncoder* enc, const char *lps);
|
||||
void set_rds_ert(RDSEncoder *enc, const char *ert);
|
||||
void set_rds_rtplus_tags(RDSEncoder *enc, uint8_t *tags);
|
||||
void set_rds_ertplus_tags(RDSEncoder *enc, uint8_t *tags);
|
||||
void set_rds_ptyn(RDSEncoder *enc, const char *ptyn);
|
||||
|
||||
@@ -148,13 +148,6 @@ void get_rdsp_ertp_oda_group(RDSGroup *group) {
|
||||
group->d = ODA_AID_ERTPLUS;
|
||||
}
|
||||
|
||||
void get_rdsp_ert_oda_group(RDSGroup *group) {
|
||||
group->b |= 3 << 12;
|
||||
group->b |= 12 << 1;
|
||||
group->c = 1; // UTF-8
|
||||
group->d = ODA_AID_ERT;
|
||||
}
|
||||
|
||||
void get_rdsp_oda_af_oda_group(RDSGroup *group) {
|
||||
group->b |= 3 << 12;
|
||||
group->b |= 7 << 1;
|
||||
@@ -326,22 +319,6 @@ void get_rds_eon_group(RDSEncoder* enc, RDSGroup *group) {
|
||||
}
|
||||
}
|
||||
|
||||
void get_rds_ert_group(RDSEncoder* enc, RDSGroup *group) {
|
||||
if (enc->state[enc->program].ert_state == 0 && enc->state[enc->program].ert_update) {
|
||||
memcpy(enc->state[enc->program].ert_text, enc->data[enc->program].ert, ERT_LENGTH);
|
||||
enc->state[enc->program].ert_update = 0;
|
||||
}
|
||||
|
||||
group->b |= 12 << 12 | (enc->state[enc->program].ert_state & 31);
|
||||
group->c = enc->state[enc->program].ert_text[enc->state[enc->program].ert_state * 4] << 8;
|
||||
group->c |= enc->state[enc->program].ert_text[enc->state[enc->program].ert_state * 4 + 1];
|
||||
group->d = enc->state[enc->program].ert_text[enc->state[enc->program].ert_state * 4 + 2] << 8;
|
||||
group->d |= enc->state[enc->program].ert_text[enc->state[enc->program].ert_state * 4 + 3];
|
||||
|
||||
enc->state[enc->program].ert_state++;
|
||||
if (enc->state[enc->program].ert_state >= enc->state[enc->program].ert_segments) enc->state[enc->program].ert_state = 0;
|
||||
}
|
||||
|
||||
uint8_t get_rds_custom_groups(RDSEncoder* enc, RDSGroup *group) {
|
||||
if(enc->state[enc->program].custom_group[0] == 1) {
|
||||
enc->state[enc->program].custom_group[0] = 0;
|
||||
|
||||
@@ -87,27 +87,6 @@ void set_rds_lps(RDSEncoder* enc, const char *lps) {
|
||||
if(enc->state[enc->program].lps_segments > 8) enc->state[enc->program].lps_segments = 8; //make sure
|
||||
}
|
||||
|
||||
void set_rds_ert(RDSEncoder* enc, const char *ert) {
|
||||
uint8_t i = 0, len = 0;
|
||||
|
||||
enc->state[enc->program].ert_update = 1;
|
||||
|
||||
memset(enc->data[enc->program].ert, ' ', ERT_LENGTH);
|
||||
while (*ert != 0 && len < ERT_LENGTH) enc->data[enc->program].ert[len++] = *ert++;
|
||||
|
||||
while (len > 0 && enc->data[enc->program].ert[len - 1] == ' ') len--;
|
||||
|
||||
if (len < ERT_LENGTH) {
|
||||
enc->state[enc->program].ert_segments = 0;
|
||||
enc->data[enc->program].ert[len++] = '\r';
|
||||
while (i < len) {
|
||||
i += 4;
|
||||
enc->state[enc->program].ert_segments++;
|
||||
}
|
||||
} else enc->state[enc->program].ert_segments = 32;
|
||||
if(enc->state[enc->program].ert_segments > 32) enc->state[enc->program].ert_segments = 32; //make sure
|
||||
}
|
||||
|
||||
inline void set_rds_rtplus_tags(RDSEncoder* enc, uint8_t *tags) {
|
||||
enc->rtpData[enc->program][0].type[0] = tags[0] & 0x3f;
|
||||
enc->rtpData[enc->program][0].start[0] = tags[1] & 0x3f;
|
||||
|
||||
Reference in New Issue
Block a user