/*
//     reads RFM 69x internal chip temp and prints
//     reads, sets and prints radio center freq
//     09/03/2013 john, k2ox
 */


#include <RFM69NEW.h>            //<<<<<<je
#include <RFM69registers.h>
#include <SPI.h>

#define NODEID      1
#define NETWORKID   100
#define FREQUENCY   RF69_915MHZ //RF69_433MHZ, RF69_915MHZ)

#define LED         9
#define SERIAL_BAUD 115200
#define FSTEP      61.03515625

int UPDATEPERIOD = 1000;
RFM69NEW radio;                //<<<<<<je
unsigned long timeNow;
bool timeEnabled = true;

void setup() 
{
  radio.initialize(FREQUENCY,NODEID,NETWORKID);
  Serial.begin(SERIAL_BAUD);
//  radio.newFunction(99); //to test inherited class, works 9/4/13
  Serial.print("\nRadio Band is ");
  Serial.print(FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915);
  Serial.println('\n');
}

long lastPeriod = -1;
void loop() {
  if (Serial.available() > 0)
  {
    char input = Serial.read();
    if (input >= 48 && input <= 57) //[0,9]
    {
      UPDATEPERIOD = 100 * (input-48);
      if (UPDATEPERIOD == 0) UPDATEPERIOD = 1000;
      Serial.print("\nChanging delay to ");
      Serial.print(UPDATEPERIOD);
      Serial.println("ms\n");
    }
    if (input == 'T') //print time
    {
      timeNow = millis();
      timeEnabled = true;
    }
    if (input == 't') //time off
      timeEnabled = false;
    if (input == 'd') //d=dump all register values
      radio.readAllRegs();
  }

  int currPeriod = millis()/UPDATEPERIOD;
  if (currPeriod != lastPeriod)
  {
    lastPeriod=currPeriod;
    byte temperature =  radio.readTemp(-1); // -1 = user cal factor, adjust for correct ambient
    byte fTemp = 1.8 * temperature + 32; // 9/5=1.8
    Serial.print( "Radio Temp is ");
    Serial.print(temperature);
    Serial.print("C, ");
    Serial.print(fTemp);
    Serial.println('F');

    unsigned long frf = radio.getFreq();
    unsigned long fc = frf * FSTEP;
    Serial.print("Frf Registers = 0x");
    Serial.println(frf,HEX);
    Serial.print("Radio Freq is ");
    Serial.println(fc);
    radio.setFreq(915075000);  // -32Hz <= freqRes <= +31

    if (timeEnabled)
    {
      Serial.print("t = ");
      Serial.print((millis() - timeNow)/1000);
      Serial.println('s');
      Serial.println();
    }
    radio.blink();
  }
}




