1 /****************************************************************************** 2 * 3 * Copyright 2014 Google, Inc. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 #pragma once 20 21 #include <stdbool.h> 22 23 #include <future> 24 25 #include "core_callbacks.h" 26 #include "osi/include/future.h" 27 28 using ProfileStartCallback = void(); 29 using ProfileStopCallback = void(); 30 31 typedef struct { 32 void (*init_stack)(bluetooth::core::CoreInterface*); 33 void (*start_up_stack_async)(bluetooth::core::CoreInterface*, ProfileStartCallback, 34 ProfileStopCallback); 35 void (*shut_down_stack_async)(ProfileStopCallback); 36 void (*clean_up_stack)(ProfileStopCallback); 37 void (*start_up_rust_module_async)(std::promise<void> promise); 38 void (*shut_down_rust_module_async)(); 39 40 bool (*get_stack_is_running)(void); 41 } stack_manager_t; 42 43 const stack_manager_t* stack_manager_get_interface(); 44 45 // TODO(zachoverflow): remove this terrible hack once the startup sequence is 46 // more sane 47 future_t* stack_manager_get_hack_future(); 48 49 bluetooth::core::CoreInterface* GetInterfaceToProfiles(); 50