15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2009-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 * Filename: bt_hci_bdroid.h 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Description: A wrapper header file of bt_hci_lib.h 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Contains definitions specific for interfacing with Bluedroid 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Bluetooth stack 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 30dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati#pragma once 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_hci_lib.h" 336e12f443720a668c72d308ad6bde3146184a4124Heather Lee Wilson 346e12f443720a668c72d308ad6bde3146184a4124Heather Lee Wilson#ifdef HAS_BDROID_BUILDCFG 356e12f443720a668c72d308ad6bde3146184a4124Heather Lee Wilson#include "bdroid_buildcfg.h" 366e12f443720a668c72d308ad6bde3146184a4124Heather Lee Wilson#endif 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Constants & Macros 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************************************************/ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 42dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati#if __STDC_VERSION__ < 199901L 43dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# ifndef FALSE 44dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# define FALSE 0 45dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# endif 46dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# ifndef TRUE 47dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# define TRUE (!FALSE) 48dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# endif 49dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati#else 50dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# include <stdbool.h> 51dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# ifndef FALSE 52dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# define FALSE false 53dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# endif 54dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# ifndef TRUE 55dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# define TRUE true 56dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati# endif 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 59535e24b82c3041a9532e7b7b27cdd449160e2f03Loic Poulain#define HCI_ACL_MAX_SIZE 1024 60535e24b82c3041a9532e7b7b27cdd449160e2f03Loic Poulain#define HCI_MAX_FRAME_SIZE (HCI_ACL_MAX_SIZE + 4) 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Host/Controller lib internal event ID */ 63dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavatitypedef enum { 64dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati HC_EVENT_LPM_IDLE_TIMEOUT, 65dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati} bthc_event_t; 6666432dcffe211e317d35978283a04a96d5620bdfMatthew Xie 6766432dcffe211e317d35978283a04a96d5620bdfMatthew Xie#define MSG_CTRL_TO_HC_CMD 0x0100 /* evt mask used by HC_EVENT_TX_CMD */ 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Message event mask across Host/Controller lib and stack */ 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_EVT_MASK 0xFF00 /* eq. BT_EVT_MASK */ 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_SUB_EVT_MASK 0x00FF /* eq. BT_SUB_EVT_MASK */ 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Message event ID passed from Host/Controller lib to stack */ 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_HC_TO_STACK_HCI_ERR 0x1300 /* eq. BT_EVT_TO_BTU_HCIT_ERR */ 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_HC_TO_STACK_HCI_ACL 0x1100 /* eq. BT_EVT_TO_BTU_HCI_ACL */ 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_HC_TO_STACK_HCI_SCO 0x1200 /* eq. BT_EVT_TO_BTU_HCI_SCO */ 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_HC_TO_STACK_HCI_EVT 0x1000 /* eq. BT_EVT_TO_BTU_HCI_EVT */ 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_HC_TO_STACK_L2C_SEG_XMIT 0x1900 /* eq. BT_EVT_TO_BTU_L2C_SEG_XMIT */ 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Message event ID passed from stack to vendor lib */ 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_STACK_TO_HC_HCI_ACL 0x2100 /* eq. BT_EVT_TO_LM_HCI_ACL */ 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_STACK_TO_HC_HCI_SCO 0x2200 /* eq. BT_EVT_TO_LM_HCI_SCO */ 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_STACK_TO_HC_HCI_CMD 0x2000 /* eq. BT_EVT_TO_LM_HCI_CMD */ 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Local Bluetooth Controller ID for BR/EDR */ 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LOCAL_BR_EDR_CONTROLLER_ID 0 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8866432dcffe211e317d35978283a04a96d5620bdfMatthew Xie/* Definitions of audio codec type 8966432dcffe211e317d35978283a04a96d5620bdfMatthew Xie * inherited from AG callout function "codec" parameter 9066432dcffe211e317d35978283a04a96d5620bdfMatthew Xie */ 9166432dcffe211e317d35978283a04a96d5620bdfMatthew Xie#define SCO_CODEC_NONE 0x0000 /* BTA_AG_CODEC_NONE/BTM_SCO_CODEC_NONE */ 9266432dcffe211e317d35978283a04a96d5620bdfMatthew Xie#define SCO_CODEC_CVSD 0x0001 /* BTA_AG_CODEC_CVSD/BTM_SCO_CODEC_CVSD */ 9366432dcffe211e317d35978283a04a96d5620bdfMatthew Xie#define SCO_CODEC_MSBC 0x0002 /* BTA_AG_CODEC_MSBC/BTM_SCO_CODEC_MSBC */ 9466432dcffe211e317d35978283a04a96d5620bdfMatthew Xie 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Type definitions and return values 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************************************************/ 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint16_t event; 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint16_t len; 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint16_t offset; 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint16_t layer_specific; 105f0952b522e3326b79b146e7c3c59fa3b29d59de6Sharvil Nanavati uint8_t data[]; 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} HC_BT_HDR; 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BT_HC_HDR_SIZE (sizeof(HC_BT_HDR)) 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct _hc_buffer_hdr 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project struct _hc_buffer_hdr *p_next; /* next buffer in the queue */ 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint8_t reserved1; 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint8_t reserved2; 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint8_t reserved3; 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project uint8_t reserved4; 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} HC_BUFFER_HDR_T; 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BT_HC_BUFFER_HDR_SIZE (sizeof(HC_BUFFER_HDR_T)) 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Extern variables and functions 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************************************************/ 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern bt_hc_callbacks_t *bt_hc_cbacks; 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Functions 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************************************************/ 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 131dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati// Called when a buffer has been produced by the serial layer and should be 132dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavati// processed by the HCI layer. 133dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavativoid bthc_rx_ready(void); 134dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavativoid bthc_tx(HC_BT_HDR *buf); 135dd28edb310906c63ba4535ccd02f3ca4d496f021Sharvil Nanavativoid bthc_idle_timeout(void); 136