APP 4

Dependencies:   mbed CRC16 mbed-rtos

Revision:
23:d41a23d8f2d7
Parent:
20:f0932bfe09ed
Child:
26:f2b37f9dfca9
--- a/MEF.cpp	Tue Feb 23 00:22:49 2016 +0000
+++ b/MEF.cpp	Tue Feb 23 14:50:48 2016 +0000
@@ -15,17 +15,21 @@
 {
     switch (state)
     {
-        case PREAMBLE : 
+        case PREAMBLE :
+        default :
                 {
-                    m_InputBuffer[m_Counter] = bit;
-                    m_Counter++;
-                    if(m_Counter == 8 )
+                    m_InputBuffer[0] = m_InputBuffer[1];
+                    m_InputBuffer[1] = m_InputBuffer[2];
+                    m_InputBuffer[2] = m_InputBuffer[3];
+                    m_InputBuffer[3] = m_InputBuffer[4];
+                    m_InputBuffer[4] = m_InputBuffer[5];
+                    m_InputBuffer[5] = m_InputBuffer[6];
+                    m_InputBuffer[6] = m_InputBuffer[7];
+                    m_InputBuffer[7] = bit;
+                    
+                    if(preambleChecker())
                     {
-                        if(preambleChecker())
-                        {
-                            state = START;
-                        }
-                        m_Counter = 0;
+                        state = START;
                     }
 
                 }break;
@@ -33,7 +37,7 @@
                 {
                     m_InputBuffer[m_Counter] = bit;
                     m_Counter++;
-                    if(m_Counter == 8)
+                    if(m_Counter >= 8)
                     {
                         if(startChecker())
                         {
@@ -52,7 +56,7 @@
         case TYPE :
                 {
                     m_Counter ++;
-                    if(m_Counter == 8)
+                    if(m_Counter >= 8)
                     {
                         state = LENGTH;
                         m_Counter = 0;
@@ -63,7 +67,7 @@
                 {
                     m_InputBuffer[m_Counter] = bit;
                     m_Counter++;
-                    if(m_Counter == 8)
+                    if(m_Counter >= 8)
                     {
                         state = DATA;
                         m_DataSize = calculateSize();
@@ -79,7 +83,7 @@
                         m_CPayload[(m_Counter + 1)/ 8 - 1] = (m_BSPayload[m_Counter] << 0) | (m_BSPayload[m_Counter - 1] << 1) | (m_BSPayload[m_Counter - 2] << 2) | (m_BSPayload[m_Counter - 3] << 3) | (m_BSPayload[m_Counter - 4] << 4) | (m_BSPayload[m_Counter - 5] << 5) | (m_BSPayload[m_Counter - 6] << 6) | (m_BSPayload[m_Counter - 7] << 7);
                     }
                     m_Counter++;
-                    if(m_Counter == m_DataSize*8)
+                    if(m_Counter >= m_DataSize*8)
                     {
                         state = CRC16STATE;
                         m_CRC = CRC16::calculateCRC16(m_CPayload, m_DataSize);
@@ -90,7 +94,7 @@
                 {
                     m_InputBuffer[m_Counter] = bit;
                     m_Counter++;
-                    if(m_Counter == 16)
+                    if(m_Counter >= 16)
                     {
                         if(!compareCRC())
                         {
@@ -111,7 +115,7 @@
                 {
                     m_InputBuffer[m_Counter] = bit;
                     m_Counter++;
-                    if(m_Counter == 8)
+                    if(m_Counter >= 8)
                     {
                         if(startChecker())
                         {