//
//  Copyright (C) 2015 Google, Inc.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at:
//
//  http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

#pragma once

struct hw_module_t;

// Loads the Bluetooth library. If OS_GENERIC is defined, this function looks
// explicitly for libbluetooth.default.so and loads it. On Android, this calls
// the hw_get_module routine with the Bluetooth stack module id.
int hal_util_load_bt_library(const struct hw_module_t** module);
