summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/hosted/samsungypr/radio-ypr.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/firmware/target/hosted/samsungypr/radio-ypr.c b/firmware/target/hosted/samsungypr/radio-ypr.c
index af49c4c..4fccf26 100644
--- a/firmware/target/hosted/samsungypr/radio-ypr.c
+++ b/firmware/target/hosted/samsungypr/radio-ypr.c
@@ -88,6 +88,7 @@ static void NORETURN_ATTR rds_thread(void)
/* start up frozen */
int timeout = TIMEOUT_BLOCK;
struct queue_event ev;
+ bool rds_rdy = false;
while (true) {
queue_wait_w_tmo(&rds_queue, &ev, timeout);
@@ -96,10 +97,14 @@ static void NORETURN_ATTR rds_thread(void)
/* power up: timeout after 1 tick, else block indefinitely */
timeout = ev.data ? 1 : TIMEOUT_BLOCK;
break;
- case SYS_TIMEOUT:
+ case SYS_TIMEOUT:;
/* Captures RDS data and processes it */
- if ((si4709_read_reg(STATUSRSSI) & STATUSRSSI_RDSR) >> 8) {
- si4700_rds_process();
+ bool rdsr = si4709_read_reg(STATUSRSSI) & STATUSRSSI_RDSR;
+ if (rdsr != rds_rdy) {
+ rds_rdy = rdsr;
+ if (rdsr) {
+ si4700_rds_process();
+ }
}
break;
}