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