212 lines
6.5 KiB
C++
212 lines
6.5 KiB
C++
//
|
|
// 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
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <base/macros.h>
|
|
#include <binder/IBinder.h>
|
|
#include <binder/IInterface.h>
|
|
|
|
#include <bluetooth/binder/IBluetoothCallback.h>
|
|
#include <bluetooth/binder/IBluetoothGattClient.h>
|
|
#include <bluetooth/binder/IBluetoothGattServer.h>
|
|
#include <bluetooth/binder/IBluetoothLowEnergy.h>
|
|
#include <bluetooth/uuid.h>
|
|
|
|
namespace ipc {
|
|
namespace binder {
|
|
|
|
// This class defines the Binder IPC interface for accessing the Bluetooth
|
|
// service. This class was written based on the corresponding AIDL file at
|
|
// /frameworks/base/core/java/android/bluetooth/IBluetooth.aidl.
|
|
//
|
|
// NOTE: KEEP THIS FILE UP-TO-DATE with the corresponding AIDL, otherwise this
|
|
// won't be compatible with the Android framework.
|
|
class IBluetooth : public android::IInterface {
|
|
public:
|
|
DECLARE_META_INTERFACE(Bluetooth);
|
|
|
|
static const char kServiceName[];
|
|
|
|
// Transaction codes for interface methods.
|
|
enum {
|
|
IS_ENABLED_TRANSACTION = android::IBinder::FIRST_CALL_TRANSACTION,
|
|
GET_STATE_TRANSACTION,
|
|
ENABLE_TRANSACTION,
|
|
ENABLE_NO_AUTO_CONNECT_TRANSACTION,
|
|
DISABLE_TRANSACTION,
|
|
|
|
GET_ADDRESS_TRANSACTION,
|
|
GET_UUIDS_TRANSACTION, // TODO(armansito): Support this
|
|
SET_NAME_TRANSACTION,
|
|
GET_NAME_TRANSACTION,
|
|
|
|
// TODO(armansito): Support the functions below.
|
|
|
|
GET_SCAN_MODE_TRANSACTION,
|
|
SET_SCAN_MODE_TRANSACTION,
|
|
|
|
GET_DISCOVERABLE_TIMEOUT_TRANSACTION,
|
|
SET_DISCOVERABLE_TIMEOUT_TRANSACTION,
|
|
|
|
START_DISCOVERY_TRANSACTION,
|
|
CANCEL_DISCOVERY_TRANSACTION,
|
|
IS_DISCOVERING_TRANSACTION,
|
|
|
|
GET_ADAPTER_CONNECTION_STATE_TRANSACTION,
|
|
GET_PROFILE_CONNECTION_STATE_TRANSACTION,
|
|
|
|
GET_BONDED_DEVICES_TRANSACTION,
|
|
CREATE_BOND_TRANSACTION,
|
|
CANCEL_BOND_PROCESS_TRANSACTION,
|
|
REMOVE_BOND_TRANSACTION,
|
|
GET_BOND_STATE_TRANSACTION,
|
|
GET_CONNECTION_STATE_TRANSACTION,
|
|
|
|
GET_REMOTE_NAME_TRANSACTION,
|
|
GET_REMOTE_TYPE_TRANSACTION,
|
|
GET_REMOTE_ALIAS_TRANSACTION,
|
|
SET_REMOTE_ALIAS_TRANSACTION,
|
|
GET_REMOTE_CLASS_TRANSACTION,
|
|
GET_REMOTE_UUIDS_TRANSACTION,
|
|
FETCH_REMOTE_UUIDS_TRANSACTION,
|
|
SDP_SEARCH_TRANSACTION,
|
|
|
|
SET_PIN_TRANSACTION,
|
|
SET_PASSKEY_TRANSACTION,
|
|
SET_PAIRING_CONFIRMATION_TRANSACTION,
|
|
|
|
GET_PHONEBOOK_ACCESS_PERMISSION_TRANSACTION,
|
|
SET_PHONEBOOK_ACCESS_PERMISSION_TRANSACTION,
|
|
GET_MESSAGE_ACCESS_PERMISSION_TRANSACTION,
|
|
SET_MESSAGE_ACCESS_PERMISSION_TRANSACTION,
|
|
GET_SIM_ACCESS_PERMISSION_TRANSACTION,
|
|
SET_SIM_ACCESS_PERMISSION_TRANSACTION,
|
|
|
|
SEND_CONNECTION_STATE_CHANGE_TRANSACTION,
|
|
|
|
REGISTER_CALLBACK_TRANSACTION,
|
|
UNREGISTER_CALLBACK_TRANSACTION,
|
|
|
|
CONNECT_SOCKET_TRANSACTION,
|
|
CREATE_SOCKET_CHANNEL_TRANSACTION,
|
|
|
|
CONFIG_HCI_SNOOP_LOG,
|
|
FACTORY_RESET_TRANSACTION,
|
|
|
|
IS_MULTI_ADVERTISEMENT_SUPPORTED_TRANSACTION,
|
|
IS_PERIPHERAL_MODE_SUPPORTED_TRANSACTION,
|
|
IS_OFFLOADED_FILTERING_SUPPORTED_TRANSACTION,
|
|
IS_OFFLOADED_SCAN_BATCHING_SUPPORTED_TRANSACTION,
|
|
IS_ACTIVITY_AND_ENERGY_REPORTING_SUPPORTED_TRANSACTION,
|
|
GET_ACTIVITY_ENERGY_INFO_FROM_CONTROLLER_TRANSACTION,
|
|
REPORT_ACTIVITY_INFO_TRANSACTION,
|
|
|
|
ON_LE_SERVICE_UP_TRANSACTION,
|
|
ON_BR_EDR_DOWN_TRANSACTION,
|
|
|
|
GET_LOW_ENERGY_INTERFACE_TRANSACTION,
|
|
GET_GATT_CLIENT_INTERFACE_TRANSACTION,
|
|
GET_GATT_SERVER_INTERFACE_TRANSACTION,
|
|
};
|
|
|
|
// Returns a handle to the IBluetooth Binder from the Android ServiceManager.
|
|
// Binder client code can use this to make calls to the service.
|
|
static android::sp<IBluetooth> getClientInterface();
|
|
|
|
// Methods declared in IBluetooth.aidl.
|
|
|
|
virtual bool IsEnabled() = 0;
|
|
virtual int GetState() = 0;
|
|
virtual bool Enable(bool start_restricted) = 0;
|
|
virtual bool EnableNoAutoConnect() = 0;
|
|
virtual bool Disable() = 0;
|
|
|
|
virtual std::string GetAddress() = 0;
|
|
virtual std::vector<bluetooth::UUID> GetUUIDs() = 0;
|
|
virtual bool SetName(const std::string& name) = 0;
|
|
virtual std::string GetName() = 0;
|
|
|
|
virtual void RegisterCallback(
|
|
const android::sp<IBluetoothCallback>& callback) = 0;
|
|
virtual void UnregisterCallback(
|
|
const android::sp<IBluetoothCallback>& callback) = 0;
|
|
|
|
virtual bool IsMultiAdvertisementSupported() = 0;
|
|
|
|
virtual android::sp<IBluetoothLowEnergy> GetLowEnergyInterface() = 0;
|
|
virtual android::sp<IBluetoothGattClient> GetGattClientInterface() = 0;
|
|
virtual android::sp<IBluetoothGattServer> GetGattServerInterface() = 0;
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN(IBluetooth);
|
|
};
|
|
|
|
// The Binder server interface to IBluetooth. A class that implements IBluetooth
|
|
// must inherit from this class.
|
|
class BnBluetooth : public android::BnInterface<IBluetooth> {
|
|
public:
|
|
BnBluetooth() = default;
|
|
virtual ~BnBluetooth() = default;
|
|
|
|
private:
|
|
virtual android::status_t onTransact(
|
|
uint32_t code,
|
|
const android::Parcel& data,
|
|
android::Parcel* reply,
|
|
uint32_t flags = 0);
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(BnBluetooth);
|
|
};
|
|
|
|
// The Binder client interface to IBluetooth.
|
|
class BpBluetooth : public android::BpInterface<IBluetooth> {
|
|
public:
|
|
explicit BpBluetooth(const android::sp<android::IBinder>& impl);
|
|
virtual ~BpBluetooth() = default;
|
|
|
|
// IBluetooth overrides:
|
|
bool IsEnabled() override;
|
|
int GetState() override;
|
|
bool Enable(bool start_restricted) override;
|
|
bool EnableNoAutoConnect() override;
|
|
bool Disable() override;
|
|
|
|
std::string GetAddress() override;
|
|
std::vector<bluetooth::UUID> GetUUIDs() override;
|
|
bool SetName(const std::string& name) override;
|
|
std::string GetName() override;
|
|
|
|
void RegisterCallback(
|
|
const android::sp<IBluetoothCallback>& callback) override;
|
|
void UnregisterCallback(
|
|
const android::sp<IBluetoothCallback>& callback) override;
|
|
|
|
bool IsMultiAdvertisementSupported() override;
|
|
|
|
android::sp<IBluetoothLowEnergy> GetLowEnergyInterface() override;
|
|
android::sp<IBluetoothGattClient> GetGattClientInterface() override;
|
|
android::sp<IBluetoothGattServer> GetGattServerInterface() override;
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN(BpBluetooth);
|
|
};
|
|
|
|
} // namespace binder
|
|
} // namespace ipc
|