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.
SBDBT.cpp
00001 #include "SBDBT.hpp" 00002 #include "mbed.h" 00003 00004 Serial pc(USBTX,USBRX); 00005 00006 sbdbt::sbdbt(PinName TX, PinName RX){ 00007 i = 0; 00008 pos = 0; 00009 val = 0x80; 00010 len = 10; 00011 data = new char[len]; 00012 PS3_Data = new char[len]; 00013 dev = new Serial(TX, RX); 00014 dev -> baud(9600); 00015 dev -> attach(callback(this,&sbdbt::get),Serial::RxIrq); 00016 } 00017 00018 sbdbt::sbdbt(PinName TX, PinName RX, int baud){ 00019 i = 0; 00020 pos = 0; 00021 val = 0x80; 00022 len = 10; 00023 data = new char[len]; 00024 PS3_Data = new char[len]; 00025 dev = new Serial(TX, RX); 00026 dev -> baud(9600); 00027 pc.baud(baud); 00028 dev -> attach(callback(this,&sbdbt::get),Serial::RxIrq); 00029 } 00030 00031 void sbdbt::get(){ 00032 data[i] = dev -> getc(); 00033 if(data[i] == val){ 00034 if(i != pos){ 00035 data[pos] = val; 00036 i = pos + 1; 00037 } 00038 else{ 00039 i++; 00040 } 00041 } 00042 else{ 00043 if(i == pos); 00044 else{ 00045 i++; 00046 } 00047 } 00048 if(i >= len){ 00049 PS3_Data[0] = data[0]; 00050 PS3_Data[1] = data[1]; 00051 PS3_Data[2] = data[2]; 00052 PS3_Data[3] = data[3]; 00053 PS3_Data[4] = data[4]; 00054 PS3_Data[5] = data[5]; 00055 PS3_Data[6] = data[6]; 00056 PS3_Data[7] = data[7]; 00057 PS3_Data[8] = data[8]; 00058 PS3_Data[9] = data[9]; 00059 i = 0; 00060 } 00061 } 00062 00063 void sbdbt::button_state(){pc.printf("UP: %d, DOW: %d, RIG: %d, LEF: %d, TRI: %d, CRO: %d, CIR: %d, SQU: %d, L1: %d, L2: %d, R1: %d, R2: %d, STA: %d, SEL: %d LSX: %3d, LSY: %3d, RSX: %3d, RY: %3d, L2An: %3d, R2An: %3d\n",up(), down(), right(), left(), tri(), cross(), circle(), square(), l1(), l2(), r1(), r2(), start(), select(), lsx(), lsy(), rsx(), rsy(), l2An(), r2An());} 00064 00065 void sbdbt::data_print(){pc.printf("%2x %2x %2x %2x %2x %2x %2x %2x %2x %2x\n",PS3_Data[0], PS3_Data[1], PS3_Data[2], PS3_Data[3], PS3_Data[4], PS3_Data[5], PS3_Data[6], PS3_Data[7], PS3_Data[8], PS3_Data[9]);} 00066 00067 bool sbdbt::neutral(){ 00068 if(data[9] == 0) return 1; 00069 return 0; 00070 } 00071 00072 bool sbdbt::up(){ 00073 if(data[2] & UP) return 1; 00074 return 0; 00075 } 00076 00077 bool sbdbt::down(){ 00078 if(data[2] & DOWN) return 1; 00079 return 0; 00080 } 00081 00082 bool sbdbt::left(){ 00083 if(data[2] & LEFT) return 1; 00084 return 0; 00085 } 00086 00087 bool sbdbt::right(){ 00088 if(data[2] & RIGHT) return 1; 00089 return 0; 00090 } 00091 00092 bool sbdbt::tri(){ 00093 if(data[2] & TRI) return 1; 00094 return 0; 00095 } 00096 00097 bool sbdbt::cross(){ 00098 if(data[2] & CROSS) return 1; 00099 return 0; 00100 } 00101 00102 bool sbdbt::square(){ 00103 if(data[2] & SQUARE) return 1; 00104 return 0; 00105 } 00106 00107 bool sbdbt::circle(){ 00108 if(data[1] & CIRCLE) return 1; 00109 return 0; 00110 } 00111 bool sbdbt::l1(){ 00112 if(data[1] & L1) return 1; 00113 return 0; 00114 } 00115 00116 bool sbdbt::l2(){ 00117 if(data[1] & L2) return 1; 00118 return 0; 00119 } 00120 00121 bool sbdbt::r1(){ 00122 if(data[1] & R1) return 1; 00123 return 0; 00124 } 00125 00126 bool sbdbt::r2(){ 00127 if(data[1] & R2) return 1; 00128 return 0; 00129 } 00130 00131 bool sbdbt::start(){ 00132 if(data[1] & START) return 1; 00133 return 0; 00134 } 00135 00136 bool sbdbt::select(){ 00137 if(data[1] & SELECT) return 1; 00138 return 0; 00139 } 00140 00141 char sbdbt::lsx(){return data[3];} 00142 00143 char sbdbt::lsy(){return data[4];} 00144 00145 char sbdbt::rsx(){return data[5];} 00146 00147 char sbdbt::rsy(){return data[6];} 00148 00149 char sbdbt::l2An(){return data[7];} 00150 00151 char sbdbt::r2An(){return data[8];} 00152 00153 sbdbt::~sbdbt(){ 00154 delete dev; 00155 delete data; 00156 delete PS3_Data; 00157 }
Generated on Sat Oct 8 2022 11:15:36 by
1.7.2