ENEL400 / L3PDU

Dependents:   LoRaBaseStation LoRaTerminal

Revision:
2:f4f46b04ab8a
Parent:
1:dda08634a9be
Child:
3:35e5a721f198
diff -r dda08634a9be -r f4f46b04ab8a BasicPacket/BasicPacket.cpp
--- a/BasicPacket/BasicPacket.cpp	Wed Jun 29 01:49:03 2016 +0000
+++ b/BasicPacket/BasicPacket.cpp	Thu Jun 30 09:14:54 2016 +0000
@@ -2,6 +2,10 @@
 #include "crc.h"
 #include <string>
 
+#ifdef _DEBUG
+#include <cassert>
+#endif
+
 BasicPacket::BasicPacket()
 {
     // init variables
@@ -36,7 +40,14 @@
 
 bool BasicPacket::verify()
 {
-    return _buffer[3] == crc8(_buffer, 3);
+    if (_isVerified)
+    {
+        return true;
+    }
+    else
+    {
+        return _buffer[3] == crc8(_buffer, 3);
+    }
 }
 
 void BasicPacket::serialize(uint8_t *buffer)
@@ -106,5 +117,48 @@
 
 uint8_t BasicPacket::getCrc()
 {
-    return _buffer[3];
+    if (_isVerified)
+    {
+        return _buffer[3];
+    }
+    else
+    {
+        return crc8(_buffer, 3);
+    }
 }
+
+#ifdef _DEBUG
+void BasicPacket::unit_test()
+{
+    // value test
+    BasicPacket testObject;
+    testObject.setFid(0x1);
+    testObject.setField1(0x2);
+    testObject.setField2(0x34);
+    testObject.setField3(0x67);
+
+    assert(0x1 == testObject.getFid());
+    assert(0x2 == testObject.getField1());
+    assert(0x34 == testObject.getField2());
+    assert(0x67 == testObject.getField3());
+
+    assert(false == testObject.verify());
+    testObject.generateCrc();
+    assert(true == testObject.verify());
+    assert(0xeb == testObject.getCrc());
+
+    // value test 2
+    uint8_t testString[] = { 0x12, 0x34, 0x67, 0xeb };
+    BasicPacket testObject2(testString);
+
+    assert(0x1 == testObject2.getFid());
+    assert(0x2 == testObject2.getField1());
+    assert(0x34 == testObject2.getField2());
+    assert(0x67 == testObject2.getField3());
+
+    assert(true == testObject2.verify());
+    testObject2.generateCrc();
+    assert(true == testObject2.verify());
+    assert(0xeb == testObject2.getCrc());
+}
+#endif
\ No newline at end of file