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