/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */ /* vim: set ts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef mozilla_dom_bluetooth_bluedroid_bluetoothhalinterface_h__ #define mozilla_dom_bluetooth_bluedroid_bluetoothhalinterface_h__ #include #include "BluetoothInterface.h" BEGIN_BLUETOOTH_NAMESPACE class BluetoothHALInterface final : public BluetoothInterface { public: static BluetoothHALInterface* GetInstance(); void Init(BluetoothNotificationHandler* aNotificationHandler, BluetoothResultHandler* aRes); void Cleanup(BluetoothResultHandler* aRes); void Enable(BluetoothResultHandler* aRes); void Disable(BluetoothResultHandler* aRes); /* Adapter Properties */ void GetAdapterProperties(BluetoothResultHandler* aRes); void GetAdapterProperty(const nsAString& aName, BluetoothResultHandler* aRes); void SetAdapterProperty(const BluetoothNamedValue& aProperty, BluetoothResultHandler* aRes); /* Remote Device Properties */ void GetRemoteDeviceProperties(const nsAString& aRemoteAddr, BluetoothResultHandler* aRes); void GetRemoteDeviceProperty(const nsAString& aRemoteAddr, const nsAString& aName, BluetoothResultHandler* aRes); void SetRemoteDeviceProperty(const nsAString& aRemoteAddr, const BluetoothNamedValue& aProperty, BluetoothResultHandler* aRes); /* Remote Services */ void GetRemoteServiceRecord(const nsAString& aRemoteAddr, const uint8_t aUuid[16], BluetoothResultHandler* aRes); void GetRemoteServices(const nsAString& aRemoteAddr, BluetoothResultHandler* aRes); /* Discovery */ void StartDiscovery(BluetoothResultHandler* aRes); void CancelDiscovery(BluetoothResultHandler* aRes); /* Bonds */ void CreateBond(const nsAString& aBdAddr, BluetoothTransport aTransport, BluetoothResultHandler* aRes); void RemoveBond(const nsAString& aBdAddr, BluetoothResultHandler* aRes); void CancelBond(const nsAString& aBdAddr, BluetoothResultHandler* aRes); /* Connection */ void GetConnectionState(const nsAString& aBdAddr, BluetoothResultHandler* aRes); /* Authentication */ void PinReply(const nsAString& aBdAddr, bool aAccept, const nsAString& aPinCode, BluetoothResultHandler* aRes); void SspReply(const nsAString& aBdAddr, BluetoothSspVariant aVariant, bool aAccept, uint32_t aPasskey, BluetoothResultHandler* aRes); /* DUT Mode */ void DutModeConfigure(bool aEnable, BluetoothResultHandler* aRes); void DutModeSend(uint16_t aOpcode, uint8_t* aBuf, uint8_t aLen, BluetoothResultHandler* aRes); /* LE Mode */ void LeTestMode(uint16_t aOpcode, uint8_t* aBuf, uint8_t aLen, BluetoothResultHandler* aRes); /* Energy Information */ void ReadEnergyInfo(BluetoothResultHandler* aRes); /* Profile Interfaces */ BluetoothSocketInterface* GetBluetoothSocketInterface(); BluetoothHandsfreeInterface* GetBluetoothHandsfreeInterface(); BluetoothA2dpInterface* GetBluetoothA2dpInterface(); BluetoothAvrcpInterface* GetBluetoothAvrcpInterface(); BluetoothGattInterface* GetBluetoothGattInterface(); protected: BluetoothHALInterface(const bt_interface_t* aInterface); ~BluetoothHALInterface(); private: template T* CreateProfileInterface(); template T* GetProfileInterface(); const bt_interface_t* mInterface; }; END_BLUETOOTH_NAMESPACE #endif