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