U8 L2CA_EchoReq(L2capEchoRequest *parms) { BtStatus status = BT_STATUS_SUCCESS; BD_ADDR bd_addr; memset( (U8 *)L2CAPTS(common_data), 0x55, sizeof(L2CAPTS(common_data))); /* Establish the ACL link */ memcpy((U8 *)bd_addr.addr, (U8 *)parms->bd_addr,6); (void)CMGR_RegisterHandler(&L2CAPTS(cmgrHandler), l2capTesterCmgrCallback); status = CMGR_CreateDataLink(&L2CAPTS(cmgrHandler), &bd_addr); L2CAPTS(pending_command) = L2CAP_TESTER_PING_REQ; if (status == BT_STATUS_SUCCESS) { memset( (U8 *)L2CAPTS(common_data), 0x55, sizeof(L2CAPTS(common_data))); status = L2CAP_Ping( &(L2CAPTS(Protocol)), L2CAPTS(cmgrHandler).remDev, (U8 *)L2CAPTS(common_data), sizeof(L2CAPTS(common_data))); } return status; }
BtStatus hdp_tp_connect(HdpChannel *channel) { BtStatus ret; OS_Report("[HDP]hdp_tp_connect"); ret = CMGR_RegisterHandler(&channel->cmgrHdlr, hdp_cmgr_callback); if (BT_STATUS_SUCCESS == ret || BT_STATUS_IN_USE == ret) { ret = CMGR_CreateDataLink(&channel->cmgrHdlr, &channel->bdAddr); } OS_Report("[HDP]hdp_tp_connect result %d", ret); return ret; }
U8 L2CA_InfoReq(L2capInfoRequest *parms) { BtStatus status = BT_STATUS_SUCCESS; BD_ADDR bd_addr; memcpy((U8 *)bd_addr.addr, (U8 *)parms->bd_addr,6); (void)CMGR_RegisterHandler(&L2CAPTS(cmgrHandler), l2capTesterCmgrCallback); status = CMGR_CreateDataLink(&L2CAPTS(cmgrHandler), &bd_addr); L2CAPTS(pending_command) = L2CAP_TESTER_INFO_REQ; L2CAPTS(info_type) = parms->info_type; if (status == BT_STATUS_SUCCESS) { status = L2CAP_GetInfo(&(L2CAPTS(Protocol)), L2CAPTS(cmgrHandler).remDev, L2CAPTS(info_type)); } return status; }
U8 L2CA_ConnectReq(L2capConnectRequest *parms) { BtStatus status = BT_STATUS_SUCCESS; BD_ADDR bd_addr; U16 l2ChannelId; /* Establish the ACL link */ memcpy((U8 *)bd_addr.addr, (U8 *)parms->bd_addr,6); (void)CMGR_RegisterHandler(&L2CAPTS(cmgrHandler), l2capTesterCmgrCallback); status = CMGR_CreateDataLink(&L2CAPTS(cmgrHandler), &bd_addr); L2CAPTS(pending_command) = L2CAP_TESTER_CONNECT_REQ; if (status == BT_STATUS_SUCCESS) { status = L2CAP_ConnectReq(&L2CAPTS(Protocol), BT_PSM_TESTING, L2CAPTS(cmgrHandler).remDev, 0, &l2ChannelId); } return status; }
FmpChannel *FmpNewChannel(void) { FmpChannel *ch; U8 i; ch = (FmpChannel *)fmp_malloc(sizeof(FmpChannel)); if (ch != NULL) { OS_MemSet((U8 *)ch, 0, sizeof(FmpChannel)); InsertTailList(&FMP(dev_list), &(ch->node)); CMGR_RegisterHandler(&ch->cmgr_handler, FmpCmgrCallback); /* Initialize packet pool for each device */ InitializeListHead(&ch->packet_pool); for (i = 0; i < FMP_NUM_TX_PACKETS; i++) { InsertTailList(&ch->packet_pool, &ch->packets[i].node); } } return ch; }
U8 L2CA_AddGroup(L2capGroupAddr *parms) { BtStatus status = BT_STATUS_SUCCESS; BD_ADDR bd_addr; U16 l2ChannelId; CmgrHandler *cmgrHandler; /* Establish the ACL link */ memcpy((U8 *)bd_addr.addr, (U8 *)parms->bd_addr,6); if(L2CAPTS(cmgrHandler1).bdc !=0) cmgrHandler = &L2CAPTS(cmgrHandler1); else cmgrHandler = &L2CAPTS(cmgrHandler2); (void)CMGR_RegisterHandler(cmgrHandler, l2capTesterGroupCmgrCallback); status = CMGR_CreateDataLink(cmgrHandler, &bd_addr); if((cmgrHandler->bdc !=0) && (cmgrHandler->bdc->link !=0)) CMGR_DisableSniffTimer(cmgrHandler); if (status == BT_STATUS_SUCCESS) { L2CAP_GroupAddMember(L2CAPTS(groupId), &bd_addr); } return status; }