APP 4
Dependencies: mbed CRC16 mbed-rtos
MEF.cpp
- Committer:
- manl2003
- Date:
- 2016-02-21
- Revision:
- 10:51ee22e230c7
- Child:
- 12:715af3660c73
File content as of revision 10:51ee22e230c7:
#include "MEF.h" void MEF::ReceiveBit(bool bit) { switch (state) { case PREAMBLE : { m_InputBuffer[m_Counter] = bit; m_Counter++; if(preambleChecker()) { state = START; m_Counter = 0; } }break; case START : { m_InputBuffer[m_Counter] = bit; m_Counter++; if(m_Counter == 8 && startChecker()) { state = TYPE; m_Counter = 0; } }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 : { }break; case CRC16 : { }break; case END : { }break; } } bool MEF::preambleChecker() { bool temp = false; bool resultTest1 = true, resultTest2 = true; for(int i = 0; i < 8; i++) { if(m_InputBuffer[i] != temp) { resultTest1 = false; } if(m_InputBuffer[i] == temp) { resultTest2 = false; } temp = !temp; } return resultTest1 || resultTest2; } bool MEF::startChecker() { if(m_InputBuffer[0] == 0 && m_InputBuffer[1] == 1 && m_InputBuffer[2] == 1 && m_InputBuffer[3] == 1 && m_InputBuffer[4] == 1 && m_InputBuffer[5] == 1 && m_InputBuffer[6] == 1 && m_InputBuffer[7] == 0) { return true; } return false; } int MEF::calculateSize() { return (m_InputBuffer[0] << 7) | (m_InputBuffer[1] << 6) | (m_InputBuffer[2] << 5) | (m_InputBuffer[3] << 4) | (m_InputBuffer[4] << 3) | (m_InputBuffer[5] << 2) | (m_InputBuffer[6] << 1) | (m_InputBuffer[7] << 0); }