#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

//create an RF24 object
RF24 radio(7, 8);  // CE, CSN

//address through which two modules communicate.
const byte address[6] = "ABCDE";

struct packetdata
{
  byte pot1;
  byte pot2;
  byte pot3;
  byte swtch1;
};
packetdata data;

void setup()
{
  radio.begin();
  Serial.begin(115200);
  //set the address
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MAX);
  radio.setDataRate(RF24_250KBPS);
  radio.setChannel(124);
  //Set module as transmitter
  radio.stopListening();
  
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  pinMode(A3,INPUT);
  pinMode(A2,INPUT_PULLUP);     
}

int mapAndAdjustJoystickDeadBandValues(int value, bool reverse)
{
  if (value >= 580)
  {
    value = map(value, 580, 1024, 127, 255);
  }
  else if (value <= 400)
  {
    value = map(value, 400, 0, 127, 0);
  }
  else
  {
    value = 127;
  }

  if (reverse)
  {
    value = 254 - value;
  }
  return value;
}

void loop()
{
  data.pot1         = mapAndAdjustJoystickDeadBandValues(analogRead(A0), false);
  data.pot2         = mapAndAdjustJoystickDeadBandValues(analogRead(A1), false);
  Serial.print("The value of pot2 :");
  Serial.println(data.pot2);
  data.pot3           = map(analogRead(A3), 0, 1023, 0, 254);
  data.swtch1         =!digitalRead(A2);
        
  radio.write(&data, sizeof(packetdata));

}
