bt_types.h revision f0952b522e3326b79b146e7c3c59fa3b29d59de6
155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/******************************************************************************
255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *
355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  Copyright (C) 1999-2012 Broadcom Corporation
455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *
555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  Licensed under the Apache License, Version 2.0 (the "License");
655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  you may not use this file except in compliance with the License.
755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  You may obtain a copy of the License at:
855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *
955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  http://www.apache.org/licenses/LICENSE-2.0
1055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *
1155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  Unless required by applicable law or agreed to in writing, software
1255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  distributed under the License is distributed on an "AS IS" BASIS,
1355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  See the License for the specific language governing permissions and
1555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *  limitations under the License.
1655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák *
1755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák ******************************************************************************/
1855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
1955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#ifndef BT_TYPES_H
2055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_TYPES_H
2155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
2255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#include "data_types.h"
2355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
2455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#ifdef _WIN32
2555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#ifdef BLUESTACK_TESTER
2655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák    #include "bte_stack_entry.h"
2755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#endif
2855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#endif
29363295d7209636c56ee0cb1246915b03b7f73524Marek Olšák
30363295d7209636c56ee0cb1246915b03b7f73524Marek Olšák/* READ WELL !!
3155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák**
3255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** This section defines global events. These are events that cross layers.
3355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** Any event that passes between layers MUST be one of these events. Tasks
3455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** can use their own events internally, but a FUNDAMENTAL design issue is
3555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** that global events MUST be one of these events defined below.
3655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák**
3728486880ca3ec39419ccee0cb1a3bedc9ef7117cJosé Fonseca** The convention used is the the event name contains the layer that the
3855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** event is going to.
3955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák*/
4055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_MASK                 0xFF00
41f874da422b1811c4cb5f700f424180793ea66d6fCorbin Simpson#define BT_SUB_EVT_MASK             0x00FF
4255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák                                                /* To Bluetooth Upper Layers        */
4355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák                                                /************************************/
4455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_L2C_EVT       0x0900      /* L2CAP event */
4555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_HCI_EVT       0x1000      /* HCI Event                        */
46f6106566081978f663cf08e54bb8908cb58a5316Michal Krol#define BT_EVT_TO_BTU_HCI_BR_EDR_EVT (0x0000 | BT_EVT_TO_BTU_HCI_EVT)      /* event from BR/EDR controller */
4755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_HCI_AMP1_EVT   (0x0001 | BT_EVT_TO_BTU_HCI_EVT)      /* event from local AMP 1 controller */
488b0c217f2bc123bffd25cc4977d6abb1b3fa8186Brian Paul#define BT_EVT_TO_BTU_HCI_AMP2_EVT   (0x0002 | BT_EVT_TO_BTU_HCI_EVT)      /* event from local AMP 2 controller */
4955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_HCI_AMP3_EVT   (0x0003 | BT_EVT_TO_BTU_HCI_EVT)      /* event from local AMP 3 controller */
50900be21e0943d417a5d149e5b3c2635cb7cc90f9Marek Olšák
5155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_HCI_ACL       0x1100      /* ACL Data from HCI                */
52a6d91a141f9bb80444d11922998c348fb3cc7d98Marek Olšák#define BT_EVT_TO_BTU_HCI_SCO       0x1200      /* SCO Data from HCI                */
53a6d91a141f9bb80444d11922998c348fb3cc7d98Marek Olšák#define BT_EVT_TO_BTU_HCIT_ERR      0x1300      /* HCI Transport Error              */
5455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
5555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_SP_EVT        0x1400      /* Serial Port Event                */
569b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_TO_BTU_SP_DATA       0x1500      /* Serial Port Data                 */
5755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
58900be21e0943d417a5d149e5b3c2635cb7cc90f9Marek Olšák#define BT_EVT_TO_BTU_HCI_CMD       0x1600      /* HCI command from upper layer     */
5955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
6055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
6155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_L2C_SEG_XMIT  0x1900      /* L2CAP segment(s) transmitted     */
6285bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák
6385bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define BT_EVT_PROXY_INCOMING_MSG   0x1A00      /* BlueStackTester event: incoming message from target */
6455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
6555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_BTSIM                0x1B00      /* Insight BTSIM event */
665d4d8b6205af9a09e67f53631eefad77054aa8e9Marek Olšák#define BT_EVT_BTISE                0x1C00      /* Insight Script Engine event */
6736d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák
6855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák                                                /* To LM                            */
6955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák                                                /************************************/
70677a60455673bd9aff4bebae8416a54cd326ca37Wiktor Janas#define BT_EVT_TO_LM_HCI_CMD        0x2000      /* HCI Command                      */
71677a60455673bd9aff4bebae8416a54cd326ca37Wiktor Janas#define BT_EVT_TO_LM_HCI_ACL        0x2100      /* HCI ACL Data                     */
724e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define BT_EVT_TO_LM_HCI_SCO        0x2200      /* HCI SCO Data                     */
73ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_HCIT_ERR       0x2300      /* HCI Transport Error              */
74ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_LC_EVT         0x2400      /* LC event                         */
75ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_LC_LMP         0x2500      /* LC Received LMP command frame    */
76ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_LC_ACL         0x2600      /* LC Received ACL data             */
77ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_LC_SCO         0x2700      /* LC Received SCO data  (not used) */
78ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_LC_ACL_TX      0x2800      /* LMP data transmit complete       */
79ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_LC_LMPC_TX     0x2900      /* LMP Command transmit complete    */
80ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_LM_LOCAL_ACL_LB   0x2a00      /* Data to be locally loopbacked    */
8112fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák#define BT_EVT_TO_LM_HCI_ACL_ACK    0x2b00      /* HCI ACL Data ack      (not used) */
82bdaf0a085ba7b8af4cf858b31f701caf571b7c4fMarek Olšák#define BT_EVT_TO_LM_DIAG           0x2c00      /* LM Diagnostics commands          */
8355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
84825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
85825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define BT_EVT_TO_BTM_CMDS          0x2f00
86825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define BT_EVT_TO_BTM_PM_MDCHG_EVT (0x0001 | BT_EVT_TO_BTM_CMDS)
87825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
88825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define BT_EVT_TO_TCS_CMDS          0x3000
89825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
9055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_OBX_CL_MSG        0x3100
9155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_OBX_SR_MSG        0x3200
9255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
9355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_CTP_CMDS          0x3300
9455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
951a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger/* Obex Over L2CAP */
9655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_OBX_CL_L2C_MSG    0x3400
9755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_OBX_SR_L2C_MSG    0x3500
98a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger
9955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* ftp events */
10036d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BT_EVT_TO_FTP_SRVR_CMDS     0x3600
101ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger#define BT_EVT_TO_FTP_CLNT_CMDS     0x3700
1024e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie
1034e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define BT_EVT_TO_BTU_SAP           0x3800       /* SIM Access Profile events */
10436d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák
105ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger/* opp events */
10637b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define BT_EVT_TO_OPP_SRVR_CMDS     0x3900
10737b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define BT_EVT_TO_OPP_CLNT_CMDS     0x3a00
108ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák
109ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák/* gap events */
110ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_EVT_TO_GAP_MSG           0x3b00
11136d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák
112f6106566081978f663cf08e54bb8908cb58a5316Michal Krol/* start timer */
113932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol#define BT_EVT_TO_START_TIMER       0x3c00
114932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol
115932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol/* stop timer */
1163bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define BT_EVT_TO_STOP_TIMER        0x3d00
1173bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák
1183bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák/* start quick timer */
1194c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák#define BT_EVT_TO_START_QUICK_TIMER 0x3e00
1204c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák
121dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie
122b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák/* for NFC                          */
12312fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák                                                /************************************/
12455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_NFC_NCI           0x4000      /* NCI Command, Notification or Data*/
12555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_NFC_INIT          0x4100      /* Initialization message */
1269be8f7d2267bffd607a759abe5a27099659d34b1Marek Olšák#define BT_EVT_TO_NCI_LP            0x4200      /* Low power */
12755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_NFC_ERR           0x4300      /* Error notification to NFC Task */
12855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
12955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_NFCCSIM_NCI       0x4a00      /* events to NFCC simulation (NCI packets) */
1300c92dfe7f37059d9dfc523c6bf660c15c9f079f5Brian Paul
1310c92dfe7f37059d9dfc523c6bf660c15c9f079f5Brian Paul/* start timer */
1320c92dfe7f37059d9dfc523c6bf660c15c9f079f5Brian Paul#define BT_EVT_TO_START_TIMER_ONESHOT 0x4c00
13337b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák
134ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger/* stop timer */
13585bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define BT_EVT_TO_STOP_TIMER_ONESHOT  0x4d00
13655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
13755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* HCISU Events */
13855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
13955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_HCISU                0x5000
14055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
1419b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák// btla-specific ++
142187d7fb2fec7da889f25366696faaac4c2e8f9c4Marek Olšák#define BT_EVT_TO_HCISU_RECONFIG_EVT            (0x0001 | BT_EVT_HCISU)
14355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_HCISU_UPDATE_BAUDRATE_EVT     (0x0002 | BT_EVT_HCISU)
14455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_HCISU_LP_ENABLE_EVT           (0x0003 | BT_EVT_HCISU)
1459b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_TO_HCISU_LP_DISABLE_EVT          (0x0004 | BT_EVT_HCISU)
1469b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák// btla-specific --
1479b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_TO_HCISU_LP_APP_SLEEPING_EVT     (0x0005 | BT_EVT_HCISU)
1489b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_TO_HCISU_LP_ALLOW_BT_SLEEP_EVT   (0x0006 | BT_EVT_HCISU)
1499b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_TO_HCISU_LP_WAKEUP_HOST_EVT      (0x0007 | BT_EVT_HCISU)
1504c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák#define BT_EVT_TO_HCISU_LP_RCV_H4IBSS_EVT       (0x0008 | BT_EVT_HCISU)
1519b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_TO_HCISU_H5_RESET_EVT            (0x0009 | BT_EVT_HCISU)
1529b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_HCISU_START_QUICK_TIMER          (0x000a | BT_EVT_HCISU)
1539b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák
1549b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_DATA_TO_AMP_1        0x5100
1559b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EVT_DATA_TO_AMP_15       0x5f00
156b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák
15755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* HSP Events */
1584c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák
1594c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák#define BT_EVT_BTU_HSP2             0x6000
1604c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák
161dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie#define BT_EVT_TO_BTU_HSP2_EVT     (0x0001 | BT_EVT_BTU_HSP2)
1620f55f133f1e5b72e463441d2d388a1ec4deac1daMarek Olšák
163dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie/* BPP Events */
164b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák#define BT_EVT_TO_BPP_PR_CMDS       0x6100      /* Printer Events */
165b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák#define BT_EVT_TO_BPP_SND_CMDS      0x6200      /* BPP Sender Events */
166b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák
1674c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák/* BIP Events */
16812fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák#define BT_EVT_TO_BIP_CMDS          0x6300
16912fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák
17012fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák/* HCRP Events */
17112fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák
17255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_BTU_HCRP             0x7000
1730c92dfe7f37059d9dfc523c6bf660c15c9f079f5Brian Paul
17455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_HCRP_EVT     (0x0001 | BT_EVT_BTU_HCRP)
17555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_HCRPM_EVT    (0x0002 | BT_EVT_BTU_HCRP)
176eba1e2a44718bea398e49d496a78ee002c9922b8Roland Scheidegger
17755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
17855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_BTU_HFP              0x8000
17955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_TO_BTU_HFP_EVT      (0x0001 | BT_EVT_BTU_HFP)
1800c92dfe7f37059d9dfc523c6bf660c15c9f079f5Brian Paul
18155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_BTU_IPC_EVT          0x9000
1821a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_BTU_IPC_LOGMSG_EVT  (0x0000 | BT_EVT_BTU_IPC_EVT)
18355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_BTU_IPC_ACL_EVT     (0x0001 | BT_EVT_BTU_IPC_EVT)
184f668ea11bd0b1f662e0be523a4bc46835e011ffaMarek Olšák#define BT_EVT_BTU_IPC_BTU_EVT     (0x0002 | BT_EVT_BTU_IPC_EVT)
185f668ea11bd0b1f662e0be523a4bc46835e011ffaMarek Olšák#define BT_EVT_BTU_IPC_L2C_EVT     (0x0003 | BT_EVT_BTU_IPC_EVT)
186f668ea11bd0b1f662e0be523a4bc46835e011ffaMarek Olšák#define BT_EVT_BTU_IPC_L2C_MSG_EVT (0x0004 | BT_EVT_BTU_IPC_EVT)
18755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_EVT_BTU_IPC_BTM_EVT     (0x0005 | BT_EVT_BTU_IPC_EVT)
1881a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_BTU_IPC_AVDT_EVT    (0x0006 | BT_EVT_BTU_IPC_EVT)
1891a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_BTU_IPC_SLIP_EVT    (0x0007 | BT_EVT_BTU_IPC_EVT)
1901a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_BTU_IPC_MGMT_EVT    (0x0008 | BT_EVT_BTU_IPC_EVT)
1911a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_BTU_IPC_BTTRC_EVT   (0x0009 | BT_EVT_BTU_IPC_EVT)
1921a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_BTU_IPC_BURST_EVT   (0x000A | BT_EVT_BTU_IPC_EVT)
1931a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger
1941a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger
1951a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger/* BTIF Events */
1961a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_BTIF                 0xA000
1971a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger#define BT_EVT_CONTEXT_SWITCH_EVT  (0x0001 | BT_EVT_BTIF)
1981a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger
199a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger#define BT_EVT_TRIGGER_STACK_INIT   EVENT_MASK(APPL_EVT_0)
200a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger#define BT_EVT_HARDWARE_INIT_FAIL   EVENT_MASK(APPL_EVT_1)
201a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger
202a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger#define BT_EVT_PRELOAD_CMPL         EVENT_MASK(APPL_EVT_6)
203a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger
20455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* Define the header of each buffer used in the Bluetooth stack.
20555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák*/
20637b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšáktypedef struct
20737b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák{
20837b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák    uint16_t          event;
20937b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák    uint16_t          len;
21037b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák    uint16_t          offset;
21137b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák    uint16_t          layer_specific;
21255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák    uint8_t           data[];
21355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák} BT_HDR;
21455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
2150bd1cbcd0d28dbadfb0c3e1f8b048a18b56bc72cKeith Whitwell#define BT_HDR_SIZE (sizeof (BT_HDR))
21655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
2171c75edf3e8ccc97f5f91f42f99c1f8db30b25fc4Corbin Simpson#define BT_PSM_SDP                      0x0001
218dc4c821f0817a3db716f965692fb701079f66340Marek Olšák#define BT_PSM_RFCOMM                   0x0003
21955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_PSM_TCS                      0x0005
22055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_PSM_CTP                      0x0007
22136d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BT_PSM_BNEP                     0x000F
22236d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BT_PSM_HIDC                     0x0011
22336d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BT_PSM_HIDI                     0x0013
22436d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BT_PSM_UPNP                     0x0015
22536d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BT_PSM_AVCTP                    0x0017
22636d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BT_PSM_AVDTP                    0x0019
227ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger#define BT_PSM_AVCTP_13                 0x001B /* Advanced Control - Browsing */
228ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger#define BT_PSM_UDI_CP                   0x001D /* Unrestricted Digital Information Profile C-Plane  */
229ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger#define BT_PSM_ATT                      0x001F /* Attribute Protocol  */
230ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger
231ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger
232ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger/* These macros extract the HCI opcodes from a buffer
233ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheidegger*/
234dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie#define HCI_GET_CMD_HDR_OPCODE(p)    (UINT16)((*((UINT8 *)((p) + 1) + p->offset) + \
235dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie                                              (*((UINT8 *)((p) + 1) + p->offset + 1) << 8)))
2369e66b25880febecb529582c6ead920637d73f51eDave Airlie#define HCI_GET_CMD_HDR_PARAM_LEN(p) (UINT8)  (*((UINT8 *)((p) + 1) + p->offset + 2))
2379e66b25880febecb529582c6ead920637d73f51eDave Airlie
2389e66b25880febecb529582c6ead920637d73f51eDave Airlie#define HCI_GET_EVT_HDR_OPCODE(p)    (UINT8)(*((UINT8 *)((p) + 1) + p->offset))
2399e66b25880febecb529582c6ead920637d73f51eDave Airlie#define HCI_GET_EVT_HDR_PARAM_LEN(p) (UINT8)  (*((UINT8 *)((p) + 1) + p->offset + 1))
240dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie
241dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie
242dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie/********************************************************************************
2439e66b25880febecb529582c6ead920637d73f51eDave Airlie** Macros to get and put bytes to and from a stream (Little Endian format).
2449e66b25880febecb529582c6ead920637d73f51eDave Airlie*/
2459e66b25880febecb529582c6ead920637d73f51eDave Airlie#define UINT32_TO_STREAM(p, u32) {*(p)++ = (UINT8)(u32); *(p)++ = (UINT8)((u32) >> 8); *(p)++ = (UINT8)((u32) >> 16); *(p)++ = (UINT8)((u32) >> 24);}
2469e66b25880febecb529582c6ead920637d73f51eDave Airlie#define UINT24_TO_STREAM(p, u24) {*(p)++ = (UINT8)(u24); *(p)++ = (UINT8)((u24) >> 8); *(p)++ = (UINT8)((u24) >> 16);}
247dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie#define UINT16_TO_STREAM(p, u16) {*(p)++ = (UINT8)(u16); *(p)++ = (UINT8)((u16) >> 8);}
2484e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define UINT8_TO_STREAM(p, u8)   {*(p)++ = (UINT8)(u8);}
249dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie#define INT8_TO_STREAM(p, u8)    {*(p)++ = (INT8)(u8);}
25036d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define ARRAY32_TO_STREAM(p, a)  {register int ijk; for (ijk = 0; ijk < 32;           ijk++) *(p)++ = (UINT8) a[31 - ijk];}
251a0a9e56cfed1ab81c1068cffbfd9299f77c7e187Marek Olšák#define ARRAY16_TO_STREAM(p, a)  {register int ijk; for (ijk = 0; ijk < 16;           ijk++) *(p)++ = (UINT8) a[15 - ijk];}
25236d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define ARRAY8_TO_STREAM(p, a)   {register int ijk; for (ijk = 0; ijk < 8;            ijk++) *(p)++ = (UINT8) a[7 - ijk];}
25336d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BDADDR_TO_STREAM(p, a)   {register int ijk; for (ijk = 0; ijk < BD_ADDR_LEN;  ijk++) *(p)++ = (UINT8) a[BD_ADDR_LEN - 1 - ijk];}
25436d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define LAP_TO_STREAM(p, a)      {register int ijk; for (ijk = 0; ijk < LAP_LEN;      ijk++) *(p)++ = (UINT8) a[LAP_LEN - 1 - ijk];}
25585bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define DEVCLASS_TO_STREAM(p, a) {register int ijk; for (ijk = 0; ijk < DEV_CLASS_LEN;ijk++) *(p)++ = (UINT8) a[DEV_CLASS_LEN - 1 - ijk];}
25685bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define ARRAY_TO_STREAM(p, a, len) {register int ijk; for (ijk = 0; ijk < len;        ijk++) *(p)++ = (UINT8) a[ijk];}
25736d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define REVERSE_ARRAY_TO_STREAM(p, a, len)  {register int ijk; for (ijk = 0; ijk < len; ijk++) *(p)++ = (UINT8) a[len - 1 - ijk];}
25855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
25955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define STREAM_TO_UINT8(u8, p)   {u8 = (UINT8)(*(p)); (p) += 1;}
26055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define STREAM_TO_UINT16(u16, p) {u16 = ((UINT16)(*(p)) + (((UINT16)(*((p) + 1))) << 8)); (p) += 2;}
26155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define STREAM_TO_UINT24(u32, p) {u32 = (((UINT32)(*(p))) + ((((UINT32)(*((p) + 1)))) << 8) + ((((UINT32)(*((p) + 2)))) << 16) ); (p) += 3;}
2625d4d8b6205af9a09e67f53631eefad77054aa8e9Marek Olšák#define STREAM_TO_UINT32(u32, p) {u32 = (((UINT32)(*(p))) + ((((UINT32)(*((p) + 1)))) << 8) + ((((UINT32)(*((p) + 2)))) << 16) + ((((UINT32)(*((p) + 3)))) << 24)); (p) += 4;}
26355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define STREAM_TO_BDADDR(a, p)   {register int ijk; register UINT8 *pbda = (UINT8 *)a + BD_ADDR_LEN - 1; for (ijk = 0; ijk < BD_ADDR_LEN; ijk++) *pbda-- = *p++;}
26455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define STREAM_TO_ARRAY32(a, p)  {register int ijk; register UINT8 *_pa = (UINT8 *)a + 31; for (ijk = 0; ijk < 32; ijk++) *_pa-- = *p++;}
26555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define STREAM_TO_ARRAY16(a, p)  {register int ijk; register UINT8 *_pa = (UINT8 *)a + 15; for (ijk = 0; ijk < 16; ijk++) *_pa-- = *p++;}
26636d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define STREAM_TO_ARRAY8(a, p)   {register int ijk; register UINT8 *_pa = (UINT8 *)a + 7; for (ijk = 0; ijk < 8; ijk++) *_pa-- = *p++;}
26736d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define STREAM_TO_DEVCLASS(a, p) {register int ijk; register UINT8 *_pa = (UINT8 *)a + DEV_CLASS_LEN - 1; for (ijk = 0; ijk < DEV_CLASS_LEN; ijk++) *_pa-- = *p++;}
26836d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define STREAM_TO_LAP(a, p)      {register int ijk; register UINT8 *plap = (UINT8 *)a + LAP_LEN - 1; for (ijk = 0; ijk < LAP_LEN; ijk++) *plap-- = *p++;}
26936d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define STREAM_TO_ARRAY(a, p, len) {register int ijk; for (ijk = 0; ijk < len; ijk++) ((UINT8 *) a)[ijk] = *p++;}
27036d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define REVERSE_STREAM_TO_ARRAY(a, p, len) {register int ijk; register UINT8 *_pa = (UINT8 *)a + len - 1; for (ijk = 0; ijk < len; ijk++) *_pa-- = *p++;}
27136d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák
27236d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák/********************************************************************************
273a0a9e56cfed1ab81c1068cffbfd9299f77c7e187Marek Olšák** Macros to get and put bytes to and from a field (Little Endian format).
274a0a9e56cfed1ab81c1068cffbfd9299f77c7e187Marek Olšák** These are the same as to stream, except the pointer is not incremented.
27536d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák*/
27636d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define UINT32_TO_FIELD(p, u32) {*(UINT8 *)(p) = (UINT8)(u32); *((UINT8 *)(p)+1) = (UINT8)((u32) >> 8); *((UINT8 *)(p)+2) = (UINT8)((u32) >> 16); *((UINT8 *)(p)+3) = (UINT8)((u32) >> 24);}
27736d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define UINT24_TO_FIELD(p, u24) {*(UINT8 *)(p) = (UINT8)(u24); *((UINT8 *)(p)+1) = (UINT8)((u24) >> 8); *((UINT8 *)(p)+2) = (UINT8)((u24) >> 16);}
27836d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define UINT16_TO_FIELD(p, u16) {*(UINT8 *)(p) = (UINT8)(u16); *((UINT8 *)(p)+1) = (UINT8)((u16) >> 8);}
27936d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define UINT8_TO_FIELD(p, u8)   {*(UINT8 *)(p) = (UINT8)(u8);}
28055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
28155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
28255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/********************************************************************************
28355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** Macros to get and put bytes to and from a stream (Big Endian format)
28455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák*/
2857864933acd81892be0692555ae6d37d4293adb2aMarek Olšák#define UINT32_TO_BE_STREAM(p, u32) {*(p)++ = (UINT8)((u32) >> 24);  *(p)++ = (UINT8)((u32) >> 16); *(p)++ = (UINT8)((u32) >> 8); *(p)++ = (UINT8)(u32); }
28655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define UINT24_TO_BE_STREAM(p, u24) {*(p)++ = (UINT8)((u24) >> 16); *(p)++ = (UINT8)((u24) >> 8); *(p)++ = (UINT8)(u24);}
2879b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define UINT16_TO_BE_STREAM(p, u16) {*(p)++ = (UINT8)((u16) >> 8); *(p)++ = (UINT8)(u16);}
28855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define UINT8_TO_BE_STREAM(p, u8)   {*(p)++ = (UINT8)(u8);}
28955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define ARRAY_TO_BE_STREAM(p, a, len) {register int ijk; for (ijk = 0; ijk < len; ijk++) *(p)++ = (UINT8) a[ijk];}
29055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
29155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BE_STREAM_TO_UINT8(u8, p)   {u8 = (UINT8)(*(p)); (p) += 1;}
29255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BE_STREAM_TO_UINT16(u16, p) {u16 = (UINT16)(((UINT16)(*(p)) << 8) + (UINT16)(*((p) + 1))); (p) += 2;}
2939b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BE_STREAM_TO_UINT24(u32, p) {u32 = (((UINT32)(*((p) + 2))) + ((UINT32)(*((p) + 1)) << 8) + ((UINT32)(*(p)) << 16)); (p) += 3;}
29455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BE_STREAM_TO_UINT32(u32, p) {u32 = ((UINT32)(*((p) + 3)) + ((UINT32)(*((p) + 2)) << 8) + ((UINT32)(*((p) + 1)) << 16) + ((UINT32)(*(p)) << 24)); (p) += 4;}
29555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BE_STREAM_TO_ARRAY(p, a, len) {register int ijk; for (ijk = 0; ijk < len; ijk++) ((UINT8 *) a)[ijk] = *p++;}
29655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
29755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
29855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/********************************************************************************
29955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** Macros to get and put bytes to and from a field (Big Endian format).
30055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** These are the same as to stream, except the pointer is not incremented.
3011a859ecf4a4728cb321b1f68d51491cd285a3c03Roland Scheidegger*/
302a1d5131d2eaa5f5ccc8b38f9379f9c6bc989bc1aRoland Scheidegger#define UINT32_TO_BE_FIELD(p, u32) {*(UINT8 *)(p) = (UINT8)((u32) >> 24);  *((UINT8 *)(p)+1) = (UINT8)((u32) >> 16); *((UINT8 *)(p)+2) = (UINT8)((u32) >> 8); *((UINT8 *)(p)+3) = (UINT8)(u32); }
3036a07a1738ce84a747ce1f51cf68d583d0ccb3bd5Corbin Simpson#define UINT24_TO_BE_FIELD(p, u24) {*(UINT8 *)(p) = (UINT8)((u24) >> 16); *((UINT8 *)(p)+1) = (UINT8)((u24) >> 8); *((UINT8 *)(p)+2) = (UINT8)(u24);}
30455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define UINT16_TO_BE_FIELD(p, u16) {*(UINT8 *)(p) = (UINT8)((u16) >> 8); *((UINT8 *)(p)+1) = (UINT8)(u16);}
30536d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define UINT8_TO_BE_FIELD(p, u8)   {*(UINT8 *)(p) = (UINT8)(u8);}
30636d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák
3075d4d8b6205af9a09e67f53631eefad77054aa8e9Marek Olšák
30836d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák/* Common Bluetooth field definitions */
30936d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define BD_ADDR_LEN     6                   /* Device address length */
310ac4abaecd5f52e416c89bfe19b34ed7f4e014b21Roland Scheideggertypedef UINT8 BD_ADDR[BD_ADDR_LEN];         /* Device address */
311dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlietypedef UINT8 *BD_ADDR_PTR;                 /* Pointer to Device Address */
312dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie
313dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie#define AMP_KEY_TYPE_GAMP       0
314dd20256a1c1566f11e1fa970028f3bb4f05445b7Dave Airlie#define AMP_KEY_TYPE_WIFI       1
31536d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšák#define AMP_KEY_TYPE_UWB        2
31636d66f8d4ad1e2b18bb28d0b08e98f968ad6137eMarek Olšáktypedef UINT8 tAMP_KEY_TYPE;
31755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
318ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšák#define BT_OCTET8_LEN    8
31985bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšáktypedef UINT8 BT_OCTET8[BT_OCTET8_LEN];   /* octet array: size 16 */
32085bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák
32185bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define LINK_KEY_LEN    16
32285bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšáktypedef UINT8 LINK_KEY[LINK_KEY_LEN];       /* Link Key */
32312fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák
32412fd81f9e7265076a3723b09bbb49e5868bde27eMarek Olšák#define AMP_LINK_KEY_LEN        32
325bdaf0a085ba7b8af4cf858b31f701caf571b7c4fMarek Olšáktypedef UINT8 AMP_LINK_KEY[AMP_LINK_KEY_LEN];   /* Dedicated AMP and GAMP Link Keys */
326bdaf0a085ba7b8af4cf858b31f701caf571b7c4fMarek Olšák
32755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_OCTET16_LEN    16
328ab85ba30e2ed3c5e8bd289eab2f66b997e3489a9Marek Olšáktypedef UINT8 BT_OCTET16[BT_OCTET16_LEN];   /* octet array: size 16 */
3294e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie
33085bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define PIN_CODE_LEN    16
33185bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšáktypedef UINT8 PIN_CODE[PIN_CODE_LEN];       /* Pin Code (upto 128 bits) MSB is 0 */
3324e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlietypedef UINT8 *PIN_CODE_PTR;                /* Pointer to Pin Code */
3334e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie
3344e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define DEV_CLASS_LEN   3
33555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšáktypedef UINT8 DEV_CLASS[DEV_CLASS_LEN];     /* Device class */
33637b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšáktypedef UINT8 *DEV_CLASS_PTR;               /* Pointer to Device class */
337900be21e0943d417a5d149e5b3c2635cb7cc90f9Marek Olšák
33855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define EXT_INQ_RESP_LEN   3
33955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšáktypedef UINT8 EXT_INQ_RESP[EXT_INQ_RESP_LEN];/* Extended Inquiry Response */
34055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšáktypedef UINT8 *EXT_INQ_RESP_PTR;             /* Pointer to Extended Inquiry Response */
341c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
34255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BD_NAME_LEN     248
343ac366af9fdb6853ccb172a3dd52a88063e5136e7Marek Olšáktypedef UINT8 BD_NAME[BD_NAME_LEN + 1];         /* Device name */
344c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšáktypedef UINT8 *BD_NAME_PTR;                 /* Pointer to Device name */
345c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
3469a3523e38b8703211829a666661e8cbffdb0936fMarek Olšák#define BD_FEATURES_LEN 8
347ac366af9fdb6853ccb172a3dd52a88063e5136e7Marek Olšáktypedef UINT8 BD_FEATURES[BD_FEATURES_LEN]; /* LMP features supported by device */
348c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
3499a3523e38b8703211829a666661e8cbffdb0936fMarek Olšák#define BT_EVENT_MASK_LEN  8
350c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšáktypedef UINT8 BT_EVENT_MASK[BT_EVENT_MASK_LEN];   /* Event Mask */
351c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
352c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define LAP_LEN         3
353c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšáktypedef UINT8 LAP[LAP_LEN];                 /* IAC as passed to Inquiry (LAP) */
354c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšáktypedef UINT8 INQ_LAP[LAP_LEN];             /* IAC as passed to Inquiry (LAP) */
355c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
356c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define RAND_NUM_LEN    16
357c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšáktypedef UINT8 RAND_NUM[RAND_NUM_LEN];
358c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
359c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define ACO_LEN         12
360c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšáktypedef UINT8 ACO[ACO_LEN];                 /* Authenticated ciphering offset */
3619e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul
3629e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul#define COF_LEN         12
3639e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paultypedef UINT8 COF[COF_LEN];                 /* ciphering offset number */
3649e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul
3659e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paultypedef struct {
3669e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul    UINT8               qos_flags;          /* TBD */
36755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák    UINT8               service_type;       /* see below */
36855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák    UINT32              token_rate;         /* bytes/second */
369c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    UINT32              token_bucket_size;  /* bytes */
37055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák    UINT32              peak_bandwidth;     /* bytes/second */
3719b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák    UINT32              latency;            /* microseconds */
3728f17e011c341ff78ada9543545c1f41caf66b2e9Marek Olšák    UINT32              delay_variation;    /* microseconds */
37355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák} FLOW_SPEC;
374c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
375c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák/* Values for service_type */
376c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define NO_TRAFFIC      0
377c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BEST_EFFORT     1
378c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define GUARANTEED      2
379c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
380c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák/* Service class of the CoD */
381c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define SERV_CLASS_NETWORKING               (1 << 1)
382c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define SERV_CLASS_RENDERING                (1 << 2)
383c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define SERV_CLASS_CAPTURING                (1 << 3)
384c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define SERV_CLASS_OBJECT_TRANSFER          (1 << 4)
385c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define SERV_CLASS_OBJECT_AUDIO             (1 << 5)
386c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define SERV_CLASS_OBJECT_TELEPHONY         (1 << 6)
387c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define SERV_CLASS_OBJECT_INFORMATION       (1 << 7)
3889b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák
389c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák/* Second byte */
39055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define SERV_CLASS_LIMITED_DISC_MODE        (0x20)
391c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
392c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák/* Field size definitions. Note that byte lengths are rounded up. */
3939b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define ACCESS_CODE_BIT_LEN             72
39455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define ACCESS_CODE_BYTE_LEN            9
3954c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák#define SHORTENED_ACCESS_CODE_BIT_LEN   68
3964c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák
3974c417697b6fa1503ac35b34e79f23716d813a208Marek Olšáktypedef UINT8 ACCESS_CODE[ACCESS_CODE_BYTE_LEN];
3984c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák
3994c417697b6fa1503ac35b34e79f23716d813a208Marek Olšák#define SYNTH_TX                1           /* want synth code to TRANSMIT at this freq */
400363295d7209636c56ee0cb1246915b03b7f73524Marek Olšák#define SYNTH_RX                2           /* want synth code to RECEIVE at this freq */
401b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák
402b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák#define SYNC_REPS 1             /* repeats of sync word transmitted to start of burst */
403b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák
404b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák/* Bluetooth CLK27 */
405b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák#define BT_CLK27            (2 << 26)
406b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák
407b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák/* Bluetooth CLK12 is 1.28 sec */
408b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák#define BT_CLK12_TO_MS(x)    ((x) * 1280)
409b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák#define BT_MS_TO_CLK12(x)    ((x) / 1280)
410b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák#define BT_CLK12_TO_SLOTS(x) ((x) << 11)
411b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák
412b177e2c54c7dbec58c2547524abe89e52d458252Marek Olšák/* Bluetooth CLK is 0.625 msec */
413c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_CLK_TO_MS(x)      (((x) * 5 + 3) / 8)
414c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_MS_TO_CLK(x)      (((x) * 8 + 2) / 5)
415c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
416c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_CLK_TO_MICROSECS(x)  (((x) * 5000 + 3) / 8)
417c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_MICROSECS_TO_CLK(x)  (((x) * 8 + 2499) / 5000)
418c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
419c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák/* Maximum UUID size - 16 bytes, and structure to hold any type of UUID. */
4209e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul#define MAX_UUID_SIZE              16
4219e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paultypedef struct
4229e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul{
423c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define LEN_UUID_16     2
424c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define LEN_UUID_32     4
425c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define LEN_UUID_128    16
426c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
427c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    UINT16          len;
428c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
429c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    union
430c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    {
431c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák        UINT16      uuid16;
432c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák        UINT32      uuid32;
433c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák        UINT8       uuid128[MAX_UUID_SIZE];
434c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    } uu;
435c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
436c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák} tBT_UUID;
437c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
438c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_EIR_FLAGS_TYPE                   0x01
439c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_EIR_MORE_16BITS_UUID_TYPE        0x02
440c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_EIR_COMPLETE_16BITS_UUID_TYPE    0x03
4416c420b166814fccb160e39cc9ea8cbdaf4e7c830Marek Olšák#define BT_EIR_MORE_32BITS_UUID_TYPE        0x04
4426c420b166814fccb160e39cc9ea8cbdaf4e7c830Marek Olšák#define BT_EIR_COMPLETE_32BITS_UUID_TYPE    0x05
4436c420b166814fccb160e39cc9ea8cbdaf4e7c830Marek Olšák#define BT_EIR_MORE_128BITS_UUID_TYPE       0x06
4446c420b166814fccb160e39cc9ea8cbdaf4e7c830Marek Olšák#define BT_EIR_COMPLETE_128BITS_UUID_TYPE   0x07
4456c420b166814fccb160e39cc9ea8cbdaf4e7c830Marek Olšák#define BT_EIR_SHORTENED_LOCAL_NAME_TYPE    0x08
4466c420b166814fccb160e39cc9ea8cbdaf4e7c830Marek Olšák#define BT_EIR_COMPLETE_LOCAL_NAME_TYPE     0x09
447c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_EIR_TX_POWER_LEVEL_TYPE          0x0A
448c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_EIR_OOB_BD_ADDR_TYPE             0x0C
449c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_EIR_OOB_COD_TYPE                 0x0D
4509b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EIR_OOB_SSP_HASH_C_TYPE          0x0E
4519b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define BT_EIR_OOB_SSP_RAND_R_TYPE          0x0F
452c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_EIR_MANUFACTURER_SPECIFIC_TYPE   0xFF
453932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol
454c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_OOB_COD_SIZE            3
455c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_OOB_HASH_C_SIZE         16
456c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_OOB_RAND_R_SIZE         16
457c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
45855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* Broadcom proprietary UUIDs and reserved PSMs
459c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák**
460c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák** The lowest 4 bytes byte of the UUID or GUID depends on the feature. Typically,
461c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák** the value of those bytes will be the PSM or SCN, but it is up to the features.
462c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák*/
463c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BRCM_PROPRIETARY_UUID_BASE  0xDA, 0x23, 0x41, 0x02, 0xA3, 0xBB, 0xC1, 0x71, 0xBA, 0x09, 0x6f, 0x21
464c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BRCM_PROPRIETARY_GUID_BASE  0xda23, 0x4102, 0xa3, 0xbb, 0xc1, 0x71, 0xba, 0x09, 0x6f, 0x21
465c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
46655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* We will not allocate a PSM in the reserved range to 3rd party apps
467c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák*/
468c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BRCM_RESERVED_PSM_START	    0x5AE1
4699e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul#define BRCM_RESERVED_PSM_END	    0x5AFF
4709e68a8fa728c5d737a8b0c66aba066afddd67e9aBrian Paul
471c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BRCM_UTILITY_SERVICE_PSM    0x5AE1
4720b50fcbd556ead8d35c2b543f13de433996a5822Marek Olšák#define BRCM_MATCHER_PSM            0x5AE3
473c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
474c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák/* Connection statistics
475c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák*/
476c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
4770b50fcbd556ead8d35c2b543f13de433996a5822Marek Olšák/* Structure to hold connection stats */
478c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#ifndef BT_CONN_STATS_DEFINED
479c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_CONN_STATS_DEFINED
480c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
481c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák/* These bits are used in the bIsConnected field */
482c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák#define BT_CONNECTED_USING_BREDR   1
48364aa67a360ab09db1691b37b86178e008c4e3711Luca Barbieri#define BT_CONNECTED_USING_AMP     2
484c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák
485c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšáktypedef struct
486c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák{
487c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    UINT32   is_connected;
4888f17e011c341ff78ada9543545c1f41caf66b2e9Marek Olšák    INT32    rssi;
489c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    UINT32   bytes_sent;
490c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák    UINT32   bytes_rcvd;
4919a3523e38b8703211829a666661e8cbffdb0936fMarek Olšák    UINT32   duration;
492c12c05c198f1cfd63eb52eeeb3c6e22dcb169b32Marek Olšák} tBT_CONN_STATS;
49355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
49455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#endif
49555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
49655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
49755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/*****************************************************************************
49855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák**                          Low Energy definitions
49955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák**
50055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák** Address types
50155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák*/
50255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BLE_ADDR_PUBLIC         0x00
5033bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define BLE_ADDR_RANDOM         0x01
5043bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define BLE_ADDR_TYPE_MASK      (BLE_ADDR_RANDOM | BLE_ADDR_PUBLIC)
50555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšáktypedef UINT8 tBLE_ADDR_TYPE;
5063bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák
5073bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define BT_TRANSPORT_BR_EDR    1
50855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_TRANSPORT_LE        2
5093bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšáktypedef UINT8 tBT_TRANSPORT;
5103bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák
51155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BLE_ADDR_IS_STATIC(x)   ((x[0] & 0xC0) == 0xC0)
5123bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák
5133bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšáktypedef struct
51455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák{
51555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák    tBLE_ADDR_TYPE      type;
51655753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák    BD_ADDR             bda;
517932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol} tBLE_BD_ADDR;
518932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol
5193bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák/* Device Types
5203bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák*/
521ff9ddf4d39be9e36d3e1dd9e10e889efa40dfb1eMarek Olšák#define BT_DEVICE_TYPE_BREDR   0x01
522932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol#define BT_DEVICE_TYPE_BLE     0x02
5233bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define BT_DEVICE_TYPE_DUMO    0x03
5243bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšáktypedef UINT8 tBT_DEVICE_TYPE;
525ff9ddf4d39be9e36d3e1dd9e10e889efa40dfb1eMarek Olšák/*****************************************************************************/
526932e6f8d527d2147ecc4e75ce9ae2f71e23e61afMichal Krol
5279b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák
52855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* Define trace levels */
52955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_TRACE_LEVEL_NONE    0          /* No trace messages to be generated    */
53055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_TRACE_LEVEL_ERROR   1          /* Error condition trace messages       */
5316dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie#define BT_TRACE_LEVEL_WARNING 2          /* Warning condition trace messages     */
53255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_TRACE_LEVEL_API     3          /* API traces                           */
53355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_TRACE_LEVEL_EVENT   4          /* Debug messages for events            */
53455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define BT_TRACE_LEVEL_DEBUG   5          /* Full debug messages                  */
5356dd284f7c8fac22f64c13fdf9909094f5ec59086Dave Airlie#define BT_TRACE_LEVEL_VERBOSE 6          /* Verbose debug messages               */
53616d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák
5374e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define MAX_TRACE_LEVEL        6
5384e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie
5394e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie
5404e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie/* Define New Trace Type Definition */
5414e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie/* TRACE_CTRL_TYPE                  0x^^000000*/
54216d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák#define TRACE_CTRL_MASK             0xff000000
543fa552261ea1795503d051864af6cdf05cb7197aeMarek Olšák#define TRACE_GET_CTRL(x)           ((((UINT32)(x)) & TRACE_CTRL_MASK) >> 24)
54416d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák
54516d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák#define TRACE_CTRL_GENERAL          0x00000000
54616d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák#define TRACE_CTRL_STR_RESOURCE     0x01000000
54716d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák#define TRACE_CTRL_SEQ_FLOW         0x02000000
54816d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák#define TRACE_CTRL_MAX_NUM          3
54916d1fb30a91bde0f283a60ce07bf3b3477f1e5feMarek Olšák
55055753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* LAYER SPECIFIC                   0x00^^0000*/
55155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_LAYER_MASK            0x00ff0000
55255753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_GET_LAYER(x)          ((((UINT32)(x)) & TRACE_LAYER_MASK) >> 16)
55337b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák
55489ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_NONE            0x00000000
5554c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger#define TRACE_LAYER_USB             0x00010000
5564c7001462607e6e99e474d6271dd481d3f8f201cRoland Scheidegger#define TRACE_LAYER_SERIAL          0x00020000
55737b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define TRACE_LAYER_SOCKET          0x00030000
558749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_RS232           0x00040000
55937b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define TRACE_LAYER_TRANS_MAX_NUM   5
56037b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define TRACE_LAYER_TRANS_ALL       0x007f0000
561825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_LAYER_LC              0x00050000
562825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_LAYER_LM              0x00060000
56337b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define TRACE_LAYER_HCI             0x00070000
56437b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define TRACE_LAYER_L2CAP           0x00080000
56589ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_RFCOMM          0x00090000
56689ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_SDP             0x000a0000
56789ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_TCS             0x000b0000
56889ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_OBEX            0x000c0000
56937b62cc35435a704d33c1814fbdbd0e807699e21Marek Olšák#define TRACE_LAYER_BTM             0x000d0000
570d4ec85e62423336d3cddc45f26bef6764f435a18Luca Barbieri#define TRACE_LAYER_GAP             0x000e0000
571d4ec85e62423336d3cddc45f26bef6764f435a18Luca Barbieri#define TRACE_LAYER_DUN             0x000f0000
572d4ec85e62423336d3cddc45f26bef6764f435a18Luca Barbieri#define TRACE_LAYER_GOEP            0x00100000
573d4ec85e62423336d3cddc45f26bef6764f435a18Luca Barbieri#define TRACE_LAYER_ICP             0x00110000
574d4ec85e62423336d3cddc45f26bef6764f435a18Luca Barbieri#define TRACE_LAYER_HSP2            0x00120000
575749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_SPP             0x00130000
576749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_CTP             0x00140000
577749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_BPP             0x00150000
578749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_HCRP            0x00160000
579749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_FTP             0x00170000
580749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_OPP             0x00180000
581749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_BTU             0x00190000
582749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_GKI             0x001a0000
583749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_BNEP            0x001b0000
584749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_PAN             0x001c0000
585749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_HFP             0x001d0000
586749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_HID             0x001e0000
587749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_BIP             0x001f0000
588749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_AVP             0x00200000
589749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_A2D             0x00210000
590749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_SAP             0x00220000
591749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_AMP             0x00230000
592749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_MCA             0x00240000
59389ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_ATT             0x00250000
59489ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_SMP             0x00260000
59589ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_NFC             0x00270000
596825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_LAYER_NCI             0x00280000
59789ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_LLCP            0x00290000
59889ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_NDEF            0x002a0000
59955753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_LAYER_RW              0x002b0000
600749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_CE              0x002c0000
601749e24521a31178d2b647aa2954c3eecd597b799Marek Olšák#define TRACE_LAYER_P2P             0x002d0000
60289ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_SNEP            0x002e0000
60355753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_LAYER_CHO             0x002f0000
60489ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_NFA             0x00300000
60555753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák
60689ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LAYER_MAX_NUM         0x0031
60789ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák
60889ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák
60989ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák/* TRACE_ORIGINATOR                 0x0000^^00*/
61089ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_MASK              0x0000ff00
61189ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_GET_ORG(x)            ((((UINT32)(x)) & TRACE_ORG_MASK) >> 8)
61289ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák
61389ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_STACK             0x00000000
61455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_ORG_HCI_TRANS         0x00000100
615274768856dc2b6d3dea254383199366bb4cd3cbcMarek Olšák#define TRACE_ORG_PROTO_DISP        0x00000200
61689ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_RPC               0x00000300
61789ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_GKI               0x00000400
61889ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_APPL              0x00000500
61989ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_SCR_WRAPPER       0x00000600
62089ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_SCR_ENGINE        0x00000700
62189ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_USER_SCR          0x00000800
62289ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_TESTER            0x00000900
62389ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_MAX_NUM           10          /* 32-bit mask; must be < 32 */
62489ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_LITE_ORG_MAX_NUM		6
62589ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_ALL               0x03ff
626d6b4655e13a5f3507180d5f7674c870faff2d24dBrian Paul#define TRACE_ORG_RPC_TRANS         0x04
62789ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák
62889ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_REG               0x00000909
62989ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_ORG_REG_SUCCESS       0x0000090a
63089ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák
63155753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák/* TRACE_TYPE                       0x000000^^*/
63289ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_TYPE_MASK             0x000000ff
633825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_GET_TYPE(x)           (((UINT32)(x)) & TRACE_TYPE_MASK)
634825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
635825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_ERROR            0x00000000
636825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_WARNING          0x00000001
637825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_API              0x00000002
638825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_EVENT            0x00000003
639825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_DEBUG            0x00000004
640825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_STACK_ONLY_MAX   TRACE_TYPE_DEBUG
641825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_TX               0x00000005
642825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TRACE_TYPE_RX               0x00000006
64389ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_TYPE_DEBUG_ASSERT     0x00000007
64455753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_TYPE_GENERIC          0x00000008
64589ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_TYPE_REG              0x00000009
64689ce12a2d20b6662abb7240c1becba11d53b215aMarek Olšák#define TRACE_TYPE_REG_SUCCESS      0x0000000a
64755753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_TYPE_CMD_TX           0x0000000b
64855753f59ae1754738bed4b0cb6546db65891f53fMarek Olšák#define TRACE_TYPE_EVT_TX           0x0000000c
6493bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define TRACE_TYPE_ACL_TX           0x0000000d
6503bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define TRACE_TYPE_CMD_RX           0x0000000e
6513bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define TRACE_TYPE_EVT_RX           0x0000000f
6523bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define TRACE_TYPE_ACL_RX           0x00000010
6533bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define TRACE_TYPE_TARGET_TRACE     0x00000011
6543bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define TRACE_TYPE_SCO_TX           0x00000012
6553bd15a9e4336233b82b063ea7257eeeee7e03b07Marek Olšák#define TRACE_TYPE_SCO_RX           0x00000013
65685bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák
6574e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie
6584e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define TRACE_TYPE_MAX_NUM          20
65985bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define TRACE_TYPE_ALL              0xffff
6609b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák
66185bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák/* Define color for script type */
66285bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_COLOR_DEFAULT       0
66385bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_COLOR_TYPE_COMMENT  1
6644e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_COLOR_TYPE_COMMAND  2
6654e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_COLOR_TYPE_EVENT    3
6664e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_COLOR_TYPE_SELECT   4
6674e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie
6684e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie/* Define protocol trace flag values */
6694e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_HCI_SUMMARY 0x00000001
6704e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_HCI_DATA    0x00000002
6714e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_L2CAP       0x00000004
6724e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_RFCOMM      0x00000008
6734e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_SDP         0x00000010
6744e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_TCS         0x00000020
6754e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_OBEX        0x00000040
6764e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_OAPP        0x00000080 /* OBEX Application Profile */
6774e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_AMP         0x00000100
6784e28e6f6c777841b9ffe7a7ad1e865e2595f70f9Dave Airlie#define SCR_PROTO_TRACE_BNEP        0x00000200
67985bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_PROTO_TRACE_AVP         0x00000400
68085bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_PROTO_TRACE_MCA         0x00000800
68185bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_PROTO_TRACE_ATT         0x00001000
68285bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_PROTO_TRACE_SMP         0x00002000
683825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define SCR_PROTO_TRACE_NCI         0x00004000
68485bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_PROTO_TRACE_LLCP        0x00008000
6859b03da9bddc9a39adde746fe377bbc66d7eac418Marek Olšák#define SCR_PROTO_TRACE_NDEF        0x00010000
68685bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_PROTO_TRACE_RW          0x00020000
687825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define SCR_PROTO_TRACE_CE          0x00040000
68885bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšák#define SCR_PROTO_TRACE_SNEP        0x00080000
689825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define SCR_PROTO_TRACE_CHO         0x00100000
690825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define SCR_PROTO_TRACE_ALL         0x001fffff
691d18fb4822bc71944867b66e6de966e4e55bbe574Brian Paul#define SCR_PROTO_TRACE_HCI_LOGGING_VSE 0x0800 /* Brcm vs event for logmsg and protocol traces */
692825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
693825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define MAX_SCRIPT_TYPE             5
694825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
695825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TCS_PSM_INTERCOM        5
696825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define TCS_PSM_CORDLESS        7
697825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define BT_PSM_BNEP             0x000F
698825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák/* Define PSMs HID uses */
699825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define HID_PSM_CONTROL         0x0011
700825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#define HID_PSM_INTERRUPT       0x0013
701825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
702825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák/* Define a function for logging */
70385bf420a78483cf62ebab59af13a7c5a320a4703Marek Olšáktypedef void (BT_LOG_FUNC) (int trace_type, const char *fmt_str, ...);
704825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
705825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák#endif
706825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák
707825b45366d5308fd3e8e71c0c1943cb6ca8f69eaMarek Olšák