/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set sw=2 ts=8 et ft=cpp : */ /* 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/. */ include protocol PContent; include protocol PBrowser; include "prtime.h"; include "mozilla/HalSensor.h"; include "mozilla/HalTypes.h"; include "mozilla/dom/ScreenOrientation.h"; include "nsRect.h"; using mozilla::dom::ScreenOrientation; using mozilla::hal::FlashMode; using mozilla::hal::LightType; using mozilla::hal::LightMode; using mozilla::hal::SensorType; using mozilla::hal::SensorAccuracyType; using mozilla::hal::WakeLockControl; using mozilla::hal::SwitchState; using mozilla::hal::SwitchDevice; using mozilla::hal::ProcessPriority; using nsIntRect; using PRTime; namespace mozilla { namespace hal { struct BatteryInformation { double level; bool charging; double remainingTime; }; struct LightConfiguration { LightType light; LightMode mode; FlashMode flash; uint32_t flashOnMS; uint32_t flashOffMS; uint32_t color; }; struct SensorData { SensorType sensor; PRTime timestamp; float[] values; SensorAccuracyType accuracy; }; struct NetworkInformation { double bandwidth; bool canBeMetered; }; struct SwitchEvent { SwitchDevice device; SwitchState status; }; struct WakeLockInformation { uint32_t numLocks; uint32_t numHidden; nsString topic; }; struct ScreenConfiguration { nsIntRect rect; ScreenOrientation orientation; uint32_t colorDepth; uint32_t pixelDepth; }; } // namespace hal namespace hal_sandbox { sync protocol PHal { manager PContent; child: NotifyBatteryChange(BatteryInformation aBatteryInfo); NotifyNetworkChange(NetworkInformation aNetworkInfo); NotifyWakeLockChange(WakeLockInformation aWakeLockInfo); NotifyScreenConfigurationChange(ScreenConfiguration aScreenOrientation); NotifySwitchChange(SwitchEvent aEvent); parent: Vibrate(uint32_t[] pattern, uint64_t[] id, PBrowser browser); CancelVibrate(uint64_t[] id, PBrowser browser); EnableBatteryNotifications(); DisableBatteryNotifications(); sync GetCurrentBatteryInformation() returns (BatteryInformation aBatteryInfo); EnableNetworkNotifications(); DisableNetworkNotifications(); sync GetCurrentNetworkInformation() returns (NetworkInformation aNetworkInfo); sync GetScreenEnabled() returns (bool enabled); SetScreenEnabled(bool enabled); sync GetCpuSleepAllowed() returns (bool allowed); SetCpuSleepAllowed(bool allowed); sync GetScreenBrightness() returns (double brightness); SetScreenBrightness(double brightness); AdjustSystemClock(int32 aDeltaMilliseconds); SetTimezone(nsCString aTimezoneSpec); sync SetLight(LightType light, LightConfiguration aConfig) returns (bool status); sync GetLight(LightType light) returns (LightConfiguration aConfig, bool status); Reboot(); PowerOff(); ModifyWakeLock(nsString aTopic, WakeLockControl aLockAdjust, WakeLockControl aHiddenAdjust); EnableWakeLockNotifications(); DisableWakeLockNotifications(); sync GetWakeLockInfo(nsString aTopic) returns (WakeLockInformation aWakeLockInfo); EnableScreenConfigurationNotifications(); DisableScreenConfigurationNotifications(); sync GetCurrentScreenConfiguration() returns (ScreenConfiguration aScreenConfiguration); sync LockScreenOrientation(ScreenOrientation aOrientation) returns (bool allowed); UnlockScreenOrientation(); EnableSwitchNotifications(SwitchDevice aDevice); DisableSwitchNotifications(SwitchDevice aDevice); sync GetCurrentSwitchState(SwitchDevice aDevice) returns (SwitchState aState); SetProcessPriority(int aPid, ProcessPriority aPriority); child: NotifySensorChange(SensorData aSensorData); parent: EnableSensorNotifications(SensorType aSensor); DisableSensorNotifications(SensorType aSensor); __delete__(); }; } // namespace hal } // namespace mozilla