蓝牙主机从机建立连接绑定过程
center与simplePeripheral建立连接过程
center首先进行osal_init_system()初始化各个任务,SimpleBLECentral_Init->osal_set_event( simpleBLETaskId,
START_DEVICE_EVT );进入SimpleBLECentral_ProcessEvent()
调用
VOID
GAPCentralRole_StartDevice( (gapCentralRoleCB_t *)
&simpleBLERoleCB );//当初始化完成,会发送 GAP_DEVICE_INIT_DONE_EVENT由于注册了simpleBLERoleCB函数,因此发送的event由simpleBLERoleCB函数接收static
void simpleBLECentralEventCB(
gapCentralRoleEvent_t *pEvent )此时pEvent->gap.opcode =GAP_DEVICE_INIT_DONE_EVENT,相应信息存储于pEvent中
typedef
union
{
gapEventHdr_t gap; //!< GAP_MSG_EVENT and status.
gapDeviceInitDoneEvent_t initDone; //!< GAP initialization done.
gapDeviceInfoEvent_t deviceInfo; //!< Discovery device information event structure.
gapDevDiscEvent_t discCmpl; //!< Discovery complete event structure.
gapEstLinkReqEvent_t linkCmpl; //!< Link complete event structure.
gapLinkUpdateEvent_t linkUpdate; //!< Link update event structure.
gapTerminateLinkEvent_t linkTerminate; //!< Link terminated event structure.
}
gapCentralRoleEvent_t;
联合体,只有deviceInfo里面的数据是正确的
typedef
struct
{
osal_event_hdr_t hdr; //!< GAP_MSG_EVENT and status
uint8
opcode; //!<
GAP_DEVICE_INIT_DONE_EVENT
uint8
devAddr[B_ADDR_LEN]; //!< Device's BD_ADDR
uint16
dataPktLen; //!<
HC_LE_Data_Packet_Length</