Using the below code to parse between the below messages... I can't seem to ever get into flag 3 case even though I know it is being sent. I think is has to do when I am trying to check myCode[2] byte value.
int flag = 0;
byte myData[20];
byte myCode[3];
void recHRData() {
byte n = Serial2.available();
if (flag == 0)
{
myCode[0] = Serial2.read();
myCode[1] = Serial2.read();
myCode[2] = Serial2.read();
Serial.print(myCode[0],HEX);
Serial.println(" was rec!.....1");
Serial.print(myCode[1],HEX);
Serial.println(" was rec!.....2");
Serial.print(myCode[2],HEX);
Serial.println(" was rec!.....2");
int x = (int)myCode[0] << 8 | (int)myCode[1];
if (x == 0xAAAA)
{
Serial.println("Preamble found.");
//memset(myCode, 0, 2);
int y = (int)myCode[2];
if(y==0x12){
flag = 2;
memset(myCode, 0, 3);
}
if(y==0x04){
flag = 3;
memset(myCode, 0, 3);
}
}
}
else if(flag == 2)
{
Serial2.readBytes(myData, 19);
for(int i=0; i<19; i++)
{
byte x = myData[i];
if(x <0x10)
{
Serial.print('0'); //prints leading zeo of a byte
}
Serial.print(myData[i], HEX);
}
Serial.println();
Serial.println("Sending Heart Rate to App.");
Serial.println(myData[3], DEC);
flag = 0;
memset(myData, 0, 19);
Serial.println("=====================");
}
else if(flag == 3)
{
Serial2.readBytes(myData, 5);
for(int i=0; i<5; i++)
{
byte x = myData[i];
if(x <0x10)
{
Serial.print('0'); //prints leading zeo of a byte
}
Serial.print(myData[i], HEX);
}
Serial.println();
Serial.println("Raw Data Found");
flag = 0;
memset(myData, 0, 5);
Serial.println("=====================");
}
}
Raw data msg 1 = [ 0xAA , 0xAA, 0x04, 0x80, 0x02, 0xXX, 0xXX, 0xXX]
rest data msg 2 = [ 0xAA , 0xAA, 0x12, 0x02, 0x00, 0x03, 0x4E , 0x84, 0x05, 0x00, 0xF9, 0x00,0x03,0x44,0x08,0x39,0x85,0x03,0xFF,0xFF,0xFF,0xXX]
Bold is the value I want to send back to device serially.