Arduino Radio Library  0.9
A set of Arduino libraries to control diverse FM radio receiver chips in Arduino projects.
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
SI4705 Class Reference

Library to control the SI4705 radio chip. More...

#include <SI4705.h>

Inheritance diagram for SI4705:
RADIO

Public Member Functions

 SI4705 ()
 Initialize the extra variables in SI4705. More...
 
bool init ()
 Initialize the library and the chip. More...
 
void term ()
 Terminate all radio functions in the chip. More...
 
void setVolume (uint8_t newVolume)
 Control the volume output of the radio chip in the range 0..15. More...
 
void setVolumeX (uint8_t newVolume)
 Control the volume output of the radio chip in the range 0..63. More...
 
uint8_t getVolumeX ()
 Retrieve the current output volume in the range 0..63. More...
 
void setMute (bool switchOn)
 Control the mute mode of the radio chip. More...
 
void setSoftMute (bool switchOn)
 Control the softmute mode (mute on low signals) of the radio chip. More...
 
void setBassBoost (bool switchOn)
 regardless of the given parameter, the Bass Boost will never switch on. More...
 
void setMono (bool switchOn)
 Control the mono/stereo mode of the radio chip. More...
 
void setBand (RADIO_BAND newBand)
 Control the band of the radio chip. More...
 
void setFrequency (RADIO_FREQ newF)
 Control the frequency. More...
 
RADIO_FREQ getFrequency (void)
 
void seekUp (bool toNextSender=true)
 Start seek mode upwards. More...
 
void seekDown (bool toNextSender=true)
 Start seek mode downwards. More...
 
void checkRDS ()
 Retrieve the next RDS data if available. More...
 
void getRadioInfo (RADIO_INFO *info)
 Return a filled RADIO_INFO with the status of the radio features of the chip. More...
 
void getAudioInfo (AUDIO_INFO *info)
 Return a filled AUIO_INFO with the actual audio settings. More...
 
void debugScan ()
 
void debugStatus ()
 Send the current values of all registers to the Serial port. More...
 
virtual uint8_t getVolume ()
 Retrieve the current output volume in the range 0..15. More...
 
virtual bool getMute ()
 Retrieve the current mute mode setting. More...
 
virtual bool getSoftMute ()
 Retrieve the current soft mute mode setting. More...
 
virtual bool getBassBoost ()
 Retrieve the current bass boost mode setting. More...
 
virtual RADIO_FREQ getMinFrequency ()
 Get the minimum frequency of the current selected band. More...
 
virtual RADIO_FREQ getMaxFrequency ()
 Get the maximum frequency of the current selected band. More...
 
virtual RADIO_FREQ getFrequencyStep ()
 Get resolution of the current selected band. More...
 
virtual RADIO_BAND getBand ()
 Retrieve the current band setting. More...
 
virtual void setBandFrequency (RADIO_BAND newBand, RADIO_FREQ newFreq)
 Set Band and Frequency in one call. More...
 
virtual bool getMono ()
 Retrieve the current mono mode setting. More...
 
virtual void clearRDS ()
 Clear RDS data in the attached RDS Receiver by sending 0,0,0,0. More...
 
virtual void attachReceiveRDS (receiveRDSFunction newFunction)
 Register a RDS processor function. More...
 
virtual void formatFrequency (char *s, uint8_t length)
 Format the current frequency for display and printing. More...
 
virtual void debugEnable (bool enable=true)
 Enable sending debug information to the Serial port. More...
 
virtual void debugRadioInfo ()
 Print out all radio information. More...
 
virtual void debugAudioInfo ()
 Print out all audio information. More...
 

Public Attributes

const uint8_t MAXVOLUME = 15
 max volume level for radio implementations. More...
 
const uint8_t MAXVOLUMEX = 63
 max volume level for the SI4705 specific implementation. More...
 
uint8_t status
 
uint8_t resp1
 
uint8_t resp2
 
uint8_t rdsFifoUsed
 
uint8_t blockAH
 
uint8_t blockAL
 
uint8_t blockBH
 
uint8_t blockBL
 
uint8_t blockCH
 
uint8_t blockCL
 
uint8_t blockDH
 
uint8_t blockDL
 
uint8_t blockErrors
 
uint8_t buffer [1+12]
 

Protected Member Functions

void _printHex4 (uint16_t val)
 Prints a register as 4 character hexadecimal code with leading zeros. More...
 

Protected Attributes

bool _debugEnabled
 Set by debugEnable() and controls debugging functionality. More...
 
uint8_t _volume
 Last set volume level. More...
 
bool _bassBoost
 Last set bass Boost effect. More...
 
bool _mono
 Last set mono effect. More...
 
bool _mute
 Last set mute effect. More...
 
bool _softMute
 Last set softMute effect. More...
 
RADIO_BAND _band
 Last set band. More...
 
RADIO_FREQ _freq
 Last set frequency. More...
 
RADIO_FREQ _freqLow
 Lowest frequency of the current selected band. More...
 
RADIO_FREQ _freqHigh
 Highest frequency of the current selected band. More...
 
RADIO_FREQ _freqSteps
 Resulution of the tuner. More...
 
receiveRDSFunction _sendRDS
 Registered RDS Function that is called on new available data. More...
 

Private Member Functions

void _sendCommand (int cnt, int cmd,...)
 send a command More...
 
void _setProperty (uint16_t prop, uint16_t value)
 set a property More...
 
uint8_t _readStatus ()
 read the interrupt status. More...
 
void _readStatusData (uint8_t cmd, uint8_t param, uint8_t *values, uint8_t len)
 read status information into a buffer More...
 
void _seek (bool seekUp=true)
 
void _waitEnd ()
 wait until the current seek and tune operation is over. More...
 

Private Attributes

uint8_t _realVolume
 The real volume set to the chip. More...
 
uint8_t _status
 the status after sending a command More...
 
uint8_t tuneStatus [8]
 
uint8_t rsqStatus [1+7]
 
uint8_t rdsStatusx [1+12]
 
uint8_t agcStatus [1+2]
 
union {
   struct {
      uint8_t   status
 
      uint8_t   resp1
 
      uint8_t   resp2
 
      uint8_t   rdsFifoUsed
 
      uint8_t   blockAH
 
      uint8_t   blockAL
 
      uint8_t   blockBH
 
      uint8_t   blockBL
 
      uint8_t   blockCH
 
      uint8_t   blockCL
 
      uint8_t   blockDH
 
      uint8_t   blockDL
 
      uint8_t   blockErrors
 
   } 
 
   uint8_t   buffer [1+12]
 
rdsStatus
 structure used to read RDS information from the SI4705 radio chip. More...
 

Detailed Description

Library to control the SI4705 radio chip.

Constructor & Destructor Documentation

SI4705::SI4705 ( )

Initialize the extra variables in SI4705.

Member Function Documentation

void RADIO::_printHex4 ( uint16_t  val)
protectedinherited

Prints a register as 4 character hexadecimal code with leading zeros.

uint8_t SI4705::_readStatus ( )
private

read the interrupt status.

Load the status information from to the chip.

void SI4705::_readStatusData ( uint8_t  cmd,
uint8_t  param,
uint8_t *  values,
uint8_t  len 
)
private

read status information into a buffer

Load status information from to the chip.

void SI4705::_seek ( bool  seekUp = true)
private
void SI4705::_sendCommand ( int  cnt,
int  cmd,
  ... 
)
private

send a command

Send an array of bytes to the radio chip.

void SI4705::_setProperty ( uint16_t  prop,
uint16_t  value 
)
private

set a property

Set a property in the radio chip.

void SI4705::_waitEnd ( )
private

wait until the current seek and tune operation is over.

void RADIO::attachReceiveRDS ( receiveRDSFunction  newFunction)
virtualinherited

Register a RDS processor function.

void SI4705::checkRDS ( )
virtual

Retrieve the next RDS data if available.

Reimplemented from RADIO.

void RADIO::clearRDS ( )
virtualinherited

Clear RDS data in the attached RDS Receiver by sending 0,0,0,0.

Send a 0.0.0.0 to the RDS receiver if there is any attached. This is to point out that there is a new situation and all existing data should be invalid from now on.

void RADIO::debugAudioInfo ( )
virtualinherited

Print out all audio information.

void RADIO::debugEnable ( bool  enable = true)
virtualinherited

Enable sending debug information to the Serial port.

void RADIO::debugRadioInfo ( )
virtualinherited

Print out all radio information.

void SI4705::debugScan ( )
void SI4705::debugStatus ( )
virtual

Send the current values of all registers to the Serial port.

Reimplemented from RADIO.

void RADIO::formatFrequency ( char *  s,
uint8_t  length 
)
virtualinherited

Format the current frequency for display and printing.

void SI4705::getAudioInfo ( AUDIO_INFO info)
virtual

Return a filled AUIO_INFO with the actual audio settings.

Reimplemented from RADIO.

RADIO_BAND RADIO::getBand ( )
virtualinherited

Retrieve the current band setting.

bool RADIO::getBassBoost ( )
virtualinherited

Retrieve the current bass boost mode setting.

Retrieve the current bass boost mode setting. The base implementation returns only the value in the internal variable.

RADIO_FREQ SI4705::getFrequency ( void  )
virtual

Retrieve the real frequency from the chip after manual or automatic tuning.

Returns
RADIO_FREQ the current frequency.

Reimplemented from RADIO.

RADIO_FREQ RADIO::getFrequencyStep ( )
virtualinherited

Get resolution of the current selected band.

RADIO_FREQ RADIO::getMaxFrequency ( )
virtualinherited

Get the maximum frequency of the current selected band.

RADIO_FREQ RADIO::getMinFrequency ( )
virtualinherited

Get the minimum frequency of the current selected band.

bool RADIO::getMono ( )
virtualinherited

Retrieve the current mono mode setting.

The base implementation returns only the value in the internal variable.

bool RADIO::getMute ( )
virtualinherited

Retrieve the current mute mode setting.

The base implementation returns only the value in the internal variable.

void SI4705::getRadioInfo ( RADIO_INFO info)
virtual

Return a filled RADIO_INFO with the status of the radio features of the chip.

Reimplemented from RADIO.

bool RADIO::getSoftMute ( )
virtualinherited

Retrieve the current soft mute mode setting.

The base implementation returns only the value in the internal variable.

uint8_t RADIO::getVolume ( )
virtualinherited

Retrieve the current output volume in the range 0..15.

uint8_t SI4705::getVolumeX ( )

Retrieve the current output volume in the range 0..63.

Retrieve the current output volume in the range 0..63.

Returns
uint8_t actual volume.
bool SI4705::init ( )
virtual

Initialize the library and the chip.

Initialize the library and the chip. Set all internal variables to the standard values.

Returns
bool The return value is true when a SI4705 chip was found.

Reimplemented from RADIO.

void SI4705::seekDown ( bool  toNextSender = true)
virtual

Start seek mode downwards.

Reimplemented from RADIO.

void SI4705::seekUp ( bool  toNextSender = true)
virtual

Start seek mode upwards.

Reimplemented from RADIO.

void SI4705::setBand ( RADIO_BAND  newBand)
virtual

Control the band of the radio chip.

Start using the new band for receiving.

Parameters
newBandThe new band to be received.
Returns
void

Reimplemented from RADIO.

void RADIO::setBandFrequency ( RADIO_BAND  newBand,
RADIO_FREQ  newFreq 
)
virtualinherited

Set Band and Frequency in one call.

void SI4705::setBassBoost ( bool  switchOn)
virtual

regardless of the given parameter, the Bass Boost will never switch on.

BassBoost is not supported by the SI4705 chip.

Parameters
switchOnthis functions ignores the switchOn parameter and always sets bassBoost to false.
Returns
void

Reimplemented from RADIO.

void SI4705::setFrequency ( RADIO_FREQ  newF)
virtual

Control the frequency.

Start using the new frequency for receiving.
The new frequency is stored for later retrieval by the base class.
Because the chip may change the frequency automatically (when seeking) the stored value might not be the current frequency.

Parameters
newFThe new frequency to be received.
Returns
void

Reimplemented from RADIO.

void SI4705::setMono ( bool  switchOn)
virtual

Control the mono/stereo mode of the radio chip.

Control the mono mode of the radio chip In mono mode the stereo decoding will be switched off completely and the noise is typically reduced.

Parameters
switchOnThe new state of the mono mode. True to switch on, false to switch off.
Returns
void

Reimplemented from RADIO.

void SI4705::setMute ( bool  switchOn)
virtual

Control the mute mode of the radio chip.

Control the mute mode of the radio chip In mute mode no output will be produced by the radio chip.

Parameters
switchOnThe new state of the mute mode. True to switch on, false to switch off.
Returns
void

Reimplemented from RADIO.

void SI4705::setSoftMute ( bool  switchOn)
virtual

Control the softmute mode (mute on low signals) of the radio chip.

Control the softmute mode of the radio chip If switched on the radio output is muted when no sender was found.

Parameters
switchOnThe new state of the softmute mode. True to switch on, false to switch off.
Returns
void

Reimplemented from RADIO.

void SI4705::setVolume ( uint8_t  newVolume)
virtual

Control the volume output of the radio chip in the range 0..15.

This function maps the newVolume value in the range 0..15 to the range 0..63 that is available in this chip.

Parameters
newVolumeThe new volume level of audio output.

Reimplemented from RADIO.

void SI4705::setVolumeX ( uint8_t  newVolume)

Control the volume output of the radio chip in the range 0..63.

This function sets the volume in the range 0..63.

Parameters
newVolumeThe new volume level of audio output.
void SI4705::term ( )
virtual

Terminate all radio functions in the chip.

Switch all functions of the chip off by powering down.

Returns
void

Reimplemented from RADIO.

Member Data Documentation

RADIO_BAND RADIO::_band
protectedinherited

Last set band.

bool RADIO::_bassBoost
protectedinherited

Last set bass Boost effect.

bool RADIO::_debugEnabled
protectedinherited

Set by debugEnable() and controls debugging functionality.

RADIO_FREQ RADIO::_freq
protectedinherited

Last set frequency.

RADIO_FREQ RADIO::_freqHigh
protectedinherited

Highest frequency of the current selected band.

RADIO_FREQ RADIO::_freqLow
protectedinherited

Lowest frequency of the current selected band.

RADIO_FREQ RADIO::_freqSteps
protectedinherited

Resulution of the tuner.

bool RADIO::_mono
protectedinherited

Last set mono effect.

bool RADIO::_mute
protectedinherited

Last set mute effect.

uint8_t SI4705::_realVolume
private

The real volume set to the chip.

receiveRDSFunction RADIO::_sendRDS
protectedinherited

Registered RDS Function that is called on new available data.

bool RADIO::_softMute
protectedinherited

Last set softMute effect.

uint8_t SI4705::_status
private

the status after sending a command

uint8_t RADIO::_volume
protectedinherited

Last set volume level.

uint8_t SI4705::agcStatus[1+2]
private
uint8_t SI4705::blockAH
uint8_t SI4705::blockAL
uint8_t SI4705::blockBH
uint8_t SI4705::blockBL
uint8_t SI4705::blockCH
uint8_t SI4705::blockCL
uint8_t SI4705::blockDH
uint8_t SI4705::blockDL
uint8_t SI4705::blockErrors
uint8_t SI4705::buffer[1+12]
const uint8_t SI4705::MAXVOLUME = 15

max volume level for radio implementations.

const uint8_t SI4705::MAXVOLUMEX = 63

max volume level for the SI4705 specific implementation.

uint8_t SI4705::rdsFifoUsed
union { ... } SI4705::rdsStatus

structure used to read RDS information from the SI4705 radio chip.

uint8_t SI4705::rdsStatusx[1+12]
private
uint8_t SI4705::resp1
uint8_t SI4705::resp2
uint8_t SI4705::rsqStatus[1+7]
private
uint8_t SI4705::status
uint8_t SI4705::tuneStatus[8]
private

The documentation for this class was generated from the following files: