summaryrefslogtreecommitdiff
path: root/firmware/drivers/tuner/si4700.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/tuner/si4700.c')
-rw-r--r--firmware/drivers/tuner/si4700.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/firmware/drivers/tuner/si4700.c b/firmware/drivers/tuner/si4700.c
index bebbd0c881..0684d2042f 100644
--- a/firmware/drivers/tuner/si4700.c
+++ b/firmware/drivers/tuner/si4700.c
@@ -556,6 +556,34 @@ void si4700_dbg_info(struct si4700_dbg_info *nfo)
556} 556}
557 557
558#ifdef HAVE_RDS_CAP 558#ifdef HAVE_RDS_CAP
559
560#ifdef SI4700_RDS_ASYNC
561/* Read raw RDS info for processing - asynchronously */
562
563/* Assumes regbuf is 32 bytes */
564void si4700_rds_read_raw_async(void)
565{
566 si4700_read_raw_async((RDSD - STATUSRSSI + 1) * 2);
567}
568
569void si4700_rds_read_raw_async_complete(unsigned char *regbuf,
570 uint16_t data[4])
571{
572 const int index = (RDSA - STATUSRSSI) * 2;
573
574 for (int i = 0; i < 4; i++) {
575 data[i] = regbuf[index] << 8 | regbuf[index + 1];
576 regbuf += 2;
577 }
578}
579
580/* Set the event flag */
581void si4700_rds_set_event(void)
582{
583 rds_event = 1;
584}
585
586#else
559/* Read raw RDS info for processing */ 587/* Read raw RDS info for processing */
560bool si4700_rds_read_raw(uint16_t data[4]) 588bool si4700_rds_read_raw(uint16_t data[4])
561{ 589{
@@ -582,6 +610,7 @@ void si4700_rds_set_event(void)
582 rds_event = 1; 610 rds_event = 1;
583 mutex_unlock(&fmr_mutex); 611 mutex_unlock(&fmr_mutex);
584} 612}
613#endif /* SI4700_RDS_ASYNC */
585 614
586char * si4700_get_rds_info(int setting) 615char * si4700_get_rds_info(int setting)
587{ 616{