import processing.serial.*;
import procontroll.*;
import java.io.*;


Serial port;
ControllIO controllIO;
ControllDevice xboxPad;
ControllStick leftStick;
ControllSlider trigger;


int xVal = 0;    //left thumb stick x val
int yVal = 0;    //left thumb stick y val
int zVal = 0;    //left and right trigger values
String txString; // string sent over serial

void setup()
{
size(640,640);
println(Serial.list());    //prints available com ports
port = new Serial(this, Serial.list()[2],9600);    //connect to 3rd comport in list at baud 9600 BT module is this rate by default 
controllIO = ControllIO.getInstance(this);    
xboxPad = controllIO.getDevice("Controller (Xbox 360 Wireless Receiver for Windows)");    //attaches device to "xboxPad"
xboxPad.printSliders();   

ControllSlider sliderY = xboxPad.getSlider(0);    // ataches slider to sliderY
ControllSlider sliderX = xboxPad.getSlider(1);
leftStick = new ControllStick(sliderY, sliderX);

ControllSlider sliderZ = xboxPad.getSlider(4);
trigger = sliderZ;
}

void draw()
{
  yVal = (int) map(leftStick.getX(), -1, 1, 255, 0);    // gets the value from left thumb stick and maps it from 255 to 0.
  xVal = (int) map(leftStick.getY(), -1, 1, 255, 0);  
  zVal = (int) map(trigger.getValue(), -1.5, 1.5, 100, 0);  //right trigger value is taken from pad then mapped from 100 to 0
  
  if (zVal >= 55 && xVal <=145 && xVal >= 110)  {    // sends different letters over serial to tell robot which way to go 
  txString = "a";                                    // depending on position of left thumbstick
  }
 else if (zVal <= 45 && xVal <=145 && xVal >= 110)  {
  txString = "b";
  }
  else  {
    txString = "e";
  }

  if(xVal <= 80)  {
  txString = "d";
  }
else if (xVal >= 200)  {
  txString = "c";
  }

  zVal = (int) map(zVal, 83, 16, 255, 0);

  println(txString+zVal);    // debug
  port.write(txString+zVal);    // send over serial
  println(xVal);    //debug
  delay(10);
  }