1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/hal/HalTypes.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,341 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this file, 1.7 + * You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#ifndef mozilla_hal_Types_h 1.10 +#define mozilla_hal_Types_h 1.11 + 1.12 +#include "ipc/IPCMessageUtils.h" 1.13 +#include "mozilla/Observer.h" 1.14 + 1.15 +namespace mozilla { 1.16 +namespace hal { 1.17 + 1.18 +/** 1.19 + * These constants specify special values for content process IDs. You can get 1.20 + * a content process ID by calling ContentChild::GetID() or 1.21 + * ContentParent::GetChildID(). 1.22 + */ 1.23 +const uint64_t CONTENT_PROCESS_ID_UNKNOWN = uint64_t(-1); 1.24 +const uint64_t CONTENT_PROCESS_ID_MAIN = 0; 1.25 + 1.26 +/** 1.27 + * These are defined by libhardware, specifically, hardware/libhardware/include/hardware/lights.h 1.28 + * in the gonk subsystem. 1.29 + * If these change and are exposed to JS, make sure nsIHal.idl is updated as well. 1.30 + */ 1.31 +enum LightType { 1.32 + eHalLightID_Backlight = 0, 1.33 + eHalLightID_Keyboard = 1, 1.34 + eHalLightID_Buttons = 2, 1.35 + eHalLightID_Battery = 3, 1.36 + eHalLightID_Notifications = 4, 1.37 + eHalLightID_Attention = 5, 1.38 + eHalLightID_Bluetooth = 6, 1.39 + eHalLightID_Wifi = 7, 1.40 + eHalLightID_Count = 8 // This should stay at the end 1.41 +}; 1.42 +enum LightMode { 1.43 + eHalLightMode_User = 0, // brightness is managed by user setting 1.44 + eHalLightMode_Sensor = 1, // brightness is managed by a light sensor 1.45 + eHalLightMode_Count 1.46 +}; 1.47 +enum FlashMode { 1.48 + eHalLightFlash_None = 0, 1.49 + eHalLightFlash_Timed = 1, // timed flashing. Use flashOnMS and flashOffMS for timing 1.50 + eHalLightFlash_Hardware = 2, // hardware assisted flashing 1.51 + eHalLightFlash_Count 1.52 +}; 1.53 + 1.54 +enum ShutdownMode { 1.55 + eHalShutdownMode_Unknown = -1, 1.56 + eHalShutdownMode_PowerOff = 0, 1.57 + eHalShutdownMode_Reboot = 1, 1.58 + eHalShutdownMode_Restart = 2, 1.59 + eHalShutdownMode_Count = 3 1.60 +}; 1.61 + 1.62 +class SwitchEvent; 1.63 + 1.64 +enum SwitchDevice { 1.65 + SWITCH_DEVICE_UNKNOWN = -1, 1.66 + SWITCH_HEADPHONES, 1.67 + SWITCH_USB, 1.68 + NUM_SWITCH_DEVICE 1.69 +}; 1.70 + 1.71 +enum SwitchState { 1.72 + SWITCH_STATE_UNKNOWN = -1, 1.73 + SWITCH_STATE_ON, 1.74 + SWITCH_STATE_OFF, 1.75 + SWITCH_STATE_HEADSET, // Headphone with microphone 1.76 + SWITCH_STATE_HEADPHONE, // without microphone 1.77 + NUM_SWITCH_STATE 1.78 +}; 1.79 + 1.80 +typedef Observer<SwitchEvent> SwitchObserver; 1.81 + 1.82 +// Note that we rely on the order of this enum's entries. Higher priorities 1.83 +// should have larger int values. 1.84 +enum ProcessPriority { 1.85 + PROCESS_PRIORITY_UNKNOWN = -1, 1.86 + PROCESS_PRIORITY_BACKGROUND, 1.87 + PROCESS_PRIORITY_BACKGROUND_HOMESCREEN, 1.88 + PROCESS_PRIORITY_BACKGROUND_PERCEIVABLE, 1.89 + PROCESS_PRIORITY_FOREGROUND_KEYBOARD, 1.90 + // The special class for the preallocated process, high memory priority but 1.91 + // low CPU priority. 1.92 + PROCESS_PRIORITY_PREALLOC, 1.93 + // Any priority greater than or equal to FOREGROUND is considered 1.94 + // "foreground" for the purposes of priority testing, for example 1.95 + // CurrentProcessIsForeground(). 1.96 + PROCESS_PRIORITY_FOREGROUND, 1.97 + PROCESS_PRIORITY_FOREGROUND_HIGH, 1.98 + PROCESS_PRIORITY_MASTER, 1.99 + NUM_PROCESS_PRIORITY 1.100 +}; 1.101 + 1.102 +enum ProcessCPUPriority { 1.103 + PROCESS_CPU_PRIORITY_LOW, 1.104 + PROCESS_CPU_PRIORITY_NORMAL, 1.105 + NUM_PROCESS_CPU_PRIORITY 1.106 +}; 1.107 + 1.108 +// Convert a ProcessPriority enum value (with an optional ProcessCPUPriority) 1.109 +// to a string. The strings returned by this function are statically 1.110 +// allocated; do not attempt to free one! 1.111 +// 1.112 +// If you pass an unknown process priority (or NUM_PROCESS_PRIORITY), we 1.113 +// fatally assert in debug builds and otherwise return "???". 1.114 +const char* 1.115 +ProcessPriorityToString(ProcessPriority aPriority); 1.116 + 1.117 +const char* 1.118 +ProcessPriorityToString(ProcessPriority aPriority, 1.119 + ProcessCPUPriority aCPUPriority); 1.120 + 1.121 +/** 1.122 + * Used by ModifyWakeLock 1.123 + */ 1.124 +enum WakeLockControl { 1.125 + WAKE_LOCK_REMOVE_ONE = -1, 1.126 + WAKE_LOCK_NO_CHANGE = 0, 1.127 + WAKE_LOCK_ADD_ONE = 1, 1.128 + NUM_WAKE_LOCK 1.129 +}; 1.130 + 1.131 +class FMRadioOperationInformation; 1.132 + 1.133 +enum FMRadioOperation { 1.134 + FM_RADIO_OPERATION_UNKNOWN = -1, 1.135 + FM_RADIO_OPERATION_ENABLE, 1.136 + FM_RADIO_OPERATION_DISABLE, 1.137 + FM_RADIO_OPERATION_SEEK, 1.138 + FM_RADIO_OPERATION_TUNE, 1.139 + NUM_FM_RADIO_OPERATION 1.140 +}; 1.141 + 1.142 +enum FMRadioOperationStatus { 1.143 + FM_RADIO_OPERATION_STATUS_UNKNOWN = -1, 1.144 + FM_RADIO_OPERATION_STATUS_SUCCESS, 1.145 + FM_RADIO_OPERATION_STATUS_FAIL, 1.146 + NUM_FM_RADIO_OPERATION_STATUS 1.147 +}; 1.148 + 1.149 +enum FMRadioSeekDirection { 1.150 + FM_RADIO_SEEK_DIRECTION_UNKNOWN = -1, 1.151 + FM_RADIO_SEEK_DIRECTION_UP, 1.152 + FM_RADIO_SEEK_DIRECTION_DOWN, 1.153 + NUM_FM_RADIO_SEEK_DIRECTION 1.154 +}; 1.155 + 1.156 +enum FMRadioCountry { 1.157 + FM_RADIO_COUNTRY_UNKNOWN = -1, 1.158 + FM_RADIO_COUNTRY_US, //USA 1.159 + FM_RADIO_COUNTRY_EU, 1.160 + FM_RADIO_COUNTRY_JP_STANDARD, 1.161 + FM_RADIO_COUNTRY_JP_WIDE, 1.162 + FM_RADIO_COUNTRY_DE, //Germany 1.163 + FM_RADIO_COUNTRY_AW, //Aruba 1.164 + FM_RADIO_COUNTRY_AU, //Australlia 1.165 + FM_RADIO_COUNTRY_BS, //Bahamas 1.166 + FM_RADIO_COUNTRY_BD, //Bangladesh 1.167 + FM_RADIO_COUNTRY_CY, //Cyprus 1.168 + FM_RADIO_COUNTRY_VA, //Vatican 1.169 + FM_RADIO_COUNTRY_CO, //Colombia 1.170 + FM_RADIO_COUNTRY_KR, //Korea 1.171 + FM_RADIO_COUNTRY_DK, //Denmark 1.172 + FM_RADIO_COUNTRY_EC, //Ecuador 1.173 + FM_RADIO_COUNTRY_ES, //Spain 1.174 + FM_RADIO_COUNTRY_FI, //Finland 1.175 + FM_RADIO_COUNTRY_FR, //France 1.176 + FM_RADIO_COUNTRY_GM, //Gambia 1.177 + FM_RADIO_COUNTRY_HU, //Hungary 1.178 + FM_RADIO_COUNTRY_IN, //India 1.179 + FM_RADIO_COUNTRY_IR, //Iran 1.180 + FM_RADIO_COUNTRY_IT, //Italy 1.181 + FM_RADIO_COUNTRY_KW, //Kuwait 1.182 + FM_RADIO_COUNTRY_LT, //Lithuania 1.183 + FM_RADIO_COUNTRY_ML, //Mali 1.184 + FM_RADIO_COUNTRY_MA, //Morocco 1.185 + FM_RADIO_COUNTRY_NO, //Norway 1.186 + FM_RADIO_COUNTRY_NZ, //New Zealand 1.187 + FM_RADIO_COUNTRY_OM, //Oman 1.188 + FM_RADIO_COUNTRY_PG, //Papua New Guinea 1.189 + FM_RADIO_COUNTRY_NL, //Netherlands 1.190 + FM_RADIO_COUNTRY_QA, //Qatar 1.191 + FM_RADIO_COUNTRY_CZ, //Czech Republic 1.192 + FM_RADIO_COUNTRY_UK, //United Kingdom of Great Britain and Northern Ireland 1.193 + FM_RADIO_COUNTRY_RW, //Rwandese Republic 1.194 + FM_RADIO_COUNTRY_SN, //Senegal 1.195 + FM_RADIO_COUNTRY_SG, //Singapore 1.196 + FM_RADIO_COUNTRY_SI, //Slovenia 1.197 + FM_RADIO_COUNTRY_ZA, //South Africa 1.198 + FM_RADIO_COUNTRY_SE, //Sweden 1.199 + FM_RADIO_COUNTRY_CH, //Switzerland 1.200 + FM_RADIO_COUNTRY_TW, //Taiwan 1.201 + FM_RADIO_COUNTRY_TR, //Turkey 1.202 + FM_RADIO_COUNTRY_UA, //Ukraine 1.203 + FM_RADIO_COUNTRY_USER_DEFINED, 1.204 + NUM_FM_RADIO_COUNTRY 1.205 +}; 1.206 + 1.207 +typedef Observer<FMRadioOperationInformation> FMRadioObserver; 1.208 +} // namespace hal 1.209 +} // namespace mozilla 1.210 + 1.211 +namespace IPC { 1.212 + 1.213 +/** 1.214 + * Light type serializer. 1.215 + */ 1.216 +template <> 1.217 +struct ParamTraits<mozilla::hal::LightType> 1.218 + : public ContiguousEnumSerializer< 1.219 + mozilla::hal::LightType, 1.220 + mozilla::hal::eHalLightID_Backlight, 1.221 + mozilla::hal::eHalLightID_Count> 1.222 +{}; 1.223 + 1.224 +/** 1.225 + * Light mode serializer. 1.226 + */ 1.227 +template <> 1.228 +struct ParamTraits<mozilla::hal::LightMode> 1.229 + : public ContiguousEnumSerializer< 1.230 + mozilla::hal::LightMode, 1.231 + mozilla::hal::eHalLightMode_User, 1.232 + mozilla::hal::eHalLightMode_Count> 1.233 +{}; 1.234 + 1.235 +/** 1.236 + * Flash mode serializer. 1.237 + */ 1.238 +template <> 1.239 +struct ParamTraits<mozilla::hal::FlashMode> 1.240 + : public ContiguousEnumSerializer< 1.241 + mozilla::hal::FlashMode, 1.242 + mozilla::hal::eHalLightFlash_None, 1.243 + mozilla::hal::eHalLightFlash_Count> 1.244 +{}; 1.245 + 1.246 +/** 1.247 + * Serializer for ShutdownMode. 1.248 + */ 1.249 +template <> 1.250 +struct ParamTraits<mozilla::hal::ShutdownMode> 1.251 + : public ContiguousEnumSerializer< 1.252 + mozilla::hal::ShutdownMode, 1.253 + mozilla::hal::eHalShutdownMode_Unknown, 1.254 + mozilla::hal::eHalShutdownMode_Count> 1.255 +{}; 1.256 + 1.257 +/** 1.258 + * WakeLockControl serializer. 1.259 + */ 1.260 +template <> 1.261 +struct ParamTraits<mozilla::hal::WakeLockControl> 1.262 + : public ContiguousEnumSerializer< 1.263 + mozilla::hal::WakeLockControl, 1.264 + mozilla::hal::WAKE_LOCK_REMOVE_ONE, 1.265 + mozilla::hal::NUM_WAKE_LOCK> 1.266 +{}; 1.267 + 1.268 +/** 1.269 + * Serializer for SwitchState 1.270 + */ 1.271 +template <> 1.272 +struct ParamTraits<mozilla::hal::SwitchState>: 1.273 + public ContiguousEnumSerializer< 1.274 + mozilla::hal::SwitchState, 1.275 + mozilla::hal::SWITCH_STATE_UNKNOWN, 1.276 + mozilla::hal::NUM_SWITCH_STATE> { 1.277 +}; 1.278 + 1.279 +/** 1.280 + * Serializer for SwitchDevice 1.281 + */ 1.282 +template <> 1.283 +struct ParamTraits<mozilla::hal::SwitchDevice>: 1.284 + public ContiguousEnumSerializer< 1.285 + mozilla::hal::SwitchDevice, 1.286 + mozilla::hal::SWITCH_DEVICE_UNKNOWN, 1.287 + mozilla::hal::NUM_SWITCH_DEVICE> { 1.288 +}; 1.289 + 1.290 +template <> 1.291 +struct ParamTraits<mozilla::hal::ProcessPriority>: 1.292 + public ContiguousEnumSerializer< 1.293 + mozilla::hal::ProcessPriority, 1.294 + mozilla::hal::PROCESS_PRIORITY_UNKNOWN, 1.295 + mozilla::hal::NUM_PROCESS_PRIORITY> { 1.296 +}; 1.297 + 1.298 +/** 1.299 + * Serializer for FMRadioOperation 1.300 + */ 1.301 +template <> 1.302 +struct ParamTraits<mozilla::hal::FMRadioOperation>: 1.303 + public ContiguousEnumSerializer< 1.304 + mozilla::hal::FMRadioOperation, 1.305 + mozilla::hal::FM_RADIO_OPERATION_UNKNOWN, 1.306 + mozilla::hal::NUM_FM_RADIO_OPERATION> 1.307 +{}; 1.308 + 1.309 +/** 1.310 + * Serializer for FMRadioOperationStatus 1.311 + */ 1.312 +template <> 1.313 +struct ParamTraits<mozilla::hal::FMRadioOperationStatus>: 1.314 + public ContiguousEnumSerializer< 1.315 + mozilla::hal::FMRadioOperationStatus, 1.316 + mozilla::hal::FM_RADIO_OPERATION_STATUS_UNKNOWN, 1.317 + mozilla::hal::NUM_FM_RADIO_OPERATION_STATUS> 1.318 +{}; 1.319 + 1.320 +/** 1.321 + * Serializer for FMRadioSeekDirection 1.322 + */ 1.323 +template <> 1.324 +struct ParamTraits<mozilla::hal::FMRadioSeekDirection>: 1.325 + public ContiguousEnumSerializer< 1.326 + mozilla::hal::FMRadioSeekDirection, 1.327 + mozilla::hal::FM_RADIO_SEEK_DIRECTION_UNKNOWN, 1.328 + mozilla::hal::NUM_FM_RADIO_SEEK_DIRECTION> 1.329 +{}; 1.330 + 1.331 +/** 1.332 + * Serializer for FMRadioCountry 1.333 + **/ 1.334 +template <> 1.335 +struct ParamTraits<mozilla::hal::FMRadioCountry>: 1.336 + public ContiguousEnumSerializer< 1.337 + mozilla::hal::FMRadioCountry, 1.338 + mozilla::hal::FM_RADIO_COUNTRY_UNKNOWN, 1.339 + mozilla::hal::NUM_FM_RADIO_COUNTRY> 1.340 +{}; 1.341 + 1.342 +} // namespace IPC 1.343 + 1.344 +#endif // mozilla_hal_Types_h