Test version of BlueUSB stack. Includes SDP and RFCOMM. As Client it allows to connect to my fischertechnik TX Controller. As Server it echo\\\\\\\'s characters to Putty. PIN=1234

Dependencies:   mbed myUSBHost AvailableMemory

Dependents:   mbed_TANK_Kinect myBlueUSB_ros ftusbClass

Committer:
networker
Date:
Mon Apr 04 16:41:03 2011 +0000
Revision:
0:81ed8b6e4a8b
initial revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
networker 0:81ed8b6e4a8b 1 #ifndef HCITRANSPORTUSB_H
networker 0:81ed8b6e4a8b 2 #define HCITRANSPORTUSB_H
networker 0:81ed8b6e4a8b 3 #define MAX_HCL_SIZE 260
networker 0:81ed8b6e4a8b 4 #define MAX_ACL_SIZE 400
networker 0:81ed8b6e4a8b 5 #include "USBHost.h"
networker 0:81ed8b6e4a8b 6
networker 0:81ed8b6e4a8b 7 extern int bulk;
networker 0:81ed8b6e4a8b 8
networker 0:81ed8b6e4a8b 9 class HCITransportUSB : public HCITransport {
networker 0:81ed8b6e4a8b 10 int _device;
networker 0:81ed8b6e4a8b 11 u8* _hciBuffer;
networker 0:81ed8b6e4a8b 12 u8* _aclBuffer;
networker 0:81ed8b6e4a8b 13
networker 0:81ed8b6e4a8b 14 public:
networker 0:81ed8b6e4a8b 15 void Open(int device, u8* hciBuffer, u8* aclBuffer) {
networker 0:81ed8b6e4a8b 16 _device = device;
networker 0:81ed8b6e4a8b 17 _hciBuffer = hciBuffer;
networker 0:81ed8b6e4a8b 18 _aclBuffer = aclBuffer;
networker 0:81ed8b6e4a8b 19 USBInterruptTransfer(_device,0x81,_hciBuffer,MAX_HCL_SIZE,HciCallback,this);
networker 0:81ed8b6e4a8b 20 USBBulkTransfer(_device,0x82,_aclBuffer,MAX_ACL_SIZE,AclCallback,this);
networker 0:81ed8b6e4a8b 21 }
networker 0:81ed8b6e4a8b 22
networker 0:81ed8b6e4a8b 23 static void HciCallback(int device, int endpoint, int status, u8* data, int len, void* userData) {
networker 0:81ed8b6e4a8b 24 HCI* t = ((HCITransportUSB*)userData)->_target;
networker 0:81ed8b6e4a8b 25 if (t)
networker 0:81ed8b6e4a8b 26 t->HCIRecv(data,len);
networker 0:81ed8b6e4a8b 27 USBInterruptTransfer(device,0x81,data,MAX_HCL_SIZE,HciCallback,userData);
networker 0:81ed8b6e4a8b 28 }
networker 0:81ed8b6e4a8b 29
networker 0:81ed8b6e4a8b 30 static void AclCallback(int device, int endpoint, int status, u8* data, int len, void* userData) {
networker 0:81ed8b6e4a8b 31 HCI* t = ((HCITransportUSB*)userData)->_target; //printf("ACL: %d bytes avail\n", len);
networker 0:81ed8b6e4a8b 32 if (t)
networker 0:81ed8b6e4a8b 33 t->ACLRecv(data,len);
networker 0:81ed8b6e4a8b 34 USBBulkTransfer(device,0x82,data,MAX_ACL_SIZE,AclCallback,userData);
networker 0:81ed8b6e4a8b 35 }
networker 0:81ed8b6e4a8b 36
networker 0:81ed8b6e4a8b 37 virtual void HCISend(const u8* data, int len) {
networker 0:81ed8b6e4a8b 38 USBControlTransfer(_device,REQUEST_TYPE_CLASS, 0, 0, 0,(u8*)data,len);
networker 0:81ed8b6e4a8b 39 }
networker 0:81ed8b6e4a8b 40
networker 0:81ed8b6e4a8b 41 virtual void ACLSend(const u8* data, int len) {
networker 0:81ed8b6e4a8b 42 USBBulkTransfer(_device,0x02,(u8*)data,len);
networker 0:81ed8b6e4a8b 43 }
networker 0:81ed8b6e4a8b 44 };
networker 0:81ed8b6e4a8b 45
networker 0:81ed8b6e4a8b 46 #endif