Home | History | Annotate | Download | only in internal_include
      1 /******************************************************************************
      2  *
      3  *  Copyright 2001-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  *  this file contains constants and definitions for the bte project
     22  *
     23  ******************************************************************************/
     24 #ifndef BTE_H
     25 #define BTE_H
     26 
     27 #include <pthread.h>
     28 #include <semaphore.h>
     29 #include <signal.h>
     30 #include "bt_target.h"
     31 
     32 /* By default on shutdown, the baud rate is reset to 115kbits. This should NOT
     33  * be needed for platforms that kill the BTE driver and remove/reset BT chip.
     34  */
     35 #ifndef BTE_RESET_BAUD_ON_BT_DISABLE
     36 #define BTE_RESET_BAUD_ON_BT_DISABLE TRUE
     37 #endif
     38 
     39 /* Target Modes (based on jumper settings on hardware [see user manual])
     40  *                           BTE                  BBY
     41  *                           J3   J4              SW3-3   SW3-2   SW3-1
     42  *                          --------------------------------------------
     43  * BTE_MODE_SERIAL_APP,      OUT  OUT             OFF     OFF     OFF
     44  * BTE_MODE_APPL,            IN   OUT             OFF     OFF     ON
     45  * BTE_MODE_RESERVED,        OUT  IN              OFF     ON      OFF
     46  * BTE_MODE_SAMPLE_APPS,     IN   IN              OFF     ON      ON
     47  * BTE_MODE_DONGLE,          not yet supported    ON      OFF     OFF
     48  * BTE_MODE_APPL_PROTOCOL_TRACE,     * this is a fake mode *
     49  * BTE_MODE_INVALID
     50  */
     51 enum {
     52   BTE_MODE_SERIAL_APP,          /* Sample serial port application      */
     53   BTE_MODE_APPL,                /* Target used with Tester through RPC */
     54   BTE_MODE_RESERVED,            /* Reserved                            */
     55   BTE_MODE_SAMPLE_APPS,         /* Sample applications (ICP/HSP)       */
     56   BTE_MODE_DONGLE,              /* Dongle mode                         */
     57   BTE_MODE_APPL_PROTOCOL_TRACE, /* Allow protocol tracing without rpc */
     58   BTE_MODE_INVALID
     59 };
     60 
     61 extern volatile uint8_t
     62     bte_target_mode; /* indicates the mode that the board is running in */
     63 
     64 /* Startup options */
     65 extern uint32_t bte_startup_options; /* Switch and jumper settings at startup */
     66 void bte_get_startup_options(
     67     uint32_t*
     68         p_options); /* Platform specific function for getting startup options */
     69 
     70 #define BTE_OPTIONS_TARGET_MODE_MASK                                         \
     71   0x00000007 /* bits 2-0 indicate target mode (QuickConnect: jp3 & jp4, BBY: \
     72                 SW3-1 & SW3-2)*/
     73 
     74 /****************************************************************************
     75  * Definitions to define which type of application gets built
     76  ****************************************************************************/
     77 #define BUILD_HCITOOL FALSE
     78 #define BUILD_L2PING FALSE
     79 
     80 #define LINUX_FM_DRIVER_INCLUDED FALSE
     81 
     82 /* hcisu userial operations. should probably go into bt_types to avoid
     83  * collisions! */
     84 #define BT_EVT_TO_HCISU_USERIAL_OP (0x0080 | BT_EVT_HCISU)
     85 /* operation for above hcisu event */
     86 #define BT_HCISU_USERIAL_OPEN                                                 \
     87   (0)                              /* open serial port calling USERIAL_Open() \
     88                                       */
     89 #define BT_HCISU_USERIAL_CLOSE (1) /* close userial port */
     90 /* options associated with close op */
     91 #define BT_HCISU_USERIAL_CL_NO_DIS_BT \
     92   0 /* do not touch bt_wake and power gpio */
     93 #define BT_HCISU_USERIAL_CL_DIS_BT                              \
     94   1 /* put power and bt_wake into defined off state to preserve \
     95        power */
     96 /* status codes for callback */
     97 #define BTE_HCISU_USERIAL_FAIL 0
     98 #define BTE_HCISU_USERIAL_OK 1
     99 typedef void(tUSERIAL_MSG_CBACK)(int status);
    100 typedef struct tHCISU_USERIAL_MSG_tag {
    101   BT_HDR hdr;
    102   tUSERIAL_MSG_CBACK* p_cback;
    103   uint8_t port; /* port number */
    104   uint8_t op;
    105   uint8_t option; /* option for operation. depends on operation */
    106 } tHCISU_USERIAL_MSG;
    107 
    108 extern void bte_hcisu_userial_oper(tUSERIAL_MSG_CBACK* p_cback, uint8_t port,
    109                                    uint8_t op, uint8_t option);
    110 
    111 /* Pointer to function for sending HCI commands and data to the HCI tranport */
    112 extern int (*p_bte_hci_send)(uint16_t port, BT_HDR* p_msg);
    113 
    114 // Initialize control block memory for each stack component.
    115 extern void BTE_InitStack(void);
    116 
    117 /* Protocol trace mask */
    118 extern uint32_t bte_proto_trace_mask;
    119 
    120 typedef struct tBAUD_REG_tag {
    121   uint8_t DHBR;
    122   uint8_t DLBR;
    123   uint8_t ExplicitBaudRate0;
    124   uint8_t ExplicitBaudRate1;
    125   uint8_t ExplicitBaudRate2;
    126   uint8_t ExplicitBaudRate3;
    127 } tBAUD_REG;
    128 
    129 extern const tBAUD_REG baud_rate_regs[];
    130 
    131 #endif /* BTE_H */
    132