From 3a05e39bb6295f7d8123b7231792e1da2694c3f3 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Mon, 14 Apr 2025 18:15:26 +0200 Subject: [PATCH] attempt to fix lps --- .vscode/.server-controller-port.log | 2 +- readme.md | 7 ++----- src/ascii_cmd.c | 14 +++++++------- src/rds.c | 1 + 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/.vscode/.server-controller-port.log b/.vscode/.server-controller-port.log index f723b08..b8084d8 100644 --- a/.vscode/.server-controller-port.log +++ b/.vscode/.server-controller-port.log @@ -1,5 +1,5 @@ { "port": 13452, - "time": 1744548934182, + "time": 1744647168046, "version": "0.0.3" } \ No newline at end of file diff --git a/readme.md b/readme.md index ac7695d..44eb862 100644 --- a/readme.md +++ b/readme.md @@ -100,16 +100,13 @@ Sets the LPS: `LPS=NovaFM❤️` ### ERT -TODO: ERT +Sets the ERT: `ERT=Currently on air we're playing: Lady Gaga - Applause` +*Note that ERT is a 128-character version of RT with UTF-8 support* ### PTYN Sets the programme type name: `PTYN=Football` -### AFCH - -TODO: AFCH - ### UDG1 Sets the user defined group, max 8 groups: `UDG1=6000FFFFFFFF` diff --git a/src/ascii_cmd.c b/src/ascii_cmd.c index 930f04e..14385b2 100644 --- a/src/ascii_cmd.c +++ b/src/ascii_cmd.c @@ -13,25 +13,25 @@ typedef struct { } pattern_command_handler_t; static void handle_ptyn(char *arg, RDSModulator* mod, char* output) { - arg[PTYN_LENGTH+1] = 0; + arg[PTYN_LENGTH+8] = 0; set_rds_ptyn(mod->enc, convert_to_rdscharset(arg)); strcpy(output, "+\0"); } static void handle_tps(char *arg, RDSModulator* mod, char* output) { - arg[PS_LENGTH+1] = 0; + arg[PS_LENGTH+8] = 0; set_rds_tps(mod->enc, convert_to_rdscharset(arg)); strcpy(output, "+\0"); } static void handle_rt1(char *arg, RDSModulator* mod, char* output) { - arg[RT_LENGTH+1] = 0; + arg[RT_LENGTH+8] = 0; set_rds_rt1(mod->enc, convert_to_rdscharset(arg)); strcpy(output, "+\0"); } static void handle_rt2(char *arg, RDSModulator* mod, char* output) { - arg[RT_LENGTH+1] = 0; + arg[RT_LENGTH+8] = 0; set_rds_rt2(mod->enc, convert_to_rdscharset(arg)); strcpy(output, "+\0"); } @@ -75,19 +75,19 @@ static void handle_link(char *arg, RDSModulator* mod, char* output) { } static void handle_lps(char *arg, RDSModulator* mod, char* output) { - arg[LPS_LENGTH+1] = 0; + arg[LPS_LENGTH+8] = 0; set_rds_lps(mod->enc, arg); strcpy(output, "+\0"); } static void handle_ert(char *arg, RDSModulator* mod, char* output) { - arg[ERT_LENGTH+1] = 0; + arg[ERT_LENGTH+8] = 0; set_rds_ert(mod->enc, arg); strcpy(output, "+\0"); } static void handle_ps(char *arg, RDSModulator* mod, char* output) { - arg[PS_LENGTH+1] = 0; + arg[PS_LENGTH+8] = 0; set_rds_ps(mod->enc, convert_to_rdscharset(arg)); strcpy(output, "+\0"); } diff --git a/src/rds.c b/src/rds.c index f530718..df02746 100644 --- a/src/rds.c +++ b/src/rds.c @@ -884,6 +884,7 @@ void set_rds_lps(RDSEncoder* enc, char *lps) { if (len < LPS_LENGTH) { enc->state[enc->program].lps_segments = 0; + enc->data[enc->program].lps[len++] = '\r'; while (i < len) { i += 4; enc->state[enc->program].lps_segments++;