diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2011-12-29 12:02:49 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2011-12-29 12:02:49 +0000 |
| commit | 7b596416bf2cf533a514b4d1f7b95c6de6efa7d5 (patch) | |
| tree | e1a0031a93591424eacdf943796680880077a3a4 /firmware/drivers/tuner | |
| parent | 20d81d979a22403c16c1f1c576de63af07b2ea99 (diff) | |
| download | rockbox-7b596416bf2cf533a514b4d1f7b95c6de6efa7d5.zip rockbox-7b596416bf2cf533a514b4d1f7b95c6de6efa7d5.tar.gz rockbox-7b596416bf2cf533a514b4d1f7b95c6de6efa7d5.tar.bz2 rockbox-7b596416bf2cf533a514b4d1f7b95c6de6efa7d5.tar.xz | |
Gigabeat S: Update RDS processing to use asynchronous I2C rather than thread.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31462 a1c6a512-1295-4272-9138-f99709370657
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 bebbd0c..0684d20 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) } #ifdef HAVE_RDS_CAP + +#ifdef SI4700_RDS_ASYNC +/* Read raw RDS info for processing - asynchronously */ + +/* Assumes regbuf is 32 bytes */ +void si4700_rds_read_raw_async(void) +{ + si4700_read_raw_async((RDSD - STATUSRSSI + 1) * 2); +} + +void si4700_rds_read_raw_async_complete(unsigned char *regbuf, + uint16_t data[4]) +{ + const int index = (RDSA - STATUSRSSI) * 2; + + for (int i = 0; i < 4; i++) { + data[i] = regbuf[index] << 8 | regbuf[index + 1]; + regbuf += 2; + } +} + +/* Set the event flag */ +void si4700_rds_set_event(void) +{ + rds_event = 1; +} + +#else /* Read raw RDS info for processing */ bool si4700_rds_read_raw(uint16_t data[4]) { @@ -582,6 +610,7 @@ void si4700_rds_set_event(void) rds_event = 1; mutex_unlock(&fmr_mutex); } +#endif /* SI4700_RDS_ASYNC */ char * si4700_get_rds_info(int setting) { |