1 /*
2  * Copyright 2019 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 
17 #pragma once
18 
19 /**
20  * Entrypoints called into Gabeldorsche from legacy stack
21  *
22  * Any marshalling/unmarshalling, data transformation of APIs to
23  * or from the Gabeldorsche stack may be placed here.
24  *
25  * The idea is to effectively provide a binary interface to prevent cross
26  * contamination of data structures and the like between the stacks.
27  *
28  * **ABSOLUTELY** No reference to Gabeldorsche stack other than well defined
29  * interfaces may be made here
30  */
31 
32 namespace bluetooth {
33 namespace os {
34 class Handler;
35 }
36 namespace hal {
37 class SnoopLogger;
38 }
39 
40 namespace hci {
41 class ControllerInterface;
42 class HciInterface;
43 class AclManager;
44 class RemoteNameRequestModule;
45 class DistanceMeasurementManager;
46 class LeAdvertisingManager;
47 class LeScanningManager;
48 class MsftExtensionManager;
49 }  // namespace hci
50 
51 namespace lpp {
52 class LppOffloadInterface;
53 }
54 
55 namespace metrics {
56 class CounterMetrics;
57 }
58 
59 namespace storage {
60 class StorageModule;
61 }
62 
63 namespace shim {
64 class Dumpsys;
65 
66 /* This returns a handler that might be used in shim to receive callbacks from
67  * within the stack. */
68 os::Handler* GetGdShimHandler();
69 hci::LeAdvertisingManager* GetAdvertising();
70 bluetooth::hci::ControllerInterface* GetController();
71 Dumpsys* GetDumpsys();
72 hci::HciInterface* GetHciLayer();
73 hci::RemoteNameRequestModule* GetRemoteNameRequest();
74 hci::DistanceMeasurementManager* GetDistanceMeasurementManager();
75 hci::LeScanningManager* GetScanning();
76 lpp::LppOffloadInterface* GetLppOffloadManager();
77 hal::SnoopLogger* GetSnoopLogger();
78 storage::StorageModule* GetStorage();
79 hci::AclManager* GetAclManager();
80 metrics::CounterMetrics* GetCounterMetrics();
81 hci::MsftExtensionManager* GetMsftExtensionManager();
82 
83 }  // namespace shim
84 }  // namespace bluetooth
85