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 #include "osi/include/future.h" 33 34 namespace bluetooth { 35 namespace os { 36 class Handler; 37 } 38 namespace activity_attribution { 39 class ActivityAttribution; 40 } 41 namespace neighbor { 42 class ConnectabilityModule; 43 class DiscoverabilityModule; 44 class InquiryModule; 45 class PageModule; 46 } 47 namespace hal { 48 class SnoopLogger; 49 } 50 51 namespace hci { 52 class Controller; 53 class HciLayer; 54 class AclManager; 55 class RemoteNameRequestModule; 56 class DistanceMeasurementManager; 57 class LeAdvertisingManager; 58 class LeScanningManager; 59 class VendorSpecificEventManager; 60 class MsftExtensionManager; 61 } 62 63 namespace l2cap { 64 namespace classic { 65 class L2capClassicModule; 66 } // namespace classic 67 namespace le { 68 class L2capLeModule; 69 } // namespace le 70 } // namespace l2cap 71 72 namespace metrics { 73 class CounterMetrics; 74 } 75 76 namespace security { 77 class SecurityModule; 78 } 79 namespace storage { 80 class StorageModule; 81 } 82 83 namespace shim { 84 class Dumpsys; 85 86 /* This returns a handler that might be used in shim to receive callbacks from 87 * within the stack. */ 88 os::Handler* GetGdShimHandler(); 89 hci::LeAdvertisingManager* GetAdvertising(); 90 bluetooth::hci::Controller* GetController(); 91 neighbor::DiscoverabilityModule* GetDiscoverability(); 92 neighbor::ConnectabilityModule* GetConnectability(); 93 Dumpsys* GetDumpsys(); 94 neighbor::InquiryModule* GetInquiry(); 95 hci::HciLayer* GetHciLayer(); 96 l2cap::classic::L2capClassicModule* GetL2capClassicModule(); 97 l2cap::le::L2capLeModule* GetL2capLeModule(); 98 neighbor::PageModule* GetPage(); 99 hci::RemoteNameRequestModule* GetRemoteNameRequest(); 100 hci::DistanceMeasurementManager* GetDistanceMeasurementManager(); 101 hci::LeScanningManager* GetScanning(); 102 bluetooth::security::SecurityModule* GetSecurityModule(); 103 hal::SnoopLogger* GetSnoopLogger(); 104 storage::StorageModule* GetStorage(); 105 hci::AclManager* GetAclManager(); 106 hci::VendorSpecificEventManager* GetVendorSpecificEventManager(); 107 activity_attribution::ActivityAttribution* GetActivityAttribution(); 108 metrics::CounterMetrics* GetCounterMetrics(); 109 hci::MsftExtensionManager* GetMsftExtensionManager(); 110 111 } // namespace shim 112 } // namespace bluetooth 113