From 6e60e8a0a817f83f01eb5a1f12da8f89e242f2e6 Mon Sep 17 00:00:00 2001 From: Kuba <132459354+KubaPro010@users.noreply.github.com> Date: Wed, 14 Feb 2024 11:31:06 +0100 Subject: [PATCH] sdrplusplus? more like sdrpleaseplease --- src/pifmrds/pi_fm_rds.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pifmrds/pi_fm_rds.cpp b/src/pifmrds/pi_fm_rds.cpp index 741b45f..26794c9 100644 --- a/src/pifmrds/pi_fm_rds.cpp +++ b/src/pifmrds/pi_fm_rds.cpp @@ -216,11 +216,17 @@ int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt, uint16_t callsignToPI(char* callsign) { uint16_t pi_code = 0; - for (int i = 0; i < 4; i++) { - if (callsign[i] >= 'A' && callsign[i] <= 'Z') pi_code += (callsign[i] - 'A') * (i == 0 ? 21672 : (i == 1 ? 676 : (i == 2 ? 26 : 1))); - else return 0; // Returning 0 to indicate an error + bool w = (piCode >= 21672); + callsign = w ? 'W' : 'K'; + char* restStr; + int rest = piCode - (w ? 21672 : 4096); + while (rest) { + restStr += 'A' + (rest % 26); + rest /= 26; + } + for (int i = restStr.size() - 1; i >= 0; i--) { + callsign += restStr[i]; } - return pi_code; } int main(int argc, char **argv) {