dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Rockbox mail archive

Subject: Re: RDS support in Rockbox

Re: RDS support in Rockbox

From: Michael Sevakis <>
Date: Fri, 4 Nov 2011 19:53:23 -0400

----- Original Message -----
From: "Bertrik Sikken" <>
To: "Rockbox development" <>
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.

Received on 2011-11-05

Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy