//Processing Code

import processing.serial.*;
import controlP5.*;
import procontroll.*;
import net.java.games.input.*;
ControlP5 cp5;
int temp = 0;
int tempt= 0;
int pan = 180;
int tilt = 180;
Serial port;

ControllIO controll;
ControllDevice XBOXCONTROLLER;
ControllStick leftStick;
ControllStick rightStick;
ControllButton L3;
ControllButton R3;

void setup()
{
  
  size(640, 640);
  println(Serial.list());
  port = new Serial(this, Serial.list()[0],9600);
  cp5 = new ControlP5(this);

  cp5.addSlider("pan")
  .setPosition(60,500)
  .setSize(100,10)
  .setRange(0,180)
  .setValue(90)
  ;  
  //,0,179,90,60,500,10,100);
  
  cp5.addSlider("tilt")
  .setPosition(110,520)
  .setSize(10,100)
  .setRange(0,180)
  .setValue(90)
  ;  
  //,0,179,90,60,500,100,10);
  
  cp5.addBang("Fire",180,540,20,20);
  
  controll = ControllIO.getInstance(this); 
  XBOXCONTROLLER = controll.getDevice("Controller");  
  XBOXCONTROLLER.printSliders();
  XBOXCONTROLLER.printButtons();
  leftStick = new ControllStick(XBOXCONTROLLER.getSlider(1), XBOXCONTROLLER.getSlider(0));
  rightStick = new ControllStick(XBOXCONTROLLER.getSlider(1), XBOXCONTROLLER.getSlider(0)); 
}

void draw()
{
  //noStroke();
  background(0);
  leftStick = XBOXCONTROLLER.getStick(0);
  rightStick = XBOXCONTROLLER.getStick(2);
  temp=(int) map(leftStick.getX(), -1, 1, 0, 180);
//  temp=temp+77;  // setting new default position of gimbal.
  tempt=(int) map(leftStick.getY(), -1, 1, 0, 180);
//  tempt=tempt+77;
  println(temp);
  port.write("a"+temp);
  port.write("b"+tempt);
//  println("a"+temp);
//  println("b"+tilt);
  delay(10);
}

void controlEvent(ControlEvent theEvent) {
  
  if(theEvent.isController()){
    if(theEvent.controller().name()=="Fire") {
      port.write("c");
    }
  }
}