RDA5807M FM Radio library with RDS.
Dependents: RDA5807M-FM-Radio EFM32 RDA5807M RDS Radio
Example program here:
https://developer.mbed.org/users/star297/code/RDA5807M-FM-Radio/
Diff: RDA5807M.h
- Revision:
- 1:2c8a64e71afd
- Parent:
- 0:527aa96336ac
- Child:
- 2:cf256181972f
--- a/RDA5807M.h Tue Mar 31 22:26:32 2015 +0000 +++ b/RDA5807M.h Sat Apr 11 22:53:22 2015 +0000 @@ -5,7 +5,7 @@ { public: - RDA5807M(PinName sda, PinName scl, int addr); + RDA5807M(PinName sda, PinName scl); ~RDA5807M(); @@ -25,24 +25,32 @@ void Softmute(void); void SoftBlend(void); void BassBoost(void); -void Volume(int volume); +void AFC(void); +void Volume(int vol); void SeekUp(void); void SeekDown(void); void Frequency(float Freq); void Channel(void); +void getRDS(void); + + +// Initialise internal variables before starting or after a change to another channel. +void RDSinit(); + +// Pass all available RDS data through this function. +void processData(); //-------------------------------------------------------------- // Definitions //-------------------------------------------------------------- /* I2C Address */ -#define RDASequential 0x20 //Current Working Communication -#define RDARandom 0x22 //To Do Soon -#define TEA5767Mode 0x60 //Not implemented +#define RDASequential 0x20 // Write address +#define RDARandom 0x22 // Read address /* Initialization Options */ #define StartingFreq 87.000 #define EndingFreq 108.00 -#define DefaultFreq 87.000 -#define StartingVolume 0x4 +#define DefaultFreq 104.50 +#define InitialVolume 4 /* RDA5807M Function Code */ /* Register 0x02H (16Bits) */ #define RDA_DHIZ 0x8000 @@ -77,15 +85,35 @@ // Global Variables //-------------------------------------------------------------- // -int rdsready,tuneok,nochannel,rdssynchro,stereo,signal,fmready,fmstation,rdsblockerror; -float freq; -unsigned int RDA5807M_WriteReg[8],RDA5807M_ReadReg[7],RDA5807M_RDS[32]; +int tuneok,nochannel,power,volume,softblend,bass,mute,softmute,mono,afc,stereo,signal,fmready,fmstation; +int rdsblockerror,rdssynchro,rdsready,rds,block1,block2,block3,block4; + +char StationName[10]; // Station Name. 8 characters +char RDSText[66]; // RDS test message 64 characters +int CTtime; // CT time transmitted on the minute +float freq; // Tuned frequency //-------------------------------------------------------------- private: I2C i2c; -int addr; + + unsigned int RDA5807M_WriteReg[8],RDA5807M_ReadReg[7],RDA5807M_RDS[32]; -}; +// ----- actual RDS values + int textAB, lasttextAB, lastTextIDX; + int rdsGroupType, rdsTP, rdsPTY; +// Program Service Name + char PSName1[10]; // including trailing '\00' character. + char PSName2[10]; // including trailing '\00' character. + + typedef void(*receiveServicenNameFunction)(char *name); + typedef void(*receiveTextFunction)(char *name); + typedef void(*receiveTimeFunction)(uint8_t hour, uint8_t minute); + + receiveServicenNameFunction sendServiceName; ///< Registered ServiceName function. + receiveTimeFunction sendTime; ///< Registered Time function. + receiveTextFunction sendText; + +}; \ No newline at end of file