 |
PU2CLR SI4844 Arduino Library
1.0.9
Arduino Library for Si4844 Devices - By Ricardo Lima Caratti
|
Go to the documentation of this file.
19 #define SI4844_ADDRESS 0x11
24 #define ATDD_POWER_DOWN 0x11
25 #define ATDD_POWER_UP 0xE1
26 #define ATDD_AUDIO_MODE 0xE2
28 #define ATDD_XOSCEN 0x80
29 #define ATDD_XOWAIT 0x40
30 #define ATDD_GET_STATUS 0xE0
32 #define SET_PROPERTY 0x12
33 #define GET_PROPERTY 0x13
34 #define RX_VOLUME 0x4000
35 #define RX_HARD_MUTE 0x4001
36 #define RX_BASS_TREBLE 0x4002
37 #define RX_ACTUAL_VOLUME 0x4003
39 #define FM_SOFT_MUTE_MAX_ATTENUATION 0x1302
40 #define AM_SOFT_MUTE_MAX_ATTENUATION 0x3302
41 #define FM_DEEMPHASIS 0x1100
104 } si4844_status_response;
122 } si4844_firmware_info;
131 } si4844_firmware_response;
140 uint8_t AUDIOMODE : 2;
142 uint8_t ADJPT_ATTN : 1;
143 uint8_t ADJPT_STEO : 1;
144 uint8_t Reserved : 2;
158 uint8_t ADJPT_ATTN:1;
159 uint8_t ADJPT_STEO:1;
165 } si4844_audiomode_status_response;
186 volatile static bool data_from_device;
197 static void interrupt_hundler()
199 data_from_device =
true;
214 si4844_status_response status_response;
215 si4844_firmware_response firmware_response;
217 uint16_t interruptPin;
220 inline void setClockLow(
void) { Wire.setClock(10000); };
221 inline void setClockHigh(
void) { Wire.setClock(50000); };
222 inline void waitInterrupt(
void);
223 inline bool isClearToSend(
void);
224 inline void waitToSend(
void);
227 const char *bandmode_table[3] = {
"FM",
"AM",
"SW"};
228 const char *stereo_indicator_table[2] = {
"Off",
"On "};
231 uint8_t bassTreble = 4;
252 void setProperty(uint16_t propertyNumber, uint16_t parameter);
254 void sendCommand(uint8_t cmd,
int parameter_size,
const uint8_t *parameter);
257 void setup(uint16_t resetPin,
int interruptPin, byte defaultBand);
258 void debugDevice(uint16_t resetPin, uint16_t interruptPin, uint8_t defaultBand,
void (*showFunc)(
char *msg));
277 si4844_audiomode_status_response
278 setAudioMode(uint8_t audiomode, uint8_t fm_mono, uint8_t adjpt_attn, uint8_t adjpt_steo, uint8_t opcode);
306 inline char *
getBandMode(){
return (
char *) bandmode_table[status_response.refined.BANDMODE]; };
313 inline char *
getStereoIndicator(){
return (
char *) stereo_indicator_table[status_response.refined.STATION]; };
uint8_t HOSTRST
Definition: SI4844.h:86
uint8_t CTS
Definition: SI4844.h:87
uint16_t getFirmwareComponentMajorRevision()
Definition: SI4844.h:334
uint16_t getStatusStereo()
Definition: SI4844.h:318
char * getStereoIndicator()
Get the Stereo Indicator.
Definition: SI4844.h:313
uint16_t getFirmwareErr()
Definition: SI4844.h:329
uint16_t getFirmwarePartNumber()
Definition: SI4844.h:331
uint16_t getStatusBandMode()
Definition: SI4844.h:323
#define RX_ACTUAL_VOLUME
Definition: SI4844.h:37
void powerUp(void)
Power the device up.
Definition: SI4844.cpp:269
uint16_t getStatusInformationReady()
Definition: SI4844.h:320
#define GET_PROPERTY
Definition: SI4844.h:33
void volumeDown(void)
Decreases the volume level.
Definition: SI4844.cpp:387
void setup(uint16_t resetPin, int interruptPin, byte defaultBand)
Initiates the SI4844 instance and connect the device (SI4844) to Arduino.
Definition: SI4844.cpp:150
uint8_t FWMAJOR
Definition: SI4844.h:117
#define GET_REV
Definition: SI4844.h:27
uint8_t CMPMAJOR
Definition: SI4844.h:119
uint8_t RESERVED
Definition: SI4844.h:113
void setBassTreble(uint8_t bass_treble)
Set the sound volume level, bass and treble.
Definition: SI4844.cpp:442
#define SET_PROPERTY
Definition: SI4844.h:32
float getFrequency(void)
Get the current frequency of the radio in KHz.
Definition: SI4844.cpp:618
uint16_t value
Definition: SI4844.h:178
si4844_firmware_info refined
Definition: SI4844.h:129
#define ATDD_GET_STATUS
Definition: SI4844.h:30
uint16_t getFirmwareComponentMinorRevision()
Definition: SI4844.h:335
uint8_t BANDMODE
Definition: SI4844.h:89
uint8_t ERR
Definition: SI4844.h:114
si4844_get_status refined
Definition: SI4844.h:102
#define SI4844_ADDRESS
SI4844 ARDUINO LIBRARY
Definition: SI4844.h:19
uint8_t d4
Definition: SI4844.h:92
void setVolume(byte)
Sets the volume level.
Definition: SI4844.cpp:401
void setBand(byte)
Sets a new band to the device.
Definition: SI4844.cpp:284
void debugDevice(uint16_t resetPin, uint16_t interruptPin, uint8_t defaultBand, void(*showFunc)(char *msg))
Used to debug
Definition: SI4844.cpp:188
si4844_status_response * getStatus(void)
Get tune freq, band, and others information, status of the device.
Definition: SI4844.cpp:557
void setCustomBand(byte, uint16_t, uint16_t, byte)
This method allows you to customize the frequency range of a band.
Definition: SI4844.cpp:693
uint8_t HOSTPWRUP
Definition: SI4844.h:85
uint8_t PN
Definition: SI4844.h:116
char * getBandMode()
Get the Band Mode.
Definition: SI4844.h:306
bool hasStatusChanged(void)
Checks whether the SI4844 has its status changed.
Definition: SI4844.cpp:664
#define FM_SOFT_MUTE_MAX_ATTENUATION
Definition: SI4844.h:39
#define AM_SOFT_MUTE_MAX_ATTENUATION
Definition: SI4844.h:40
uint8_t INFORDY
Definition: SI4844.h:84
void setProperty(uint16_t propertyNumber, uint16_t parameter)
Sends (sets) property to the SI48XX.
Definition: SI4844.cpp:25
void setFmDeemphasis(uint8_t value)
Sets de-emphasis time constant.
Definition: SI4844.cpp:773
uint8_t raw
Definition: SI4844.h:164
void setAudioMute(bool on)
Mutes the audio output.
Definition: SI4844.cpp:541
uint8_t BANDIDX
Definition: SI4844.h:88
#define RX_VOLUME
Definition: SI4844.h:34
uint16_t getFirmwareChipRevision()
Definition: SI4844.h:336
void powerDown(void)
Power the device down.
Definition: SI4844.cpp:252
uint16_t getStatusBandIndex()
Definition: SI4844.h:324
uint8_t raw
Definition: SI4844.h:69
uint16_t getFirmwareReserved()
Definition: SI4844.h:328
uint16_t getStatusBCFG1()
Definition: SI4844.h:317
#define RX_BASS_TREBLE
Definition: SI4844.h:36
bool getDataStatusInterruptFromDevice()
Get the Data Status From Device.
Definition: SI4844.h:249
uint8_t BCFG0
Definition: SI4844.h:80
uint8_t FWMINOR
Definition: SI4844.h:118
uint16_t getFirmwareMinorRevision()
Definition: SI4844.h:333
uint8_t d3
Definition: SI4844.h:93
void bassTrebleUp()
More treble, less bass.
Definition: SI4844.cpp:461
uint8_t getVolume()
Gets the current audio volume level.
Definition: SI4844.h:298
void volumeUp(void)
Increases the volume level.
Definition: SI4844.cpp:376
void getCommandResponse(int response_size, uint8_t *response)
Returns with the command response.
Definition: SI4844.cpp:118
uint8_t CMPMINOR
Definition: SI4844.h:120
#define ATDD_POWER_UP
Definition: SI4844.h:25
uint8_t d2
Definition: SI4844.h:90
uint8_t raw[4]
Definition: SI4844.h:103
uint16_t getStatusBCFG0()
Definition: SI4844.h:316
void changeVolume(char)
Up or down the sound volume level.
Definition: SI4844.cpp:351
void bassTrebleDown()
Less treble, more bass.
Definition: SI4844.cpp:450
void audioMute(uint8_t value)
Mutes the audio output.
Definition: SI4844.cpp:530
SI4844 Class.
Definition: SI4844.h:209
void resetStatus(void)
set the interrupr status to false. It will turn true after next interrupr
Definition: SI4844.cpp:673
#define ATDD_POWER_DOWN
Definition: SI4844.h:24
uint16_t getStatusHostPowerUp()
Definition: SI4844.h:321
uint8_t raw[9]
Definition: SI4844.h:130
uint16_t getStatusCTS()
Definition: SI4844.h:325
uint8_t raw
Definition: SI4844.h:147
uint16_t getFirmwareMajorRevision()
Definition: SI4844.h:332
si4844_audiomode_status_response setAudioMode(uint8_t audiomode, uint8_t fm_mono, uint8_t adjpt_attn, uint8_t adjpt_steo, uint8_t opcode)
Set audio mode.
Definition: SI4844.cpp:493
uint16_t getProperty(uint16_t propertyNumber)
Gets a given property from the SI4844.
Definition: SI4844.cpp:54
uint8_t CTS
Definition: SI4844.h:115
uint8_t STEREO
Definition: SI4844.h:82
#define ATDD_AUDIO_MODE
Definition: SI4844.h:26
uint8_t d1
Definition: SI4844.h:91
void setStatusInterruptFromDevice(bool value)
Set the Data Status From Device.
Definition: SI4844.h:242
si4844_firmware_response * getFirmware(void)
Get part number, chip revision, firmware, patch, and component revision numbers.
Definition: SI4844.cpp:590
uint8_t CHIPREV
Definition: SI4844.h:121
uint16_t getStatusStationIndicator()
Definition: SI4844.h:319
#define FM_DEEMPHASIS
Definition: SI4844.h:41
uint8_t getVolumeProperty()
Gets the current volume value stored in SI4844 device.
Definition: SI4844.cpp:418
void sendCommand(uint8_t cmd, int parameter_size, const uint8_t *parameter)
Sends a given command to the SI4844 device.
Definition: SI4844.cpp:96
uint16_t getFirmwareCTS()
Definition: SI4844.h:330
uint8_t STATION
Definition: SI4844.h:83
#define RX_HARD_MUTE
Definition: SI4844.h:35
uint8_t BCFG1
Definition: SI4844.h:81
void setFmSoftMuteMaxAttenuation(uint8_t value)
FM Soft Mute Maximum Attenuation.
Definition: SI4844.cpp:761
uint16_t getStatusHostReset()
Definition: SI4844.h:322
void setAmSoftMuteMaxAttenuation(uint8_t value)
Sets AM Soft Mute Max Attenuation..
Definition: SI4844.cpp:750
void reset(void)
Resets the SI4844 device.
Definition: SI4844.cpp:231