BOOLEAN btsnd_hcic_link_key_neg_reply (BD_ADDR bd_addr) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY; p->offset = 0; UINT16_TO_STREAM (pp, HCI_LINK_KEY_REQUEST_NEG_REPLY); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY); BDADDR_TO_STREAM (pp, bd_addr); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_create_conn_cancel(BD_ADDR dest) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN_CANCEL)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CREATE_CONN_CANCEL; p->offset = 0; UINT16_TO_STREAM (pp, HCI_CREATE_CONNECTION_CANCEL); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CREATE_CONN_CANCEL); BDADDR_TO_STREAM (pp, dest); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_ble_set_random_addr (BD_ADDR random_bda) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_RANDOM_ADDR_CMD)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_RANDOM_ADDR_CMD; p->offset = 0; UINT16_TO_STREAM (pp, HCI_BLE_WRITE_RANDOM_ADDR); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_RANDOM_ADDR_CMD); BDADDR_TO_STREAM (pp, random_bda); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_io_cap_req_neg_reply (BD_ADDR bd_addr, UINT8 err_code) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY; p->offset = 0; UINT16_TO_STREAM (pp, HCI_IO_CAP_REQ_NEG_REPLY); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY); BDADDR_TO_STREAM (pp, bd_addr); UINT8_TO_STREAM (pp, err_code); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_ble_remove_from_white_list (UINT8 addr_type, BD_ADDR bda) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REMOVE_WHITE_LIST)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_REMOVE_WHITE_LIST; p->offset = 0; UINT16_TO_STREAM (pp, HCI_BLE_REMOVE_WHITE_LIST); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_REMOVE_WHITE_LIST); UINT8_TO_STREAM (pp, addr_type); BDADDR_TO_STREAM (pp, bda); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_rmt_name_req_cancel (BD_ADDR bd_addr) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL)) == NULL) { return (FALSE); } pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL; p->offset = 0; UINT16_TO_STREAM (pp, HCI_RMT_NAME_REQUEST_CANCEL); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL); BDADDR_TO_STREAM (pp, bd_addr); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_create_conn(BD_ADDR dest, UINT16 packet_types, UINT8 page_scan_rep_mode, UINT8 page_scan_mode, UINT16 clock_offset, UINT8 allow_switch) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN)) == NULL) { return (FALSE); } pp = (UINT8 *)(p + 1); #ifndef BT_10A p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CREATE_CONN; #else p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CREATE_CONN - 1; #endif p->offset = 0; UINT16_TO_STREAM (pp, HCI_CREATE_CONNECTION); #ifndef BT_10A UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CREATE_CONN); #else UINT8_TO_STREAM (pp, (HCIC_PARAM_SIZE_CREATE_CONN - 1)); #endif BDADDR_TO_STREAM (pp, dest); UINT16_TO_STREAM (pp, packet_types); UINT8_TO_STREAM (pp, page_scan_rep_mode); UINT8_TO_STREAM (pp, page_scan_mode); UINT16_TO_STREAM (pp, clock_offset); #if !defined (BT_10A) UINT8_TO_STREAM (pp, allow_switch); #endif #if (SMP_INCLUDED == TRUE && CLASSIC_BT_INCLUDED == TRUE) btm_acl_paging (p, dest); #endif ///SMP_INCLUDED == TRUE && CLASSIC_BT_INCLUDED == TRUE return (TRUE); }
BOOLEAN btsnd_hcic_user_passkey_reply (BD_ADDR bd_addr, UINT32 value) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_U_PKEY_REPLY)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_U_PKEY_REPLY; p->offset = 0; UINT16_TO_STREAM (pp, HCI_USER_PASSKEY_REQ_REPLY); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_U_PKEY_REPLY); BDADDR_TO_STREAM (pp, bd_addr); UINT32_TO_STREAM (pp, value); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_delete_stored_key (BD_ADDR bd_addr, BOOLEAN delete_all_flag) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_DELETE_STORED_KEY)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_DELETE_STORED_KEY; p->offset = 0; UINT16_TO_STREAM (pp, HCI_DELETE_STORED_LINK_KEY); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_DELETE_STORED_KEY); BDADDR_TO_STREAM (pp, bd_addr); UINT8_TO_STREAM (pp, delete_all_flag); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_reject_esco_conn (BD_ADDR bd_addr, UINT8 reason) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REJECT_ESCO)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_REJECT_ESCO; p->offset = 0; UINT16_TO_STREAM (pp, HCI_REJECT_ESCO_CONNECTION); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_REJECT_ESCO); BDADDR_TO_STREAM (pp, bd_addr); UINT8_TO_STREAM (pp, reason); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_switch_role (BD_ADDR bd_addr, UINT8 role) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SWITCH_ROLE)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SWITCH_ROLE; p->offset = 0; UINT16_TO_STREAM (pp, HCI_SWITCH_ROLE); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SWITCH_ROLE); BDADDR_TO_STREAM (pp, bd_addr); UINT8_TO_STREAM (pp, role); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_send_keypress_notif (BD_ADDR bd_addr, UINT8 notif) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF; p->offset = 0; UINT16_TO_STREAM (pp, HCI_SEND_KEYPRESS_NOTIF); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF); BDADDR_TO_STREAM (pp, bd_addr); UINT8_TO_STREAM (pp, notif); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_ble_rm_device_resolving_list (UINT8 addr_type_peer, BD_ADDR bda_peer) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_RM_DEV_RESOLVING_LIST)) == NULL) { return (FALSE); } pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_BLE_RM_DEV_RESOLVING_LIST; p->offset = 0; UINT16_TO_STREAM (pp, HCI_BLE_RM_DEV_RESOLVING_LIST); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_BLE_RM_DEV_RESOLVING_LIST); UINT8_TO_STREAM (pp, addr_type_peer); BDADDR_TO_STREAM (pp, bda_peer); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_accept_conn (BD_ADDR dest, UINT8 role) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ACCEPT_CONN)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_ACCEPT_CONN; p->offset = 0; UINT16_TO_STREAM (pp, HCI_ACCEPT_CONNECTION_REQUEST); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_ACCEPT_CONN); BDADDR_TO_STREAM (pp, dest); UINT8_TO_STREAM (pp, role); counter_add("hci.conn.accept", 1); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_ble_read_resolvable_addr_local (UINT8 addr_type_peer, BD_ADDR bda_peer) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF (HCIC_PARAM_SIZE_BLE_READ_RESOLVABLE_ADDR_LOCAL)) == NULL) { return (FALSE); } pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_BLE_READ_RESOLVABLE_ADDR_LOCAL; p->offset = 0; UINT16_TO_STREAM (pp, HCI_BLE_READ_RESOLVABLE_ADDR_LOCAL); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_BLE_READ_RESOLVABLE_ADDR_LOCAL); UINT8_TO_STREAM (pp, addr_type_peer); BDADDR_TO_STREAM (pp, bda_peer); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
BOOLEAN btsnd_hcic_rem_oob_reply (BD_ADDR bd_addr, UINT8 *p_c, UINT8 *p_r) { BT_HDR *p; UINT8 *pp; if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REM_OOB_REPLY)) == NULL) return (FALSE); pp = (UINT8 *)(p + 1); p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_REM_OOB_REPLY; p->offset = 0; UINT16_TO_STREAM (pp, HCI_REM_OOB_DATA_REQ_REPLY); UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_REM_OOB_REPLY); BDADDR_TO_STREAM (pp, bd_addr); ARRAY16_TO_STREAM (pp, p_c); ARRAY16_TO_STREAM (pp, p_r); btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); return (TRUE); }
/******************************************************************************* ** ** Function NDEF_MsgAddMediaBtOob ** ** Description This function adds BT OOB Record. ** ** Returns NDEF_OK if all OK ** *******************************************************************************/ tNDEF_STATUS NDEF_MsgAddMediaBtOob (UINT8 *p_msg, UINT32 max_size, UINT32 *p_cur_size, char *p_id_str, BD_ADDR bd_addr) { tNDEF_STATUS status; UINT8 payload[BD_ADDR_LEN + 2]; UINT8 *p; UINT8 payload_len, id_len; p = payload; /* length including itself */ UINT16_TO_STREAM (p, BD_ADDR_LEN + 2); /* BD Addr */ BDADDR_TO_STREAM (p, bd_addr); payload_len = BD_ADDR_LEN + 2; id_len = (UINT8)strlen (p_id_str); status = NDEF_MsgAddRec (p_msg, max_size, p_cur_size, NDEF_TNF_MEDIA, p_bt_oob_rec_type, BT_OOB_REC_TYPE_LEN, (UINT8*)p_id_str, id_len, payload, payload_len); return (status); }