diff --git a/dom/bluetooth/BluetoothService.cpp b/dom/bluetooth/BluetoothService.cpp index 6739dc84180..ec8f5d8323d 100644 --- a/dom/bluetooth/BluetoothService.cpp +++ b/dom/bluetooth/BluetoothService.cpp @@ -44,8 +44,10 @@ #if defined(MOZ_B2G_BT) # if defined(MOZ_BLUETOOTH_GONK) -#ifndef MOZ_B2G_BT_BLUEDROID +#ifdef MOZ_B2G_BT_BLUEZ #include "BluetoothGonkService.h" +#else +#include "BluetoothServiceBluedroid.h" #endif # elif defined(MOZ_BLUETOOTH_DBUS) # include "BluetoothDBusService.h" @@ -306,7 +308,9 @@ BluetoothService::Create() #endif #if defined(MOZ_BLUETOOTH_GONK) -#ifndef MOZ_B2G_BT_BLUEDROID +#ifdef MOZ_B2G_BT_BLUEDROID + return new BluetoothServiceBluedroid(); +#else return new BluetoothGonkService(); #endif #elif defined(MOZ_BLUETOOTH_DBUS) diff --git a/dom/bluetooth/BluetoothServiceBluedroid.cpp b/dom/bluetooth/BluetoothServiceBluedroid.cpp new file mode 100644 index 00000000000..ba0cd27715d --- /dev/null +++ b/dom/bluetooth/BluetoothServiceBluedroid.cpp @@ -0,0 +1,341 @@ +/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- +/* vim: set ts=2 et sw=2 tw=80: */ +/* +** Copyright 2006, The Android Open Source Project +** +** 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. +*/ + +#include "BluetoothServiceBluedroid.h" +#include "BluetoothReplyRunnable.h" +#include "BluetoothUtils.h" +#include "BluetoothUuid.h" +#include "mozilla/dom/bluetooth/BluetoothTypes.h" +#include "mozilla/ipc/UnixSocket.h" + +using namespace mozilla; +using namespace mozilla::ipc; +USING_BLUETOOTH_NAMESPACE + +nsresult +BluetoothServiceBluedroid::StartInternal() +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::StopInternal() +{ + return NS_OK; +} + +bool +BluetoothServiceBluedroid::IsEnabledInternal() +{ + return true; +} + +nsresult +BluetoothServiceBluedroid::GetDefaultAdapterPathInternal( + BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::GetConnectedDevicePropertiesInternal( + uint16_t aProfileId, BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; + +} + +nsresult +BluetoothServiceBluedroid::GetPairedDevicePropertiesInternal( + const nsTArray& aDeviceAddress, BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::StartDiscoveryInternal( + BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::StopDiscoveryInternal( + BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::GetDevicePropertiesInternal( + const BluetoothSignal& aSignal) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::SetProperty(BluetoothObjectType aType, + const BluetoothNamedValue& aValue, + BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; +} + +bool +BluetoothServiceBluedroid::GetDevicePath(const nsAString& aAdapterPath, + const nsAString& aDeviceAddress, + nsAString& aDevicePath) +{ + return true; +} + +bool +BluetoothServiceBluedroid::AddServiceRecords(const char* serviceName, + unsigned long long uuidMsb, + unsigned long long uuidLsb, + int channel) +{ + return true; +} + +bool +BluetoothServiceBluedroid::RemoveServiceRecords(const char* serviceName, + unsigned long long uuidMsb, + unsigned long long uuidLsb, + int channel) +{ + return true; +} + +bool +BluetoothServiceBluedroid::AddReservedServicesInternal( + const nsTArray& aServices, + nsTArray& aServiceHandlesContainer) +{ + return true; + +} + +bool +BluetoothServiceBluedroid::RemoveReservedServicesInternal( + const nsTArray& aServiceHandles) +{ + return true; +} + +nsresult +BluetoothServiceBluedroid::GetScoSocket( + const nsAString& aObjectPath, bool aAuth, bool aEncrypt, + mozilla::ipc::UnixSocketConsumer* aConsumer) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::GetServiceChannel( + const nsAString& aDeviceAddress, + const nsAString& aServiceUuid, + BluetoothProfileManagerBase* aManager) +{ + return NS_OK; +} + +bool +BluetoothServiceBluedroid::UpdateSdpRecords( + const nsAString& aDeviceAddress, + BluetoothProfileManagerBase* aManager) +{ + return true; +} + +nsresult +BluetoothServiceBluedroid::CreatePairedDeviceInternal( + const nsAString& aDeviceAddress, int aTimeout, + BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::RemoveDeviceInternal( + const nsAString& aDeviceObjectPath, + BluetoothReplyRunnable* aRunnable) +{ + return NS_OK; +} + +bool +BluetoothServiceBluedroid::SetPinCodeInternal( + const nsAString& aDeviceAddress, const nsAString& aPinCode, + BluetoothReplyRunnable* aRunnable) +{ + return true; +} + +bool +BluetoothServiceBluedroid::SetPasskeyInternal( + const nsAString& aDeviceAddress, uint32_t aPasskey, + BluetoothReplyRunnable* aRunnable) +{ + return true; +} + +bool +BluetoothServiceBluedroid::SetPairingConfirmationInternal( + const nsAString& aDeviceAddress, bool aConfirm, + BluetoothReplyRunnable* aRunnable) +{ + return true; +} + +bool +BluetoothServiceBluedroid::SetAuthorizationInternal( + const nsAString& aDeviceAddress, bool aAllow, + BluetoothReplyRunnable* aRunnable) +{ + return true; +} + +nsresult +BluetoothServiceBluedroid::PrepareAdapterInternal() +{ + return NS_OK; +} + +void +BluetoothServiceBluedroid::Connect(const nsAString& aDeviceAddress, + uint32_t aCod, + uint16_t aServiceUuid, + BluetoothReplyRunnable* aRunnable) +{ + +} + +bool +BluetoothServiceBluedroid::IsConnected(uint16_t aProfileId) +{ + return true; +} + +void +BluetoothServiceBluedroid::Disconnect( + const nsAString& aDeviceAddress, uint16_t aServiceUuid, + BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::SendFile(const nsAString& aDeviceAddress, + BlobParent* aBlobParent, + BlobChild* aBlobChild, + BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::StopSendingFile(const nsAString& aDeviceAddress, + BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::ConfirmReceivingFile( + const nsAString& aDeviceAddress, bool aConfirm, + BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::ConnectSco(BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::DisconnectSco(BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::IsScoConnected(BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::SendMetaData(const nsAString& aTitle, + const nsAString& aArtist, + const nsAString& aAlbum, + int64_t aMediaNumber, + int64_t aTotalMediaCount, + int64_t aDuration, + BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::SendPlayStatus( + int64_t aDuration, int64_t aPosition, + const nsAString& aPlayStatus, + BluetoothReplyRunnable* aRunnable) +{ + +} + +void +BluetoothServiceBluedroid::UpdatePlayStatus( + uint32_t aDuration, uint32_t aPosition, ControlPlayStatus aPlayStatus) +{ + +} + +nsresult +BluetoothServiceBluedroid::SendSinkMessage(const nsAString& aDeviceAddresses, + const nsAString& aMessage) +{ + return NS_OK; +} + +nsresult +BluetoothServiceBluedroid::SendInputMessage(const nsAString& aDeviceAddresses, + const nsAString& aMessage) +{ + return NS_OK; +} + +void +BluetoothServiceBluedroid::AnswerWaitingCall(BluetoothReplyRunnable* aRunnable) +{ +} + +void +BluetoothServiceBluedroid::IgnoreWaitingCall(BluetoothReplyRunnable* aRunnable) +{ +} + +void +BluetoothServiceBluedroid::ToggleCalls(BluetoothReplyRunnable* aRunnable) +{ +} + diff --git a/dom/bluetooth/BluetoothServiceBluedroid.h b/dom/bluetooth/BluetoothServiceBluedroid.h new file mode 100644 index 00000000000..dcb591fe45c --- /dev/null +++ b/dom/bluetooth/BluetoothServiceBluedroid.h @@ -0,0 +1,189 @@ +/* -*- 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_bluetoothservicebluedroid_h__ +#define mozilla_dom_bluetooth_bluetoothservicebluedroid_h__ + +#include "BluetoothCommon.h" +#include "BluetoothService.h" + +class DBusMessage; + +BEGIN_BLUETOOTH_NAMESPACE + +class BluetoothServiceBluedroid : public BluetoothService +{ +public: + virtual nsresult StartInternal(); + virtual nsresult StopInternal(); + virtual bool IsEnabledInternal(); + + virtual nsresult GetDefaultAdapterPathInternal( + BluetoothReplyRunnable* aRunnable); + + virtual nsresult GetConnectedDevicePropertiesInternal(uint16_t aProfileId, + BluetoothReplyRunnable* aRunnable); + + virtual nsresult GetPairedDevicePropertiesInternal( + const nsTArray& aDeviceAddress, + BluetoothReplyRunnable* aRunnable); + + virtual nsresult StartDiscoveryInternal(BluetoothReplyRunnable* aRunnable); + virtual nsresult StopDiscoveryInternal(BluetoothReplyRunnable* aRunnable); + + virtual nsresult + GetDevicePropertiesInternal(const BluetoothSignal& aSignal); + + virtual nsresult + SetProperty(BluetoothObjectType aType, + const BluetoothNamedValue& aValue, + BluetoothReplyRunnable* aRunnable); + + virtual bool + GetDevicePath(const nsAString& aAdapterPath, + const nsAString& aDeviceAddress, + nsAString& aDevicePath); + + static bool + AddServiceRecords(const char* serviceName, + unsigned long long uuidMsb, + unsigned long long uuidLsb, + int channel); + + static bool + RemoveServiceRecords(const char* serviceName, + unsigned long long uuidMsb, + unsigned long long uuidLsb, + int channel); + + static bool + AddReservedServicesInternal(const nsTArray& aServices, + nsTArray& aServiceHandlesContainer); + + static bool + RemoveReservedServicesInternal(const nsTArray& aServiceHandles); + + virtual nsresult + GetScoSocket(const nsAString& aObjectPath, + bool aAuth, + bool aEncrypt, + mozilla::ipc::UnixSocketConsumer* aConsumer); + + virtual nsresult + GetServiceChannel(const nsAString& aDeviceAddress, + const nsAString& aServiceUuid, + BluetoothProfileManagerBase* aManager); + + virtual bool + UpdateSdpRecords(const nsAString& aDeviceAddress, + BluetoothProfileManagerBase* aManager); + + virtual nsresult + CreatePairedDeviceInternal(const nsAString& aDeviceAddress, + int aTimeout, + BluetoothReplyRunnable* aRunnable); + + virtual nsresult + RemoveDeviceInternal(const nsAString& aDeviceObjectPath, + BluetoothReplyRunnable* aRunnable); + + virtual bool + SetPinCodeInternal(const nsAString& aDeviceAddress, const nsAString& aPinCode, + BluetoothReplyRunnable* aRunnable); + + virtual bool + SetPasskeyInternal(const nsAString& aDeviceAddress, uint32_t aPasskey, + BluetoothReplyRunnable* aRunnable); + + virtual bool + SetPairingConfirmationInternal(const nsAString& aDeviceAddress, bool aConfirm, + BluetoothReplyRunnable* aRunnable); + + virtual bool + SetAuthorizationInternal(const nsAString& aDeviceAddress, bool aAllow, + BluetoothReplyRunnable* aRunnable); + + virtual nsresult + PrepareAdapterInternal(); + + virtual void + Connect(const nsAString& aDeviceAddress, + uint32_t aCod, + uint16_t aServiceUuid, + BluetoothReplyRunnable* aRunnable); + + virtual bool + IsConnected(uint16_t aProfileId); + + virtual void + Disconnect(const nsAString& aDeviceAddress, uint16_t aServiceUuid, + BluetoothReplyRunnable* aRunnable); + + virtual void + SendFile(const nsAString& aDeviceAddress, + BlobParent* aBlobParent, + BlobChild* aBlobChild, + BluetoothReplyRunnable* aRunnable); + + virtual void + StopSendingFile(const nsAString& aDeviceAddress, + BluetoothReplyRunnable* aRunnable); + + virtual void + ConfirmReceivingFile(const nsAString& aDeviceAddress, bool aConfirm, + BluetoothReplyRunnable* aRunnable); + + virtual void + ConnectSco(BluetoothReplyRunnable* aRunnable); + + virtual void + DisconnectSco(BluetoothReplyRunnable* aRunnable); + + virtual void + IsScoConnected(BluetoothReplyRunnable* aRunnable); + + virtual void + AnswerWaitingCall(BluetoothReplyRunnable* aRunnable); + + virtual void + IgnoreWaitingCall(BluetoothReplyRunnable* aRunnable); + + virtual void + ToggleCalls(BluetoothReplyRunnable* aRunnable); + + 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; +}; + +END_BLUETOOTH_NAMESPACE + +#endif + diff --git a/dom/bluetooth/moz.build b/dom/bluetooth/moz.build index 1dd0297e661..f656399004e 100644 --- a/dom/bluetooth/moz.build +++ b/dom/bluetooth/moz.build @@ -52,15 +52,20 @@ if CONFIG['MOZ_B2G_BT']: 'BluetoothRilListener.cpp', ] - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['MOZ_B2G_BT_BLUEZ']: - CPP_SOURCES += [ - 'linux/BluetoothDBusService.cpp', - 'gonk/BluetoothGonkService.cpp', - ] + if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': + if CONFIG['MOZ_B2G_BT_BLUEZ']: + CPP_SOURCES += [ + 'linux/BluetoothDBusService.cpp', + 'gonk/BluetoothGonkService.cpp', + ] + if CONFIG['MOZ_B2G_BT_BLUEDROID']: + CPP_SOURCES += [ + 'BluetoothServiceBluedroid.cpp', + ] else: if CONFIG['MOZ_ENABLE_DBUS']: CPP_SOURCES += [ - 'linux/BluetoothDBusService.cpp', + 'linux/BluetoothDBusService.cpp', ] EXPORTS.mozilla.dom.bluetooth.ipc += [