蓝牙主机从机建立连接绑定过程
center与simplePeripheral建立连接过程
center首先进行osal_init_system()初始化各个任务,SimpleBLECentral_Init->osal_set_event( simpleBLETaskId,START_DEVICE_EVT );进入SimpleBLECentral_ProcessEvent()
调用
VOIDGAPCentralRole_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 andstatus.
gapDeviceInitDoneEvent_t initDone; //!< GAP initialization done.
gapDeviceInfoEvent_t deviceInfo; //!< Discovery device informationevent structure.
gapDevDiscEvent_t discCmpl; //!< Discovery complete eventstructure.
gapEstLinkReqEvent_t linkCmpl; //!< Link complete eventstructure.
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
uint8 numDataPkts;