#include "WProgram.h"
#include "globals.h"
#include "xbee_api.h"
#include "temperature.h"

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

   SETUP

   :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
void setup()
{
   Serial.begin( BAUD_RATE );
}

/* :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

   LOOP

   :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
void loop()
{
   static byte api_packet[ IO_DATA_SAMPLE_API_PACKET_SIZE ];
   static int serial_data;

   if( Serial.available() >= IO_DATA_SAMPLE_API_PACKET_SIZE )
      if( ( api_packet[ 0 ] = Serial.read() ) == START_DELIMITER )
      {
         fill_api_packet( api_packet, IO_DATA_SAMPLE_API_PACKET_SIZE );

         if( checksum_confirmed_in( api_packet ) )
         {
            serial_data = get_serial_data_from( api_packet );

            switch( api_packet[ 10 ] )
            {
               case 0xD0:
                  if( api_packet[ 11 ] == 0x22 )
                  {
                     Serial.print( "\033[31mBedroom     (D022) : \033[m" );
                     Serial.print( "\033[31m" );
                     display_temperature( &serial_data );
                     Serial.print( "\033[m" );
                  }
                  else
                     if( api_packet[ 11 ] == 0x0E )
                     {
                        Serial.print( "\033[32mFoyer       (D00E) : \033[m" );
                        Serial.print( "\033[32m" );
                        display_temperature( &serial_data );
                        Serial.print( "\033[m" );
                     }

                  Serial.print( "\r\n" );

                  break;

               case 0xCF:
                  if( api_packet[ 11 ] == 0xDC )
                  {
                     Serial.print( "\033[33mLiving Room (CFDC) : \033[m" );
                     Serial.print( "\033[33m" );
                     display_temperature( &serial_data );
                     Serial.print( "\033[m" );
                  }
                  else
                     if( api_packet[ 11 ] == 0xE3 )
                     {
                        Serial.print( "\033[34mKitchen     (CFE3) : \033[m" );
                        Serial.print( "\033[34m" );
                        display_temperature( &serial_data );
                        Serial.print( "\033[m" );
                     }

                  Serial.print( "\r\n" );

                  break;

               default:
                  break;
            }
         }
      }
}