// rf95_client.pde
// -*- mode: C++ -*-

//int UpperThreshold = 518;
//int LowerThreshold = 490;
//int MaxBPM = 200;
//bool IgnoreReading = false;
//bool FirstPulseDetected = false;
//int FirstPulseTime = 0;
//int SecondPulseTime = 0;
//int PulseInterval = 0;

#include <SPI.h>
#include <RH_RF95.h>

RH_RF95 rf95(8, 3); // Adafruit Feather M0 with RFM95

byte sendLen;
char buffer[50];

void setup() 
{

  Serial.begin(9600);
  while (!Serial) ; // Wait for serial port to be available
  if (!rf95.init())
    Serial.println("init failed");
  else Serial.println("init OK - 915 MHz");

}

void loop()
{

  int readingT = analogRead(1);

  float voltage = readingT * 5.0;
  voltage /= 1024.0;

  float temperatureC = (voltage - 0.5) * 37.0;
  float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;

  /*int reading = analogRead(0);

  // Heart beat leading edge detected.
   if(reading > UpperThreshold && IgnoreReading == false){
     if(FirstPulseDetected == false){
       FirstPulseTime = millis();
       FirstPulseDetected = true;
     }
     else{
       SecondPulseTime = millis();
       PulseInterval = SecondPulseTime - FirstPulseTime;
       FirstPulseTime = SecondPulseTime;
     }
     IgnoreReading = true;
   }

   // Heart beat trailing edge detected.
   if(reading < LowerThreshold){
     IgnoreReading = false;
   }  

  int BPM = (1.0/PulseInterval) * 60.0 * 1000;

  Serial.print(FirstPulseTime);
  Serial.print("\t");
  Serial.print(SecondPulseTime);
  Serial.print("\t");
  Serial.print(reading);
  Serial.print("\t");
  Serial.print(PulseInterval);
  Serial.print("\t");
  Serial.print(BPM);
  Serial.println(" BPM");
  Serial.flush();
*/

  Serial.print(voltage); Serial.println(" V");
  Serial.print(temperatureC); Serial.println(" degrees C");
  Serial.print(temperatureF); Serial.println(" degrees F");

  //send temp
  sprintf(buffer, "%f", temperatureF);
  sendLen = strlen(buffer);
  rf95.send((uint8_t *) buffer, sendLen);
  
  //send bpm
  //sprintf(buffer, "%d", BPM);
  //sendLen = strlen(buffer);
  //rf95.send((uint8_t *) buffer, sendLen);

  delay(1000);
}


