Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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