hcicmds.c revision 5738f83aeb59361a0a2eda2460113f6dc919427
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 1999-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This file contains function of the HCIC unit to format and send HCI 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * commands. 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "hcidefs.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "hcimsgs.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "hcidefs.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btu.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stddef.h> 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined (LMP_TEST) 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <script.h> 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btu_hcif_send_cmd(p1, p2) HCI_CMD_TO_LOWER((p2)) 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_int.h" /* Included for UIPC_* macro definitions */ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_inquiry(const LAP inq_lap, UINT8 duration, UINT8 response_cnt) 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_INQUIRY)) == NULL) 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_INQUIRY; 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_INQUIRY); 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_INQUIRY); 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project LAP_TO_STREAM (pp, inq_lap); 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, duration); 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, response_cnt); 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_inq_cancel(void) 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_INQ_CANCEL)) == NULL) 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_INQ_CANCEL; 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_INQUIRY_CANCEL); 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_INQ_CANCEL); 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_per_inq_mode (UINT16 max_period, UINT16 min_period, 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project const LAP inq_lap, UINT8 duration, UINT8 response_cnt) 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PER_INQ_MODE)) == NULL) 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_PER_INQ_MODE; 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_PERIODIC_INQUIRY_MODE); 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_PER_INQ_MODE); 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, max_period); 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, min_period); 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project LAP_TO_STREAM (pp, inq_lap); 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, duration); 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, response_cnt); 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_exit_per_inq (void) 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_EXIT_PER_INQ)) == NULL) 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_EXIT_PER_INQ; 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_EXIT_PERIODIC_INQUIRY_MODE); 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_EXIT_PER_INQ); 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_create_conn(BD_ADDR dest, UINT16 packet_types, 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 page_scan_rep_mode, UINT8 page_scan_mode, 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 clock_offset, UINT8 allow_switch) 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN)) == NULL) 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BT_10A 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CREATE_CONN; 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CREATE_CONN - 1; 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_CREATE_CONNECTION); 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BT_10A 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CREATE_CONN); 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, (HCIC_PARAM_SIZE_CREATE_CONN - 1)); 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, dest); 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, packet_types); 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, page_scan_rep_mode); 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, page_scan_mode); 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, clock_offset); 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if !defined (BT_10A) 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, allow_switch); 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* If calling from LMP_TEST or ScriptEngine, then send HCI command immediately */ 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (!defined (LMP_TEST) && !defined(BTISE)) 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btm_acl_paging (p, dest); 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_disconnect (UINT16 handle, UINT8 reason) 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_DISCONNECT)) == NULL) 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_DISCONNECT; 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_DISCONNECT); 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_DISCONNECT); 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, reason); 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* If calling from LMP_TEST or ScriptEngine, then send HCI command immediately */ 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (!defined (LMP_TEST) && !defined(BTISE)) 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific ++ 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project // btm_acl_set_discing(TRUE); 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific -- 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SCO_INCLUDED == TRUE 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_add_SCO_conn (UINT16 handle, UINT16 packet_types) 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ADD_SCO_CONN)) == NULL) 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_ADD_SCO_CONN; 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_ADD_SCO_CONNECTION); 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_ADD_SCO_CONN); 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, packet_types); 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_SCO_INCLUDED */ 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_create_conn_cancel(BD_ADDR dest) 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CREATE_CONN_CANCEL)) == NULL) 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CREATE_CONN_CANCEL; 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_CREATE_CONNECTION_CANCEL); 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CREATE_CONN_CANCEL); 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, dest); 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_accept_conn (BD_ADDR dest, UINT8 role) 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ACCEPT_CONN)) == NULL) 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_ACCEPT_CONN; 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_ACCEPT_CONNECTION_REQUEST); 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_ACCEPT_CONN); 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, dest); 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, role); 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_reject_conn (BD_ADDR dest, UINT8 reason) 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REJECT_CONN)) == NULL) 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_REJECT_CONN; 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_REJECT_CONNECTION_REQUEST); 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_REJECT_CONN); 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, dest); 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, reason); 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_link_key_req_reply (BD_ADDR bd_addr, LINK_KEY link_key) 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LINK_KEY_REQ_REPLY)) == NULL) 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_LINK_KEY_REQ_REPLY; 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_LINK_KEY_REQUEST_REPLY); 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_LINK_KEY_REQ_REPLY); 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY16_TO_STREAM (pp, link_key); 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_link_key_neg_reply (BD_ADDR bd_addr) 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY)) == NULL) 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY; 3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_LINK_KEY_REQUEST_NEG_REPLY); 3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_LINK_KEY_NEG_REPLY); 3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_pin_code_req_reply (BD_ADDR bd_addr, UINT8 pin_code_len, 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project PIN_CODE pin_code) 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int i; 3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PIN_CODE_REQ_REPLY)) == NULL) 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_PIN_CODE_REQ_REPLY; 3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_PIN_CODE_REQUEST_REPLY); 3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_PIN_CODE_REQ_REPLY); 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, pin_code_len); 3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < pin_code_len; i++) 3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *pp++ = *pin_code++; 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (; i < PIN_CODE_LEN; i++) 3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *pp++ = 0; 3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_pin_code_neg_reply (BD_ADDR bd_addr) 3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PIN_CODE_NEG_REPLY)) == NULL) 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_PIN_CODE_NEG_REPLY; 3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_PIN_CODE_REQUEST_NEG_REPLY); 3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_PIN_CODE_NEG_REPLY); 3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_change_conn_type (UINT16 handle, UINT16 packet_types) 3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 3975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 3985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CHANGE_CONN_TYPE)) == NULL) 4005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 4015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 4035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CHANGE_CONN_TYPE; 4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 4065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_CHANGE_CONN_PACKET_TYPE); 4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CHANGE_CONN_TYPE); 4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, packet_types); 4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_auth_request (UINT16 handle) 4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 4285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_AUTHENTICATION_REQUESTED); 4315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 4325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 4375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_conn_encrypt (UINT16 handle, BOOLEAN enable) 4405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 4425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 4435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_CONN_ENCRYPT)) == NULL) 4455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 4485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SET_CONN_ENCRYPT; 4505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 4515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SET_CONN_ENCRYPTION); 4535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SET_CONN_ENCRYPT); 4545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, enable); 4575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_change_link_key (UINT16 handle) 4635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 4655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 4665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 4685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 4695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 4715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_CHANGE_CONN_LINK_KEY); 4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_master_link_key (BOOLEAN key_flag) 4855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 4875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 4885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_MASTER_LINK_KEY)) == NULL) 4905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 4915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 4935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_MASTER_LINK_KEY; 4955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 4965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_MASTER_LINK_KEY); 4985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_MASTER_LINK_KEY); 4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, key_flag); 5015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_rmt_name_req (BD_ADDR bd_addr, UINT8 page_scan_rep_mode, 5075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 page_scan_mode, UINT16 clock_offset) 5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_NAME_REQ)) == NULL) 5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_RMT_NAME_REQ; 5185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 5195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_RMT_NAME_REQUEST); 5215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_RMT_NAME_REQ); 5225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 5245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, page_scan_rep_mode); 5255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, page_scan_mode); 5265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, clock_offset); 5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* If calling from LMP_TEST or ScriptEngine, then send HCI command immediately */ 5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (!defined (LMP_TEST) && !defined(BTISE)) 5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btm_acl_paging (p, bd_addr); 5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 5325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 5335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 5345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 5355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_rmt_name_req_cancel (BD_ADDR bd_addr) 5385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL)) == NULL) 5435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 5445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 5465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL; 5485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 5495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_RMT_NAME_REQUEST_CANCEL); 5515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_RMT_NAME_REQ_CANCEL); 5525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 5545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 5565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 5575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_rmt_features_req (UINT16 handle) 5605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 5635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 5655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 5665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 5685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 5705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_RMT_FEATURES); 5735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 5745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 5765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 5785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 5795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_rmt_ext_features (UINT16 handle, UINT8 page_num) 5825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 5845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 5855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RMT_EXT_FEATURES)) == NULL) 5875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 5885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_RMT_EXT_FEATURES; 5925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 5935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_RMT_EXT_FEATURES); 5955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_RMT_EXT_FEATURES); 5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 5985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, page_num); 5995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 6015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 6025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_rmt_ver_req (UINT16 handle) 6055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 6075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 6085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 6105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 6115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 6135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 6155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 6165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_RMT_VERSION_INFO); 6185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 6195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 6215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 6235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 6245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_rmt_clk_offset (UINT16 handle) 6275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 6295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 6305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 6325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 6335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 6355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 6375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 6385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_RMT_CLOCK_OFFSET); 6405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 6415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 6435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 6455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 6465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_lmp_handle (UINT16 handle) 6495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 6515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 6525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 6545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 6555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 6575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 6595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 6605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LMP_HANDLE); 6625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 6635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 6655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 6675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 6685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_setup_esco_conn (UINT16 handle, UINT32 tx_bw, 6715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 rx_bw, UINT16 max_latency, UINT16 voice, 6725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 retrans_effort, UINT16 packet_types) 6735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 6755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 6765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SETUP_ESCO)) == NULL) 6785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 6795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 6815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SETUP_ESCO; 6835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 6845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SETUP_ESCO_CONNECTION); 6865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SETUP_ESCO); 6875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 6895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, tx_bw); 6905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, rx_bw); 6915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, max_latency); 6925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, voice); 6935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, retrans_effort); 6945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, packet_types); 6955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 6975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 6985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_accept_esco_conn (BD_ADDR bd_addr, UINT32 tx_bw, 7015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 rx_bw, UINT16 max_latency, 7025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 content_fmt, UINT8 retrans_effort, 7035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 packet_types) 7045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 7065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 7075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ACCEPT_ESCO)) == NULL) 7095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 7105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 7125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_ACCEPT_ESCO; 7145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 7155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_ACCEPT_ESCO_CONNECTION); 7175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_ACCEPT_ESCO); 7185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 7205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, tx_bw); 7215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, rx_bw); 7225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, max_latency); 7235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, content_fmt); 7245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, retrans_effort); 7255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, packet_types); 7265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 7285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 7295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_reject_esco_conn (BD_ADDR bd_addr, UINT8 reason) 7325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 7345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 7355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REJECT_ESCO)) == NULL) 7375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 7385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 7405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_REJECT_ESCO; 7425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 7435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_REJECT_ESCO_CONNECTION); 7455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_REJECT_ESCO); 7465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 7485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, reason); 7495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 7515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 7525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_hold_mode (UINT16 handle, UINT16 max_hold_period, 7555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 min_hold_period) 7565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 7585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 7595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_HOLD_MODE)) == NULL) 7615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 7625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 7645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_HOLD_MODE; 7665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 7675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_HOLD_MODE); 7695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_HOLD_MODE); 7705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 7725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, max_hold_period); 7735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, min_hold_period); 7745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 7765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 7775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_sniff_mode (UINT16 handle, UINT16 max_sniff_period, 7805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 min_sniff_period, UINT16 sniff_attempt, 7815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 sniff_timeout) 7825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 7845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 7855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SNIFF_MODE)) == NULL) 7875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 7885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 7905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SNIFF_MODE; 7925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 7935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SNIFF_MODE); 7955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SNIFF_MODE); 7965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 7985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, max_sniff_period); 7995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, min_sniff_period); 8005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, sniff_attempt); 8015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, sniff_timeout); 8025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 8045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 8055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_exit_sniff_mode (UINT16 handle) 8085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 8105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 8115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 8135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 8145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 8165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 8185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 8195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_EXIT_SNIFF_MODE); 8215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 8225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 8245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 8265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return TRUE; 8275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_park_mode (UINT16 handle, UINT16 beacon_max_interval, 8305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 beacon_min_interval) 8315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 8335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 8345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_PARK_MODE)) == NULL) 8365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 8375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 8395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_PARK_MODE; 8415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 8425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_PARK_MODE); 8445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_PARK_MODE); 8455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 8475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, beacon_max_interval); 8485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, beacon_min_interval); 8495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 8515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 8525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_exit_park_mode (UINT16 handle) 8555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 8575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 8585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 8605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 8615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 8635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 8655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 8665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_EXIT_PARK_MODE); 8685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 8695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 8715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 8735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return TRUE; 8745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_qos_setup (UINT16 handle, UINT8 flags, UINT8 service_type, 8775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 token_rate, UINT32 peak, UINT32 latency, 8785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 delay_var) 8795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 8805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 8815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 8825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_QOS_SETUP)) == NULL) 8845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 8855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 8875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_QOS_SETUP; 8895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 8905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_QOS_SETUP); 8925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_QOS_SETUP); 8935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 8955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flags); 8965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, service_type); 8975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, token_rate); 8985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, peak); 8995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, latency); 9005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, delay_var); 9015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 9035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 9045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_role_discovery (UINT16 handle) 9075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 9095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 9105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 9125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 9135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 9155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 9175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 9185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_ROLE_DISCOVERY); 9205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 9215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 9235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 9255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 9265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_switch_role (BD_ADDR bd_addr, UINT8 role) 9295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 9315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 9325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SWITCH_ROLE)) == NULL) 9345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 9355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 9375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SWITCH_ROLE; 9395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 9405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SWITCH_ROLE); 9425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SWITCH_ROLE); 9435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 9455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, role); 9465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 9485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 9495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_policy_set (UINT16 handle) 9525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 9545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 9555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 9575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 9585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 9605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 9625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 9635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_POLICY_SETTINGS); 9655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 9665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 9685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 9705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 9715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_policy_set (UINT16 handle, UINT16 settings) 9745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 9765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 9775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_POLICY_SET)) == NULL) 9795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 9805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 9825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_POLICY_SET; 9845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 9855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_POLICY_SETTINGS); 9865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_POLICY_SET); 9875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 9895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, settings); 9905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 9925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 9935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 9945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_def_policy_set (void) 9965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 9985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 9995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_DEF_POLICY_SET)) == NULL) 10015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 10025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 10045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_DEF_POLICY_SET; 10065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 10075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_DEF_POLICY_SETTINGS); 10095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_DEF_POLICY_SET); 10105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 10125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 10135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 10145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_def_policy_set (UINT16 settings) 10165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 10175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 10185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 10195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_DEF_POLICY_SET)) == NULL) 10215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 10225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 10245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_DEF_POLICY_SET; 10265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 10275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_DEF_POLICY_SETTINGS); 10285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_DEF_POLICY_SET); 10295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, settings); 10315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 10335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 10345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 10355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_flow_specification(UINT16 handle, UINT8 flags, UINT8 flow_direct, 10375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 service_type, UINT32 token_rate, 10385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 token_bucket_size, UINT32 peak, 10395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 latency) 10405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 10415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 10425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 10435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_FLOW_SPEC)) == NULL) 10455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 10465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 10485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_FLOW_SPEC; 10505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 10515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_FLOW_SPECIFICATION); 10535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_FLOW_SPEC); 10545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 10565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flags); 10575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flow_direct); 10585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, service_type); 10595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, token_rate); 10605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, token_bucket_size); 10615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, peak); 10625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, latency); 10635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 10655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 10665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 10675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_event_mask(UINT8 local_controller_id, BT_EVENT_MASK event_mask) 10695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 10705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 10715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 10725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_EVENT_MASK)) == NULL) 10745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 10755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 10775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SET_EVENT_MASK; 10795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 10805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SET_EVENT_MASK); 10825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SET_EVENT_MASK); 10835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY8_TO_STREAM (pp, event_mask); 10845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 10865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 10875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 10885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_event_mask_page_2 (UINT8 local_controller_id, BT_EVENT_MASK event_mask) 10905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 10915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 10925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 10935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_EVENT_MASK_PAGE_2)) == NULL) 10955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 10965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 10985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SET_EVENT_MASK_PAGE_2; 11005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 11015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SET_EVENT_MASK_PAGE_2); 11035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SET_EVENT_MASK_PAGE_2); 11045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY8_TO_STREAM (pp, event_mask); 11055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 11075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 11085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 11095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_reset (UINT8 local_controller_id) 11115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 11125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 11135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 11145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_RESET)) == NULL) 11165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 11175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 11195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_RESET; 11215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 11225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_RESET); 11245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_RESET); 11255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 11275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* If calling from LMP_TEST or ScriptEngine, then send HCI command immediately */ 11285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (!defined (LMP_TEST) && !defined(BTISE)) 11295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (local_controller_id == LOCAL_BR_EDR_CONTROLLER_ID) 11305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btm_acl_reset_paging (); 11325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btm_acl_set_discing (FALSE); 11335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 11355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 11365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 11375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_event_filter (UINT8 filt_type, UINT8 filt_cond_type, 11395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *filt_cond, UINT8 filt_cond_len) 11405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 11415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 11425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 11435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Use buffer large enough to hold all sizes in this command */ 11455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(2 + filt_cond_len)) == NULL) 11465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 11475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 11495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 11515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SET_EVENT_FILTER); 11535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (filt_type) 11555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = (UINT16)(HCIC_PREAMBLE_SIZE + 2 + filt_cond_len); 11575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, (UINT8)(2 + filt_cond_len)); 11585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, filt_type); 11605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, filt_cond_type); 11615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (filt_cond_type == HCI_FILTER_COND_DEVICE_CLASS) 11635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEVCLASS_TO_STREAM (pp, filt_cond); 11655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project filt_cond += DEV_CLASS_LEN; 11665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEVCLASS_TO_STREAM (pp, filt_cond); 11675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project filt_cond += DEV_CLASS_LEN; 11685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project filt_cond_len -= (2 * DEV_CLASS_LEN); 11705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else if (filt_cond_type == HCI_FILTER_COND_BD_ADDR) 11725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, filt_cond); 11745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project filt_cond += BD_ADDR_LEN; 11755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project filt_cond_len -= BD_ADDR_LEN; 11775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (filt_cond_len) 11805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY_TO_STREAM (pp, filt_cond, filt_cond_len); 11815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 11835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 11845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = (UINT16)(HCIC_PREAMBLE_SIZE + 1); 11855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, 1); 11865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, filt_type); 11885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 11895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 11915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 11925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 11935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_flush (UINT8 local_controller_id, UINT16 handle) 11955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 11965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 11975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 11985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 12005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 12015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 12035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 12055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 12065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_FLUSH); 12075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 12085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 12105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 12125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 12135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 12145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_pin_type (void) 12165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 12175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 12185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 12195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 12215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 12225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 12245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 12265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 12275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_PIN_TYPE); 12295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 12305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 12325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 12335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 12345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_pin_type (UINT8 type) 12365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 12375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 12385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 12395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 12415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 12425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 12445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 12465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 12475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_PIN_TYPE); 12495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 12505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, type); 12525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 12545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 12555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 12565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_new_unit_key (void) 12585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 12595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 12605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 12615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_NEW_UNIT_KEY)) == NULL) 12635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 12645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 12665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_NEW_UNIT_KEY; 12685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 12695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_CREATE_NEW_UNIT_KEY); 12715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_NEW_UNIT_KEY); 12725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 12745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 12755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 12765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_stored_key (BD_ADDR bd_addr, BOOLEAN read_all_flag) 12785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 12795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 12805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 12815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_STORED_KEY)) == NULL) 12835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 12845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 12865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_STORED_KEY; 12885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 12895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_STORED_LINK_KEY); 12915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_STORED_KEY); 12925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 12945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, read_all_flag); 12955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 12965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 12975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 12985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 12995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_stored_key (UINT8 num_keys, BD_ADDR *bd_addr, 13015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project LINK_KEY *link_key) 13025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 13035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 13045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 13055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int j; 13065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(1 + (num_keys * (BD_ADDR_LEN + LINK_KEY_LEN)))) == NULL) 13085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 13095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 13115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + 1 + (num_keys * (BD_ADDR_LEN + LINK_KEY_LEN)); 13145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 13155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_STORED_LINK_KEY); 13175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, p->len - HCIC_PREAMBLE_SIZE); 13185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(num_keys > HCI_MAX_NUM_OF_LINK_KEYS_PER_CMMD) 13205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project num_keys = HCI_MAX_NUM_OF_LINK_KEYS_PER_CMMD; 13215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, num_keys); 13235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (j = 0; j < num_keys; j++) 13255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 13265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr[j]); 13275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY16_TO_STREAM (pp, link_key[j]); 13285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 13295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 13315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 13325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 13335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_delete_stored_key (BD_ADDR bd_addr, BOOLEAN delete_all_flag) 13355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 13365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 13375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 13385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_DELETE_STORED_KEY)) == NULL) 13405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 13415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 13435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_DELETE_STORED_KEY; 13455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 13465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_DELETE_STORED_LINK_KEY); 13485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_DELETE_STORED_KEY); 13495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 13515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, delete_all_flag); 13525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 13545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 13555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 13565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_change_name (BD_NAME name) 13585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 13595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 13605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 13615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len = strlen ((char *)name) + 1; 13625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CHANGE_NAME)) == NULL) 13645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 13655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 13675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CHANGE_NAME; 13695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 13705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_CHANGE_LOCAL_NAME); 13725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CHANGE_NAME); 13735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY_TO_STREAM (pp, name, len); 13755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 13775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 13785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 13795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_name (void) 13815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 13825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 13835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 13845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 13865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 13875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 13895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 13915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 13925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LOCAL_NAME); 13945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 13955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 13965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 13975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 13985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 13995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_conn_acc_tout (UINT8 local_controller_id) 14015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 14035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 14045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 14065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 14075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 14095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 14115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 14125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_CONN_ACCEPT_TOUT); 14145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 14155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 14175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 14185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 14195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_conn_acc_tout (UINT8 local_controller_id, UINT16 timeout) 14215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 14235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 14245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM2)) == NULL) 14265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 14275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 14295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM2; 14315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 14325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_CONN_ACCEPT_TOUT); 14345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM2); 14355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, timeout); 14375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 14395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 14405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 14415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_page_tout (void) 14435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 14455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 14465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 14485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 14495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 14515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 14535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 14545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_PAGE_TOUT); 14565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 14575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 14595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 14605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 14615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_page_tout (UINT16 timeout) 14635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 14655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 14665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM2)) == NULL) 14685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 14695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 14715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM2; 14735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 14745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_PAGE_TOUT); 14765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM2); 14775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, timeout); 14795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 14815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 14825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 14835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_scan_enable (void) 14855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 14865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 14875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 14885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 14905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 14915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 14935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 14955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 14965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 14975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_SCAN_ENABLE); 14985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 14995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 15015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 15025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 15035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_scan_enable (UINT8 flag) 15055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 15065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 15075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 15085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 15105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 15115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 15135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 15155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 15165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_SCAN_ENABLE); 15185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 15195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flag); 15215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 15235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 15245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 15255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_pagescan_cfg(void) 15275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 15285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 15295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 15305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 15325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 15335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 15355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 15375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 15385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_PAGESCAN_CFG); 15405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 15415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 15435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 15445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 15455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_pagescan_cfg(UINT16 interval, UINT16 window) 15475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 15485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 15495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 15505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PAGESCAN_CFG)) == NULL) 15525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 15535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 15555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PAGESCAN_CFG; 15575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 15585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_PAGESCAN_CFG); 15605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PAGESCAN_CFG); 15615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, interval); 15635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, window); 15645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 15665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 15675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 15685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_inqscan_cfg(void) 15705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 15715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 15725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 15735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 15755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 15765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 15785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 15805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 15815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_INQUIRYSCAN_CFG); 15835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 15845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 15865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 15875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 15885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_inqscan_cfg(UINT16 interval, UINT16 window) 15905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 15915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 15925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 15935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_INQSCAN_CFG)) == NULL) 15955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 15965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 15985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 15995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_INQSCAN_CFG; 16005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 16015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_INQUIRYSCAN_CFG); 16035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_INQSCAN_CFG); 16045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, interval); 16065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, window); 16075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 16095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 16105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_auth_enable (void) 16135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 16155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 16165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 16185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 16195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 16215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 16235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 16245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_AUTHENTICATION_ENABLE); 16265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 16275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 16295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 16305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_auth_enable (UINT8 flag) 16335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 16355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 16365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 16385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 16395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 16415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 16435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 16445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_AUTHENTICATION_ENABLE); 16465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 16475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flag); 16495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 16515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 16525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_encr_mode (void) 16555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 16575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 16585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 16605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 16615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 16635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 16655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 16665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_ENCRYPTION_MODE); 16685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 16695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 16715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 16725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_encr_mode (UINT8 mode) 16755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 16775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 16785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 16805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 16815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 16835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 16855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 16865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_ENCRYPTION_MODE); 16885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 16895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, mode); 16915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 16935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 16945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 16955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 16965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_dev_class(void) 16975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 16985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 16995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 17005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 17025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 17035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 17055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 17075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 17085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_CLASS_OF_DEVICE); 17105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 17115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 17135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 17145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 17155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_dev_class(DEV_CLASS dev_class) 17175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 17185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 17195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 17205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM3)) == NULL) 17225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 17235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 17255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM3; 17275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 17285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_CLASS_OF_DEVICE); 17305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM3); 17315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEVCLASS_TO_STREAM (pp, dev_class); 17335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 17355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 17365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 17375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_voice_settings(void) 17395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 17405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 17415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 17425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 17445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 17455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 17475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 17495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 17505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_VOICE_SETTINGS); 17525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 17535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 17555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 17565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 17575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_voice_settings(UINT16 flags) 17595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 17605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 17615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 17625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM2)) == NULL) 17645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 17655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 17675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM2; 17695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 17705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_VOICE_SETTINGS); 17725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM2); 17735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, flags); 17755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 17775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 17785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 17795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_auto_flush_tout (UINT16 handle) 17815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 17825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 17835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 17845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 17865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 17875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 17895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 17915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 17925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_AUTO_FLUSH_TOUT); 17945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 17955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 17975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 17985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 17995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 18005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 18015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_auto_flush_tout (UINT16 handle, UINT16 tout) 18035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 18045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 18055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 18065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_AUTO_FLUSH_TOUT)) == NULL) 18085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 18095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 18115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_AUTO_FLUSH_TOUT; 18135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 18145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_AUTO_FLUSH_TOUT); 18165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_AUTO_FLUSH_TOUT); 18175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 18195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, tout); 18205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 18225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 18235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 18245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_num_bcast_xmit (void) 18265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 18275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 18285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 18295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 18315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 18325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 18345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 18365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 18375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_NUM_BCAST_REXMITS); 18395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 18405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 18425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 18435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 18445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_num_bcast_xmit (UINT8 num) 18465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 18475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 18485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 18495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 18515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 18525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 18545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 18565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 18575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_NUM_BCAST_REXMITS); 18595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 18605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, num); 18625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 18645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 18655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 18665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_hold_mode_act (void) 18685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 18695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 18705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 18715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 18735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 18745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 18765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 18785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 18795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_HOLD_MODE_ACTIVITY); 18815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 18825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 18845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 18855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 18865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_hold_mode_act (UINT8 flags) 18885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 18895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 18905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 18915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 18935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 18945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 18965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 18975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 18985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 18995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_HOLD_MODE_ACTIVITY); 19015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 19025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flags); 19045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 19065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 19075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 19085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_tx_power (UINT16 handle, UINT8 type) 19105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 19115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 19125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 19135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_TX_POWER)) == NULL) 19155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 19165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 19185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_TX_POWER; 19205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 19215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_TRANSMIT_POWER_LEVEL); 19235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_TX_POWER); 19245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 19265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, type); 19275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 19295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 19305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 19315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_sco_flow_enable (void) 19335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 19345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 19355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 19365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 19385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 19395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 19415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 19435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 19445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_SCO_FLOW_CTRL_ENABLE); 19465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 19475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 19495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 19505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 19515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_sco_flow_enable (UINT8 flag) 19535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 19545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 19555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 19565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 19585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 19595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 19615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 19635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 19645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_SCO_FLOW_CTRL_ENABLE); 19665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 19675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flag); 19695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 19715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 19725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 19735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_host_flow_ctrl (UINT8 value) 19755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 19765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 19775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 19785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 19805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 19815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 19835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 19855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 19865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SET_HC_TO_HOST_FLOW_CTRL); 19885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 19895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, value); 19915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 19935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 19945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 19955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 19965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_host_buf_size (UINT16 acl_len, UINT8 sco_len, 19975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 acl_num, UINT16 sco_num) 19985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 19995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 20005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 20015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_HOST_BUF_SIZE)) == NULL) 20035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 20045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 20065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SET_HOST_BUF_SIZE; 20085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 20095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_HOST_BUFFER_SIZE); 20115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SET_HOST_BUF_SIZE); 20125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, acl_len); 20145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, sco_len); 20155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, acl_num); 20165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, sco_num); 20175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 20195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 20205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 20215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_host_num_xmitted_pkts (UINT8 num_handles, UINT16 *handle, 20235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 *num_pkts) 20245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 20255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 20265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 20275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int j; 20285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(1 + (num_handles * 4))) == NULL) 20305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 20315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 20335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + 1 + (num_handles * 4); 20355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 20365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_HOST_NUM_PACKETS_DONE); 20385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, p->len - HCIC_PREAMBLE_SIZE); 20395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, num_handles); 20415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (j = 0; j < num_handles; j++) 20435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 20445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle[j]); 20455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, num_pkts[j]); 20465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 20475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 20495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 20505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 20515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_link_super_tout (UINT8 local_controller_id, UINT16 handle) 20535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 20545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 20555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 20565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 20585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 20595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 20615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 20635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 20645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LINK_SUPER_TOUT); 20665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 20675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 20695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 20715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 20725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 20735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_link_super_tout (UINT8 local_controller_id, UINT16 handle, UINT16 timeout) 20755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 20765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 20775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 20785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_LINK_SUPER_TOUT)) == NULL) 20805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 20815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 20835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_LINK_SUPER_TOUT; 20855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 20865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_LINK_SUPER_TOUT); 20885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_LINK_SUPER_TOUT); 20895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 20915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, timeout); 20925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 20945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 20955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 20965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 20975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_max_iac (void) 20985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 20995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 21005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 21015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 21035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 21045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 21065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 21085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 21095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_NUM_SUPPORTED_IAC); 21115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 21125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 21145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 21155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 21165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_cur_iac_lap (void) 21185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 21195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 21205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 21215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 21235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 21245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 21265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 21285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 21295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_CURRENT_IAC_LAP); 21315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 21325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 21345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 21355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 21365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_cur_iac_lap (UINT8 num_cur_iac, LAP * const iac_lap) 21385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 21395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 21405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 21415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int i; 21425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(1 + (LAP_LEN * num_cur_iac))) == NULL) 21445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 21455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 21475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + 1 + (LAP_LEN * num_cur_iac); 21495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 21505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_CURRENT_IAC_LAP); 21525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, p->len - HCIC_PREAMBLE_SIZE); 21535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, num_cur_iac); 21555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < num_cur_iac; i++) 21575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project LAP_TO_STREAM (pp, iac_lap[i]); 21585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 21605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 21615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 21625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_page_scan_per (void) 21645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 21655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 21665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 21675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 21695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 21705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 21725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 21745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 21755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_PAGESCAN_PERIOD_MODE); 21775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 21785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 21805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 21815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 21825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_page_scan_per (UINT8 mode) 21845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 21855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 21865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 21875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 21895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 21905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 21925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 21945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 21955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_PAGESCAN_PERIOD_MODE); 21975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 21985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 21995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, mode); 22005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 22025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 22035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 22045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_page_scan_mode (void) 22065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 22075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 22085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 22095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 22115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 22125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 22145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 22165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 22175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_PAGESCAN_MODE); 22195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 22205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 22225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 22235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 22245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_page_scan_mode (UINT8 mode) 22265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 22275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 22285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 22295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 22315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 22325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 22345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 22365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 22375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_PAGESCAN_MODE); 22395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 22405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, mode); 22425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 22445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 22455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 22465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************** 22485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Lisbon Features 22495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************/ 22505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SSR_INCLUDED == TRUE 22515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_sniff_sub_rate(UINT16 handle, UINT16 max_lat, 22535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 min_remote_lat, UINT16 min_local_lat) 22545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 22555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 22565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 22575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SNIFF_SUB_RATE)) == NULL) 22595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 22605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 22625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SNIFF_SUB_RATE; 22645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 22655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SNIFF_SUB_RATE); 22675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SNIFF_SUB_RATE); 22685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 22705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, max_lat); 22715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, min_remote_lat); 22725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, min_local_lat); 22735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 22755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 22765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 22775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_SSR_INCLUDED */ 22785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTM_EIR_SERVER_INCLUDED == TRUE) 22805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/**** Extended Inquiry Response Commands ****/ 22815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_ext_inquiry_response (void) 22825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 22835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 22845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 22855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 22875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 22885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 22905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 22925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 22935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_EXT_INQ_RESPONSE); 22955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 22965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 22985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 22995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 23005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btsnd_hcic_write_ext_inquiry_response (void *buffer, UINT8 fec_req) 23025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 23035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p = (BT_HDR *)buffer; 23045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp = (UINT8 *)(p + 1); 23055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_EXT_INQ_RESP; 23075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 23085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_EXT_INQ_RESPONSE); 23105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_EXT_INQ_RESP); 23115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, fec_req); 23135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 23155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 23165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_EIR_SERVER_INCLUDED == TRUE */ 23175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/**** Simple Pairing Commands ****/ 23195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_simple_pairing_mode (UINT8 mode) 23205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 23215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 23225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 23235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_W_SIMP_PAIR)) == NULL) 23255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 23265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 23285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_W_SIMP_PAIR; 23305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 23315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_SIMPLE_PAIRING_MODE); 23335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_W_SIMP_PAIR); 23345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, mode); 23365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 23385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 23395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 23405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_simple_pairing_mode (void) 23425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 23435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 23445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 23455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_SIMP_PAIR)) == NULL) 23475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 23485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 23505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_R_SIMP_PAIR; 23525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 23535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_SIMPLE_PAIRING_MODE); 23555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_R_SIMP_PAIR); 23565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 23585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 23595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 23605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_simp_pair_debug_mode(UINT8 debug_mode) 23625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 23635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 23645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 23655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SIMP_PAIR_DBUG)) == NULL) 23675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 23685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 23705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SIMP_PAIR_DBUG; 23725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 23735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_SIMP_PAIR_DEBUG_MODE); 23755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SIMP_PAIR_DBUG); 23765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, debug_mode); 23785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 23805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 23815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 23825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_io_cap_req_reply (BD_ADDR bd_addr, UINT8 capability, 23845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 oob_present, UINT8 auth_req) 23855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 23865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 23875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 23885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_IO_CAP_RESP)) == NULL) 23905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 23915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 23935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_IO_CAP_RESP; 23955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 23965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 23975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_IO_CAPABILITY_RESPONSE); 23985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_IO_CAP_RESP); 23995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 24015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, capability); 24025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, oob_present); 24035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, auth_req); 24045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 24065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 24075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 24085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_io_cap_req_neg_reply (BD_ADDR bd_addr, UINT8 err_code) 24105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 24115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 24125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 24135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY)) == NULL) 24155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 24165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 24185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY; 24205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 24215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_IO_CAP_REQ_NEG_REPLY); 24235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_IO_CAP_NEG_REPLY); 24245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 24265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, err_code); 24275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 24295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 24305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 24315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_local_oob_data (void) 24335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 24345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 24355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 24365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_LOCAL_OOB)) == NULL) 24385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 24395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 24415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_R_LOCAL_OOB; 24435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 24445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LOCAL_OOB_DATA); 24465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_R_LOCAL_OOB); 24475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 24495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 24505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 24515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_user_conf_reply (BD_ADDR bd_addr, BOOLEAN is_yes) 24535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 24545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 24555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 24565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_UCONF_REPLY)) == NULL) 24585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 24595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 24615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_UCONF_REPLY; 24635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 24645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (!is_yes) 24665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Negative reply */ 24685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_USER_CONF_VALUE_NEG_REPLY); 24695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 24715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 24725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Confirmation */ 24735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_USER_CONF_REQUEST_REPLY); 24745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 24755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_UCONF_REPLY); 24775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 24795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 24815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 24825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 24835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_user_passkey_reply (BD_ADDR bd_addr, UINT32 value) 24855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 24865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 24875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 24885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_U_PKEY_REPLY)) == NULL) 24905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 24915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 24935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_U_PKEY_REPLY; 24955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 24965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 24975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_USER_PASSKEY_REQ_REPLY); 24985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_U_PKEY_REPLY); 24995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 25015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32_TO_STREAM (pp, value); 25025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 25045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 25055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 25065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_user_passkey_neg_reply (BD_ADDR bd_addr) 25085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 25095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 25105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 25115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_U_PKEY_NEG_REPLY)) == NULL) 25135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 25145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 25165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_U_PKEY_NEG_REPLY; 25185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 25195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_USER_PASSKEY_REQ_NEG_REPLY); 25215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_U_PKEY_NEG_REPLY); 25225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 25245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 25265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 25275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 25285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_rem_oob_reply (BD_ADDR bd_addr, UINT8 *p_c, UINT8 *p_r) 25305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 25315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 25325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 25335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REM_OOB_REPLY)) == NULL) 25355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 25365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 25385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_REM_OOB_REPLY; 25405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 25415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_REM_OOB_DATA_REQ_REPLY); 25435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_REM_OOB_REPLY); 25445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 25465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY16_TO_STREAM (pp, p_c); 25475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY16_TO_STREAM (pp, p_r); 25485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 25505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 25515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 25525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_rem_oob_neg_reply (BD_ADDR bd_addr) 25545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 25555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 25565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 25575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_REM_OOB_NEG_REPLY)) == NULL) 25595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 25605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 25625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_REM_OOB_NEG_REPLY; 25645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 25655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_REM_OOB_DATA_REQ_NEG_REPLY); 25675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_REM_OOB_NEG_REPLY); 25685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 25705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 25725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 25735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 25745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_inq_tx_power (void) 25775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 25785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 25795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 25805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_TX_POWER)) == NULL) 25825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 25835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 25855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_R_TX_POWER; 25875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 25885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_INQ_TX_POWER_LEVEL); 25905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_R_TX_POWER); 25915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 25935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 25945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 25955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 25965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_inq_tx_power (INT8 level) 25975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 25985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 25995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 26005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_W_TX_POWER)) == NULL) 26025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 26035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 26055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_W_TX_POWER; 26075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 26085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_INQ_TX_POWER_LEVEL); 26105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_W_TX_POWER); 26115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project INT8_TO_STREAM (pp, level); 26135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 26155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 26165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 26175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if 0 /* currently not been used */ 26195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_default_erroneous_data_rpt (void) 26205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 26215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 26225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 26235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_R_ERR_DATA_RPT)) == NULL) 26255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 26265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 26285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_R_ERR_DATA_RPT; 26305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 26315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_ERRONEOUS_DATA_RPT); 26335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_R_ERR_DATA_RPT); 26345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 26365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 26375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 26385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 26395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_default_erroneous_data_rpt (UINT8 flag) 26415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 26425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 26435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 26445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_W_ERR_DATA_RPT)) == NULL) 26465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 26475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 26495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_W_ERR_DATA_RPT; 26515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 26525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_ERRONEOUS_DATA_RPT); 26545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_W_ERR_DATA_RPT); 26555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, flag); 26575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 26595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 26605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 26615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_send_keypress_notif (BD_ADDR bd_addr, UINT8 notif) 26635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 26645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 26655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 26665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF)) == NULL) 26685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 26695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 26715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF; 26735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 26745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SEND_KEYPRESS_NOTIF); 26765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SEND_KEYPRESS_NOTIF); 26775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BDADDR_TO_STREAM (pp, bd_addr); 26795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, notif); 26805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 26825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 26835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 26845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/**** end of Simple Pairing Commands ****/ 26865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if L2CAP_NON_FLUSHABLE_PB_INCLUDED == TRUE 26885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_enhanced_flush (UINT16 handle, UINT8 packet_type) 26895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 26905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 26915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 26925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_ENHANCED_FLUSH)) == NULL) 26945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 26955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 26975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 26985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_ENHANCED_FLUSH; 26995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 27005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_ENHANCED_FLUSH); 27015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_ENHANCED_FLUSH); 27025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 27045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, packet_type); 27055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 27075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 27085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 27105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_refresh_encryption_key (UINT16 handle) 27135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 27155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 27165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 27185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 27195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 27215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 27235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 27245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_REFRESH_ENCRYPTION_KEY); 27255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 27265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 27285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 27305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 27315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/************************* 27335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** End of Lisbon Commands 27345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**************************/ 27355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_local_ver (UINT8 local_controller_id) 27375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 27395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 27405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 27425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 27435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 27455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 27475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 27485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LOCAL_VERSION_INFO); 27505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 27515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 27535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 27545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_local_supported_cmds (UINT8 local_controller_id) 27575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 27595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 27605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 27625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 27635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 27655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 27675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 27685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LOCAL_SUPPORTED_CMDS); 27705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 27715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 27735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 27745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_local_features (void) 27775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 27795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 27805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 27825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 27835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 27855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 27875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 27885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LOCAL_FEATURES); 27905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 27915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 27935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 27945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 27955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_local_ext_features (UINT8 page_num) 27975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 27985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 27995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 28005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_LOCAL_EXT_FEATURES)) == NULL) 28025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 28035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 28055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_LOCAL_EXT_FEATURES; 28075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 28085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LOCAL_EXT_FEATURES); 28105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_LOCAL_EXT_FEATURES); 28115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, page_num); 28135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 28155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 28165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 28175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_buffer_size (void) 28195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 28205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 28215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 28225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 28245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 28255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 28275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 28295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 28305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_BUFFER_SIZE); 28325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 28335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 28355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 28365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 28375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_country_code (void) 28395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 28405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 28415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 28425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 28445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 28455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 28475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 28495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 28505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_COUNTRY_CODE); 28525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 28535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 28555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 28565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 28575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_bd_addr (void) 28595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 28605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 28615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 28625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 28645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 28655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 28675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 28695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 28705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_BD_ADDR); 28725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 28735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 28755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 28765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 28775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_fail_contact_count (UINT8 local_controller_id, UINT16 handle) 28795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 28805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 28815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 28825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 28845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 28855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 28875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 28895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 28905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_FAILED_CONTACT_COUNT); 28925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 28935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 28955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 28965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 28975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 28985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 28995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_reset_fail_contact_count (UINT8 local_controller_id, UINT16 handle) 29015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 29035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 29045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 29065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 29075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 29095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 29115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 29125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_RESET_FAILED_CONTACT_COUNT); 29145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 29155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 29175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (local_controller_id, p); 29195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 29205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 29215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_get_link_quality (UINT16 handle) 29235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 29255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 29265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 29285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 29295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 29315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 29335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 29345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_GET_LINK_QUALITY); 29365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 29375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 29395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 29415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 29425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 29435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_rssi (UINT16 handle) 29455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 29475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 29485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 29505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 29515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 29535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 29555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 29565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_RSSI); 29585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 29595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 29615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 29635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 29645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 29655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_loopback_mode (void) 29675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 29695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 29705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 29725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 29735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 29755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 29775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 29785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_LOOPBACK_MODE); 29805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 29815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 29835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 29845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 29855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_loopback_mode (UINT8 mode) 29875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 29885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 29895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 29905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 29925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 29935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 29955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 29975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 29985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_LOOPBACK_MODE); 30005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 30015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, mode); 30035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 30055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 30065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_enable_test_mode (void) 30095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 30115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 30125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 30145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 30155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 30175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 30195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 30205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_ENABLE_DEV_UNDER_TEST_MODE); 30225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 30235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 30255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 30265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_afh_channel_assessment_mode (UINT8 mode) 30295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 30315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 30325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 30345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 30355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 30375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 30395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 30405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_AFH_ASSESSMENT_MODE); 30425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 30435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, mode); 30455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 30475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 30485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_afh_channel_assessment_mode(void) 30515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 30535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 30545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 30565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 30575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 30595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 30615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 30625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_AFH_ASSESSMENT_MODE); 30645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 30655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 30675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 30685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 30695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_afh_channels (UINT8 first, UINT8 last) 30715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 30725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 30735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 30745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 channels[10] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F}; 30755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int i; 30765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_AFH_CHANNELS)) == NULL) 30785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 30795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 30815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SET_AFH_CHANNELS; 30835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 30845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SET_AFH_CHANNELS); 30865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SET_AFH_CHANNELS); 30875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Just make sure that caller did not exceed 79 Bluetooth channels */ 30895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((first <= last) && (last <= 78)) 30905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 30915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = first; i <= last; i++) 30925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 30935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int byte_offset = i / 8; 30945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int bit_offset = i % 8; 30955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project channels[byte_offset] &= ~(1 << bit_offset); 30965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 30975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 30985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < 10; i++) 30995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *pp++ = channels[i]; 31005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 31025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 31035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_set_afh_host_channel_class (UINT8 *p_afhchannelmap) 31065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 31085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 31095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int i; 31105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_SET_AFH_CHANNELS)) == NULL) 31125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 31135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 31155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_SET_AFH_CHANNELS; 31175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 31185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_SET_AFH_CHANNELS); 31205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_SET_AFH_CHANNELS); 31215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Copy and convert */ 31235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < 10; i++) 31245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *pp++ = p_afhchannelmap[9-i]; 31255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 31275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 31285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_afh_channel_map (UINT16 handle) 31315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 31335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 31345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_CMD_HANDLE)) == NULL) 31365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 31375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 31395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_CMD_HANDLE; 31415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 31425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_AFH_CH_MAP); 31445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_CMD_HANDLE); 31455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 31475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 31495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 31505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_clock (UINT16 handle, UINT8 which_clock) 31535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 31555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 31565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CLOCK)) == NULL) 31585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 31595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 31615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CLOCK; 31635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 31645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_CLOCK); 31665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CLOCK); 31675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, handle); 31695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, which_clock); 31705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 31725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 31735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_inqscan_type(void) 31765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 31785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 31795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 31815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 31825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 31845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 31865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 31875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_INQSCAN_TYPE); 31895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 31905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 31925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 31935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 31945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 31955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_inqscan_type (UINT8 type) 31965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 31975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 31985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 31995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 32015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 32025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 32045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 32065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 32075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_INQSCAN_TYPE); 32095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 32105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, type); 32125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 32145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 32155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 32165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_inquiry_mode (void) 32185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 32195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 32205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 32215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 32235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 32245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 32265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 32285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 32295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_INQUIRY_MODE); 32315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 32325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 32345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 32355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 32365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_inquiry_mode (UINT8 mode) 32385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 32395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 32405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 32415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 32435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 32445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 32465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 32485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 32495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_INQUIRY_MODE); 32515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 32525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, mode); 32545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 32565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 32575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 32585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_read_pagescan_type (void) 32605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 32615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 32625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 32635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 32655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 32665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 32685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 32705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 32715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_READ_PAGESCAN_TYPE); 32735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 32745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 32765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 32775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 32785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_write_pagescan_type (UINT8 type) 32805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 32815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 32825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 32835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_WRITE_PARAM1)) == NULL) 32855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 32865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 32885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_WRITE_PARAM1; 32905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 32915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_WRITE_PAGESCAN_TYPE); 32935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_WRITE_PARAM1); 32945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, type); 32965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 32975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 32985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 32995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 33005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Must have room to store BT_HDR + max VSC length + callback pointer */ 33025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if !defined (LMP_TEST) && (HCI_CMD_POOL_BUF_SIZE < 268) 33035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#error "HCI_CMD_POOL_BUF_SIZE must be larger than 268" 33045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 33055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btsnd_hcic_vendor_spec_cmd (void *buffer, UINT16 opcode, UINT8 len, 33075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_data, void *p_cmd_cplt_cback) 33085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 33095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p = (BT_HDR *)buffer; 33105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp = (UINT8 *)(p + 1); 33115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + len; 33135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = sizeof(void *); 33145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *((void **)pp) = p_cmd_cplt_cback; /* Store command complete callback in buffer */ 33165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp += sizeof(void *); /* Skip over callback pointer */ 33175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_GRP_VENDOR_SPECIFIC | opcode); 33195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, len); 33205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ARRAY_TO_STREAM (pp, p_data, len); 33215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 33235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 33245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btsnd_hcic_data (BT_HDR *p_buf, UINT16 len, UINT16 handle, UINT8 boundary, UINT8 broadcast) 33265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 33275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p; 33285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Higher layer should have left 4 bytes for us to fill the header */ 33305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->offset -= 4; 33315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->len += 4; 33325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Find the pointer to the beginning of the data */ 33345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p = (UINT8 *)(p_buf + 1) + p_buf->offset; 33355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (p, handle | ((boundary & 3) << 12) | ((broadcast & 3) << 14)); 33375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (p, len); 33385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ACL_DATA_TO_LOWER (p_buf); 33405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 33415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btsnd_hcic_nop (void) 33435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 33445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p; 33455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *pp; 33465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p = HCI_GET_CMD_BUF(HCIC_PARAM_SIZE_READ_CMD)) == NULL) 33485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (FALSE); 33495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project pp = (UINT8 *)(p + 1); 33515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_READ_CMD; 33535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p->offset = 0; 33545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16_TO_STREAM (pp, HCI_COMMAND_NONE); 33565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8_TO_STREAM (pp, HCIC_PARAM_SIZE_READ_CMD); 33575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 33585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btu_hcif_send_cmd (LOCAL_BR_EDR_CONTROLLER_ID, p); 33595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return (TRUE); 33605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 33615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3362