APP 4

Dependencies:   mbed CRC16 mbed-rtos

Committer:
manl2003
Date:
Sun Feb 21 21:42:36 2016 +0000
Revision:
10:51ee22e230c7
Child:
12:715af3660c73
asdf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
manl2003 10:51ee22e230c7 1 #include "MEF.h"
manl2003 10:51ee22e230c7 2
manl2003 10:51ee22e230c7 3 void MEF::ReceiveBit(bool bit)
manl2003 10:51ee22e230c7 4 {
manl2003 10:51ee22e230c7 5 switch (state)
manl2003 10:51ee22e230c7 6 {
manl2003 10:51ee22e230c7 7 case PREAMBLE :
manl2003 10:51ee22e230c7 8 {
manl2003 10:51ee22e230c7 9 m_InputBuffer[m_Counter] = bit;
manl2003 10:51ee22e230c7 10 m_Counter++;
manl2003 10:51ee22e230c7 11 if(preambleChecker())
manl2003 10:51ee22e230c7 12 {
manl2003 10:51ee22e230c7 13 state = START;
manl2003 10:51ee22e230c7 14 m_Counter = 0;
manl2003 10:51ee22e230c7 15 }
manl2003 10:51ee22e230c7 16
manl2003 10:51ee22e230c7 17 }break;
manl2003 10:51ee22e230c7 18 case START :
manl2003 10:51ee22e230c7 19 {
manl2003 10:51ee22e230c7 20 m_InputBuffer[m_Counter] = bit;
manl2003 10:51ee22e230c7 21 m_Counter++;
manl2003 10:51ee22e230c7 22 if(m_Counter == 8 && startChecker())
manl2003 10:51ee22e230c7 23 {
manl2003 10:51ee22e230c7 24 state = TYPE;
manl2003 10:51ee22e230c7 25 m_Counter = 0;
manl2003 10:51ee22e230c7 26 }
manl2003 10:51ee22e230c7 27
manl2003 10:51ee22e230c7 28
manl2003 10:51ee22e230c7 29 }break;
manl2003 10:51ee22e230c7 30 case TYPE :
manl2003 10:51ee22e230c7 31 {
manl2003 10:51ee22e230c7 32 m_Counter ++;
manl2003 10:51ee22e230c7 33 if(m_Counter == 8)
manl2003 10:51ee22e230c7 34 {
manl2003 10:51ee22e230c7 35 state = LENGTH;
manl2003 10:51ee22e230c7 36 m_Counter = 0;
manl2003 10:51ee22e230c7 37 }
manl2003 10:51ee22e230c7 38
manl2003 10:51ee22e230c7 39 }break;
manl2003 10:51ee22e230c7 40 case LENGTH :
manl2003 10:51ee22e230c7 41 {
manl2003 10:51ee22e230c7 42 m_InputBuffer[m_Counter] = bit;
manl2003 10:51ee22e230c7 43 m_Counter++;
manl2003 10:51ee22e230c7 44 if(m_Counter == 8)
manl2003 10:51ee22e230c7 45 {
manl2003 10:51ee22e230c7 46 state = DATA;
manl2003 10:51ee22e230c7 47 m_DataSize = calculateSize();
manl2003 10:51ee22e230c7 48 m_Counter = 0;
manl2003 10:51ee22e230c7 49 }
manl2003 10:51ee22e230c7 50
manl2003 10:51ee22e230c7 51 }break;
manl2003 10:51ee22e230c7 52 case DATA :
manl2003 10:51ee22e230c7 53 {
manl2003 10:51ee22e230c7 54 }break;
manl2003 10:51ee22e230c7 55 case CRC16 :
manl2003 10:51ee22e230c7 56 {
manl2003 10:51ee22e230c7 57
manl2003 10:51ee22e230c7 58 }break;
manl2003 10:51ee22e230c7 59 case END :
manl2003 10:51ee22e230c7 60 {
manl2003 10:51ee22e230c7 61
manl2003 10:51ee22e230c7 62 }break;
manl2003 10:51ee22e230c7 63 }
manl2003 10:51ee22e230c7 64 }
manl2003 10:51ee22e230c7 65
manl2003 10:51ee22e230c7 66 bool MEF::preambleChecker()
manl2003 10:51ee22e230c7 67 {
manl2003 10:51ee22e230c7 68 bool temp = false;
manl2003 10:51ee22e230c7 69 bool resultTest1 = true, resultTest2 = true;
manl2003 10:51ee22e230c7 70 for(int i = 0; i < 8; i++)
manl2003 10:51ee22e230c7 71 {
manl2003 10:51ee22e230c7 72 if(m_InputBuffer[i] != temp)
manl2003 10:51ee22e230c7 73 {
manl2003 10:51ee22e230c7 74 resultTest1 = false;
manl2003 10:51ee22e230c7 75 }
manl2003 10:51ee22e230c7 76 if(m_InputBuffer[i] == temp)
manl2003 10:51ee22e230c7 77 {
manl2003 10:51ee22e230c7 78 resultTest2 = false;
manl2003 10:51ee22e230c7 79 }
manl2003 10:51ee22e230c7 80 temp = !temp;
manl2003 10:51ee22e230c7 81 }
manl2003 10:51ee22e230c7 82 return resultTest1 || resultTest2;
manl2003 10:51ee22e230c7 83 }
manl2003 10:51ee22e230c7 84
manl2003 10:51ee22e230c7 85 bool MEF::startChecker()
manl2003 10:51ee22e230c7 86 {
manl2003 10:51ee22e230c7 87 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)
manl2003 10:51ee22e230c7 88 {
manl2003 10:51ee22e230c7 89 return true;
manl2003 10:51ee22e230c7 90 }
manl2003 10:51ee22e230c7 91 return false;
manl2003 10:51ee22e230c7 92 }
manl2003 10:51ee22e230c7 93
manl2003 10:51ee22e230c7 94 int MEF::calculateSize()
manl2003 10:51ee22e230c7 95 {
manl2003 10:51ee22e230c7 96 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);
manl2003 10:51ee22e230c7 97 }