Based on Peter Barrett\'s work on BlueUSB, I added support for the PS3 Sixaxis controller (both USB and Bluetooth). When connecting a Sixaxis via USB, it will be paired with the (hardcoded) MAC address of my Bluetooth dongle.

Dependencies:   mbed

Dependents:   PS3_BlueUSB_downstate

Committer:
BartJanssens
Date:
Tue Apr 26 16:09:17 2011 +0000
Revision:
0:99a111b75cb4

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BartJanssens 0:99a111b75cb4 1 /*
BartJanssens 0:99a111b75cb4 2 Copyright (c) 2010 Peter Barrett
BartJanssens 0:99a111b75cb4 3
BartJanssens 0:99a111b75cb4 4 Permission is hereby granted, free of charge, to any person obtaining a copy
BartJanssens 0:99a111b75cb4 5 of this software and associated documentation files (the "Software"), to deal
BartJanssens 0:99a111b75cb4 6 in the Software without restriction, including without limitation the rights
BartJanssens 0:99a111b75cb4 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
BartJanssens 0:99a111b75cb4 8 copies of the Software, and to permit persons to whom the Software is
BartJanssens 0:99a111b75cb4 9 furnished to do so, subject to the following conditions:
BartJanssens 0:99a111b75cb4 10
BartJanssens 0:99a111b75cb4 11 The above copyright notice and this permission notice shall be included in
BartJanssens 0:99a111b75cb4 12 all copies or substantial portions of the Software.
BartJanssens 0:99a111b75cb4 13
BartJanssens 0:99a111b75cb4 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
BartJanssens 0:99a111b75cb4 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
BartJanssens 0:99a111b75cb4 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
BartJanssens 0:99a111b75cb4 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
BartJanssens 0:99a111b75cb4 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
BartJanssens 0:99a111b75cb4 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
BartJanssens 0:99a111b75cb4 20 THE SOFTWARE.
BartJanssens 0:99a111b75cb4 21 */
BartJanssens 0:99a111b75cb4 22
BartJanssens 0:99a111b75cb4 23 /*
BartJanssens 0:99a111b75cb4 24 Tue Apr 26 2011 Bart Janssens: added PS3 USB support
BartJanssens 0:99a111b75cb4 25 */
BartJanssens 0:99a111b75cb4 26
BartJanssens 0:99a111b75cb4 27 #include <stdio.h>
BartJanssens 0:99a111b75cb4 28 #include <stdlib.h>
BartJanssens 0:99a111b75cb4 29 #include <stdio.h>
BartJanssens 0:99a111b75cb4 30 #include <string.h>
BartJanssens 0:99a111b75cb4 31
BartJanssens 0:99a111b75cb4 32 #include "USBHost.h"
BartJanssens 0:99a111b75cb4 33 #include "Utils.h"
BartJanssens 0:99a111b75cb4 34 #include "ps3.h"
BartJanssens 0:99a111b75cb4 35
BartJanssens 0:99a111b75cb4 36 #define AUTOEVT(_class,_subclass,_protocol) (((_class) << 16) | ((_subclass) << 8) | _protocol)
BartJanssens 0:99a111b75cb4 37 #define AUTO_KEYBOARD AUTOEVT(CLASS_HID,1,1)
BartJanssens 0:99a111b75cb4 38 #define AUTO_MOUSE AUTOEVT(CLASS_HID,1,2)
BartJanssens 0:99a111b75cb4 39 //#define AUTO_PS3 AUTOEVT(CLASS_HID,0,0)
BartJanssens 0:99a111b75cb4 40
BartJanssens 0:99a111b75cb4 41 u8 auto_mouse[4]; // buttons,dx,dy,scroll
BartJanssens 0:99a111b75cb4 42 u8 auto_keyboard[8]; // modifiers,reserved,keycode1..keycode6
BartJanssens 0:99a111b75cb4 43 u8 auto_joystick[4]; // x,y,buttons,throttle
BartJanssens 0:99a111b75cb4 44 //u8 auto_ps3[48];
BartJanssens 0:99a111b75cb4 45
BartJanssens 0:99a111b75cb4 46
BartJanssens 0:99a111b75cb4 47
BartJanssens 0:99a111b75cb4 48
BartJanssens 0:99a111b75cb4 49 void AutoEventCallback(int device, int endpoint, int status, u8* data, int len, void* userData)
BartJanssens 0:99a111b75cb4 50 {
BartJanssens 0:99a111b75cb4 51 int evt = (int)userData;
BartJanssens 0:99a111b75cb4 52 switch (evt)
BartJanssens 0:99a111b75cb4 53 {
BartJanssens 0:99a111b75cb4 54 case AUTO_KEYBOARD:
BartJanssens 0:99a111b75cb4 55 printf("AUTO_KEYBOARD ");
BartJanssens 0:99a111b75cb4 56 break;
BartJanssens 0:99a111b75cb4 57 case AUTO_MOUSE:
BartJanssens 0:99a111b75cb4 58 printf("AUTO_MOUSE ");
BartJanssens 0:99a111b75cb4 59 break;
BartJanssens 0:99a111b75cb4 60 // case AUTO_PS3:
BartJanssens 0:99a111b75cb4 61 // printf("AUTO_PS3 ");
BartJanssens 0:99a111b75cb4 62 // ParsePs3Report(data,len);
BartJanssens 0:99a111b75cb4 63 // break;
BartJanssens 0:99a111b75cb4 64 default:
BartJanssens 0:99a111b75cb4 65 printf("HUH ");
BartJanssens 0:99a111b75cb4 66 }
BartJanssens 0:99a111b75cb4 67 //printfBytes("data",data,len);
BartJanssens 0:99a111b75cb4 68 USBInterruptTransfer(device,endpoint,data,len,AutoEventCallback,userData);
BartJanssens 0:99a111b75cb4 69 }
BartJanssens 0:99a111b75cb4 70
BartJanssens 0:99a111b75cb4 71 // Establish transfers for interrupt events
BartJanssens 0:99a111b75cb4 72 void AddAutoEvent(int device, InterfaceDescriptor* id, EndpointDescriptor* ed)
BartJanssens 0:99a111b75cb4 73 {
BartJanssens 0:99a111b75cb4 74 printf("message from endpoint %02X\r\n",ed->bEndpointAddress);
BartJanssens 0:99a111b75cb4 75 printf("Class Sub Proto: %02X %02X %02X\r\n",id->bInterfaceClass,id->bInterfaceSubClass,id->bInterfaceProtocol);
BartJanssens 0:99a111b75cb4 76 //if ((ed->bmAttributes & 3) != ENDPOINT_INTERRUPT || !(ed->bEndpointAddress & 0x80))
BartJanssens 0:99a111b75cb4 77 // return;
BartJanssens 0:99a111b75cb4 78
BartJanssens 0:99a111b75cb4 79 // Make automatic interrupt enpoints for known devices
BartJanssens 0:99a111b75cb4 80 u32 evt = AUTOEVT(id->bInterfaceClass,id->bInterfaceSubClass,id->bInterfaceProtocol);
BartJanssens 0:99a111b75cb4 81 printf("Evt: %08X \r\n",evt);
BartJanssens 0:99a111b75cb4 82 u8* dst = 0;
BartJanssens 0:99a111b75cb4 83 int len;
BartJanssens 0:99a111b75cb4 84 switch (evt)
BartJanssens 0:99a111b75cb4 85 {
BartJanssens 0:99a111b75cb4 86 case AUTO_MOUSE:
BartJanssens 0:99a111b75cb4 87 dst = auto_mouse;
BartJanssens 0:99a111b75cb4 88 len = sizeof(auto_mouse);
BartJanssens 0:99a111b75cb4 89 break;
BartJanssens 0:99a111b75cb4 90 case AUTO_KEYBOARD:
BartJanssens 0:99a111b75cb4 91 dst = auto_keyboard;
BartJanssens 0:99a111b75cb4 92 len = sizeof(auto_keyboard);
BartJanssens 0:99a111b75cb4 93 break;
BartJanssens 0:99a111b75cb4 94 // case AUTO_PS3:
BartJanssens 0:99a111b75cb4 95 // printf("PS3 event ? \r\n");
BartJanssens 0:99a111b75cb4 96 // dst = auto_ps3;
BartJanssens 0:99a111b75cb4 97 // len = sizeof(auto_ps3);
BartJanssens 0:99a111b75cb4 98 default:
BartJanssens 0:99a111b75cb4 99 printf("Interrupt endpoint %02X %08X\r\n",ed->bEndpointAddress,evt);
BartJanssens 0:99a111b75cb4 100 break;
BartJanssens 0:99a111b75cb4 101 }
BartJanssens 0:99a111b75cb4 102 if (dst)
BartJanssens 0:99a111b75cb4 103 {
BartJanssens 0:99a111b75cb4 104 printf("Auto Event for %02X %08X\r\n",ed->bEndpointAddress,evt);
BartJanssens 0:99a111b75cb4 105 USBInterruptTransfer(device,ed->bEndpointAddress,dst,len,AutoEventCallback,(void*)evt);
BartJanssens 0:99a111b75cb4 106 }
BartJanssens 0:99a111b75cb4 107 }
BartJanssens 0:99a111b75cb4 108
BartJanssens 0:99a111b75cb4 109 void PrintString(int device, int i)
BartJanssens 0:99a111b75cb4 110 {
BartJanssens 0:99a111b75cb4 111 u8 buffer[256];
BartJanssens 0:99a111b75cb4 112 int le = GetDescriptor(device,DESCRIPTOR_TYPE_STRING,i,buffer,255);
BartJanssens 0:99a111b75cb4 113 if (le < 0)
BartJanssens 0:99a111b75cb4 114 return;
BartJanssens 0:99a111b75cb4 115 char* dst = (char*)buffer;
BartJanssens 0:99a111b75cb4 116 for (int j = 2; j < le; j += 2)
BartJanssens 0:99a111b75cb4 117 *dst++ = buffer[j];
BartJanssens 0:99a111b75cb4 118 *dst = 0;
BartJanssens 0:99a111b75cb4 119 printf("%d:%s\r\n",i,(const char*)buffer);
BartJanssens 0:99a111b75cb4 120 }
BartJanssens 0:99a111b75cb4 121
BartJanssens 0:99a111b75cb4 122 // Walk descriptors and create endpoints for a given device
BartJanssens 0:99a111b75cb4 123 int StartAutoEvent(int device, int configuration, int interfaceNumber)
BartJanssens 0:99a111b75cb4 124 {
BartJanssens 0:99a111b75cb4 125
BartJanssens 0:99a111b75cb4 126 printf("StartAutoEvent \r\n");
BartJanssens 0:99a111b75cb4 127
BartJanssens 0:99a111b75cb4 128 u8 buffer[255];
BartJanssens 0:99a111b75cb4 129 int err = GetDescriptor(device,DESCRIPTOR_TYPE_CONFIGURATION,0,buffer,255);
BartJanssens 0:99a111b75cb4 130 if (err < 0)
BartJanssens 0:99a111b75cb4 131 return err;
BartJanssens 0:99a111b75cb4 132
BartJanssens 0:99a111b75cb4 133 int len = buffer[2] | (buffer[3] << 8);
BartJanssens 0:99a111b75cb4 134 u8* d = buffer;
BartJanssens 0:99a111b75cb4 135 u8* end = d + len;
BartJanssens 0:99a111b75cb4 136 while (d < end)
BartJanssens 0:99a111b75cb4 137 {
BartJanssens 0:99a111b75cb4 138 if (d[1] == DESCRIPTOR_TYPE_INTERFACE)
BartJanssens 0:99a111b75cb4 139 {
BartJanssens 0:99a111b75cb4 140 InterfaceDescriptor* id = (InterfaceDescriptor*)d;
BartJanssens 0:99a111b75cb4 141 if (id->bInterfaceNumber == interfaceNumber)
BartJanssens 0:99a111b75cb4 142 {
BartJanssens 0:99a111b75cb4 143 d += d[0];
BartJanssens 0:99a111b75cb4 144 while (d < end && d[1] != DESCRIPTOR_TYPE_INTERFACE)
BartJanssens 0:99a111b75cb4 145 {
BartJanssens 0:99a111b75cb4 146 if (d[1] == DESCRIPTOR_TYPE_ENDPOINT)
BartJanssens 0:99a111b75cb4 147 AddAutoEvent(device,id,(EndpointDescriptor*)d);
BartJanssens 0:99a111b75cb4 148 d += d[0];
BartJanssens 0:99a111b75cb4 149 }
BartJanssens 0:99a111b75cb4 150 }
BartJanssens 0:99a111b75cb4 151 }
BartJanssens 0:99a111b75cb4 152 d += d[0];
BartJanssens 0:99a111b75cb4 153 }
BartJanssens 0:99a111b75cb4 154 return 0;
BartJanssens 0:99a111b75cb4 155 }
BartJanssens 0:99a111b75cb4 156
BartJanssens 0:99a111b75cb4 157 /*
BartJanssens 0:99a111b75cb4 158 int StartPS3Event(int device, int configuration, int interfaceNumber)
BartJanssens 0:99a111b75cb4 159 {
BartJanssens 0:99a111b75cb4 160
BartJanssens 0:99a111b75cb4 161 printf("StartPS3Event \r\n");
BartJanssens 0:99a111b75cb4 162
BartJanssens 0:99a111b75cb4 163 EndpointDescriptor* ep;
BartJanssens 0:99a111b75cb4 164
BartJanssens 0:99a111b75cb4 165 u8 buf[4];
BartJanssens 0:99a111b75cb4 166 buf[0] = 0x42;
BartJanssens 0:99a111b75cb4 167 buf[1] = 0x0c;
BartJanssens 0:99a111b75cb4 168 buf[2] = 0x00;
BartJanssens 0:99a111b75cb4 169 buf[3] = 0x00;
BartJanssens 0:99a111b75cb4 170
BartJanssens 0:99a111b75cb4 171 u8 buf2[8];
BartJanssens 0:99a111b75cb4 172 u8 buf3[8];
BartJanssens 0:99a111b75cb4 173
BartJanssens 0:99a111b75cb4 174 buf2[0] = 0x01;
BartJanssens 0:99a111b75cb4 175 buf2[1] = 0x00;
BartJanssens 0:99a111b75cb4 176 buf2[2] = 0x00;
BartJanssens 0:99a111b75cb4 177 buf2[3] = 0x02;
BartJanssens 0:99a111b75cb4 178 buf2[4] = 0x72;
BartJanssens 0:99a111b75cb4 179 buf2[5] = 0xAD;
BartJanssens 0:99a111b75cb4 180 buf2[6] = 0xF3;
BartJanssens 0:99a111b75cb4 181 buf2[7] = 0x5B;
BartJanssens 0:99a111b75cb4 182
BartJanssens 0:99a111b75cb4 183
BartJanssens 0:99a111b75cb4 184
BartJanssens 0:99a111b75cb4 185
BartJanssens 0:99a111b75cb4 186 int result;
BartJanssens 0:99a111b75cb4 187 int err;
BartJanssens 0:99a111b75cb4 188
BartJanssens 0:99a111b75cb4 189 u8 buffer[255];
BartJanssens 0:99a111b75cb4 190 err = GetDescriptor(device,DESCRIPTOR_TYPE_CONFIGURATION,0,buffer,255);
BartJanssens 0:99a111b75cb4 191 if (err < 0)
BartJanssens 0:99a111b75cb4 192 return err;
BartJanssens 0:99a111b75cb4 193
BartJanssens 0:99a111b75cb4 194
BartJanssens 0:99a111b75cb4 195
BartJanssens 0:99a111b75cb4 196 //configure the device
BartJanssens 0:99a111b75cb4 197 //err = USBControlTransfer(device, HOST_TO_DEVICE|REQUEST_TYPE_STANDARD|RECIPIENT_DEVICE, SET_CONFIGURATION, 1, 0, 0, 0, 0, 0 );
BartJanssens 0:99a111b75cb4 198 err = SetConfiguration(device,1);
BartJanssens 0:99a111b75cb4 199 printf("set config result = %d\r\n", err);
BartJanssens 0:99a111b75cb4 200
BartJanssens 0:99a111b75cb4 201 // get Mac address
BartJanssens 0:99a111b75cb4 202 //err = USBControlTransfer(device, HOST_TO_DEVICE|REQUEST_TYPE_CLASS|RECIPIENT_DEVICE, HID_REQUEST_GET_REPORT, 0x03f5, 0, buf3, sizeof(buf3), 0, 0 );
BartJanssens 0:99a111b75cb4 203 //printf("get Mac to %02X:%02X:%02X:%02X:%02X:%02X , result = %d\r\n", buf3[2], buf3[3], buf3[4], buf3[5], buf3[6], buf3[7], err);
BartJanssens 0:99a111b75cb4 204
BartJanssens 0:99a111b75cb4 205 // set Mac address
BartJanssens 0:99a111b75cb4 206 err = USBControlTransfer(device, HOST_TO_DEVICE|REQUEST_TYPE_CLASS|RECIPIENT_INTERFACE, HID_REQUEST_SET_REPORT, 0x03f5, 0, buf2, sizeof(buf2), 0, 0 );
BartJanssens 0:99a111b75cb4 207 printf("set Mac to %02X:%02X:%02X:%02X:%02X:%02X , result = %d\r\n", buf2[2], buf2[3], buf2[4], buf2[5], buf2[6], buf2[7], err);
BartJanssens 0:99a111b75cb4 208
BartJanssens 0:99a111b75cb4 209 // get Mac address
BartJanssens 0:99a111b75cb4 210 //err = USBControlTransfer(device, HOST_TO_DEVICE|REQUEST_TYPE_CLASS|RECIPIENT_DEVICE, HID_REQUEST_GET_REPORT, 0x03f5, 0, buf3, sizeof(buf3), 0, 0 );
BartJanssens 0:99a111b75cb4 211 //printf("get Mac to %02X:%02X:%02X:%02X:%02X:%02X , result = %d\r\n", buf3[2], buf3[3], buf3[4], buf3[5], buf3[6], buf3[7], err);
BartJanssens 0:99a111b75cb4 212
BartJanssens 0:99a111b75cb4 213 err = USBControlTransfer(device, HOST_TO_DEVICE|REQUEST_TYPE_CLASS|RECIPIENT_INTERFACE, HID_REQUEST_SET_REPORT, 0x03f4,0, buf, sizeof(buf), 0, 0 );
BartJanssens 0:99a111b75cb4 214 printf("set report result = %d\r\n", err);
BartJanssens 0:99a111b75cb4 215 //USBTransfer(device,0,DEVICE_TO_HOST,buf,sizeof(buf),0,0);
BartJanssens 0:99a111b75cb4 216
BartJanssens 0:99a111b75cb4 217 int len = buffer[2] | (buffer[3] << 8);
BartJanssens 0:99a111b75cb4 218 u8* d = buffer;
BartJanssens 0:99a111b75cb4 219 u8* end = d + len;
BartJanssens 0:99a111b75cb4 220 while (d < end)
BartJanssens 0:99a111b75cb4 221 {
BartJanssens 0:99a111b75cb4 222 if (d[1] == DESCRIPTOR_TYPE_INTERFACE)
BartJanssens 0:99a111b75cb4 223 {
BartJanssens 0:99a111b75cb4 224 InterfaceDescriptor* id = (InterfaceDescriptor*)d;
BartJanssens 0:99a111b75cb4 225 if (id->bInterfaceNumber == interfaceNumber)
BartJanssens 0:99a111b75cb4 226 {
BartJanssens 0:99a111b75cb4 227 d += d[0];
BartJanssens 0:99a111b75cb4 228 while (d < end && d[1] != DESCRIPTOR_TYPE_INTERFACE)
BartJanssens 0:99a111b75cb4 229 {
BartJanssens 0:99a111b75cb4 230 if (d[1] == DESCRIPTOR_TYPE_ENDPOINT)
BartJanssens 0:99a111b75cb4 231 ep = (EndpointDescriptor*)d;
BartJanssens 0:99a111b75cb4 232
BartJanssens 0:99a111b75cb4 233 if (ep->bEndpointAddress == 0x02) {
BartJanssens 0:99a111b75cb4 234 printf("PS3 input endpoint (0x02) found\r\n");
BartJanssens 0:99a111b75cb4 235
BartJanssens 0:99a111b75cb4 236 }
BartJanssens 0:99a111b75cb4 237 if (ep->bEndpointAddress == 0x81) {
BartJanssens 0:99a111b75cb4 238 printf("PS3 output endpoint (0x81) found\r\n");
BartJanssens 0:99a111b75cb4 239 AddAutoEvent(device,id,(EndpointDescriptor*)d);
BartJanssens 0:99a111b75cb4 240 }
BartJanssens 0:99a111b75cb4 241 d += d[0];
BartJanssens 0:99a111b75cb4 242 }
BartJanssens 0:99a111b75cb4 243 }
BartJanssens 0:99a111b75cb4 244 }
BartJanssens 0:99a111b75cb4 245 d += d[0];
BartJanssens 0:99a111b75cb4 246 }
BartJanssens 0:99a111b75cb4 247 return 0;
BartJanssens 0:99a111b75cb4 248 }
BartJanssens 0:99a111b75cb4 249 */
BartJanssens 0:99a111b75cb4 250
BartJanssens 0:99a111b75cb4 251 // Implemented in main.cpp
BartJanssens 0:99a111b75cb4 252 int OnDiskInsert(int device);
BartJanssens 0:99a111b75cb4 253
BartJanssens 0:99a111b75cb4 254 // Implemented in TestShell.cpp
BartJanssens 0:99a111b75cb4 255 int OnBluetoothInsert(int device);
BartJanssens 0:99a111b75cb4 256
BartJanssens 0:99a111b75cb4 257 void OnLoadDevice(int device, DeviceDescriptor* deviceDesc, InterfaceDescriptor* interfaceDesc)
BartJanssens 0:99a111b75cb4 258 {
BartJanssens 0:99a111b75cb4 259 printf("LoadDevice %d %02X:%02X:%02X\r\n",device,interfaceDesc->bInterfaceClass,interfaceDesc->bInterfaceSubClass,interfaceDesc->bInterfaceProtocol);
BartJanssens 0:99a111b75cb4 260 char s[128];
BartJanssens 0:99a111b75cb4 261 u8 my_mac[6] = {0x00, 0x02, 0x72, 0xAD, 0xF3, 0x5B}; // mac address of my Bluetooth device
BartJanssens 0:99a111b75cb4 262
BartJanssens 0:99a111b75cb4 263 u8 buf2[6];
BartJanssens 0:99a111b75cb4 264
BartJanssens 0:99a111b75cb4 265 buf2[0] = 0x00;
BartJanssens 0:99a111b75cb4 266 buf2[1] = 0x02;
BartJanssens 0:99a111b75cb4 267 buf2[2] = 0x72;
BartJanssens 0:99a111b75cb4 268 buf2[3] = 0xAD;
BartJanssens 0:99a111b75cb4 269 buf2[4] = 0xF3;
BartJanssens 0:99a111b75cb4 270 buf2[5] = 0x5B;
BartJanssens 0:99a111b75cb4 271
BartJanssens 0:99a111b75cb4 272
BartJanssens 0:99a111b75cb4 273 for (int i = 1; i < 3; i++)
BartJanssens 0:99a111b75cb4 274 {
BartJanssens 0:99a111b75cb4 275 if (GetString(device,i,s,sizeof(s)) < 0)
BartJanssens 0:99a111b75cb4 276 break;
BartJanssens 0:99a111b75cb4 277 printf("%d: %s\r\n",i,s);
BartJanssens 0:99a111b75cb4 278 }
BartJanssens 0:99a111b75cb4 279
BartJanssens 0:99a111b75cb4 280 switch (interfaceDesc->bInterfaceClass)
BartJanssens 0:99a111b75cb4 281 {
BartJanssens 0:99a111b75cb4 282 case CLASS_MASS_STORAGE:
BartJanssens 0:99a111b75cb4 283 if (interfaceDesc->bInterfaceSubClass == 0x06 && interfaceDesc->bInterfaceProtocol == 0x50)
BartJanssens 0:99a111b75cb4 284 OnDiskInsert(device); // it's SCSI!
BartJanssens 0:99a111b75cb4 285 break;
BartJanssens 0:99a111b75cb4 286 case CLASS_WIRELESS_CONTROLLER:
BartJanssens 0:99a111b75cb4 287 if (interfaceDesc->bInterfaceSubClass == 0x01 && interfaceDesc->bInterfaceProtocol == 0x01)
BartJanssens 0:99a111b75cb4 288 OnBluetoothInsert(device); // it's bluetooth!
BartJanssens 0:99a111b75cb4 289 break;
BartJanssens 0:99a111b75cb4 290 case CLASS_HID:
BartJanssens 0:99a111b75cb4 291 printf("idVendor = %04X idProduct = %04X \r\n",deviceDesc->idVendor,deviceDesc->idProduct);
BartJanssens 0:99a111b75cb4 292 //printf("device = %d configuration = %d interfaceNumber = %d\r\n", device, configuration, interfaceNumber);
BartJanssens 0:99a111b75cb4 293 //if (deviceDesc->idVendor == 0x054C && deviceDesc->idProduct == 0x0268) StartPS3Event(device,1,0);
BartJanssens 0:99a111b75cb4 294 if (deviceDesc->idVendor == 0x054C && deviceDesc->idProduct == 0x0268) {
BartJanssens 0:99a111b75cb4 295 Ps3USB _Ps3USB(device,1,0);
BartJanssens 0:99a111b75cb4 296
BartJanssens 0:99a111b75cb4 297 _Ps3USB.SetPair(my_mac);
BartJanssens 0:99a111b75cb4 298 _Ps3USB.Enable();
BartJanssens 0:99a111b75cb4 299 _Ps3USB.Led(1);
BartJanssens 0:99a111b75cb4 300 _Ps3USB.Rumble(0x20,0xff,0x20,0xff);
BartJanssens 0:99a111b75cb4 301 _Ps3USB.ShowPair();
BartJanssens 0:99a111b75cb4 302
BartJanssens 0:99a111b75cb4 303 }
BartJanssens 0:99a111b75cb4 304 else StartAutoEvent(device,1,0);
BartJanssens 0:99a111b75cb4 305 break;
BartJanssens 0:99a111b75cb4 306 default:
BartJanssens 0:99a111b75cb4 307 printf("Not yet supported \r\n");
BartJanssens 0:99a111b75cb4 308 //StartAutoEvent(device,1,0);
BartJanssens 0:99a111b75cb4 309 break;
BartJanssens 0:99a111b75cb4 310 }
BartJanssens 0:99a111b75cb4 311 }