dom/bluetooth/bluedroid/BluetoothA2dpManager.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
     2 /* vim: set ts=2 et sw=2 tw=80: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     5  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 #ifndef mozilla_dom_bluetooth_bluetootha2dpmanager_h__
     8 #define mozilla_dom_bluetooth_bluetootha2dpmanager_h__
    10 #include "BluetoothCommon.h"
    11 #include "BluetoothProfileController.h"
    12 #include "BluetoothProfileManagerBase.h"
    14 BEGIN_BLUETOOTH_NAMESPACE
    15 class BluetoothA2dpManager : public BluetoothProfileManagerBase
    16 {
    17 public:
    18   BT_DECL_PROFILE_MGR_BASE
    19   virtual void GetName(nsACString& aName)
    20   {
    21     aName.AssignLiteral("A2DP");
    22   }
    24   enum SinkState {
    25     SINK_UNKNOWN,
    26     SINK_DISCONNECTED,
    27     SINK_CONNECTING,
    28     SINK_CONNECTED,
    29     SINK_PLAYING,
    30   };
    32   static BluetoothA2dpManager* Get();
    33   virtual ~BluetoothA2dpManager();
    35   // A2DP-specific functions
    36   void HandleSinkPropertyChanged(const BluetoothSignal& aSignal);
    38   // AVRCP-specific functions
    39   void SetAvrcpConnected(bool aConnected);
    40   bool IsAvrcpConnected();
    41   void UpdateMetaData(const nsAString& aTitle,
    42                       const nsAString& aArtist,
    43                       const nsAString& aAlbum,
    44                       uint64_t aMediaNumber,
    45                       uint64_t aTotalMediaCount,
    46                       uint32_t aDuration);
    47   void UpdatePlayStatus(uint32_t aDuration,
    48                         uint32_t aPosition,
    49                         ControlPlayStatus aPlayStatus);
    50   void UpdateRegisterNotification(int aEventId, int aParam);
    51   void GetAlbum(nsAString& aAlbum);
    52   uint32_t GetDuration();
    53   ControlPlayStatus GetPlayStatus();
    54   uint32_t GetPosition();
    55   uint64_t GetMediaNumber();
    56   uint64_t GetTotalMediaNumber();
    57   void GetTitle(nsAString& aTitle);
    58   void GetArtist(nsAString& aArtist);
    60 private:
    61   class SinkPropertyChangedHandler;
    62   BluetoothA2dpManager();
    63   bool Init();
    64   void ResetA2dp();
    65   void ResetAvrcp();
    67   void HandleShutdown();
    68   void NotifyConnectionStatusChanged();
    70   nsString mDeviceAddress;
    71   nsRefPtr<BluetoothProfileController> mController;
    73   // A2DP data member
    74   bool mA2dpConnected;
    75   SinkState mSinkState;
    77   // AVRCP data member
    78   bool mAvrcpConnected;
    79   nsString mAlbum;
    80   nsString mArtist;
    81   nsString mTitle;
    82   uint32_t mDuration;
    83   uint64_t mMediaNumber;
    84   uint64_t mTotalMediaCount;
    85   uint32_t mPosition;
    86   /*
    87    * mPlaybackInterval specifies the time interval (in seconds) at which
    88    * the change in playback position will be notified. If the song is being
    89    * forwarded / rewound, a notification will be received whenever the playback
    90    * position will change by this value.
    91    */
    92   uint32_t mPlaybackInterval;
    93   ControlPlayStatus mPlayStatus;
    94   /*
    95    * Notification types: 1. INTERIM 2. CHANGED
    96    * 1. The initial response to this Notify command shall be an INTERIM
    97    * response with current status.
    98    * 2. The following response shall be a CHANGED response with the updated
    99    * status.
   100    * mPlayStatusChangedNotifType, mTrackChangedNotifType,
   101    * mPlayPosChangedNotifType represents current RegisterNotification
   102    * notification type.
   103    */
   104   int mPlayStatusChangedNotifyType;
   105   int mTrackChangedNotifyType;
   106   int mPlayPosChangedNotifyType;
   107 };
   109 END_BLUETOOTH_NAMESPACE
   111 #endif

mercurial