diff -r 000000000000 -r 6474c204b198 dom/bluetooth/bluez/BluetoothDBusService.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dom/bluetooth/bluez/BluetoothDBusService.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,205 @@ +/* -*- 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_bluetoothdbusservice_h__ +#define mozilla_dom_bluetooth_bluetoothdbusservice_h__ + +#include "mozilla/Attributes.h" +#include "BluetoothCommon.h" +#include "mozilla/ipc/RawDBusConnection.h" +#include "BluetoothService.h" +#include "nsIThread.h" + +class DBusMessage; + +BEGIN_BLUETOOTH_NAMESPACE + +/** + * BluetoothDBusService is the implementation of BluetoothService for DBus on + * linux/android/B2G. Function comments are in BluetoothService.h + */ + +class BluetoothDBusService : public BluetoothService +{ +public: + /** + * For DBus Control method of "UpdateNotification", event id should be + * specified as following: + * (Please see specification of AVRCP 1.3, Table 5.28 for more details.) + */ + enum ControlEventId { + EVENT_PLAYBACK_STATUS_CHANGED = 0x01, + EVENT_TRACK_CHANGED = 0x02, + EVENT_TRACK_REACHED_END = 0x03, + EVENT_TRACK_REACHED_START = 0x04, + EVENT_PLAYBACK_POS_CHANGED = 0x05, + EVENT_BATT_STATUS_CHANGED = 0x06, + EVENT_SYSTEM_STATUS_CHANGED = 0x07, + EVENT_PLAYER_APPLICATION_SETTING_CHANGED = 0x08, + EVENT_UNKNOWN + }; + + BluetoothDBusService(); + ~BluetoothDBusService(); + + bool IsReady(); + + virtual nsresult StartInternal() MOZ_OVERRIDE; + + virtual nsresult StopInternal() MOZ_OVERRIDE; + + virtual nsresult GetDefaultAdapterPathInternal( + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual nsresult GetConnectedDevicePropertiesInternal(uint16_t aServiceUuid, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual nsresult GetPairedDevicePropertiesInternal( + const nsTArray& aDeviceAddresses, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual nsresult StartDiscoveryInternal(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual nsresult StopDiscoveryInternal(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual nsresult + SetProperty(BluetoothObjectType aType, + const BluetoothNamedValue& aValue, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual nsresult + GetServiceChannel(const nsAString& aDeviceAddress, + const nsAString& aServiceUuid, + BluetoothProfileManagerBase* aManager) MOZ_OVERRIDE; + + virtual bool + UpdateSdpRecords(const nsAString& aDeviceAddress, + BluetoothProfileManagerBase* aManager) MOZ_OVERRIDE; + + virtual nsresult + CreatePairedDeviceInternal(const nsAString& aDeviceAddress, + int aTimeout, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual nsresult + RemoveDeviceInternal(const nsAString& aDeviceObjectPath, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual bool + SetPinCodeInternal(const nsAString& aDeviceAddress, const nsAString& aPinCode, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual bool + SetPasskeyInternal(const nsAString& aDeviceAddress, uint32_t aPasskey, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual bool + SetPairingConfirmationInternal(const nsAString& aDeviceAddress, bool aConfirm, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + Connect(const nsAString& aDeviceAddress, + uint32_t aCod, + uint16_t aServiceUuid, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual bool + IsConnected(uint16_t aServiceUuid) MOZ_OVERRIDE; + + virtual void + Disconnect(const nsAString& aDeviceAddress, uint16_t aServiceUuid, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + SendFile(const nsAString& aDeviceAddress, + BlobParent* aBlobParent, + BlobChild* aBlobChild, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + SendFile(const nsAString& aDeviceAddress, + nsIDOMBlob* aBlob, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + StopSendingFile(const nsAString& aDeviceAddress, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + ConfirmReceivingFile(const nsAString& aDeviceAddress, bool aConfirm, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + ConnectSco(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + DisconnectSco(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + IsScoConnected(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + +#ifdef MOZ_B2G_RIL + virtual void + AnswerWaitingCall(BluetoothReplyRunnable* aRunnable); + + virtual void + IgnoreWaitingCall(BluetoothReplyRunnable* aRunnable); + + virtual void + ToggleCalls(BluetoothReplyRunnable* aRunnable); +#endif + + virtual void + SendMetaData(const nsAString& aTitle, + const nsAString& aArtist, + const nsAString& aAlbum, + int64_t aMediaNumber, + int64_t aTotalMediaCount, + int64_t aDuration, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + SendPlayStatus(int64_t aDuration, + int64_t aPosition, + const nsAString& aPlayStatus, + BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE; + + virtual void + UpdatePlayStatus(uint32_t aDuration, + uint32_t aPosition, + ControlPlayStatus aPlayStatus) MOZ_OVERRIDE; + + virtual nsresult + SendSinkMessage(const nsAString& aDeviceAddresses, + const nsAString& aMessage) MOZ_OVERRIDE; + + virtual nsresult + SendInputMessage(const nsAString& aDeviceAddresses, + const nsAString& aMessage) MOZ_OVERRIDE; +private: + nsresult SendGetPropertyMessage(const nsAString& aPath, + const char* aInterface, + void (*aCB)(DBusMessage *, void *), + BluetoothReplyRunnable* aRunnable); + + nsresult SendDiscoveryMessage(const char* aMessageName, + BluetoothReplyRunnable* aRunnable); + + nsresult SendSetPropertyMessage(const char* aInterface, + const BluetoothNamedValue& aValue, + BluetoothReplyRunnable* aRunnable); + + void UpdateNotification(ControlEventId aEventId, uint64_t aData); + + nsresult SendAsyncDBusMessage(const nsAString& aObjectPath, + const char* aInterface, + const nsAString& aMessage, + mozilla::ipc::DBusReplyCallback aCallback); +}; + +END_BLUETOOTH_NAMESPACE + +#endif