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:
Wed May 04 09:10:11 2011 +0000
Revision:
2:0118da9e5169
Better support for imcoming connections

Who changed what in which revision?

UserRevisionLine numberNew contents of line
networker 2:0118da9e5169 1 #ifndef HCITRANSPORTUSB_H
networker 2:0118da9e5169 2 #define HCITRANSPORTUSB_H
networker 2:0118da9e5169 3 #define MAX_HCL_SIZE 260
networker 2:0118da9e5169 4 #define MAX_ACL_SIZE 400
networker 2:0118da9e5169 5 #include "USBHost.h"
networker 2:0118da9e5169 6
networker 2:0118da9e5169 7 extern int bulk;
networker 2:0118da9e5169 8
networker 2:0118da9e5169 9 class HCITransportUSB : public HCITransport {
networker 2:0118da9e5169 10 int _device;
networker 2:0118da9e5169 11 u8* _hciBuffer;
networker 2:0118da9e5169 12 u8* _aclBuffer;
networker 2:0118da9e5169 13
networker 2:0118da9e5169 14 public:
networker 2:0118da9e5169 15 void Open(int device, u8* hciBuffer, u8* aclBuffer) {
networker 2:0118da9e5169 16 _device = device;
networker 2:0118da9e5169 17 _hciBuffer = hciBuffer;
networker 2:0118da9e5169 18 _aclBuffer = aclBuffer;
networker 2:0118da9e5169 19 USBInterruptTransfer(_device,0x81,_hciBuffer,MAX_HCL_SIZE,HciCallback,this);
networker 2:0118da9e5169 20 USBBulkTransfer(_device,0x82,_aclBuffer,MAX_ACL_SIZE,AclCallback,this);
networker 2:0118da9e5169 21 }
networker 2:0118da9e5169 22
networker 2:0118da9e5169 23 static void HciCallback(int device, int endpoint, int status, u8* data, int len, void* userData) {
networker 2:0118da9e5169 24 HCI* t = ((HCITransportUSB*)userData)->_target; //printf("HCI: %d bytes avail\n", len);
networker 2:0118da9e5169 25 if (t){
networker 2:0118da9e5169 26 printfBytes("HCICallback:", data, len);
networker 2:0118da9e5169 27 t->HCIRecv(data,len);
networker 2:0118da9e5169 28 }
networker 2:0118da9e5169 29 USBInterruptTransfer(device,0x81,data,MAX_HCL_SIZE,HciCallback,userData);
networker 2:0118da9e5169 30 }
networker 2:0118da9e5169 31
networker 2:0118da9e5169 32 static void AclCallback(int device, int endpoint, int status, u8* data, int len, void* userData) {
networker 2:0118da9e5169 33 HCI* t = ((HCITransportUSB*)userData)->_target; printf("ACL: %d bytes avail\n", len);
networker 2:0118da9e5169 34 if (t){
networker 2:0118da9e5169 35 printfBytes("ACLCallback:", data, len);
networker 2:0118da9e5169 36 t->ACLRecv(data,len);
networker 2:0118da9e5169 37 }
networker 2:0118da9e5169 38 printf("ACL Read pending..\n");
networker 2:0118da9e5169 39 USBBulkTransfer(device,0x82,data,MAX_ACL_SIZE,AclCallback,userData);
networker 2:0118da9e5169 40 }
networker 2:0118da9e5169 41
networker 2:0118da9e5169 42 virtual void HCISend(const u8* data, int len) {
networker 2:0118da9e5169 43 printfBytes("HCISend:", data, len);
networker 2:0118da9e5169 44 USBControlTransfer(_device,REQUEST_TYPE_CLASS, 0, 0, 0,(u8*)data,len);
networker 2:0118da9e5169 45 }
networker 2:0118da9e5169 46
networker 2:0118da9e5169 47 virtual int ACLSend(const u8* data, int len) { //printf("send %d bytes to usb\n", len);
networker 2:0118da9e5169 48 if (len > _acl_mtu) {
networker 2:0118da9e5169 49 printf("Max outgoing packet(%d) size exceeded, segmenting necessary, pktlen = %d\n", _acl_mtu, len);
networker 2:0118da9e5169 50 return 0;
networker 2:0118da9e5169 51 }
networker 2:0118da9e5169 52 #ifdef HOST_CONTR_FLOW
networker 2:0118da9e5169 53 if (data_credits == 0)
networker 2:0118da9e5169 54 printf("Waiting for ACL buffers...\n");
networker 2:0118da9e5169 55 while (data_credits < 1) {
networker 2:0118da9e5169 56 USBLoop();
networker 2:0118da9e5169 57 }
networker 2:0118da9e5169 58 data_credits--;
networker 2:0118da9e5169 59 #endif
networker 2:0118da9e5169 60 printfBytes("ACLSend:", data, len);
networker 2:0118da9e5169 61 return USBBulkTransfer(_device,0x02,(u8*)data,len);
networker 2:0118da9e5169 62 }
networker 2:0118da9e5169 63 };
networker 2:0118da9e5169 64
networker 2:0118da9e5169 65 #endif