serial arduino controller
Dependents: serial_arduino 300_PS3Dribbler 300_PS3com Quadrifoglio_PS3COM
SerialArduino.cpp
00001 #include "SerialArduino.h" 00002 00003 SerialArduino::SerialArduino(PinName TX,PinName RX, int baud) 00004 : mini(TX,RX,baud) 00005 { 00006 // mini.attach(callback(this,&SerialArduino::serialLoop), SerialBase::RxIrq); 00007 state=0; 00008 thread.start(callback(this, &SerialArduino::serialLoop)); 00009 } 00010 00011 void SerialArduino::serialLoop() 00012 { 00013 while (1) { 00014 mini.read(&hedder1,1); 00015 mini.read(&hedder2,1); 00016 // mini.read(buff,1); 00017 // checkSum = atoi(&buff[2]); 00018 if(hedder1==0xff 00019 && hedder2==0xee 00020 ) 00021 { 00022 // mini.read(&button,2); 00023 mini.read(&b0,1); 00024 mini.read(&b1,1); 00025 mini.read(&trigger[0],1); 00026 mini.read(&trigger[1],1); 00027 mini.read(&stick[0],1); 00028 mini.read(&stick[1],1); 00029 mini.read(&stick[2],1); 00030 mini.read(&stick[3],1); 00031 // mini.read(&checkSum,1); 00032 mini.read(&timeout,1); 00033 00034 } 00035 // mini.write(CRLF,2); 00036 // ThisThread::sleep_for(1); 00037 } 00038 00039 } 00040 00041 bool SerialArduino::getState() 00042 { 00043 00044 //button 00045 button = b0 << 8 | b1; 00046 for(i=11;i>=0;i--) 00047 { 00048 b[i] = button & high; 00049 button = button >> 1; 00050 } 00051 //timeout 00052 if(timeout == past) 00053 { 00054 if(state) timeoutCount++; 00055 } 00056 else 00057 { 00058 timeoutCount = 0; 00059 state=1; 00060 } 00061 if(timeoutCount > 20) 00062 { 00063 state=0; 00064 } 00065 past = timeout; 00066 00067 return(state); 00068 } 00069 00070 uint8_t SerialArduino::getHedder1() 00071 { 00072 return(hedder1); 00073 } 00074 00075 uint8_t SerialArduino::getHedder2() 00076 { 00077 return(hedder2); 00078 } 00079 00080 bool SerialArduino::getButton(int num) 00081 { 00082 return(b[num]); 00083 } 00084 00085 uint8_t SerialArduino::getTrigger(int num) 00086 { 00087 return(trigger[num]); 00088 } 00089 00090 uint8_t SerialArduino::getStick(int num) 00091 { 00092 return(stick[num]); 00093 } 00094 00095 uint16_t SerialArduino::getTimeoutCount() 00096 { 00097 return(timeout); 00098 } 00099 00100
Generated on Thu Aug 18 2022 01:22:37 by
1.7.2