1 /*
2 * Copyright 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 #include "stack/include/btm_client_interface.h"
17
18 #include <bluetooth/log.h>
19
20 #include "security_client_callbacks.h"
21 #include "stack/btm/btm_ble_int.h"
22 #include "stack/include/acl_api.h"
23 #include "stack/include/btm_api.h"
24 #include "stack/include/btm_ble_api.h"
25
26 struct btm_client_interface_t btm_client_interface = {
27 .lifecycle =
28 {
29 .BTM_PmRegister = ::BTM_PmRegister,
30 .BTM_GetHCIConnHandle = ::BTM_GetHCIConnHandle,
31 .BTM_VendorSpecificCommand = ::BTM_VendorSpecificCommand,
32 .ACL_RegisterClient = ::ACL_RegisterClient,
33 .ACL_UnregisterClient = ::ACL_UnregisterClient,
34 .btm_init = ::btm_init,
35 .btm_free = ::btm_free,
36 .btm_ble_init = ::btm_ble_init,
37 .btm_ble_free = ::btm_ble_free,
38 .BTM_reset_complete = ::BTM_reset_complete,
39 },
40
41 // Acl peer and lifecycle
42 .peer =
43 {
44 .BTM_IsAclConnectionUp = ::BTM_IsAclConnectionUp,
45 .BTM_ReadConnectedTransportAddress =
46 ::BTM_ReadConnectedTransportAddress,
47 .BTM_CancelRemoteDeviceName = ::BTM_CancelRemoteDeviceName,
48 .BTM_ReadRemoteDeviceName = ::BTM_ReadRemoteDeviceName,
49 .BTM_ReadRemoteFeatures = ::BTM_ReadRemoteFeatures,
50 .BTM_ReadDevInfo = ::BTM_ReadDevInfo,
51 .BTM_GetMaxPacketSize = ::BTM_GetMaxPacketSize,
52 .BTM_ReadRemoteVersion = ::BTM_ReadRemoteVersion,
53 .BTM_GetPeerDeviceTypeFromFeatures =
54 ::BTM_GetPeerDeviceTypeFromFeatures,
55 .BTM_RequestPeerSCA = ::BTM_RequestPeerSCA,
56 .BTM_GetPeerSCA = ::BTM_GetPeerSCA,
57 .BTM_IsPhy2mSupported = ::BTM_IsPhy2mSupported,
58 },
59
60 .link_policy =
61 {
62 .BTM_GetRole = ::BTM_GetRole,
63 .BTM_SetPowerMode = ::BTM_SetPowerMode,
64 .BTM_SetSsrParams = ::BTM_SetSsrParams,
65 .BTM_SwitchRoleToCentral = ::BTM_SwitchRoleToCentral,
66 .BTM_block_role_switch_for = ::BTM_block_role_switch_for,
67 .BTM_block_sniff_mode_for = ::BTM_block_sniff_mode_for,
68 .BTM_default_unblock_role_switch =
69 ::BTM_default_unblock_role_switch,
70 .BTM_unblock_role_switch_for = ::BTM_unblock_role_switch_for,
71 .BTM_unblock_sniff_mode_for = ::BTM_unblock_sniff_mode_for,
72 .BTM_WritePageTimeout = ::BTM_WritePageTimeout,
73 },
74
75 .link_controller =
76 {
77 .BTM_GetLinkSuperTout = ::BTM_GetLinkSuperTout,
78 .BTM_ReadRSSI = ::BTM_ReadRSSI,
79 },
80
81 .security = get_security_client_interface(),
82
83 .ble =
84 {
85 .BTM_BleGetEnergyInfo = ::BTM_BleGetEnergyInfo,
86 .BTM_BleObserve = ::BTM_BleObserve,
87 .BTM_SetBleDataLength = ::BTM_SetBleDataLength,
88 .BTM_BleReadControllerFeatures = ::BTM_BleReadControllerFeatures,
89 .BTM_BleSetPhy = ::BTM_BleSetPhy,
90 .BTM_BleSetPrefConnParams = ::BTM_BleSetPrefConnParams,
91 .BTM_UseLeLink = ::BTM_UseLeLink,
92 .BTM_IsRemoteVersionReceived = ::BTM_IsRemoteVersionReceived,
93 .BTM_SetConsolidationCallback = ::BTM_SetConsolidationCallback,
94 },
95
96 .sco =
97 {
98 .BTM_CreateSco = ::BTM_CreateSco,
99 .BTM_RegForEScoEvts = ::BTM_RegForEScoEvts,
100 .BTM_RemoveSco = ::BTM_RemoveSco,
101 .BTM_WriteVoiceSettings = ::BTM_WriteVoiceSettings,
102 .BTM_EScoConnRsp = ::BTM_EScoConnRsp,
103 .BTM_GetNumScoLinks = ::BTM_GetNumScoLinks,
104 .BTM_SetEScoMode = ::BTM_SetEScoMode,
105 .BTM_GetScoDebugDump = ::BTM_GetScoDebugDump,
106 .BTM_IsScoActiveByBdaddr = ::BTM_IsScoActiveByBdaddr,
107 },
108
109 .local =
110 {
111 .BTM_ReadLocalDeviceName = ::BTM_ReadLocalDeviceName,
112 .BTM_ReadLocalDeviceNameFromController =
113 ::BTM_ReadLocalDeviceNameFromController,
114 .BTM_SetLocalDeviceName = ::BTM_SetLocalDeviceName,
115 .BTM_SetDeviceClass = ::BTM_SetDeviceClass,
116 .BTM_IsDeviceUp = ::BTM_IsDeviceUp,
117 .BTM_ReadDeviceClass = ::BTM_ReadDeviceClass,
118 },
119
120 .eir =
121 {
122 .BTM_WriteEIR = ::BTM_WriteEIR,
123 .BTM_GetEirSupportedServices = ::BTM_GetEirSupportedServices,
124 .BTM_GetEirUuidList = ::BTM_GetEirUuidList,
125 .BTM_AddEirService = ::BTM_AddEirService,
126 .BTM_RemoveEirService = ::BTM_RemoveEirService,
127 },
128 .db =
129 {
130 .BTM_InqDbRead = ::BTM_InqDbRead,
131 .BTM_InqDbFirst = ::BTM_InqDbFirst,
132 .BTM_InqDbNext = ::BTM_InqDbNext,
133 .BTM_ClearInqDb = ::BTM_ClearInqDb,
134 },
135 };
136
get_btm_client_interface()137 struct btm_client_interface_t& get_btm_client_interface() {
138 return btm_client_interface;
139 }
140