mylibrary
Embed:
(wiki syntax)
Show/hide line numbers
PS3.cpp
00001 #include "PS3.h" 00002 00003 PS3::PS3(PinName TX, PinName RX) : Serial(TX, RX) 00004 { 00005 PS3Data[0] = 128; 00006 PS3Data[1] = 0; 00007 PS3Data[2] = 0; 00008 PS3Data[3] = 64; 00009 PS3Data[4] = 64; 00010 PS3Data[5] = 64; 00011 PS3Data[6] = 64; 00012 PS3Data[7] = 0; 00013 baud(2400); 00014 Serial::attach(this, &PS3::getdata, Serial::RxIrq); 00015 } 00016 00017 bool PS3::maru() 00018 { 00019 return PS3Data[2] & MARU; 00020 } 00021 00022 bool PS3::batu() 00023 { 00024 return PS3Data[2] & BATU; 00025 } 00026 00027 bool PS3::sikaku() 00028 { 00029 return PS3Data[1] & SIKAKU; 00030 } 00031 00032 bool PS3::sankaku() 00033 { 00034 return PS3Data[2] & SANKAKU; 00035 } 00036 00037 bool PS3::ue() 00038 { 00039 return PS3Data[2] & UE && !(PS3Data[2] & SITA); 00040 } 00041 00042 bool PS3::sita() 00043 { 00044 return PS3Data[2] & SITA && !(PS3Data[2] & UE); 00045 } 00046 00047 bool PS3::start() 00048 { 00049 return PS3Data[2] & UE && PS3Data[2] & SITA; 00050 } 00051 00052 bool PS3::migi() 00053 { 00054 return PS3Data[2] & MIGI && !(PS3Data[2] & HIDARI); 00055 } 00056 00057 bool PS3::hidari() 00058 { 00059 return PS3Data[2] & HIDARI && !(PS3Data[2] & MIGI); 00060 } 00061 00062 bool PS3::select() 00063 { 00064 return PS3Data[2] & MIGI && PS3Data[2] & HIDARI; 00065 } 00066 00067 bool PS3::L1() 00068 { 00069 return PS3Data[1] & LEFT1; 00070 } 00071 00072 bool PS3::L2() 00073 { 00074 return PS3Data[1] & LEFT2; 00075 } 00076 00077 bool PS3::R1() 00078 { 00079 return PS3Data[1] & RIGHT1; 00080 } 00081 00082 bool PS3::R2() 00083 { 00084 return PS3Data[1] & RIGHT2; 00085 } 00086 00087 int8_t PS3::analogLX() 00088 { 00089 if(PS3Data[3] == 0) 00090 PS3Data[3] = 1; 00091 return PS3Data[3] - 64; 00092 } 00093 00094 int8_t PS3::analogLY() 00095 { 00096 if(PS3Data[4] == 0) 00097 PS3Data[4] = 1; 00098 return (PS3Data[4] - 64) * (-1); 00099 } 00100 00101 int8_t PS3::analogRX() 00102 { 00103 if(PS3Data[5] == 0) 00104 PS3Data[5] = 1; 00105 return PS3Data[5] - 64; 00106 } 00107 00108 int8_t PS3::analogRY() 00109 { 00110 if(PS3Data[6] == 0) 00111 PS3Data[6] = 1; 00112 return (PS3Data[6] - 64) * (-1); 00113 } 00114 00115 00116 00117 void PS3::getdata() 00118 { 00119 while(Serial::getc() != 128) 00120 { 00121 } 00122 for(int i = 1; i < 8; i++) 00123 { 00124 GetData[i] = Serial::getc(); 00125 } 00126 00127 sum = GetData[1] + GetData[2]; 00128 for(int i = 3; i < 7; i++) 00129 { 00130 sum += GetData[i] - 64; 00131 } 00132 00133 if(sum < 0) 00134 sum += 128; 00135 00136 if(sum == GetData[7]) 00137 { 00138 for(int i = 0; i < 8; i++) 00139 { 00140 PS3Data[i] = GetData[i]; 00141 } 00142 } 00143 }
Generated on Tue Jul 19 2022 06:59:13 by 1.7.2