|
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/. */ |
|
6 |
|
7 #ifndef mozilla_dom_bluetooth_bluetoothadapter_h__ |
|
8 #define mozilla_dom_bluetooth_bluetoothadapter_h__ |
|
9 |
|
10 #include "mozilla/Attributes.h" |
|
11 #include "mozilla/DOMEventTargetHelper.h" |
|
12 #include "BluetoothCommon.h" |
|
13 #include "BluetoothPropertyContainer.h" |
|
14 #include "nsCOMPtr.h" |
|
15 |
|
16 namespace mozilla { |
|
17 namespace dom { |
|
18 class DOMRequest; |
|
19 struct MediaMetaData; |
|
20 struct MediaPlayStatus; |
|
21 } |
|
22 } |
|
23 |
|
24 BEGIN_BLUETOOTH_NAMESPACE |
|
25 |
|
26 class BluetoothDevice; |
|
27 class BluetoothSignal; |
|
28 class BluetoothNamedValue; |
|
29 class BluetoothValue; |
|
30 |
|
31 class BluetoothAdapter : public DOMEventTargetHelper |
|
32 , public BluetoothSignalObserver |
|
33 , public BluetoothPropertyContainer |
|
34 { |
|
35 public: |
|
36 NS_DECL_ISUPPORTS_INHERITED |
|
37 |
|
38 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(BluetoothAdapter, |
|
39 DOMEventTargetHelper) |
|
40 |
|
41 static already_AddRefed<BluetoothAdapter> |
|
42 Create(nsPIDOMWindow* aOwner, const BluetoothValue& aValue); |
|
43 |
|
44 void Notify(const BluetoothSignal& aParam); |
|
45 |
|
46 void Unroot(); |
|
47 virtual void SetPropertyByValue(const BluetoothNamedValue& aValue) MOZ_OVERRIDE; |
|
48 |
|
49 virtual void DisconnectFromOwner() MOZ_OVERRIDE; |
|
50 |
|
51 void GetAddress(nsString& aAddress) const |
|
52 { |
|
53 aAddress = mAddress; |
|
54 } |
|
55 |
|
56 uint32_t |
|
57 Class() const |
|
58 { |
|
59 return mClass; |
|
60 } |
|
61 |
|
62 void |
|
63 GetName(nsString& aName) const |
|
64 { |
|
65 aName = mName; |
|
66 } |
|
67 |
|
68 bool |
|
69 Discovering() const |
|
70 { |
|
71 return mDiscovering; |
|
72 } |
|
73 |
|
74 bool |
|
75 Discoverable() const |
|
76 { |
|
77 return mDiscoverable; |
|
78 } |
|
79 |
|
80 uint32_t |
|
81 DiscoverableTimeout() const |
|
82 { |
|
83 return mDiscoverableTimeout; |
|
84 } |
|
85 |
|
86 void GetDevices(JSContext* aContext, JS::MutableHandle<JS::Value> aDevices, |
|
87 ErrorResult& aRv); |
|
88 void GetUuids(JSContext* aContext, JS::MutableHandle<JS::Value> aUuids, |
|
89 ErrorResult& aRv); |
|
90 |
|
91 already_AddRefed<mozilla::dom::DOMRequest> |
|
92 SetName(const nsAString& aName, ErrorResult& aRv); |
|
93 |
|
94 already_AddRefed<DOMRequest> |
|
95 SetDiscoverable(bool aDiscoverable, ErrorResult& aRv); |
|
96 already_AddRefed<DOMRequest> |
|
97 SetDiscoverableTimeout(uint32_t aTimeout, ErrorResult& aRv); |
|
98 already_AddRefed<DOMRequest> StartDiscovery(ErrorResult& aRv); |
|
99 already_AddRefed<DOMRequest> StopDiscovery(ErrorResult& aRv); |
|
100 |
|
101 already_AddRefed<DOMRequest> |
|
102 Pair(const nsAString& aDeviceAddress, ErrorResult& aRv); |
|
103 already_AddRefed<DOMRequest> |
|
104 Unpair(const nsAString& aDeviceAddress, ErrorResult& aRv); |
|
105 already_AddRefed<DOMRequest> |
|
106 GetPairedDevices(ErrorResult& aRv); |
|
107 already_AddRefed<DOMRequest> |
|
108 SetPinCode(const nsAString& aDeviceAddress, const nsAString& aPinCode, |
|
109 ErrorResult& aRv); |
|
110 already_AddRefed<DOMRequest> |
|
111 SetPasskey(const nsAString& aDeviceAddress, uint32_t aPasskey, |
|
112 ErrorResult& aRv); |
|
113 already_AddRefed<DOMRequest> |
|
114 SetPairingConfirmation(const nsAString& aDeviceAddress, bool aConfirmation, |
|
115 ErrorResult& aRv); |
|
116 already_AddRefed<DOMRequest> |
|
117 SetAuthorization(const nsAString& aDeviceAddress, bool aAllow, |
|
118 ErrorResult& aRv); |
|
119 |
|
120 already_AddRefed<DOMRequest> |
|
121 Connect(BluetoothDevice& aDevice, |
|
122 const Optional<short unsigned int>& aServiceUuid, ErrorResult& aRv); |
|
123 already_AddRefed<DOMRequest> |
|
124 Disconnect(BluetoothDevice& aDevice, |
|
125 const Optional<short unsigned int>& aServiceUuid, |
|
126 ErrorResult& aRv); |
|
127 already_AddRefed<DOMRequest> |
|
128 GetConnectedDevices(uint16_t aServiceUuid, ErrorResult& aRv); |
|
129 |
|
130 already_AddRefed<DOMRequest> |
|
131 SendFile(const nsAString& aDeviceAddress, nsIDOMBlob* aBlob, |
|
132 ErrorResult& aRv); |
|
133 already_AddRefed<DOMRequest> |
|
134 StopSendingFile(const nsAString& aDeviceAddress, ErrorResult& aRv); |
|
135 already_AddRefed<DOMRequest> |
|
136 ConfirmReceivingFile(const nsAString& aDeviceAddress, bool aConfirmation, |
|
137 ErrorResult& aRv); |
|
138 |
|
139 already_AddRefed<DOMRequest> ConnectSco(ErrorResult& aRv); |
|
140 already_AddRefed<DOMRequest> DisconnectSco(ErrorResult& aRv); |
|
141 already_AddRefed<DOMRequest> IsScoConnected(ErrorResult& aRv); |
|
142 |
|
143 already_AddRefed<DOMRequest> AnswerWaitingCall(ErrorResult& aRv); |
|
144 already_AddRefed<DOMRequest> IgnoreWaitingCall(ErrorResult& aRv); |
|
145 already_AddRefed<DOMRequest> ToggleCalls(ErrorResult& aRv); |
|
146 |
|
147 already_AddRefed<DOMRequest> |
|
148 SendMediaMetaData(const MediaMetaData& aMediaMetaData, ErrorResult& aRv); |
|
149 already_AddRefed<DOMRequest> |
|
150 SendMediaPlayStatus(const MediaPlayStatus& aMediaPlayStatus, ErrorResult& aRv); |
|
151 |
|
152 IMPL_EVENT_HANDLER(devicefound); |
|
153 IMPL_EVENT_HANDLER(a2dpstatuschanged); |
|
154 IMPL_EVENT_HANDLER(hfpstatuschanged); |
|
155 IMPL_EVENT_HANDLER(pairedstatuschanged); |
|
156 IMPL_EVENT_HANDLER(requestmediaplaystatus); |
|
157 IMPL_EVENT_HANDLER(scostatuschanged); |
|
158 |
|
159 nsPIDOMWindow* GetParentObject() const |
|
160 { |
|
161 return GetOwner(); |
|
162 } |
|
163 |
|
164 virtual JSObject* |
|
165 WrapObject(JSContext* aCx) MOZ_OVERRIDE; |
|
166 |
|
167 private: |
|
168 BluetoothAdapter(nsPIDOMWindow* aOwner, const BluetoothValue& aValue); |
|
169 ~BluetoothAdapter(); |
|
170 |
|
171 void Root(); |
|
172 |
|
173 already_AddRefed<mozilla::dom::DOMRequest> |
|
174 StartStopDiscovery(bool aStart, ErrorResult& aRv); |
|
175 already_AddRefed<mozilla::dom::DOMRequest> |
|
176 PairUnpair(bool aPair, const nsAString& aDeviceAddress, ErrorResult& aRv); |
|
177 |
|
178 JS::Heap<JSObject*> mJsUuids; |
|
179 JS::Heap<JSObject*> mJsDeviceAddresses; |
|
180 nsString mAddress; |
|
181 nsString mName; |
|
182 bool mDiscoverable; |
|
183 bool mDiscovering; |
|
184 bool mPairable; |
|
185 bool mPowered; |
|
186 uint32_t mPairableTimeout; |
|
187 uint32_t mDiscoverableTimeout; |
|
188 uint32_t mClass; |
|
189 nsTArray<nsString> mDeviceAddresses; |
|
190 nsTArray<nsString> mUuids; |
|
191 bool mIsRooted; |
|
192 }; |
|
193 |
|
194 END_BLUETOOTH_NAMESPACE |
|
195 |
|
196 #endif |