diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2017-01-30 09:52:05 -0500 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2017-02-11 22:19:32 -0500 |
commit | fc9695eb47732e1c189e2f033dbd55e5c346e8c4 (patch) | |
tree | 550830e9af67f47e3eb87587770b25d22110f57a /firmware/export/tuner.h | |
parent | 6436c6e749ab04fbd5d97804a6a1c3b3122b326d (diff) | |
download | rockbox-fc9695eb47732e1c189e2f033dbd55e5c346e8c4.tar.gz rockbox-fc9695eb47732e1c189e2f033dbd55e5c346e8c4.zip |
Improve radio RDS driver and framework
* Remove unused bits like the radio event and simplify basic
radio interface. It can be more self-contained with rds.h only
required by radio and tuner code.
* Add post-processing to text a-la Silicon Labs AN243. The chip's
error correction can only do so much; additional checks are highly
recommended. Simply testing for two identical messages in a row
is extremely effective and I've never seen corrupted text since
doing that, even with mediocre reception.
Groups segments must arrive in order, not randomly; logic change
only accepts them in order, starting at 0.
Time readout was made a bit better but really we'd need to use
verbose mode and ensure that no errors were seen during receiving
of time and more checks would be need to have a stable PI. The
text is the important bit anyway.
* Time out of stale text.
* Text is no longer updated until a complete group has been
received, as is specified in the standard. Perhaps go back to
scrolling text lines in the radio screen?
* Add proper character conversion to UTF-8. Only the default G0
table for the moment. The other two could be added in.
* Add variants "RDS_CFG_PROCESS" and "RDS_CFG_PUSH" to allow
the option for processed RDS data to be pushed to the driver and
still do proper post-processing (only text conversion for now for
the latter).
Change-Id: I4d83f8b2e89a209a5096d15ec266477318c66925
Diffstat (limited to 'firmware/export/tuner.h')
-rw-r--r-- | firmware/export/tuner.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/firmware/export/tuner.h b/firmware/export/tuner.h index 050bbd0f33..a166eacf33 100644 --- a/firmware/export/tuner.h +++ b/firmware/export/tuner.h | |||
@@ -25,6 +25,10 @@ | |||
25 | #include "config.h" | 25 | #include "config.h" |
26 | #include "hwcompat.h" | 26 | #include "hwcompat.h" |
27 | 27 | ||
28 | #ifdef HAVE_RDS_CAP | ||
29 | #include <sys/types.h> | ||
30 | #endif | ||
31 | |||
28 | /** Settings to the tuner layer **/ | 32 | /** Settings to the tuner layer **/ |
29 | enum | 33 | enum |
30 | { | 34 | { |
@@ -45,8 +49,6 @@ enum | |||
45 | RADIO_PRESENT = 0, | 49 | RADIO_PRESENT = 0, |
46 | RADIO_TUNED, | 50 | RADIO_TUNED, |
47 | RADIO_STEREO, | 51 | RADIO_STEREO, |
48 | /* RADIO_EVENT is an event that requests a screen update */ | ||
49 | RADIO_EVENT, | ||
50 | RADIO_RSSI, | 52 | RADIO_RSSI, |
51 | RADIO_RSSI_MIN, | 53 | RADIO_RSSI_MIN, |
52 | RADIO_RSSI_MAX, | 54 | RADIO_RSSI_MAX, |
@@ -57,15 +59,20 @@ enum | |||
57 | 59 | ||
58 | #ifdef HAVE_RDS_CAP | 60 | #ifdef HAVE_RDS_CAP |
59 | /** Readback from the tuner RDS layer **/ | 61 | /** Readback from the tuner RDS layer **/ |
60 | enum | 62 | /* returns needed size if buffer size is inadequate */ |
63 | size_t tuner_get_rds_info(int setting, void *dst, size_t dstsize); | ||
64 | |||
65 | enum RADIO_RDS_INFO | ||
61 | { | 66 | { |
62 | RADIO_RDS_NAME, | 67 | RADIO_RDS_NAME, /* dst: array of char, dstsize: buffer size */ |
63 | RADIO_RDS_TEXT, | 68 | RADIO_RDS_TEXT, /* dst: array of char, dstsize: buffer size */ |
69 | RADIO_RDS_PROGRAM_INFO, /* dst: uint16_t *, dstsize: >= sizeof(uint16_t) */ | ||
70 | RADIO_RDS_CURRENT_TIME, /* dst: time_t *, dstsize: >= sizeof(time_t) */ | ||
64 | 71 | ||
65 | /* Put new general-purpose readback values above this line */ | 72 | /* Put new general-purpose readback values above this line */ |
66 | __RADIO_GET_RDS_INFO_STANDARD_LAST | 73 | __RADIO_GET_RDS_INFO_STANDARD_LAST |
67 | }; | 74 | }; |
68 | #endif | 75 | #endif /* HAVE_RDS_CAP */ |
69 | 76 | ||
70 | /** Tuner regions **/ | 77 | /** Tuner regions **/ |
71 | 78 | ||