#include "globals.h"
#include "xbee_api.h"
#include "checksum.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 0xF9:
                  if( api_packet[ 11 ] == 0xF5 )
                  {
                     Serial.print( "\033[10;5H" );
                     Serial.print( "Student A: " );
                     Serial.print( serial_data );
                     Serial.print( "\033[m" );
                  }

                  break;

               case 0xDA:
                  if( api_packet[ 11 ] == 0xA9 )
                  {
                     Serial.print( "\033[11;5H" );
                     Serial.print( "Student B: " );
                     Serial.print( serial_data );
                     Serial.print( "\033[m" );
                  }

                  break;

               default:
                  break;
            }
         }
      }
}