/*
  2x Matrix Output
 
 - based on the Amarino Multicolor Lamp tutorial
 - receives custom events from Amarino changing color accordingly
 
 author: Brad Crane - 04.02.10
 */

#include <MeetAndroid.h>

// declare MeetAndroid so that you can call functions with it
MeetAndroid meetAndroid;

// LED_1 control signals
int redLed_1 = 14;   
int greenLed_1 = 12;
int blueLed_1 = 13;

// LED_2 control signals
int redLed_2 = 8;   
int greenLed_2 = 6;
int blueLed_2 = 7;

int i = 0;

void setup()  
{
  // set baud rate of bluetooth module
  Serial.begin(57600); 

  // register callback functions, which will be called when an associated event occurs.
  // 'F' is the event flag for amarino compass event
  meetAndroid.registerFunction(orientation, 'F');
  //meetAndroid.registerFunction(location, 'H');

  // set all color leds as output pins
  pinMode(redLed_1, OUTPUT);
  pinMode(greenLed_1, OUTPUT);
  pinMode(blueLed_1, OUTPUT);
  pinMode(redLed_2, OUTPUT);
  pinMode(greenLed_2, OUTPUT);
  pinMode(blueLed_2, OUTPUT);
}



void loop()
{
  if (i > 6)
  {
    analogWrite(redLed_2, 255);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
  }
  
  else
  {
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 255);
    analogWrite(blueLed_2, 255);
  }  
    meetAndroid.receive(); // you need to keep this in your loop() to receive events
  
}



void orientation(byte flag, byte numOfValues)
{

  int orient_val;

  // get data after the flag 'F' event
  orient_val = meetAndroid.getInt();

  // check north to northeast and set red
  if (orient_val<90){
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 255);
    analogWrite(blueLed_1, 255);
    i=0;
  }

  // check east to south east and set blue
  else if (orient_val > 90 && orient_val < 180){  
    analogWrite(redLed_1, 255);
    analogWrite(greenLed_1, 255);
    analogWrite(blueLed_1, 0);
    i=0;
  }

  // check south to southwest and set yellow
  else if (orient_val > 180 && orient_val < 270){  
    analogWrite(redLed_1, 0);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    i=0;
  }
  
  // check west to northwest and set green
  else
  {
    analogWrite(redLed_1, 255);
    analogWrite(greenLed_1, 0);
    analogWrite(blueLed_1, 255);
    i++;
  }
}

//commented out until we know more about what the programming people are doing
/*void location(byte flag, byte numOfValues)
{
  int location_val[2] = {meetAndroid.getInt()};


  //inverse RGB values because LEDs share common positive
  //
  if (location_val[0] < 1){
    analogWrite(redLed_2, 0);
    analogWrite(greenLed_2, 255);
    analogWrite(blueLed_2, 255);
  }

  else if (location_val[0] > 1 && location_val[0] < 3){  
    analogWrite(redLed_2, 255);
    analogWrite(greenLed_2, 255);
    analogWrite(blueLed_2, 0);
  }

  else
  {
    analogWrite(redLed_2, 255);
    analogWrite(greenLed_2, 0);
    analogWrite(blueLed_2, 255);
  }
}*/