51 #define LHCI_LEN_SET_EVENT_MASK_EVT 1 52 #define LHCI_LEN_RESET_EVT 1 53 #define LHCI_LEN_READ_PWR_LVL_EVT 4 54 #define LHCI_LEN_READ_AUTH_PAYLOAD_TO_EVT 5 55 #define LHCI_LEN_WRITE_AUTH_PAYLOAD_TO_EVT 3 58 #define LHCI_LEN_READ_LOCAL_VER_EVT 9 59 #define LHCI_LEN_READ_LOCAL_SUP_CMDS_EVT 65 60 #define LHCI_LEN_READ_LOCAL_SUP_FEAT_EVT 9 61 #define LHCI_LEN_READ_BUF_SIZE_EVT 8 62 #define LHCI_LEN_READ_BD_ADDR_EVT 7 65 #define LHCI_LEN_LE_SET_EVENT_MASK_EVT 1 66 #define LHCI_LEN_LE_READ_BUF_SIZE_EVT 4 67 #define LHCI_LEN_LE_READ_LOCAL_SUP_FEAT_EVT 9 68 #define LHCI_LEN_LE_SET_RAND_ADDR_EVT 1 69 #define LHCI_LEN_LE_SET_ADV_PARAM_EVT 1 70 #define LHCI_LEN_LE_READ_ADV_TX_POWER_EVT 2 71 #define LHCI_LEN_LE_SET_ADV_DATA_EVT 1 72 #define LHCI_LEN_LE_SET_SCAN_RESP_DATA_EVT 1 73 #define LHCI_LEN_LE_SET_ADV_ENABLE_EVT 1 74 #define LHCI_LEN_LE_SET_SCAN_PARAM_EVT 1 75 #define LHCI_LEN_LE_SET_SCAN_ENABLE_EVT 1 76 #define LHCI_LEN_LE_CREATE_CONN_CANCEL_EVT 1 77 #define LHCI_LEN_LE_READ_WL_SIZE_EVT 2 78 #define LHCI_LEN_LE_CLEAR_WHITE_LIST_EVT 1 79 #define LHCI_LEN_LE_ADD_DEV_WHITE_LIST_EVT 1 80 #define LHCI_LEN_LE_REMOVE_DEV_WHITE_LIST_EVT 1 81 #define LHCI_LEN_LE_SET_HOST_CHAN_CLASS 1 82 #define LHCI_LEN_LE_READ_CHAN_MAP_EVT 8 83 #define LHCI_LEN_LE_ENCRYPT_EVT 17 84 #define LHCI_LEN_LE_LTK_REQ_REPL_EVT 3 85 #define LHCI_LEN_LE_LTK_REQ_NEG_REPL_EVT 3 86 #define LHCI_LEN_LE_RAND_EVT 9 87 #define LHCI_LEN_LE_READ_SUP_STATES_EVT 9 88 #define LHCI_LEN_LE_RECEIVER_TEST_EVT 1 89 #define LHCI_LEN_LE_TRANSMITTER_TEST_EVT 1 90 #define LHCI_LEN_LE_TEST_END_EVT 3 92 #define LHCI_LEN_LE_REM_CONN_PARAM_REP 3 93 #define LHCI_LEN_LE_REM_CONN_PARAM_NEG_REP 3 95 #define LHCI_LEN_LE_SET_DATA_LEN 3 96 #define LHCI_LEN_LE_READ_DEF_DATA_LEN 5 97 #define LHCI_LEN_LE_WRITE_DEF_DATA_LEN 1 98 #define LHCI_LEN_LE_ADD_DEV_RES_LIST_EVT 1 99 #define LHCI_LEN_LE_REMOVE_DEV_RES_LIST_EVT 1 100 #define LHCI_LEN_LE_CLEAR_RES_LIST_EVT 1 101 #define LHCI_LEN_LE_READ_RES_LIST_SIZE_EVT 2 102 #define LHCI_LEN_LE_READ_PEER_RES_ADDR_EVT 7 103 #define LHCI_LEN_LE_READ_LOCAL_RES_ADDR_EVT 7 104 #define LHCI_LEN_LE_SET_ADDR_RES_ENABLE_EVT 1 105 #define LHCI_LEN_LE_SET_RES_PRIV_ADDR_TO_EVT 1 106 #define LHCI_LEN_LE_READ_MAX_DATA_LEN 9 108 #define LHCI_LEN_LE_SET_PRIVACY_MODE 1 109 #define LHCI_LEN_LE_SET_ADV_SET_RAND_ADDR 1 110 #define LHCI_LEN_LE_SET_EXT_ADV_PARAM 2 111 #define LHCI_LEN_LE_SET_EXT_ADV_DATA 1 112 #define LHCI_LEN_LE_SET_EXT_SCAN_RESP_DATA 1 113 #define LHCI_LEN_LE_SET_EXT_ADV_ENABLE 1 114 #define LHCI_LEN_LE_READ_MAX_ADV_DATA_LEN 3 115 #define LHCI_LEN_LE_READ_NUM_OF_SUP_ADV_SETS 2 116 #define LHCI_LEN_LE_REMOVE_ADV_SET 1 117 #define LHCI_LEN_LE_CLEAR_ADV_SETS 1 118 #define LHCI_LEN_LE_SET_PER_ADV_PARAM 1 119 #define LHCI_LEN_LE_SET_PER_ADV_DATA 1 120 #define LHCI_LEN_LE_SET_PER_ADV_ENABLE 1 121 #define LHCI_LEN_LE_SET_EXT_SCAN_PARAM 1 122 #define LHCI_LEN_LE_SET_EXT_SCAN_ENABLE 1 123 #define LHCI_LEN_LE_PER_ADV_CREATE_SYNC_CANCEL 1 124 #define LHCI_LEN_LE_PER_ADV_TERMINATE_SYNC 1 125 #define LHCI_LEN_LE_ADD_DEV_PER_ADV_LIST 1 126 #define LHCI_LEN_LE_REM_DEV_PER_ADV_LIST 1 127 #define LHCI_LEN_LE_CLEAR_PER_ADV_LIST 1 128 #define LHCI_LEN_LE_READ_PER_ADV_LIST_SIZE 2 129 #define LHCI_LEN_LE_READ_SUP_TX_POWER 3 130 #define LHCI_LEN_LE_WRITE_RF_PATH_COMP 1 131 #define LHCI_LEN_LE_READ_RF_PATH_COMP 5 132 #define LHCI_LEN_LE_SET_EXT_SCAN_ENABLE_EVT 1 133 #define LHCI_LEN_LE_READ_PHY_EVT 5 134 #define LHCI_LEN_LE_SET_DEF_PHY_EVT 1 135 #define LHCI_LEN_LE_ENHANCED_RECEIVER_TEST_EVT 1 136 #define LHCI_LEN_LE_ENHANCED_TRANSMITTER_TEST_EVT 1 138 #define LHCI_LEN_LE_SET_PER_ADV_RCV_ENABLE 1 139 #define LHCI_LEN_LE_PER_ADV_SYNC_TRANSFER 3 140 #define LHCI_LEN_LE_PER_ADV_SET_INFO_TRANSFER 3 141 #define LHCI_LEN_LE_SET_PAST_PARAM 3 142 #define LHCI_LEN_LE_SET_DEFAULT_PAST_PARAM 1 143 #define LHCI_LEN_LE_MODIFY_SCA_EVT 1 145 #define LHCI_LEN_LE_READ_BUF_SIZE_V2 7 146 #define LHCI_LEN_LE_READ_TX_SYNC 12 147 #define LHCI_LEN_LE_REMOVE_CIG 1 148 #define LHCI_LEN_LE_REJECT_CIS_REQ 1 149 #define LHCI_LEN_LE_BIG_TERMINATE_SYNC 2 150 #define LHCI_LEN_LE_SETUP_ISO_DATA_PATH 3 151 #define LHCI_LEN_LE_REMOVE_ISO_DATA_PATH 3 152 #define LHCI_LEN_LE_ISO_TX_TEST 1 153 #define LHCI_LEN_LE_ISO_RX_TEST 1 154 #define LHCI_LEN_LE_ISO_READ_TEST_COUNTER 15 155 #define LHCI_LEN_LE_ISO_TEST_END 15 156 #define LHCI_LEN_LE_SET_HOST_FEATURE 1 157 #define LHCI_LEN_LE_READ_ISO_LINK_QUAL 31 158 #define LHCI_LEN_LE_READ_ENH_TX_POWER_EVT 6 159 #define LHCI_LEN_LE_SET_TX_POWER_REPORT_EVT 3 160 #define LHCI_LEN_LE_SET_PATH_LOSS_REPORTING_PARAMS 3 161 #define LHCI_LEN_LE_SET_PATH_LOSS_REPORTING_ENABLE 3 162 #define LHCI_LEN_CONFIG_DATA_PATH 1 163 #define LHCI_LEN_READ_LOCAL_SUP_CODECS 3 164 #define LHCI_LEN_READ_LOCAL_SUP_CODEC_CAP 2 165 #define LHCI_LEN_READ_LOCAL_SUP_CONTROLLER_DLY 7 168 #define LHCI_DEF_EVT_MASK UINT64_C(0x00001FFFFFFFFFFF); 171 #define LHCI_DEF_EVT_PG2_MASK UINT64_C(0x0000000000000000); 174 #define LHCI_DEF_LE_EVT_MASK UINT64_C(0x000000000000001F); 177 #define LHCI_LOCAL_SUP_FEAT_VAL UINT64_C(0x0000006000000000) 182 #define LHCI_BYTE_TO_BITS(x) (8 * x) 185 #define LHCI_LEN_VS_EVT 2 188 #define LHCI_LEN_CMD_STATUS_EVT 0xFF 191 #define LHCI_OPCODE_VS_SET_SCAN_CH_MAP HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E0) 192 #define LHCI_OPCODE_VS_SET_EVENT_MASK HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E1) 193 #define LHCI_OPCODE_VS_SET_RSRC_MGR_MODE HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E2) 194 #define LHCI_OPCODE_VS_ENA_ACL_SINK HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E3) 195 #define LHCI_OPCODE_VS_GENERATE_ACL HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E4) 196 #define LHCI_OPCODE_VS_ENA_AUTO_GEN_ACL HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E5) 197 #define LHCI_OPCODE_VS_SET_TX_TEST_ERR_PATT HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E6) 198 #define LHCI_OPCODE_VS_SET_CONN_OP_FLAGS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E7) 199 #define LHCI_OPCODE_VS_SET_P256_PRIV_KEY HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E8) 200 #define LHCI_OPCODE_VS_GET_PER_CHAN_MAP HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3DE) 201 #define LHCI_OPCODE_VS_SET_HCI_SUP_CMD HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3DF) 202 #define LHCI_OPCODE_VS_GET_ACL_TEST_REPORT HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3E9) 203 #define LHCI_OPCODE_VS_SET_LOCAL_MIN_USED_CHAN HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3EA) 204 #define LHCI_OPCODE_VS_GET_PEER_MIN_USED_CHAN HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3EB) 205 #define LHCI_OPCODE_VS_VALIDATE_PUB_KEY_MODE HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3EC) 207 #define LHCI_OPCODE_VS_SET_BD_ADDR HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F0) 208 #define LHCI_OPCODE_VS_GET_RAND_ADDR HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F1) 209 #define LHCI_OPCODE_VS_SET_LOCAL_FEAT HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F2) 210 #define LHCI_OPCODE_VS_SET_OP_FLAGS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F3) 211 #define LHCI_OPCODE_VS_SET_ADV_TX_PWR HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F5) 212 #define LHCI_OPCODE_VS_SET_CONN_TX_PWR HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F6) 213 #define LHCI_OPCODE_VS_SET_ENC_MODE HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F7) 214 #define LHCI_OPCODE_VS_SET_CHAN_MAP HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F8) 216 #define LHCI_OPCODE_VS_SET_DIAG_MODE HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F9) 217 #define LHCI_OPCODE_VS_SET_SNIFFER_ENABLE HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3CD) 219 #define LHCI_OPCODE_VS_GET_PDU_FILT_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3F4) 220 #define LHCI_OPCODE_VS_GET_SYS_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3FA) 221 #define LHCI_OPCODE_VS_GET_ADV_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3FB) 222 #define LHCI_OPCODE_VS_GET_SCAN_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3FC) 223 #define LHCI_OPCODE_VS_GET_CONN_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3FD) 224 #define LHCI_OPCODE_VS_GET_TEST_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3FE) 225 #define LHCI_OPCODE_VS_GET_POOL_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3FF) 227 #define LHCI_OPCODE_VS_SET_AUX_DELAY HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D0) 228 #define LHCI_OPCODE_VS_SET_EXT_ADV_FRAG_LEN HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D1) 229 #define LHCI_OPCODE_VS_SET_EXT_ADV_PHY_OPTS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D2) 230 #define LHCI_OPCODE_VS_SET_EXT_ADV_DEF_PHY_OPTS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D3) 231 #define LHCI_OPCODE_VS_SET_EXT_SCAN_PHY_OPTS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D4) 232 #define LHCI_OPCODE_VS_GENERATE_ISO HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D5) 233 #define LHCI_OPCODE_VS_GET_ISO_TEST_REPORT HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D6) 234 #define LHCI_OPCODE_VS_ENA_ISO_SINK HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D7) 235 #define LHCI_OPCODE_VS_ENA_AUTO_GEN_ISO HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D8) 236 #define LHCI_OPCODE_VS_GET_CIS_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3D9) 238 #define LHCI_OPCODE_VS_GET_AUX_ADV_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3DA) 239 #define LHCI_OPCODE_VS_GET_AUX_SCAN_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3DB) 240 #define LHCI_OPCODE_VS_GET_PER_SCAN_STATS HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3DC) 242 #define LHCI_OPCODE_VS_SET_CONN_PHY_TX_PWR HCI_OPCODE(HCI_OGF_VENDOR_SPEC, 0x3DD) 246 #define LHCI_VS_EVT_MASK_SCAN_REPORT_EVT 0x01 247 #define LHCI_VS_EVT_MASK_DIAG_TRACE_EVT 0x02 248 #define LHCI_VS_EVT_MASK_ISO_EVENT_CMPL_EVT 0x04 295 typedef uint8_t *(*lhciServiceAcl_t)(void);
298 typedef uint8_t *(*lhciServiceIso_t)(void);
379 extern uint16_t lhciHandlerWatermarkUsec;
386 void lhciReset(
void);
389 void lhciRecv(uint8_t type, uint8_t *pBuf);
390 void lhciSendComplete(uint8_t type, uint8_t *pBuf);
391 bool_t lhciService(uint8_t *pType, uint16_t *pLen, uint8_t **pBuf);
392 void lhciSendHwError(uint8_t code);
395 bool_t lhciLlEvtHandler(
LlEvt_t *pEvt);
396 void lhciAclSendComplete(uint16_t handle, uint8_t numBufs);
397 uint8_t *lhciRecvAcl(
void);
398 void lhciAclRecvPending(uint16_t handle, uint8_t numBufs);
399 void lhciGenerateAcl(uint16_t handle, uint16_t pktLen, uint8_t numPkts);
401 void lhciIsoSendComplete(uint8_t numHandles, uint16_t *pHandle, uint16_t *pNumPkts);
402 uint8_t *lhciRecvIso(
void);
403 void lhciIsoRecvPending(uint8_t numHandles, uint16_t *pHandle, uint16_t *pNumPkts);
404 void lhciGenerateIso(uint16_t handle, uint16_t pktLen, uint8_t numPkts);
407 bool_t lhciCommonDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
408 bool_t lhciConnDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
409 bool_t lhciMstConnDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
410 bool_t lhciMstExtConnDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
411 bool_t lhciMstEncDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
412 bool_t lhciSlvEncDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
413 bool_t lhciMstScanDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
414 bool_t lhciSlvAdvDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
415 bool_t lhciMstExtScanDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
416 bool_t lhciSlvExtAdvDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
417 bool_t lhciPrivAdvDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
418 bool_t lhciPrivConnDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
419 bool_t lhciScDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
420 bool_t lhciPhyDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
421 bool_t lhciPastDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
422 bool_t lhciMstCisDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
423 bool_t lhciSlvCisDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
424 bool_t lhciSlvBisDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
425 bool_t lhciMstBisDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
426 bool_t lhciIsoDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
427 bool_t lhciPclDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
429 bool_t lhciCommonVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
430 bool_t lhciConnVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
431 bool_t lhciMstConnVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
432 bool_t lhciMstScanVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
433 bool_t lhciSlvAdvVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
434 bool_t lhciSlvEncVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
435 bool_t lhciScVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
436 bool_t lhciMstExtScanVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
437 bool_t lhciSlvExtAdvVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
438 bool_t lhciVsExtDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
439 bool_t lhciIsoVsStdDecodeCmdPkt(
LhciHdr_t *pHdr, uint8_t *pBuf);
442 void lhciSendCmdStatusEvt(
LhciHdr_t *pCmdHdr, uint8_t status);
443 bool_t lhciConnEncodeEvtPkt(
LlEvt_t *pEvt);
444 bool_t lhciConnCsEncodeEvtPkt(
LlEvt_t *pEvt);
445 bool_t lhciMstConnEncodeEvtPkt(
LlEvt_t *pEvt);
446 bool_t lhciMstScanEncodeEvtPkt(
LlEvt_t *pEvt);
447 bool_t lhciSlvAdvEncodeEvtPkt(
LlEvt_t *pEvt);
448 bool_t lhciMstExtScanEncodeEvtPkt(
LlEvt_t *pEvt);
449 bool_t lhciSlvExtAdvEncodeEvtPkt(
LlEvt_t *pEvt);
450 bool_t lhciMstEncEncodeEvtPkt(
LlEvt_t *pEvt);
451 bool_t lhciSlvEncEncodeEvtPkt(
LlEvt_t *pEvt);
452 bool_t lhciPrivConnEncodeEvtPkt(
LlEvt_t *pEvt);
453 bool_t lhciScEncodeEvtPkt(
LlEvt_t *pEvt);
454 bool_t lhciPhyEncodeEvtPkt(
LlEvt_t *pEvt);
455 bool_t lhciMstCisEncodeEvtPkt(
LlEvt_t *pEvt);
456 bool_t lhciSlvCisEncodeEvtPkt(
LlEvt_t *pEvt);
457 bool_t lhciSlvBigEncodeEvtPkt(
LlEvt_t *pEvt);
458 bool_t lhciMstBisEncodeEvtPkt(
LlEvt_t *pEvt);
459 bool_t lhciIsoEncodeEvtPkt(
LlEvt_t *pEvt);
460 bool_t lhciPclEncodeEvtPkt(
LlEvt_t *pEvt);
463 bool_t lhciSlvVsStdEncodeEvtPkt(
LlEvt_t *pEvt);
466 uint8_t *lhciAllocEvt(uint8_t evtCode, uint8_t paramLen);
467 uint8_t *lhciAllocCmdCmplEvt(uint8_t paramLen, uint16_t opCode);
468 void lhciConnSendCmdCmplEvt(
LhciHdr_t *pCmdHdr, uint8_t status, uint8_t paramLen, uint8_t *pParam, uint16_t handle);
469 void lhciPclSendCmdCmplEvt(
LhciHdr_t *pCmdHdr, uint8_t status, uint8_t paramLen, uint8_t *pParam, uint16_t handle);
472 uint8_t lhciUnpackConnSpec(
LlConnSpec_t *pConnSpec,
const uint8_t *pBuf);
485 static inline uint8_t
lhciPackEvtHdr(uint8_t *pBuf, uint8_t evtCode, uint8_t paramLen)
549 const uint8_t len =
sizeof(uint8_t);
lhciEvtHandler_t lhciEvtTbl[LHCI_MSG_TOTAL]
Event handler table.
static uint8_t lhciPackEvtHdr(uint8_t *pBuf, uint8_t evtCode, uint8_t paramLen)
Pack an event packet header.
#define LHCI_LEN_VS_EVT
Vendor specific event length.
Link layer interface file.
Control block for ISO data generator.
static void lhciSendCmdCmplEvt(uint8_t *pEvtBuf)
Send a command complete event.
HCI constants and definitions from the Bluetooth specification.
static uint8_t lhciPackCmdCompleteEvt(uint8_t *pBuf, uint16_t opCode)
Pack a command complete event packet.
void(* lhciCompHandler_t)(void)
Event complete handler call signature.
#define UINT8_TO_BSTREAM(p, n)
convert uint8_t to little endian byte stream, incrementing one byte.
static uint8_t lhciPackVsEvt(uint8_t *pBuf, uint16_t vsEvtCode)
Pack a vendor specific event packet.
lhciCmdHandler_t lhciCmdTbl[LHCI_MSG_TOTAL]
Command handler table.
uint8_t *(* lhciServiceAcl_t)(void)
Service ACL call signature.
bool_t(* lhciCmdHandler_t)(LhciHdr_t *pHdr, uint8_t *pBuf)
Command handler call signature.
lhciCompHandler_t evtCompCback
static void lhciSendEvt(uint8_t *pEvtBuf)
Send an event.
Control block of the LL HCI subsystem (cleared with resets).
uint8_t wsfHandlerId_t
Event handler ID data type.
Union of all event types.
static uint8_t lhciPackCmdCompleteEvtStatus(uint8_t *pBuf, uint8_t status)
Pack a command complete status parameter.
Byte stream to integer conversion macros.
bool_t(* lhciEvtHandler_t)(LlEvt_t *pEvt)
Event handler call signature.
#define UINT16_TO_BSTREAM(p, n)
convert uint16_t to little endian byte stream, incrementing two bytes.
uint8_t *(* lhciServiceIso_t)(void)
Service SCO call signature.
General purpose queue service.
Link layer HCI subsystem API.
#define HCI_LEN_CMD_STATUS
lhciServiceAcl_t lhciServiceAcl
Receive pending handler.
Control block of the LL HCI subsystem (persists with resets).
Connection specification (LlCreateConn(), LlConnUpdate() and LlExtCreateConn()).
Software foundation OS API.
lhciServiceIso_t lhciServiceIso
Receive pending handler.
static uint8_t lhciPackCmdStatusEvt(uint8_t *pBuf, uint8_t status, uint16_t opCode)
Pack a command status event packet.