/**
  *THIS IS A SERIAL INTERRUPT
  *IT OCCURS WHEN THE GPS IS OUTPUTTING A STRING
  *it inputs individual characters
**/

#int_rda
void rda_isr(void)
{
   //ch is the incoming character
   char ch;
   //get incoming character from GPS Stream
   ch = fgetc(GPSSTREAM);
   if(ch == '$')        //$ Marks beginning of a packet 
   {
      //start accepting packets
      GPSRecieving = TRUE;
      BuffIndex = 0;      // Reset buffer index
   }
   //accept packets if we are recieving
   if(GPSRecieving)
   {
      if(ch==13 || ch==10)    //Got a \r\n end of packet
      {
         //stop recieving
         GPSRecieving = FALSE;
         //we'll let the function update the string by raising a flag
         GPSneedUpdate = 1;
         return;
      } else {
      
      GPSbuffer[BuffIndex] = ch;     // Add char to buffer
      BuffIndex++;                   // Advance buffer pointer     
      
      }

      if(BuffIndex > 72) //If buffer is full, this is an error
      {
         //*HANDLE BUFFER OVERRUN ERROR
         fprintf(BASESTREAM,"!ERROR:BUFFER-OVERRUN%u",BuffIndex);
      }
   }
}

