15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Copyright (C) 2001-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 *  this file contains constants and definitions for the bte project
225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTE_H
255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTE_H
265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <semaphore.h>
285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <signal.h>
295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <pthread.h>
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h"
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* by default on shutdown, baudrate is reset 115kbits. this should NOT be need for platforms
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * that kill BTE driver and remove/reset BT chip
345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */
355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTE_RESET_BAUD_ON_BT_DISABLE
365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTE_RESET_BAUD_ON_BT_DISABLE TRUE
375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Target Modes (based on jumper settings on hardware [see user manual]) */
405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum
415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                            /* BTE                  BBY                     */
435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                            /* J3   J4              SW3-3   SW3-2   SW3-1   */
445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                            /* -------------------------------------------- */
455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTE_MODE_SERIAL_APP,    /* OUT  OUT             OFF     OFF     OFF     Sample serial port application      */
465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTE_MODE_APPL,    	    /* IN   OUT             OFF     OFF     ON      Target used with Tester through RPC */
475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTE_MODE_RESERVED,      /* OUT  IN              OFF     ON      OFF     Reserved                            */
485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTE_MODE_SAMPLE_APPS,   /* IN   IN              OFF     ON      ON      Sample applications (ICP/HSP)       */
495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTE_MODE_DONGLE,        /* not yet supported    ON      OFF     OFF     Dongle mode                         */
505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTE_MODE_APPL_PROTOCOL_TRACE, /* this is a fake mode do allow protocol tracing in application without rpc */
515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTE_MODE_INVALID
525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern volatile UINT8    bte_target_mode;    /* indicates the mode that the board is running in */
555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Startup options */
575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT32 bte_startup_options;                      /* Switch and jumper settings at startup */
585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bte_get_startup_options(UINT32 *p_options);        /* Platform specific function for getting startup options */
595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTE_OPTIONS_TARGET_MODE_MASK    0x00000007      /* bits 2-0 indicate target mode (QuickConnect: jp3 & jp4, BBY: SW3-1 & SW3-2)*/
615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************
645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Definitions to define which type of application gets built
655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ****************************************************************************/
665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BUILD_HCITOOL         FALSE
675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BUILD_L2PING          FALSE
685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LINUX_FM_DRIVER_INCLUDED		FALSE
715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* hcisu userial operations. should probably go into bt_types to avoid collisions! */
745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BT_EVT_TO_HCISU_USERIAL_OP (0x0080 | BT_EVT_HCISU)
755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* operation for above hcisu event */
765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BT_HCISU_USERIAL_OPEN (0)   /* open serial port calling USERIAL_Open() */
775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BT_HCISU_USERIAL_CLOSE (1)  /* close userial port */
785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* options associated with close op */
795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BT_HCISU_USERIAL_CL_NO_DIS_BT   0 /* do not touch bt_wake and power gpio */
805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BT_HCISU_USERIAL_CL_DIS_BT      1 /* put power and bt_wake into defined off state to preserve
815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                                             power */
825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* status codes for callback */
835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTE_HCISU_USERIAL_FAIL      0
845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTE_HCISU_USERIAL_OK        1
855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (tUSERIAL_MSG_CBACK) (int status);
865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct tHCISU_USERIAL_MSG_tag {
875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BT_HDR      hdr;
885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tUSERIAL_MSG_CBACK *p_cback;
895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8       port;   /* port number */
905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8       op;
915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8       option; /* option for operation. depends on operation */
925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tHCISU_USERIAL_MSG;
935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bte_hcisu_userial_oper( tUSERIAL_MSG_CBACK *p_cback, UINT8 port, UINT8 op, UINT8 option );
955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Pointer to function for sending HCI commands and data to the HCI tranport */
975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern int (*p_bte_hci_send)(UINT16 port, BT_HDR *p_msg);
985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Protocol trace mask */
1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT32 bte_proto_trace_mask;
1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct tBAUD_REG_tag {
1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8 DHBR;
1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8 DLBR;
1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8 ExplicitBaudRate0;
1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8 ExplicitBaudRate1;
1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8 ExplicitBaudRate2;
1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8 ExplicitBaudRate3;
1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBAUD_REG;
1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern const tBAUD_REG baud_rate_regs[];
1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif  /* BTE_H */
115