From ed56454f637090ad16cafda909de17ec59d4d9d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20D=2E=20Gonz=C3=A1lez?= Date: Mon, 2 Mar 2026 22:26:22 +0100 Subject: [PATCH 1/3] End all RS segments with 0x0d char --- Dynamic_RDS_Engine.py | 2 +- QN8066.py | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Dynamic_RDS_Engine.py b/Dynamic_RDS_Engine.py index b48c22e..0dc8ef2 100755 --- a/Dynamic_RDS_Engine.py +++ b/Dynamic_RDS_Engine.py @@ -74,7 +74,7 @@ def updateRDSData(): # TODO: DynRDSRTSize functionally works, but I think this should source from the RTBuffer class post initialization # TODO: Check if transmitter is active? - transmitter.updateRDSData(rdsStyleToString(config['DynRDSPSStyle'], 8), rdsStyleToString(config['DynRDSRTStyle'], int(config['DynRDSRTSize']))) + transmitter.updateRDSData(rdsStyleToString(config['DynRDSPSStyle'], 8), rdsStyleToString(config['DynRDSRTStyle'], int(config['DynRDSRTSize']) - 1)) if config['DynRDSmqttEnable'] == '1': mqttStatus = {} diff --git a/QN8066.py b/QN8066.py index 910ce7b..9bdce74 100644 --- a/QN8066.py +++ b/QN8066.py @@ -178,15 +178,14 @@ class RTBuffer(Transmitter.RDSBuffer): # Max fragment size of 64, Groups send 4 characters at a time def __init__(self, outer, data, delay=7): self.ab = 0 - super().__init__(data, int(config['DynRDSRTSize']), 4, delay) + super().__init__(data, int(config['DynRDSRTSize']) - 1, 4, delay) self.outer = outer def updateData(self, data): super().updateData(data) - # Add 0x0d to end of last fragment to indicate RT is done - # TODO: This isn't quite correct - Should put 0x0d where a break is indicated in the rdsStyleText - if len(self.fragments[-1]) < self.frag_size: - self.fragments[-1] += chr(0x0d) + # Add 0x0d to end of all fragments to indicate RT is done + for i in range(len(self.fragments)): + self.fragments[i] += chr(0x0d) self.ab = not self.ab logging.info('RT %s', self.fragments) From ea2753b99204997f37377d17e34845182e739b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20D=2E=20Gonz=C3=A1lez?= Date: Mon, 9 Mar 2026 19:16:13 +0100 Subject: [PATCH 2/3] Remove trailling spaces in RS segments, and add 0x0d if shorter than 64 chars --- Dynamic_RDS_Engine.py | 2 +- QN8066.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Dynamic_RDS_Engine.py b/Dynamic_RDS_Engine.py index 0dc8ef2..b48c22e 100755 --- a/Dynamic_RDS_Engine.py +++ b/Dynamic_RDS_Engine.py @@ -74,7 +74,7 @@ def updateRDSData(): # TODO: DynRDSRTSize functionally works, but I think this should source from the RTBuffer class post initialization # TODO: Check if transmitter is active? - transmitter.updateRDSData(rdsStyleToString(config['DynRDSPSStyle'], 8), rdsStyleToString(config['DynRDSRTStyle'], int(config['DynRDSRTSize']) - 1)) + transmitter.updateRDSData(rdsStyleToString(config['DynRDSPSStyle'], 8), rdsStyleToString(config['DynRDSRTStyle'], int(config['DynRDSRTSize']))) if config['DynRDSmqttEnable'] == '1': mqttStatus = {} diff --git a/QN8066.py b/QN8066.py index 9bdce74..e552653 100644 --- a/QN8066.py +++ b/QN8066.py @@ -183,9 +183,11 @@ def __init__(self, outer, data, delay=7): def updateData(self, data): super().updateData(data) - # Add 0x0d to end of all fragments to indicate RT is done + # Remove all trailing spaces and append chr(0x0d) if length < 64 (max RT fragment size) for i in range(len(self.fragments)): - self.fragments[i] += chr(0x0d) + self.fragments[i] = self.fragments[i].rstrip() + if len(self.fragments[i]) < 64: + self.fragments[i] += chr(0x0d) self.ab = not self.ab logging.info('RT %s', self.fragments) From 0504f1f7be88faa25b32ecc744e51646634489d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20D=2E=20Gonz=C3=A1lez?= Date: Mon, 9 Mar 2026 19:20:47 +0100 Subject: [PATCH 3/3] Remove trailing spaces in RS segments, and add 0x0d if shorter than 64 chars --- QN8066.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QN8066.py b/QN8066.py index e552653..480b928 100644 --- a/QN8066.py +++ b/QN8066.py @@ -178,7 +178,7 @@ class RTBuffer(Transmitter.RDSBuffer): # Max fragment size of 64, Groups send 4 characters at a time def __init__(self, outer, data, delay=7): self.ab = 0 - super().__init__(data, int(config['DynRDSRTSize']) - 1, 4, delay) + super().__init__(data, int(config['DynRDSRTSize']), 4, delay) self.outer = outer def updateData(self, data):