diff options
author | Bertrik Sikken <bertrik@sikken.nl> | 2010-11-11 21:13:29 +0000 |
---|---|---|
committer | Bertrik Sikken <bertrik@sikken.nl> | 2010-11-11 21:13:29 +0000 |
commit | de870b3ee049262f984254305c7a062a1cdf3026 (patch) | |
tree | f9636eb3e4634ac223a0c5a6dadeb4e1a25b61db /firmware/drivers/tuner/rda5802.c | |
parent | b787c0dd05ef4ddd6727a86b06d2491be8600f07 (diff) | |
download | rockbox-de870b3ee049262f984254305c7a062a1cdf3026.tar.gz rockbox-de870b3ee049262f984254305c7a062a1cdf3026.zip |
Signal strength meter for FM radio - FS#8151 by Przemysław Hołubowski
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28559 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/tuner/rda5802.c')
-rw-r--r-- | firmware/drivers/tuner/rda5802.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/firmware/drivers/tuner/rda5802.c b/firmware/drivers/tuner/rda5802.c index 43dffe2355..82dc0bbcb9 100644 --- a/firmware/drivers/tuner/rda5802.c +++ b/firmware/drivers/tuner/rda5802.c | |||
@@ -34,6 +34,10 @@ | |||
34 | 34 | ||
35 | #define I2C_ADR 0x20 | 35 | #define I2C_ADR 0x20 |
36 | 36 | ||
37 | /* define RSSI range */ | ||
38 | #define RSSI_MIN 0 | ||
39 | #define RSSI_MAX 70 | ||
40 | |||
37 | /** Registers and bits **/ | 41 | /** Registers and bits **/ |
38 | #define POWERCFG 0x2 | 42 | #define POWERCFG 0x2 |
39 | #define CHANNEL 0x3 | 43 | #define CHANNEL 0x3 |
@@ -263,6 +267,12 @@ static bool rda5802_st(void) | |||
263 | return (rda5802_read_reg(READCHAN) & READCHAN_ST); | 267 | return (rda5802_read_reg(READCHAN) & READCHAN_ST); |
264 | } | 268 | } |
265 | 269 | ||
270 | static int rda5802_rssi(void) | ||
271 | { | ||
272 | uint16_t status = rda5802_read_reg(STATUSRSSI); | ||
273 | return STATUSRSSI_RSSIr(status); | ||
274 | } | ||
275 | |||
266 | /* tuner abstraction layer: set something to the tuner */ | 276 | /* tuner abstraction layer: set something to the tuner */ |
267 | int rda5802_set(int setting, int value) | 277 | int rda5802_set(int setting, int value) |
268 | { | 278 | { |
@@ -323,6 +333,18 @@ int rda5802_get(int setting) | |||
323 | case RADIO_STEREO: | 333 | case RADIO_STEREO: |
324 | val = rda5802_st(); | 334 | val = rda5802_st(); |
325 | break; | 335 | break; |
336 | |||
337 | case RADIO_RSSI: | ||
338 | val = rda5802_rssi(); | ||
339 | break; | ||
340 | |||
341 | case RADIO_RSSI_MIN: | ||
342 | val = RSSI_MIN; | ||
343 | break; | ||
344 | |||
345 | case RADIO_RSSI_MAX: | ||
346 | val = RSSI_MAX; | ||
347 | break; | ||
326 | } | 348 | } |
327 | 349 | ||
328 | return val; | 350 | return val; |