|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
|
4 * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #ifndef mozilla_hal_Types_h |
|
7 #define mozilla_hal_Types_h |
|
8 |
|
9 #include "ipc/IPCMessageUtils.h" |
|
10 #include "mozilla/Observer.h" |
|
11 |
|
12 namespace mozilla { |
|
13 namespace hal { |
|
14 |
|
15 /** |
|
16 * These constants specify special values for content process IDs. You can get |
|
17 * a content process ID by calling ContentChild::GetID() or |
|
18 * ContentParent::GetChildID(). |
|
19 */ |
|
20 const uint64_t CONTENT_PROCESS_ID_UNKNOWN = uint64_t(-1); |
|
21 const uint64_t CONTENT_PROCESS_ID_MAIN = 0; |
|
22 |
|
23 /** |
|
24 * These are defined by libhardware, specifically, hardware/libhardware/include/hardware/lights.h |
|
25 * in the gonk subsystem. |
|
26 * If these change and are exposed to JS, make sure nsIHal.idl is updated as well. |
|
27 */ |
|
28 enum LightType { |
|
29 eHalLightID_Backlight = 0, |
|
30 eHalLightID_Keyboard = 1, |
|
31 eHalLightID_Buttons = 2, |
|
32 eHalLightID_Battery = 3, |
|
33 eHalLightID_Notifications = 4, |
|
34 eHalLightID_Attention = 5, |
|
35 eHalLightID_Bluetooth = 6, |
|
36 eHalLightID_Wifi = 7, |
|
37 eHalLightID_Count = 8 // This should stay at the end |
|
38 }; |
|
39 enum LightMode { |
|
40 eHalLightMode_User = 0, // brightness is managed by user setting |
|
41 eHalLightMode_Sensor = 1, // brightness is managed by a light sensor |
|
42 eHalLightMode_Count |
|
43 }; |
|
44 enum FlashMode { |
|
45 eHalLightFlash_None = 0, |
|
46 eHalLightFlash_Timed = 1, // timed flashing. Use flashOnMS and flashOffMS for timing |
|
47 eHalLightFlash_Hardware = 2, // hardware assisted flashing |
|
48 eHalLightFlash_Count |
|
49 }; |
|
50 |
|
51 enum ShutdownMode { |
|
52 eHalShutdownMode_Unknown = -1, |
|
53 eHalShutdownMode_PowerOff = 0, |
|
54 eHalShutdownMode_Reboot = 1, |
|
55 eHalShutdownMode_Restart = 2, |
|
56 eHalShutdownMode_Count = 3 |
|
57 }; |
|
58 |
|
59 class SwitchEvent; |
|
60 |
|
61 enum SwitchDevice { |
|
62 SWITCH_DEVICE_UNKNOWN = -1, |
|
63 SWITCH_HEADPHONES, |
|
64 SWITCH_USB, |
|
65 NUM_SWITCH_DEVICE |
|
66 }; |
|
67 |
|
68 enum SwitchState { |
|
69 SWITCH_STATE_UNKNOWN = -1, |
|
70 SWITCH_STATE_ON, |
|
71 SWITCH_STATE_OFF, |
|
72 SWITCH_STATE_HEADSET, // Headphone with microphone |
|
73 SWITCH_STATE_HEADPHONE, // without microphone |
|
74 NUM_SWITCH_STATE |
|
75 }; |
|
76 |
|
77 typedef Observer<SwitchEvent> SwitchObserver; |
|
78 |
|
79 // Note that we rely on the order of this enum's entries. Higher priorities |
|
80 // should have larger int values. |
|
81 enum ProcessPriority { |
|
82 PROCESS_PRIORITY_UNKNOWN = -1, |
|
83 PROCESS_PRIORITY_BACKGROUND, |
|
84 PROCESS_PRIORITY_BACKGROUND_HOMESCREEN, |
|
85 PROCESS_PRIORITY_BACKGROUND_PERCEIVABLE, |
|
86 PROCESS_PRIORITY_FOREGROUND_KEYBOARD, |
|
87 // The special class for the preallocated process, high memory priority but |
|
88 // low CPU priority. |
|
89 PROCESS_PRIORITY_PREALLOC, |
|
90 // Any priority greater than or equal to FOREGROUND is considered |
|
91 // "foreground" for the purposes of priority testing, for example |
|
92 // CurrentProcessIsForeground(). |
|
93 PROCESS_PRIORITY_FOREGROUND, |
|
94 PROCESS_PRIORITY_FOREGROUND_HIGH, |
|
95 PROCESS_PRIORITY_MASTER, |
|
96 NUM_PROCESS_PRIORITY |
|
97 }; |
|
98 |
|
99 enum ProcessCPUPriority { |
|
100 PROCESS_CPU_PRIORITY_LOW, |
|
101 PROCESS_CPU_PRIORITY_NORMAL, |
|
102 NUM_PROCESS_CPU_PRIORITY |
|
103 }; |
|
104 |
|
105 // Convert a ProcessPriority enum value (with an optional ProcessCPUPriority) |
|
106 // to a string. The strings returned by this function are statically |
|
107 // allocated; do not attempt to free one! |
|
108 // |
|
109 // If you pass an unknown process priority (or NUM_PROCESS_PRIORITY), we |
|
110 // fatally assert in debug builds and otherwise return "???". |
|
111 const char* |
|
112 ProcessPriorityToString(ProcessPriority aPriority); |
|
113 |
|
114 const char* |
|
115 ProcessPriorityToString(ProcessPriority aPriority, |
|
116 ProcessCPUPriority aCPUPriority); |
|
117 |
|
118 /** |
|
119 * Used by ModifyWakeLock |
|
120 */ |
|
121 enum WakeLockControl { |
|
122 WAKE_LOCK_REMOVE_ONE = -1, |
|
123 WAKE_LOCK_NO_CHANGE = 0, |
|
124 WAKE_LOCK_ADD_ONE = 1, |
|
125 NUM_WAKE_LOCK |
|
126 }; |
|
127 |
|
128 class FMRadioOperationInformation; |
|
129 |
|
130 enum FMRadioOperation { |
|
131 FM_RADIO_OPERATION_UNKNOWN = -1, |
|
132 FM_RADIO_OPERATION_ENABLE, |
|
133 FM_RADIO_OPERATION_DISABLE, |
|
134 FM_RADIO_OPERATION_SEEK, |
|
135 FM_RADIO_OPERATION_TUNE, |
|
136 NUM_FM_RADIO_OPERATION |
|
137 }; |
|
138 |
|
139 enum FMRadioOperationStatus { |
|
140 FM_RADIO_OPERATION_STATUS_UNKNOWN = -1, |
|
141 FM_RADIO_OPERATION_STATUS_SUCCESS, |
|
142 FM_RADIO_OPERATION_STATUS_FAIL, |
|
143 NUM_FM_RADIO_OPERATION_STATUS |
|
144 }; |
|
145 |
|
146 enum FMRadioSeekDirection { |
|
147 FM_RADIO_SEEK_DIRECTION_UNKNOWN = -1, |
|
148 FM_RADIO_SEEK_DIRECTION_UP, |
|
149 FM_RADIO_SEEK_DIRECTION_DOWN, |
|
150 NUM_FM_RADIO_SEEK_DIRECTION |
|
151 }; |
|
152 |
|
153 enum FMRadioCountry { |
|
154 FM_RADIO_COUNTRY_UNKNOWN = -1, |
|
155 FM_RADIO_COUNTRY_US, //USA |
|
156 FM_RADIO_COUNTRY_EU, |
|
157 FM_RADIO_COUNTRY_JP_STANDARD, |
|
158 FM_RADIO_COUNTRY_JP_WIDE, |
|
159 FM_RADIO_COUNTRY_DE, //Germany |
|
160 FM_RADIO_COUNTRY_AW, //Aruba |
|
161 FM_RADIO_COUNTRY_AU, //Australlia |
|
162 FM_RADIO_COUNTRY_BS, //Bahamas |
|
163 FM_RADIO_COUNTRY_BD, //Bangladesh |
|
164 FM_RADIO_COUNTRY_CY, //Cyprus |
|
165 FM_RADIO_COUNTRY_VA, //Vatican |
|
166 FM_RADIO_COUNTRY_CO, //Colombia |
|
167 FM_RADIO_COUNTRY_KR, //Korea |
|
168 FM_RADIO_COUNTRY_DK, //Denmark |
|
169 FM_RADIO_COUNTRY_EC, //Ecuador |
|
170 FM_RADIO_COUNTRY_ES, //Spain |
|
171 FM_RADIO_COUNTRY_FI, //Finland |
|
172 FM_RADIO_COUNTRY_FR, //France |
|
173 FM_RADIO_COUNTRY_GM, //Gambia |
|
174 FM_RADIO_COUNTRY_HU, //Hungary |
|
175 FM_RADIO_COUNTRY_IN, //India |
|
176 FM_RADIO_COUNTRY_IR, //Iran |
|
177 FM_RADIO_COUNTRY_IT, //Italy |
|
178 FM_RADIO_COUNTRY_KW, //Kuwait |
|
179 FM_RADIO_COUNTRY_LT, //Lithuania |
|
180 FM_RADIO_COUNTRY_ML, //Mali |
|
181 FM_RADIO_COUNTRY_MA, //Morocco |
|
182 FM_RADIO_COUNTRY_NO, //Norway |
|
183 FM_RADIO_COUNTRY_NZ, //New Zealand |
|
184 FM_RADIO_COUNTRY_OM, //Oman |
|
185 FM_RADIO_COUNTRY_PG, //Papua New Guinea |
|
186 FM_RADIO_COUNTRY_NL, //Netherlands |
|
187 FM_RADIO_COUNTRY_QA, //Qatar |
|
188 FM_RADIO_COUNTRY_CZ, //Czech Republic |
|
189 FM_RADIO_COUNTRY_UK, //United Kingdom of Great Britain and Northern Ireland |
|
190 FM_RADIO_COUNTRY_RW, //Rwandese Republic |
|
191 FM_RADIO_COUNTRY_SN, //Senegal |
|
192 FM_RADIO_COUNTRY_SG, //Singapore |
|
193 FM_RADIO_COUNTRY_SI, //Slovenia |
|
194 FM_RADIO_COUNTRY_ZA, //South Africa |
|
195 FM_RADIO_COUNTRY_SE, //Sweden |
|
196 FM_RADIO_COUNTRY_CH, //Switzerland |
|
197 FM_RADIO_COUNTRY_TW, //Taiwan |
|
198 FM_RADIO_COUNTRY_TR, //Turkey |
|
199 FM_RADIO_COUNTRY_UA, //Ukraine |
|
200 FM_RADIO_COUNTRY_USER_DEFINED, |
|
201 NUM_FM_RADIO_COUNTRY |
|
202 }; |
|
203 |
|
204 typedef Observer<FMRadioOperationInformation> FMRadioObserver; |
|
205 } // namespace hal |
|
206 } // namespace mozilla |
|
207 |
|
208 namespace IPC { |
|
209 |
|
210 /** |
|
211 * Light type serializer. |
|
212 */ |
|
213 template <> |
|
214 struct ParamTraits<mozilla::hal::LightType> |
|
215 : public ContiguousEnumSerializer< |
|
216 mozilla::hal::LightType, |
|
217 mozilla::hal::eHalLightID_Backlight, |
|
218 mozilla::hal::eHalLightID_Count> |
|
219 {}; |
|
220 |
|
221 /** |
|
222 * Light mode serializer. |
|
223 */ |
|
224 template <> |
|
225 struct ParamTraits<mozilla::hal::LightMode> |
|
226 : public ContiguousEnumSerializer< |
|
227 mozilla::hal::LightMode, |
|
228 mozilla::hal::eHalLightMode_User, |
|
229 mozilla::hal::eHalLightMode_Count> |
|
230 {}; |
|
231 |
|
232 /** |
|
233 * Flash mode serializer. |
|
234 */ |
|
235 template <> |
|
236 struct ParamTraits<mozilla::hal::FlashMode> |
|
237 : public ContiguousEnumSerializer< |
|
238 mozilla::hal::FlashMode, |
|
239 mozilla::hal::eHalLightFlash_None, |
|
240 mozilla::hal::eHalLightFlash_Count> |
|
241 {}; |
|
242 |
|
243 /** |
|
244 * Serializer for ShutdownMode. |
|
245 */ |
|
246 template <> |
|
247 struct ParamTraits<mozilla::hal::ShutdownMode> |
|
248 : public ContiguousEnumSerializer< |
|
249 mozilla::hal::ShutdownMode, |
|
250 mozilla::hal::eHalShutdownMode_Unknown, |
|
251 mozilla::hal::eHalShutdownMode_Count> |
|
252 {}; |
|
253 |
|
254 /** |
|
255 * WakeLockControl serializer. |
|
256 */ |
|
257 template <> |
|
258 struct ParamTraits<mozilla::hal::WakeLockControl> |
|
259 : public ContiguousEnumSerializer< |
|
260 mozilla::hal::WakeLockControl, |
|
261 mozilla::hal::WAKE_LOCK_REMOVE_ONE, |
|
262 mozilla::hal::NUM_WAKE_LOCK> |
|
263 {}; |
|
264 |
|
265 /** |
|
266 * Serializer for SwitchState |
|
267 */ |
|
268 template <> |
|
269 struct ParamTraits<mozilla::hal::SwitchState>: |
|
270 public ContiguousEnumSerializer< |
|
271 mozilla::hal::SwitchState, |
|
272 mozilla::hal::SWITCH_STATE_UNKNOWN, |
|
273 mozilla::hal::NUM_SWITCH_STATE> { |
|
274 }; |
|
275 |
|
276 /** |
|
277 * Serializer for SwitchDevice |
|
278 */ |
|
279 template <> |
|
280 struct ParamTraits<mozilla::hal::SwitchDevice>: |
|
281 public ContiguousEnumSerializer< |
|
282 mozilla::hal::SwitchDevice, |
|
283 mozilla::hal::SWITCH_DEVICE_UNKNOWN, |
|
284 mozilla::hal::NUM_SWITCH_DEVICE> { |
|
285 }; |
|
286 |
|
287 template <> |
|
288 struct ParamTraits<mozilla::hal::ProcessPriority>: |
|
289 public ContiguousEnumSerializer< |
|
290 mozilla::hal::ProcessPriority, |
|
291 mozilla::hal::PROCESS_PRIORITY_UNKNOWN, |
|
292 mozilla::hal::NUM_PROCESS_PRIORITY> { |
|
293 }; |
|
294 |
|
295 /** |
|
296 * Serializer for FMRadioOperation |
|
297 */ |
|
298 template <> |
|
299 struct ParamTraits<mozilla::hal::FMRadioOperation>: |
|
300 public ContiguousEnumSerializer< |
|
301 mozilla::hal::FMRadioOperation, |
|
302 mozilla::hal::FM_RADIO_OPERATION_UNKNOWN, |
|
303 mozilla::hal::NUM_FM_RADIO_OPERATION> |
|
304 {}; |
|
305 |
|
306 /** |
|
307 * Serializer for FMRadioOperationStatus |
|
308 */ |
|
309 template <> |
|
310 struct ParamTraits<mozilla::hal::FMRadioOperationStatus>: |
|
311 public ContiguousEnumSerializer< |
|
312 mozilla::hal::FMRadioOperationStatus, |
|
313 mozilla::hal::FM_RADIO_OPERATION_STATUS_UNKNOWN, |
|
314 mozilla::hal::NUM_FM_RADIO_OPERATION_STATUS> |
|
315 {}; |
|
316 |
|
317 /** |
|
318 * Serializer for FMRadioSeekDirection |
|
319 */ |
|
320 template <> |
|
321 struct ParamTraits<mozilla::hal::FMRadioSeekDirection>: |
|
322 public ContiguousEnumSerializer< |
|
323 mozilla::hal::FMRadioSeekDirection, |
|
324 mozilla::hal::FM_RADIO_SEEK_DIRECTION_UNKNOWN, |
|
325 mozilla::hal::NUM_FM_RADIO_SEEK_DIRECTION> |
|
326 {}; |
|
327 |
|
328 /** |
|
329 * Serializer for FMRadioCountry |
|
330 **/ |
|
331 template <> |
|
332 struct ParamTraits<mozilla::hal::FMRadioCountry>: |
|
333 public ContiguousEnumSerializer< |
|
334 mozilla::hal::FMRadioCountry, |
|
335 mozilla::hal::FM_RADIO_COUNTRY_UNKNOWN, |
|
336 mozilla::hal::NUM_FM_RADIO_COUNTRY> |
|
337 {}; |
|
338 |
|
339 } // namespace IPC |
|
340 |
|
341 #endif // mozilla_hal_Types_h |