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.
dualshock3.cpp@0:4289fbe66d45, 2020-06-21 (annotated)
- Committer:
- Kize
- Date:
- Sun Jun 21 01:48:47 2020 +0000
- Revision:
- 0:4289fbe66d45
new commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Kize | 0:4289fbe66d45 | 1 | #include "dualshock3.h" |
| Kize | 0:4289fbe66d45 | 2 | |
| Kize | 0:4289fbe66d45 | 3 | Dualshock3::Dualshock3(PinName tx, PinName rx) |
| Kize | 0:4289fbe66d45 | 4 | :controller(tx, rx), baudrate(DEFAULT_BAUDRATE) |
| Kize | 0:4289fbe66d45 | 5 | { |
| Kize | 0:4289fbe66d45 | 6 | button_state = 0; |
| Kize | 0:4289fbe66d45 | 7 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 8 | previous_button_state = button_state; |
| Kize | 0:4289fbe66d45 | 9 | data[3] = 0x40; |
| Kize | 0:4289fbe66d45 | 10 | data[4] = 0x40; |
| Kize | 0:4289fbe66d45 | 11 | data[5] = 0x40; |
| Kize | 0:4289fbe66d45 | 12 | data[6] = 0x40; |
| Kize | 0:4289fbe66d45 | 13 | printf("dualshock3 is ready\r\n"); |
| Kize | 0:4289fbe66d45 | 14 | } |
| Kize | 0:4289fbe66d45 | 15 | |
| Kize | 0:4289fbe66d45 | 16 | void Dualshock3::set_baudrate(int baud) |
| Kize | 0:4289fbe66d45 | 17 | { |
| Kize | 0:4289fbe66d45 | 18 | baudrate = baud; |
| Kize | 0:4289fbe66d45 | 19 | } |
| Kize | 0:4289fbe66d45 | 20 | |
| Kize | 0:4289fbe66d45 | 21 | void Dualshock3::initialize(void) |
| Kize | 0:4289fbe66d45 | 22 | { |
| Kize | 0:4289fbe66d45 | 23 | controller.baud(baudrate); |
| Kize | 0:4289fbe66d45 | 24 | controller.attach(callback(this, &Dualshock3::read), Serial::RxIrq); |
| Kize | 0:4289fbe66d45 | 25 | } |
| Kize | 0:4289fbe66d45 | 26 | |
| Kize | 0:4289fbe66d45 | 27 | void Dualshock3::clear(void) |
| Kize | 0:4289fbe66d45 | 28 | { |
| Kize | 0:4289fbe66d45 | 29 | button_state = 0; |
| Kize | 0:4289fbe66d45 | 30 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 31 | } |
| Kize | 0:4289fbe66d45 | 32 | |
| Kize | 0:4289fbe66d45 | 33 | void Dualshock3::read(void) |
| Kize | 0:4289fbe66d45 | 34 | { |
| Kize | 0:4289fbe66d45 | 35 | __disable_irq(); |
| Kize | 0:4289fbe66d45 | 36 | data[0] = controller.getc(); |
| Kize | 0:4289fbe66d45 | 37 | if(data[0]==0x80){ |
| Kize | 0:4289fbe66d45 | 38 | for(int i=1;i<DATA_LENGTH;i++){ |
| Kize | 0:4289fbe66d45 | 39 | data[i] = controller.getc(); |
| Kize | 0:4289fbe66d45 | 40 | } |
| Kize | 0:4289fbe66d45 | 41 | button_state = (data[1]<<DATA_LENGTH) + data[2]; |
| Kize | 0:4289fbe66d45 | 42 | //今該当ボタンのビットが1で、前回は0なら、risenを1にする |
| Kize | 0:4289fbe66d45 | 43 | if((button_state & UP) && !(previous_button_state & UP)){ |
| Kize | 0:4289fbe66d45 | 44 | button_risen |= UP; |
| Kize | 0:4289fbe66d45 | 45 | } |
| Kize | 0:4289fbe66d45 | 46 | if((button_state & DOWN) && !(previous_button_state & DOWN)){ |
| Kize | 0:4289fbe66d45 | 47 | button_risen |= DOWN; |
| Kize | 0:4289fbe66d45 | 48 | } |
| Kize | 0:4289fbe66d45 | 49 | if((button_state & LEFT) && !(previous_button_state & LEFT)){ |
| Kize | 0:4289fbe66d45 | 50 | button_risen |= LEFT; |
| Kize | 0:4289fbe66d45 | 51 | } |
| Kize | 0:4289fbe66d45 | 52 | if((button_state & RIGHT) && !(previous_button_state & RIGHT)){ |
| Kize | 0:4289fbe66d45 | 53 | button_risen |= RIGHT; |
| Kize | 0:4289fbe66d45 | 54 | } |
| Kize | 0:4289fbe66d45 | 55 | if((button_state & TRIANGLE) && !(previous_button_state & TRIANGLE)){ |
| Kize | 0:4289fbe66d45 | 56 | button_risen |= TRIANGLE; |
| Kize | 0:4289fbe66d45 | 57 | } |
| Kize | 0:4289fbe66d45 | 58 | if((button_state & CROSS) && !(previous_button_state & CROSS)){ |
| Kize | 0:4289fbe66d45 | 59 | button_risen |= CROSS; |
| Kize | 0:4289fbe66d45 | 60 | } |
| Kize | 0:4289fbe66d45 | 61 | if((button_state & CIRCLE) && !(previous_button_state & CIRCLE)){ |
| Kize | 0:4289fbe66d45 | 62 | button_risen |= CIRCLE; |
| Kize | 0:4289fbe66d45 | 63 | } |
| Kize | 0:4289fbe66d45 | 64 | if((button_state & RECTANGLE) && !(previous_button_state & RECTANGLE)){ |
| Kize | 0:4289fbe66d45 | 65 | button_risen |= RECTANGLE; |
| Kize | 0:4289fbe66d45 | 66 | } |
| Kize | 0:4289fbe66d45 | 67 | if((button_state & L1) && !(previous_button_state & L1)){ |
| Kize | 0:4289fbe66d45 | 68 | button_risen |= L1; |
| Kize | 0:4289fbe66d45 | 69 | } |
| Kize | 0:4289fbe66d45 | 70 | if((button_state & L2) && !(previous_button_state & L2)){ |
| Kize | 0:4289fbe66d45 | 71 | button_risen |= L2; |
| Kize | 0:4289fbe66d45 | 72 | } |
| Kize | 0:4289fbe66d45 | 73 | if((button_state & R1) && !(previous_button_state & R1)){ |
| Kize | 0:4289fbe66d45 | 74 | button_risen |= R1; |
| Kize | 0:4289fbe66d45 | 75 | } |
| Kize | 0:4289fbe66d45 | 76 | if((button_state & R2) && !(previous_button_state & R2)){ |
| Kize | 0:4289fbe66d45 | 77 | button_risen |= R2; |
| Kize | 0:4289fbe66d45 | 78 | } |
| Kize | 0:4289fbe66d45 | 79 | if((button_state & START) && !(previous_button_state & START)){ |
| Kize | 0:4289fbe66d45 | 80 | button_risen |= START; |
| Kize | 0:4289fbe66d45 | 81 | } |
| Kize | 0:4289fbe66d45 | 82 | if((button_state & SELECT) && !(previous_button_state & SELECT)){ |
| Kize | 0:4289fbe66d45 | 83 | button_risen |= SELECT; |
| Kize | 0:4289fbe66d45 | 84 | } |
| Kize | 0:4289fbe66d45 | 85 | previous_button_state = button_state; |
| Kize | 0:4289fbe66d45 | 86 | } |
| Kize | 0:4289fbe66d45 | 87 | __enable_irq(); |
| Kize | 0:4289fbe66d45 | 88 | } |
| Kize | 0:4289fbe66d45 | 89 | |
| Kize | 0:4289fbe66d45 | 90 | bool Dualshock3::circle_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 91 | { |
| Kize | 0:4289fbe66d45 | 92 | if(button_state & CIRCLE){ |
| Kize | 0:4289fbe66d45 | 93 | return true; |
| Kize | 0:4289fbe66d45 | 94 | }else{ |
| Kize | 0:4289fbe66d45 | 95 | return 0; |
| Kize | 0:4289fbe66d45 | 96 | } |
| Kize | 0:4289fbe66d45 | 97 | } |
| Kize | 0:4289fbe66d45 | 98 | |
| Kize | 0:4289fbe66d45 | 99 | bool Dualshock3::cross_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 100 | { |
| Kize | 0:4289fbe66d45 | 101 | if(button_state & CROSS){ |
| Kize | 0:4289fbe66d45 | 102 | return true; |
| Kize | 0:4289fbe66d45 | 103 | }else{ |
| Kize | 0:4289fbe66d45 | 104 | return 0; |
| Kize | 0:4289fbe66d45 | 105 | } |
| Kize | 0:4289fbe66d45 | 106 | } |
| Kize | 0:4289fbe66d45 | 107 | |
| Kize | 0:4289fbe66d45 | 108 | bool Dualshock3::rectangle_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 109 | { |
| Kize | 0:4289fbe66d45 | 110 | if(button_state & RECTANGLE){ |
| Kize | 0:4289fbe66d45 | 111 | return true; |
| Kize | 0:4289fbe66d45 | 112 | }else{ |
| Kize | 0:4289fbe66d45 | 113 | return 0; |
| Kize | 0:4289fbe66d45 | 114 | } |
| Kize | 0:4289fbe66d45 | 115 | } |
| Kize | 0:4289fbe66d45 | 116 | |
| Kize | 0:4289fbe66d45 | 117 | bool Dualshock3::triangle_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 118 | { |
| Kize | 0:4289fbe66d45 | 119 | if(button_state & TRIANGLE){ |
| Kize | 0:4289fbe66d45 | 120 | return true; |
| Kize | 0:4289fbe66d45 | 121 | }else{ |
| Kize | 0:4289fbe66d45 | 122 | return 0; |
| Kize | 0:4289fbe66d45 | 123 | } |
| Kize | 0:4289fbe66d45 | 124 | } |
| Kize | 0:4289fbe66d45 | 125 | |
| Kize | 0:4289fbe66d45 | 126 | bool Dualshock3::up_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 127 | { |
| Kize | 0:4289fbe66d45 | 128 | if(button_state & UP){ |
| Kize | 0:4289fbe66d45 | 129 | if(button_state & DOWN){ |
| Kize | 0:4289fbe66d45 | 130 | return 0; |
| Kize | 0:4289fbe66d45 | 131 | }else{ |
| Kize | 0:4289fbe66d45 | 132 | return true; |
| Kize | 0:4289fbe66d45 | 133 | } |
| Kize | 0:4289fbe66d45 | 134 | }else{ |
| Kize | 0:4289fbe66d45 | 135 | return 0; |
| Kize | 0:4289fbe66d45 | 136 | } |
| Kize | 0:4289fbe66d45 | 137 | } |
| Kize | 0:4289fbe66d45 | 138 | |
| Kize | 0:4289fbe66d45 | 139 | bool Dualshock3::down_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 140 | { |
| Kize | 0:4289fbe66d45 | 141 | if(button_state & DOWN){ |
| Kize | 0:4289fbe66d45 | 142 | if(button_state & UP){ |
| Kize | 0:4289fbe66d45 | 143 | return 0; |
| Kize | 0:4289fbe66d45 | 144 | }else{ |
| Kize | 0:4289fbe66d45 | 145 | return true; |
| Kize | 0:4289fbe66d45 | 146 | } |
| Kize | 0:4289fbe66d45 | 147 | }else{ |
| Kize | 0:4289fbe66d45 | 148 | return 0; |
| Kize | 0:4289fbe66d45 | 149 | } |
| Kize | 0:4289fbe66d45 | 150 | } |
| Kize | 0:4289fbe66d45 | 151 | |
| Kize | 0:4289fbe66d45 | 152 | bool Dualshock3::left_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 153 | { |
| Kize | 0:4289fbe66d45 | 154 | if(button_state & LEFT){ |
| Kize | 0:4289fbe66d45 | 155 | if(button_state & RIGHT){ |
| Kize | 0:4289fbe66d45 | 156 | return 0; |
| Kize | 0:4289fbe66d45 | 157 | }else{ |
| Kize | 0:4289fbe66d45 | 158 | return true; |
| Kize | 0:4289fbe66d45 | 159 | } |
| Kize | 0:4289fbe66d45 | 160 | }else{ |
| Kize | 0:4289fbe66d45 | 161 | return 0; |
| Kize | 0:4289fbe66d45 | 162 | } |
| Kize | 0:4289fbe66d45 | 163 | } |
| Kize | 0:4289fbe66d45 | 164 | |
| Kize | 0:4289fbe66d45 | 165 | bool Dualshock3::right_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 166 | { |
| Kize | 0:4289fbe66d45 | 167 | if(button_state & RIGHT){ |
| Kize | 0:4289fbe66d45 | 168 | if(button_state & LEFT){ |
| Kize | 0:4289fbe66d45 | 169 | return 0; |
| Kize | 0:4289fbe66d45 | 170 | }else{ |
| Kize | 0:4289fbe66d45 | 171 | return true; |
| Kize | 0:4289fbe66d45 | 172 | } |
| Kize | 0:4289fbe66d45 | 173 | }else{ |
| Kize | 0:4289fbe66d45 | 174 | return 0; |
| Kize | 0:4289fbe66d45 | 175 | } |
| Kize | 0:4289fbe66d45 | 176 | } |
| Kize | 0:4289fbe66d45 | 177 | |
| Kize | 0:4289fbe66d45 | 178 | bool Dualshock3::l1_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 179 | { |
| Kize | 0:4289fbe66d45 | 180 | if(button_state & L1){ |
| Kize | 0:4289fbe66d45 | 181 | return true; |
| Kize | 0:4289fbe66d45 | 182 | }else{ |
| Kize | 0:4289fbe66d45 | 183 | return 0; |
| Kize | 0:4289fbe66d45 | 184 | } |
| Kize | 0:4289fbe66d45 | 185 | } |
| Kize | 0:4289fbe66d45 | 186 | |
| Kize | 0:4289fbe66d45 | 187 | bool Dualshock3::l2_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 188 | { |
| Kize | 0:4289fbe66d45 | 189 | if(button_state & L2){ |
| Kize | 0:4289fbe66d45 | 190 | return true; |
| Kize | 0:4289fbe66d45 | 191 | }else{ |
| Kize | 0:4289fbe66d45 | 192 | return 0; |
| Kize | 0:4289fbe66d45 | 193 | } |
| Kize | 0:4289fbe66d45 | 194 | } |
| Kize | 0:4289fbe66d45 | 195 | |
| Kize | 0:4289fbe66d45 | 196 | bool Dualshock3::r1_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 197 | { |
| Kize | 0:4289fbe66d45 | 198 | if(button_state & R1){ |
| Kize | 0:4289fbe66d45 | 199 | return true; |
| Kize | 0:4289fbe66d45 | 200 | }else{ |
| Kize | 0:4289fbe66d45 | 201 | return 0; |
| Kize | 0:4289fbe66d45 | 202 | } |
| Kize | 0:4289fbe66d45 | 203 | } |
| Kize | 0:4289fbe66d45 | 204 | |
| Kize | 0:4289fbe66d45 | 205 | bool Dualshock3::r2_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 206 | { |
| Kize | 0:4289fbe66d45 | 207 | if(button_state & R2){ |
| Kize | 0:4289fbe66d45 | 208 | return true; |
| Kize | 0:4289fbe66d45 | 209 | }else{ |
| Kize | 0:4289fbe66d45 | 210 | return 0; |
| Kize | 0:4289fbe66d45 | 211 | } |
| Kize | 0:4289fbe66d45 | 212 | } |
| Kize | 0:4289fbe66d45 | 213 | |
| Kize | 0:4289fbe66d45 | 214 | bool Dualshock3::start_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 215 | { |
| Kize | 0:4289fbe66d45 | 216 | if((button_state & START) == START){ |
| Kize | 0:4289fbe66d45 | 217 | return true; |
| Kize | 0:4289fbe66d45 | 218 | }else{ |
| Kize | 0:4289fbe66d45 | 219 | return 0; |
| Kize | 0:4289fbe66d45 | 220 | } |
| Kize | 0:4289fbe66d45 | 221 | } |
| Kize | 0:4289fbe66d45 | 222 | |
| Kize | 0:4289fbe66d45 | 223 | bool Dualshock3::select_is_pushed(void) |
| Kize | 0:4289fbe66d45 | 224 | { |
| Kize | 0:4289fbe66d45 | 225 | if((button_state & SELECT) == SELECT){ |
| Kize | 0:4289fbe66d45 | 226 | return true; |
| Kize | 0:4289fbe66d45 | 227 | }else{ |
| Kize | 0:4289fbe66d45 | 228 | return 0; |
| Kize | 0:4289fbe66d45 | 229 | } |
| Kize | 0:4289fbe66d45 | 230 | } |
| Kize | 0:4289fbe66d45 | 231 | |
| Kize | 0:4289fbe66d45 | 232 | float Dualshock3::get_left_stick_x(void) |
| Kize | 0:4289fbe66d45 | 233 | { |
| Kize | 0:4289fbe66d45 | 234 | return (float)(data[3] - CENTER_STICK_VAL) / CENTER_STICK_VAL; |
| Kize | 0:4289fbe66d45 | 235 | } |
| Kize | 0:4289fbe66d45 | 236 | |
| Kize | 0:4289fbe66d45 | 237 | float Dualshock3::get_left_stick_y(void) |
| Kize | 0:4289fbe66d45 | 238 | { |
| Kize | 0:4289fbe66d45 | 239 | return -(float)(data[4] - CENTER_STICK_VAL) / CENTER_STICK_VAL; |
| Kize | 0:4289fbe66d45 | 240 | } |
| Kize | 0:4289fbe66d45 | 241 | |
| Kize | 0:4289fbe66d45 | 242 | float Dualshock3::get_right_stick_x(void) |
| Kize | 0:4289fbe66d45 | 243 | { |
| Kize | 0:4289fbe66d45 | 244 | return (float)(data[5] - CENTER_STICK_VAL) / CENTER_STICK_VAL; |
| Kize | 0:4289fbe66d45 | 245 | } |
| Kize | 0:4289fbe66d45 | 246 | |
| Kize | 0:4289fbe66d45 | 247 | float Dualshock3::get_right_stick_y(void) |
| Kize | 0:4289fbe66d45 | 248 | { |
| Kize | 0:4289fbe66d45 | 249 | return -(float)(data[6] - CENTER_STICK_VAL) / CENTER_STICK_VAL; |
| Kize | 0:4289fbe66d45 | 250 | } |
| Kize | 0:4289fbe66d45 | 251 | |
| Kize | 0:4289fbe66d45 | 252 | bool Dualshock3::circle_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 253 | { |
| Kize | 0:4289fbe66d45 | 254 | if(button_risen & CIRCLE){ |
| Kize | 0:4289fbe66d45 | 255 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 256 | return true; |
| Kize | 0:4289fbe66d45 | 257 | }else{ |
| Kize | 0:4289fbe66d45 | 258 | return 0; |
| Kize | 0:4289fbe66d45 | 259 | } |
| Kize | 0:4289fbe66d45 | 260 | } |
| Kize | 0:4289fbe66d45 | 261 | |
| Kize | 0:4289fbe66d45 | 262 | bool Dualshock3::cross_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 263 | { |
| Kize | 0:4289fbe66d45 | 264 | if(button_risen & CROSS){ |
| Kize | 0:4289fbe66d45 | 265 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 266 | return true; |
| Kize | 0:4289fbe66d45 | 267 | }else{ |
| Kize | 0:4289fbe66d45 | 268 | return 0; |
| Kize | 0:4289fbe66d45 | 269 | } |
| Kize | 0:4289fbe66d45 | 270 | } |
| Kize | 0:4289fbe66d45 | 271 | |
| Kize | 0:4289fbe66d45 | 272 | bool Dualshock3::rectangle_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 273 | { |
| Kize | 0:4289fbe66d45 | 274 | if(button_risen & RECTANGLE){ |
| Kize | 0:4289fbe66d45 | 275 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 276 | return true; |
| Kize | 0:4289fbe66d45 | 277 | }else{ |
| Kize | 0:4289fbe66d45 | 278 | return 0; |
| Kize | 0:4289fbe66d45 | 279 | } |
| Kize | 0:4289fbe66d45 | 280 | } |
| Kize | 0:4289fbe66d45 | 281 | |
| Kize | 0:4289fbe66d45 | 282 | bool Dualshock3::triangle_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 283 | { |
| Kize | 0:4289fbe66d45 | 284 | if(button_risen & TRIANGLE){ |
| Kize | 0:4289fbe66d45 | 285 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 286 | return true; |
| Kize | 0:4289fbe66d45 | 287 | }else{ |
| Kize | 0:4289fbe66d45 | 288 | return 0; |
| Kize | 0:4289fbe66d45 | 289 | } |
| Kize | 0:4289fbe66d45 | 290 | } |
| Kize | 0:4289fbe66d45 | 291 | |
| Kize | 0:4289fbe66d45 | 292 | bool Dualshock3::up_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 293 | { |
| Kize | 0:4289fbe66d45 | 294 | if(button_risen & UP){ |
| Kize | 0:4289fbe66d45 | 295 | if(up_is_pushed()){ |
| Kize | 0:4289fbe66d45 | 296 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 297 | return true; |
| Kize | 0:4289fbe66d45 | 298 | }else{ |
| Kize | 0:4289fbe66d45 | 299 | return 0; |
| Kize | 0:4289fbe66d45 | 300 | } |
| Kize | 0:4289fbe66d45 | 301 | }else{ |
| Kize | 0:4289fbe66d45 | 302 | return 0; |
| Kize | 0:4289fbe66d45 | 303 | } |
| Kize | 0:4289fbe66d45 | 304 | } |
| Kize | 0:4289fbe66d45 | 305 | |
| Kize | 0:4289fbe66d45 | 306 | bool Dualshock3::down_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 307 | { |
| Kize | 0:4289fbe66d45 | 308 | if(button_risen & DOWN){ |
| Kize | 0:4289fbe66d45 | 309 | if(down_is_pushed()){ |
| Kize | 0:4289fbe66d45 | 310 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 311 | return true; |
| Kize | 0:4289fbe66d45 | 312 | }else{ |
| Kize | 0:4289fbe66d45 | 313 | return 0; |
| Kize | 0:4289fbe66d45 | 314 | } |
| Kize | 0:4289fbe66d45 | 315 | }else{ |
| Kize | 0:4289fbe66d45 | 316 | return 0; |
| Kize | 0:4289fbe66d45 | 317 | } |
| Kize | 0:4289fbe66d45 | 318 | } |
| Kize | 0:4289fbe66d45 | 319 | |
| Kize | 0:4289fbe66d45 | 320 | bool Dualshock3::left_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 321 | { |
| Kize | 0:4289fbe66d45 | 322 | if(button_risen & LEFT){ |
| Kize | 0:4289fbe66d45 | 323 | if(left_is_pushed()){ |
| Kize | 0:4289fbe66d45 | 324 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 325 | return true; |
| Kize | 0:4289fbe66d45 | 326 | }else{ |
| Kize | 0:4289fbe66d45 | 327 | return 0; |
| Kize | 0:4289fbe66d45 | 328 | } |
| Kize | 0:4289fbe66d45 | 329 | }else{ |
| Kize | 0:4289fbe66d45 | 330 | return 0; |
| Kize | 0:4289fbe66d45 | 331 | } |
| Kize | 0:4289fbe66d45 | 332 | } |
| Kize | 0:4289fbe66d45 | 333 | |
| Kize | 0:4289fbe66d45 | 334 | bool Dualshock3::right_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 335 | { |
| Kize | 0:4289fbe66d45 | 336 | if(button_risen & RIGHT){ |
| Kize | 0:4289fbe66d45 | 337 | if(right_is_pushed()){ |
| Kize | 0:4289fbe66d45 | 338 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 339 | return true; |
| Kize | 0:4289fbe66d45 | 340 | }else{ |
| Kize | 0:4289fbe66d45 | 341 | return 0; |
| Kize | 0:4289fbe66d45 | 342 | } |
| Kize | 0:4289fbe66d45 | 343 | }else{ |
| Kize | 0:4289fbe66d45 | 344 | return 0; |
| Kize | 0:4289fbe66d45 | 345 | } |
| Kize | 0:4289fbe66d45 | 346 | } |
| Kize | 0:4289fbe66d45 | 347 | |
| Kize | 0:4289fbe66d45 | 348 | bool Dualshock3::l1_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 349 | { |
| Kize | 0:4289fbe66d45 | 350 | if(button_risen & L1){ |
| Kize | 0:4289fbe66d45 | 351 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 352 | return true; |
| Kize | 0:4289fbe66d45 | 353 | }else{ |
| Kize | 0:4289fbe66d45 | 354 | return 0; |
| Kize | 0:4289fbe66d45 | 355 | } |
| Kize | 0:4289fbe66d45 | 356 | } |
| Kize | 0:4289fbe66d45 | 357 | |
| Kize | 0:4289fbe66d45 | 358 | bool Dualshock3::l2_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 359 | { |
| Kize | 0:4289fbe66d45 | 360 | if(button_risen & L2){ |
| Kize | 0:4289fbe66d45 | 361 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 362 | return true; |
| Kize | 0:4289fbe66d45 | 363 | }else{ |
| Kize | 0:4289fbe66d45 | 364 | return 0; |
| Kize | 0:4289fbe66d45 | 365 | } |
| Kize | 0:4289fbe66d45 | 366 | } |
| Kize | 0:4289fbe66d45 | 367 | |
| Kize | 0:4289fbe66d45 | 368 | bool Dualshock3::r1_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 369 | { |
| Kize | 0:4289fbe66d45 | 370 | if(button_risen & R1){ |
| Kize | 0:4289fbe66d45 | 371 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 372 | return true; |
| Kize | 0:4289fbe66d45 | 373 | }else{ |
| Kize | 0:4289fbe66d45 | 374 | return 0; |
| Kize | 0:4289fbe66d45 | 375 | } |
| Kize | 0:4289fbe66d45 | 376 | } |
| Kize | 0:4289fbe66d45 | 377 | |
| Kize | 0:4289fbe66d45 | 378 | bool Dualshock3::r2_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 379 | { |
| Kize | 0:4289fbe66d45 | 380 | if(button_risen & R2){ |
| Kize | 0:4289fbe66d45 | 381 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 382 | return true; |
| Kize | 0:4289fbe66d45 | 383 | }else{ |
| Kize | 0:4289fbe66d45 | 384 | return 0; |
| Kize | 0:4289fbe66d45 | 385 | } |
| Kize | 0:4289fbe66d45 | 386 | } |
| Kize | 0:4289fbe66d45 | 387 | |
| Kize | 0:4289fbe66d45 | 388 | bool Dualshock3::start_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 389 | { |
| Kize | 0:4289fbe66d45 | 390 | if((button_risen & START) == START){ |
| Kize | 0:4289fbe66d45 | 391 | if(start_is_pushed()){ |
| Kize | 0:4289fbe66d45 | 392 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 393 | return true; |
| Kize | 0:4289fbe66d45 | 394 | }else{ |
| Kize | 0:4289fbe66d45 | 395 | return 0; |
| Kize | 0:4289fbe66d45 | 396 | } |
| Kize | 0:4289fbe66d45 | 397 | }else{ |
| Kize | 0:4289fbe66d45 | 398 | return 0; |
| Kize | 0:4289fbe66d45 | 399 | } |
| Kize | 0:4289fbe66d45 | 400 | } |
| Kize | 0:4289fbe66d45 | 401 | |
| Kize | 0:4289fbe66d45 | 402 | bool Dualshock3::select_has_been_pushed(void) |
| Kize | 0:4289fbe66d45 | 403 | { |
| Kize | 0:4289fbe66d45 | 404 | if((button_risen & SELECT) == SELECT){ |
| Kize | 0:4289fbe66d45 | 405 | if(select_is_pushed()){ |
| Kize | 0:4289fbe66d45 | 406 | button_risen = 0; |
| Kize | 0:4289fbe66d45 | 407 | return true; |
| Kize | 0:4289fbe66d45 | 408 | }else{ |
| Kize | 0:4289fbe66d45 | 409 | return 0; |
| Kize | 0:4289fbe66d45 | 410 | } |
| Kize | 0:4289fbe66d45 | 411 | }else{ |
| Kize | 0:4289fbe66d45 | 412 | return 0; |
| Kize | 0:4289fbe66d45 | 413 | } |
| Kize | 0:4289fbe66d45 | 414 | } |
| Kize | 0:4289fbe66d45 | 415 | |
| Kize | 0:4289fbe66d45 | 416 | void Dualshock3::get_all_buttons_info(int buttons_info[14]){ |
| Kize | 0:4289fbe66d45 | 417 | /* |
| Kize | 0:4289fbe66d45 | 418 | for(int i=0;i<14;i++){ |
| Kize | 0:4289fbe66d45 | 419 | buttons_info[i] = 0; |
| Kize | 0:4289fbe66d45 | 420 | } |
| Kize | 0:4289fbe66d45 | 421 | */ |
| Kize | 0:4289fbe66d45 | 422 | |
| Kize | 0:4289fbe66d45 | 423 | buttons_info[0] = select_is_pushed(); |
| Kize | 0:4289fbe66d45 | 424 | buttons_info[1] = start_is_pushed(); |
| Kize | 0:4289fbe66d45 | 425 | buttons_info[2] = up_is_pushed(); |
| Kize | 0:4289fbe66d45 | 426 | buttons_info[3] = right_is_pushed(); |
| Kize | 0:4289fbe66d45 | 427 | buttons_info[4] = down_is_pushed(); |
| Kize | 0:4289fbe66d45 | 428 | buttons_info[5] = left_is_pushed(); |
| Kize | 0:4289fbe66d45 | 429 | buttons_info[6] = l2_is_pushed(); |
| Kize | 0:4289fbe66d45 | 430 | buttons_info[7] = r2_is_pushed(); |
| Kize | 0:4289fbe66d45 | 431 | buttons_info[8] = l1_is_pushed(); |
| Kize | 0:4289fbe66d45 | 432 | buttons_info[9] = r1_is_pushed(); |
| Kize | 0:4289fbe66d45 | 433 | buttons_info[10] = triangle_is_pushed(); |
| Kize | 0:4289fbe66d45 | 434 | buttons_info[11] = circle_is_pushed(); |
| Kize | 0:4289fbe66d45 | 435 | buttons_info[12] = cross_is_pushed(); |
| Kize | 0:4289fbe66d45 | 436 | buttons_info[13] = rectangle_is_pushed(); |
| Kize | 0:4289fbe66d45 | 437 | } |
| Kize | 0:4289fbe66d45 | 438 | |
| Kize | 0:4289fbe66d45 | 439 | void Dualshock3::get_all_sticks_info(float sticks_info[4]){ |
| Kize | 0:4289fbe66d45 | 440 | sticks_info[0] = get_left_stick_x(); |
| Kize | 0:4289fbe66d45 | 441 | sticks_info[1] = get_left_stick_y(); |
| Kize | 0:4289fbe66d45 | 442 | sticks_info[2] = get_right_stick_x(); |
| Kize | 0:4289fbe66d45 | 443 | sticks_info[3] = get_right_stick_y(); |
| Kize | 0:4289fbe66d45 | 444 | } |