|
Rockbox mail archiveSubject: Re: RDS support in RockboxRe: RDS support in Rockbox
From: Michael Sevakis <jethead71_at_comcast.net>
Date: Fri, 4 Nov 2011 19:53:23 -0400 ----- Original Message ----- From: "Bertrik Sikken" <bertrik_at_sikken.nl> To: "Rockbox development" <rockbox-dev_at_cool.haxx.se> Sent: Friday, November 04, 2011 4:52 PM Subject: RDS support in Rockbox > The Si4703 can be configured to capture one RDS packet, then > raise an pin voltage for 5 ms. My plan is to attach an interrupt > to this event that wakes up a high-prio thread to read the RDS > packet. It then feeds the raw RDS packet into a generic RDS processor > that collects packets until a full RDS message has been assembled. > I doubt all that is necessary especially with a tuner GPIO interrupt available in at least some cases and possibly the introduction of an async I2C driver (not too hard really). I'd suggest not imposing a particular interface on all hardware but have the hardware implement those details as a middle layer. > I'm thinking of the following interface: > - int rds_process(uint16_t data[4]) What's that now? RDS is always 4 16-bit words? > which returns a number indicating what kind of data has been > received. When something is received, the fm tuner driver can call > a function to get a copy of the RDS data, something like: > - bool rds_get_stationname(char *buf, int bufsize) > - bool rds_get_radiotext(char *buf, int bufsize) Could probably just fill-out a structure provided by the caller with a flag member indicating which are valid (few single-use calls). > When the FM frequency is changed, the RDS data is invalidated with > - void rds_reset(void) Why not just reread it? The UI can clear its fields. The tuner can indicate a frequency change internally and clear its own data. > What do you think? Needs a bit more thought. Mike Received on 2011-11-05 Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy |