From b37556d6d14a5b8b2a629ac8d7e2947ef76ec988 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Mon, 24 Mar 2025 20:24:22 +0100 Subject: [PATCH] compress the udg commands a bit --- .vscode/.server-controller-port.log | 2 +- src/ascii_cmd.c | 49 ++++++----------------------- 2 files changed, 11 insertions(+), 40 deletions(-) diff --git a/.vscode/.server-controller-port.log b/.vscode/.server-controller-port.log index 7075e9e..4af0d03 100644 --- a/.vscode/.server-controller-port.log +++ b/.vscode/.server-controller-port.log @@ -1,5 +1,5 @@ { "port": 13452, - "time": 1742832216228, + "time": 1742842630343, "version": "0.0.3" } \ No newline at end of file diff --git a/src/ascii_cmd.c b/src/ascii_cmd.c index 97fa7d0..933723f 100644 --- a/src/ascii_cmd.c +++ b/src/ascii_cmd.c @@ -285,7 +285,7 @@ static void handle_rdsgen(char *arg, RDSModulator* mod, char* output) { strcpy(output, "+\0"); } -static void handle_udg1(char *arg, RDSModulator* mod, char* output) { +static void handle_udg(char *arg, char *pattern, RDSModulator* mod, char* output) { uint8_t all_scanned = 1, bad_format = 0; uint16_t blocks[8][3]; int sets = 0; @@ -314,43 +314,15 @@ static void handle_udg1(char *arg, RDSModulator* mod, char* output) { } } - memcpy(&(mod->enc->data[mod->enc->program].udg1), &blocks, sets * sizeof(uint16_t[3])); - mod->enc->data[mod->enc->program].udg1_len = sets; - if(bad_format) strcpy(output, "-\0"); - else if(all_scanned) strcpy(output, "+\0"); - else strcpy(output, "/\0"); -} -static void handle_udg2(char *arg, RDSModulator* mod, char* output) { - uint8_t all_scanned = 1, bad_format = 0; - uint16_t blocks[8][3]; - int sets = 0; - char *ptr = arg; - - while (sets < 8) { - int count = sscanf((char *)ptr, "%4hx%4hx%4hx", - &blocks[sets][0], &blocks[sets][1], &blocks[sets][2]); - - if (count != 3) { - all_scanned = 0; - break; - } - - sets++; - - while (*ptr && *ptr != ',') { - ptr++; - } - - if (*ptr == ',') { - ptr++; - } else { - bad_format = 1; - break; - } + if (strcmp(pattern, "1") == 0) { + memcpy(&(mod->enc->data[mod->enc->program].udg1), &blocks, sets * sizeof(uint16_t[3])); + mod->enc->data[mod->enc->program].udg1_len = sets; + } else if(strcmp(pattern, "2") == 0) { + memcpy(&(mod->enc->data[mod->enc->program].udg2), &blocks, sets * sizeof(uint16_t[3])); + mod->enc->data[mod->enc->program].udg2_len = sets; + } else { + strcpy(output, "!\0"); } - - memcpy(&(mod->enc->data[mod->enc->program].udg2), &blocks, sets * sizeof(uint16_t[3])); - mod->enc->data[mod->enc->program].udg2_len = sets; if(bad_format) strcpy(output, "-\0"); else if(all_scanned) strcpy(output, "+\0"); else strcpy(output, "/\0"); @@ -522,8 +494,6 @@ static const command_handler_t commands_eq5[] = { {"TEXT", handle_rt1, 4}, {"PTYN", handle_ptyn, 4}, {"AFCH", handle_afch, 4}, - {"UDG1", handle_udg1, 4}, - {"UDG2", handle_udg2, 4}, {"DPTY", handle_dpty, 4}, }; @@ -569,6 +539,7 @@ static const pattern_command_handler_t pattern_commands[] = { {"EON", "AFCH", handle_eonafch}, {"PSN", "", handle_psn}, {"DSN", "", handle_dsn}, + {"UDG", "", handle_udg}, }; static bool process_command_table(const command_handler_t *table, int table_size,