TEST(ErrorCheck, CompareChecksum_Data_Process1BytesSize_GoodMatch) { uint8_t buffer[2]; buffer[0] = 1; buffer[1] = 2; TEST_ASSERT_NOT_EQUAL(0, CompareChecksum(buffer, 1, 1)); }
TEST(ErrorCheck, CompareChecksum_Data_ProcessMultiBytesSize_BadMatch) { uint8_t buffer[2]; buffer[0] = 1; buffer[1] = 2; TEST_ASSERT_EQUAL(0, CompareChecksum(buffer, 2, 5)); }
uint8_t NazaGPS::CheckData() { #ifdef READ_NAZA if(Serial1.available()) { /* * Resets the current status pin states. */ digitalWrite(CHKSUM_ERROR_PIN, LOW); digitalWrite(PACKET_OK_PIN, LOW); if(buffpos < 2) { // If we dont have the header bytes, we will just read. buffer[buffpos] = Serial1.read(); buffpos ++; }else{ if(buffer[0] == 0x55 && buffer[1] == 0xAA) { // Checks if we have the correct heading if(buffpos < 4) { // We need 4 bytes. Head + ID + Size buffer[buffpos] = Serial1.read(); buffpos ++; }else{ payloadsize = buffer[3]; // Size is the 4th byte buffer[buffpos] = Serial1.read(); buffpos ++; if(buffpos == payloadsize+6) { // Ok, so we have all data CalcChecksum(); // Calculate the checksum if(CompareChecksum(&buffer[buffpos-2])) { // Checksum OK DecodeMessage(&buffer[4], buffer[2], buffer[3]);// Decode the message and save the data digitalWrite(PACKET_OK_PIN, HIGH); buffpos = 0; return 1; }else{ // Invalid Checksum. Discard all data. buffpos = 0; digitalWrite(CHKSUM_ERROR_PIN, HIGH); } } } }else{ // Wrong head, lets clean and restart buffpos = 0; buffer[buffpos] = Serial1.read(); buffpos++; } } } #endif return 0; }
TEST(ErrorCheck, CompareChecksum_NULL_NonZeroSize_NonZeroCmp) { TEST_ASSERT_EQUAL(0, CompareChecksum(NULL, 10, 0)); }