bool SDP_create() { UINT i; L2CAP_API sL2CAP; SDP_API sAPI; /* Allocate the control block */ if (NULL == gpsSDPCB) { gpsSDPCB = BT_malloc(sizeof(SDP_CONTROL_BLOCK)); } /* Initialise the control block structure */ gpsSDPCB->bInitialised = true; for (i = 0; i < SDP_SERVICE_COUNT; ++i) { gpsSDPCB->pService[i] = NULL; } #ifdef SDP_SERVICE_RFCOMM_ENABLE gpsSDPCB->pService[0] = (SDP_SERVICE *)&sServiceRFCOMM; #else #error #endif /*SDP_SERVICE_RFCOMM_ENABLE*/ L2CAP_getAPI(&sL2CAP); gpsSDPCB->L2CAPsendData = sL2CAP.sendData; sAPI.putData = &SDP_API_putPetition; L2CAP_installSDP(&sAPI); DBG_INFO("SDP Initialised\n"); return true; }
BOOL BTAPP_Start(BT_DEVICE *psBTDevice) { HCIUSB_API sPHY; HCI_API sHCI; L2CAP_API sL2CAP; DEVICE_API sAPI; RFCOMM_API sRFCOMM; ASSERT(NULL != psBTDevice); /* Get all the APIs needed */ HCIUSB_getAPI(&sPHY); HCI_getAPI(&sHCI); L2CAP_getAPI(&sL2CAP); RFCOMM_getAPI(&sRFCOMM); /* Initialise the USB Device API directly related with the physical bus */ psBTDevice->sUSB.getACLBuff = sPHY.getACLBuff; psBTDevice->sUSB.getEVTBuff = sPHY.getEVTBuff; psBTDevice->sUSB.writeACL = sPHY.USBwriteACL; psBTDevice->sUSB.writeCTL = sPHY.USBwriteCTL; /* Initialise the last part of the USB Device API */ psBTDevice->sUSB.readACL = sHCI.putData; psBTDevice->sUSB.readEVT = sHCI.putEvent; /* L2CAP API */ psBTDevice->L2CAPdisconnect = sL2CAP.disconnect; /* RFCOMM API */ psBTDevice->SPPsendData = sRFCOMM.sendData; psBTDevice->SPPdisconnect = sRFCOMM.disconnect; /* Install the Device call-backs in the RFCOMM and HCI layer */ sAPI.putRFCOMMData = &BTAPP_API_putRFCOMMData; sAPI.confComplete = &BTAPP_API_confComplete; RFCOMM_installDevCB(&sAPI); HCI_installDevCB(&sAPI); /* Issue the RESET command (which will trigger the HCI configuration) */ sHCI.setLocalName("PIC_BT", 6); // sHCI.setPINCode("1234", 4); sHCI.cmdReset(); DBG_INFO("BTAPP: Bluetooth stack start\n\r"); return TRUE; }