diff options
| -rw-r--r-- | firmware/target/hosted/samsungypr/radio-ypr.c | 11 |
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; } |