APP 4
Dependencies: mbed CRC16 mbed-rtos
Diff: MEF.cpp
- Revision:
- 21:137d010e7469
- Parent:
- 20:f0932bfe09ed
--- a/MEF.cpp Tue Feb 23 00:22:49 2016 +0000 +++ b/MEF.cpp Tue Feb 23 00:28:40 2016 +0000 @@ -16,122 +16,121 @@ switch (state) { case PREAMBLE : + { + m_InputBuffer[m_Counter] = bit; + m_Counter++; + if(m_Counter == 8 ) { - m_InputBuffer[m_Counter] = bit; - m_Counter++; - if(m_Counter == 8 ) - { - if(preambleChecker()) - { - state = START; - } - m_Counter = 0; - } - - }break; - case START : - { - m_InputBuffer[m_Counter] = bit; - m_Counter++; - if(m_Counter == 8) + if(preambleChecker()) { - if(startChecker()) - { - state = TYPE; - m_Counter = 0; - } - else - { - //Bluboom - _decodeError(); - state = PREAMBLE; - init(); - } - } - }break; - case TYPE : + state = START; + } + m_Counter = 0; + } + + } break; + case START : + { + m_InputBuffer[m_Counter] = bit; + m_Counter++; + if(m_Counter == 8) { - m_Counter ++; - if(m_Counter == 8) + if(startChecker()) { - state = LENGTH; - m_Counter = 0; - } - - }break; - case LENGTH : - { - m_InputBuffer[m_Counter] = bit; - m_Counter++; - if(m_Counter == 8) - { - state = DATA; - m_DataSize = calculateSize(); + state = TYPE; m_Counter = 0; } - - }break; - case DATA : - { - m_BSPayload[m_Counter] = bit; - if (((m_Counter + 1) % 8) == 0 && m_Counter != 0) - { - 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) - { - state = CRC16STATE; - m_CRC = CRC16::calculateCRC16(m_CPayload, m_DataSize); - m_Counter = 0; - } - }break; - case CRC16STATE : - { - m_InputBuffer[m_Counter] = bit; - m_Counter++; - if(m_Counter == 16) + else { - if(!compareCRC()) - { - //BOOMBOOM - _decodeError(); - state = PREAMBLE; - init(); - } - else - { - state = END; - } - m_Counter = 0; + //Bluboom + _decodeError(); + state = PREAMBLE; + init(); } - - }break; - case END : + } + } break; + case TYPE : + { + m_Counter ++; + if(m_Counter == 8) + { + state = LENGTH; + m_Counter = 0; + } + + } break; + case LENGTH : + { + m_InputBuffer[m_Counter] = bit; + m_Counter++; + if(m_Counter == 8) + { + state = DATA; + m_DataSize = calculateSize(); + m_Counter = 0; + } + + } break; + case DATA : + { + m_BSPayload[m_Counter] = bit; + if (((m_Counter + 1) % 8) == 0 && m_Counter != 0) + { + 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) { - m_InputBuffer[m_Counter] = bit; - m_Counter++; - if(m_Counter == 8) + state = CRC16STATE; + m_CRC = CRC16::calculateCRC16(m_CPayload, m_DataSize); + m_Counter = 0; + } + } break; + case CRC16STATE : + { + m_InputBuffer[m_Counter] = bit; + m_Counter++; + if(m_Counter == 16) + { + if(!compareCRC()) + { + //BOOMBOOM + _decodeError(); + state = PREAMBLE; + init(); + } + else { - if(startChecker()) - { - state = PREAMBLE; - m_Counter = 0; - //CALLBACK - _decodeCallback(m_BSPayload, m_DataSize); - } - else - { - //BOOMBOOM - _decodeError(); - state = PREAMBLE; - init(); - } + state = END; } + m_Counter = 0; + } + + } break; + case END : + { + m_InputBuffer[m_Counter] = bit; + m_Counter++; + if(m_Counter == 8) + { + if(startChecker()) + { + state = PREAMBLE; + m_Counter = 0; + //CALLBACK + _decodeCallback(m_BSPayload, m_DataSize); + } + else + { + //BOOMBOOM + _decodeError(); + state = PREAMBLE; + init(); + } + } - }break; + } break; } - _updateState(state); } bool MEF::preambleChecker() @@ -188,8 +187,3 @@ return m_CRC == incommingCRC; } - -void MEF::error() -{ - -} \ No newline at end of file