diff --git a/src/SparkFunSi4703.cpp b/src/SparkFunSi4703.cpp index 48dd66f..34bd595 100644 --- a/src/SparkFunSi4703.cpp +++ b/src/SparkFunSi4703.cpp @@ -11,22 +11,43 @@ Si4703_Breakout::Si4703_Breakout(int resetPin, int sdioPin, int sclkPin) void Si4703_Breakout::powerOn() { + if(power == true) return;//radio is allready turned on si4703_init(); + power = true; } +void Si4703_Breakout::powerOff() +{ + if(power == false) return; //were not even turned on + readRegisters(); //Read the current register set + si4703_registers[POWERCFG] = 0x4041; //Disable the IC + updateRegisters(); //Update + digitalWrite(_resetPin, LOW); + power = false; +} + +byte Si4703_Breakout::getPowerStatus() +{ + return ((power == false) ? 0 : 1); +} + + + + + void Si4703_Breakout::setChannel(int channel) { //Freq(MHz) = 0.200(in USA) * Channel + 87.5MHz //97.3 = 0.2 * Chan + 87.5 //9.8 / 0.2 = 49 - int newChannel = channel * 10; //973 * 10 = 9730 - newChannel -= 8750; //9730 - 8750 = 980 - newChannel /= 10; //980 / 10 = 98 +// int newChannel = channel * 10; //973 * 10 = 9730 +// newChannel -= 8750; //9730 - 8750 = 980 +// newChannel /= 10; //980 / 10 = 98 //These steps come from AN230 page 20 rev 0.5 readRegisters(); si4703_registers[CHANNEL] &= 0xFE00; //Clear out the channel bits - si4703_registers[CHANNEL] |= newChannel; //Mask in the new channel + si4703_registers[CHANNEL] |= channel; //Mask in the new channel si4703_registers[CHANNEL] |= (1< 15) volume = 15; + //si4703_registers[SYSCONFIG3] |= (1<