diff options
Diffstat (limited to 'firmware/drivers/tuner')
-rw-r--r-- | firmware/drivers/tuner/si4700.c | 29 |
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 */ | ||
564 | void si4700_rds_read_raw_async(void) | ||
565 | { | ||
566 | si4700_read_raw_async((RDSD - STATUSRSSI + 1) * 2); | ||
567 | } | ||
568 | |||
569 | void 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 */ | ||
581 | void 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 */ |
560 | bool si4700_rds_read_raw(uint16_t data[4]) | 588 | bool 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 | ||
586 | char * si4700_get_rds_info(int setting) | 615 | char * si4700_get_rds_info(int setting) |
587 | { | 616 | { |