Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2009-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  Filename:      bt_hci_bdroid.h
     22  *
     23  *  Description:   A wrapper header file of bt_hci_lib.h
     24  *
     25  *                 Contains definitions specific for interfacing with Bluedroid
     26  *                 Bluetooth stack
     27  *
     28  ******************************************************************************/
     29 
     30 #pragma once
     31 
     32 #ifdef HAS_BDROID_BUILDCFG
     33 #include "bdroid_buildcfg.h"
     34 #endif
     35 
     36 /******************************************************************************
     37 **  Constants & Macros
     38 ******************************************************************************/
     39 
     40 #if __STDC_VERSION__ < 199901L
     41 #  ifndef FALSE
     42 #    define FALSE 0
     43 #  endif
     44 #  ifndef TRUE
     45 #    define TRUE (!FALSE)
     46 #  endif
     47 #else
     48 #  include <stdbool.h>
     49 #  ifndef FALSE
     50 #    define FALSE  false
     51 #  endif
     52 #  ifndef TRUE
     53 #    define TRUE   true
     54 #  endif
     55 #endif
     56 
     57 #define HCI_ACL_MAX_SIZE 1024
     58 #define HCI_MAX_FRAME_SIZE (HCI_ACL_MAX_SIZE + 4)
     59 
     60 /* Host/Controller lib internal event ID */
     61 typedef enum {
     62   HC_EVENT_LPM_IDLE_TIMEOUT,
     63 } bthc_event_t;
     64 
     65 /* Message event mask across Host/Controller lib and stack */
     66 #define MSG_EVT_MASK                    0xFF00 /* eq. BT_EVT_MASK */
     67 #define MSG_SUB_EVT_MASK                0x00FF /* eq. BT_SUB_EVT_MASK */
     68 
     69 /* Message event ID passed from Host/Controller lib to stack */
     70 #define MSG_HC_TO_STACK_HCI_ERR        0x1300 /* eq. BT_EVT_TO_BTU_HCIT_ERR */
     71 #define MSG_HC_TO_STACK_HCI_ACL        0x1100 /* eq. BT_EVT_TO_BTU_HCI_ACL */
     72 #define MSG_HC_TO_STACK_HCI_SCO        0x1200 /* eq. BT_EVT_TO_BTU_HCI_SCO */
     73 #define MSG_HC_TO_STACK_HCI_EVT        0x1000 /* eq. BT_EVT_TO_BTU_HCI_EVT */
     74 #define MSG_HC_TO_STACK_L2C_SEG_XMIT   0x1900 /* eq. BT_EVT_TO_BTU_L2C_SEG_XMIT */
     75 
     76 /* Message event ID passed from stack to vendor lib */
     77 #define MSG_STACK_TO_HC_HCI_ACL        0x2100 /* eq. BT_EVT_TO_LM_HCI_ACL */
     78 #define MSG_STACK_TO_HC_HCI_SCO        0x2200 /* eq. BT_EVT_TO_LM_HCI_SCO */
     79 #define MSG_STACK_TO_HC_HCI_CMD        0x2000 /* eq. BT_EVT_TO_LM_HCI_CMD */
     80 
     81 /* Local Bluetooth Controller ID for BR/EDR */
     82 #define LOCAL_BR_EDR_CONTROLLER_ID      0
     83 
     84 /******************************************************************************
     85 **  Type definitions and return values
     86 ******************************************************************************/
     87 
     88 typedef struct
     89 {
     90     uint16_t          event;
     91     uint16_t          len;
     92     uint16_t          offset;
     93     uint16_t          layer_specific;
     94     uint8_t           data[];
     95 } HC_BT_HDR;
     96 
     97 #define BT_HC_HDR_SIZE (sizeof(HC_BT_HDR))
     98 
     99 typedef struct _hc_buffer_hdr
    100 {
    101     struct _hc_buffer_hdr *p_next;   /* next buffer in the queue */
    102     uint8_t   reserved1;
    103     uint8_t   reserved2;
    104     uint8_t   reserved3;
    105     uint8_t   reserved4;
    106 } HC_BUFFER_HDR_T;
    107 
    108 #define BT_HC_BUFFER_HDR_SIZE (sizeof(HC_BUFFER_HDR_T))
    109 
    110 /******************************************************************************
    111 **  Extern variables and functions
    112 ******************************************************************************/
    113 
    114 /******************************************************************************
    115 **  Functions
    116 ******************************************************************************/
    117 
    118 // Called when a buffer has been produced by the serial layer and should be
    119 // processed by the HCI layer.
    120 void bthc_rx_ready(void);
    121 void bthc_tx(HC_BT_HDR *buf);
    122 void bthc_idle_timeout(void);
    123