summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target')
-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 af49c4c3f2..4fccf2616f 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)
88 /* start up frozen */ 88 /* start up frozen */
89 int timeout = TIMEOUT_BLOCK; 89 int timeout = TIMEOUT_BLOCK;
90 struct queue_event ev; 90 struct queue_event ev;
91 bool rds_rdy = false;
91 92
92 while (true) { 93 while (true) {
93 queue_wait_w_tmo(&rds_queue, &ev, timeout); 94 queue_wait_w_tmo(&rds_queue, &ev, timeout);
@@ -96,10 +97,14 @@ static void NORETURN_ATTR rds_thread(void)
96 /* power up: timeout after 1 tick, else block indefinitely */ 97 /* power up: timeout after 1 tick, else block indefinitely */
97 timeout = ev.data ? 1 : TIMEOUT_BLOCK; 98 timeout = ev.data ? 1 : TIMEOUT_BLOCK;
98 break; 99 break;
99 case SYS_TIMEOUT: 100 case SYS_TIMEOUT:;
100 /* Captures RDS data and processes it */ 101 /* Captures RDS data and processes it */
101 if ((si4709_read_reg(STATUSRSSI) & STATUSRSSI_RDSR) >> 8) { 102 bool rdsr = si4709_read_reg(STATUSRSSI) & STATUSRSSI_RDSR;
102 si4700_rds_process(); 103 if (rdsr != rds_rdy) {
104 rds_rdy = rdsr;
105 if (rdsr) {
106 si4700_rds_process();
107 }
103 } 108 }
104 break; 109 break;
105 } 110 }