summaryrefslogtreecommitdiff
path: root/lib/sway/device.vala
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sway/device.vala')
-rw-r--r--lib/sway/device.vala458
1 files changed, 0 insertions, 458 deletions
diff --git a/lib/sway/device.vala b/lib/sway/device.vala
deleted file mode 100644
index db69574..0000000
--- a/lib/sway/device.vala
+++ /dev/null
@@ -1,458 +0,0 @@
-namespace AstalBattery {
- /** Get the DisplayDevice. */
- public Device get_default() {
- return Device.get_default();
- }
-}
-
-/**
- * Client for a UPower [[https://upower.freedesktop.org/docs/Device.html|device]].
- */
-public class AstalBattery.Device : Object {
- private static Device display_device;
-
- /** Get the DisplayDevice. */
- public static Device? get_default() {
- if (display_device != null) {
- return display_device;
- }
-
- try {
- display_device = new Device((ObjectPath)"/org/freedesktop/UPower/devices/DisplayDevice");
- return display_device;
- } catch (Error error) {
- critical(error.message);
- }
-
- return null;
- }
-
- private IUPowerDevice proxy;
-
- public Device(ObjectPath path) throws Error {
- proxy = Bus.get_proxy_sync(BusType.SYSTEM, "org.freedesktop.UPower", path);
- proxy.g_properties_changed.connect(sync);
- sync();
- }
-
- /**
- * If it is [[email protected]], you will need to verify that the
- * property power-supply has the value `true` before considering it as a laptop battery.
- * Otherwise it will likely be the battery for a device of an unknown type.
- */
- public Type device_type { get; private set; }
-
- /**
- * Native path of the power source. This is the sysfs path,
- * for example /sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0.
- * It is blank if the device is being driven by a user space driver.
- */
- public string native_path { owned get; private set; }
-
- /** Name of the vendor of the battery. */
- public string vendor { owned get; private set; }
-
- /** Name of the model of this battery. */
- public string model { owned get; private set; }
-
- /** Unique serial number of the battery. */
- public string serial { owned get; private set; }
-
- /**
- * The point in time (seconds since the Epoch)
- * that data was read from the power source.
- */
- public uint64 update_time { get; private set; }
-
- /**
- * If the power device is used to supply the system.
- * This would be set `true` for laptop batteries and UPS devices,
- * but set to `false` for wireless mice or PDAs.
- */
- public bool power_supply { get; private set; }
-
- /** If the power device has history. */
- // TODO: public bool has_history { get; private set; }
-
- /** If the power device has statistics. */
- // TODO: public bool has_statistics { get; private set; }
-
- /**
- * Whether power is currently being provided through line power.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]_POWER].
- */
- public bool online { get; private set; }
-
- /**
- * Amount of energy (measured in Wh) currently available in the power source.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public double energy { get; private set; }
-
- /**
- * Amount of energy (measured in Wh) in the power source when it's considered to be empty.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public double energy_empty { get; private set; }
-
- /**
- * Amount of energy (measured in Wh) in the power source when it's considered full.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public double energy_full { get; private set; }
-
- /**
- * Amount of energy (measured in Wh) the power source is designed to hold when it's considered full.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public double energy_full_design { get; private set; }
-
- /**
- * Amount of energy being drained from the source, measured in W.
- * If positive, the source is being discharged, if negative it's being charged.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public double energy_rate { get; private set; }
-
- /** Voltage in the Cell or being recorded by the meter. */
- public double voltage { get; private set; }
-
- /**
- * The number of charge cycles as defined by the TCO certification,
- * or -1 if that value is unknown or not applicable.
- */
- public int charge_cycles { get; private set; }
-
- /** Luminosity being recorded by the meter. */
- public double luminosity { get; private set; }
-
- /**
- * Number of seconds until the power source is considered empty. Is set to 0 if unknown.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public int64 time_to_empty { get; private set; }
-
- /**
- * Number of seconds until the power source is considered full. Is set to 0 if unknown.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public int64 time_to_full { get; private set;}
-
- /**
- * The amount of energy left in the power source expressed as a percentage between 0 and 1.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- * The percentage will be an approximation if [[email protected]:battery_level]
- * is set to something other than None.
- */
- public double percentage { get; private set; }
-
- /**
- * The temperature of the device in degrees Celsius.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public double temperature { get; private set; }
-
- /**
- * If the power source is present in the bay.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public bool is_present { get; private set; }
-
- /**
- * The battery power state.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public State state { get; private set; }
-
- /**
- * If the power source is rechargeable.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public bool is_rechargable { get; private set; }
-
- /**
- * The capacity of the power source expressed as a percentage between 0 and 1.
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public double capacity { get; private set; }
-
- /**
- * Technology used in the battery:
- *
- * This property is only valid if [[email protected]:device_type] is [[email protected]].
- */
- public Technology technology { get; private set; }
-
- /** Warning level of the battery. */
- public WarningLevel warning_level { get; private set; }
-
- /**
- * The level of the battery for devices which do not report a percentage
- * but rather a coarse battery level. If the value is None.
- * then the device does not support coarse battery reporting,
- * and the [[email protected]:percentage] should be used instead.
- */
- public BatteryLevel battery_level { get; private set; }
-
- /**
- * An icon name representing this Device.
- *
- * NOTE: [[email protected]:battery_icon_name] might be a better fit
- * as it is calculated from percentage.
- */
- public string icon_name { owned get; private set; }
-
- /**
- * Indicates if [[email protected]:state] is charging or fully charged.
- */
- public bool charging { get; private set; }
-
- /**
- * Indicates if [[email protected]:device_type] is not line power or unknown.
- */
- public bool is_battery { get; private set; }
-
- /**
- * An icon name in the form of "battery-level-$percentage-$state-symbolic".
- */
- public string battery_icon_name { get; private set; }
-
- /**
- * A string representation of this device's [[email protected]:device_type].
- */
- public string device_type_name { get; private set; }
-
- /**
- * An icon name that can be used to represent this device's [[email protected]:device_type].
- */
- public string device_type_icon { get; private set; }
-
- // TODO: get_history
- // TODO: get_statistics
-
- private void sync() {
- device_type = (Type)proxy.Type;
- native_path = proxy.native_path;
- vendor = proxy.vendor;
- model = proxy.model;
- serial = proxy.serial;
- update_time = proxy.update_time;
- power_supply = proxy.power_supply;
- // TODO: has_history = proxy.has_history;
- // TODO: has_statistics = proxy.has_statistics;
- online = proxy.online;
- energy = proxy.energy;
- energy_empty = proxy.energy_empty;
- energy_full = proxy.energy_full;
- energy_full_design = proxy.energy_full_design;
- energy_rate = proxy.energy_rate;
- voltage = proxy.voltage;
- charge_cycles = proxy.charge_cycles;
- luminosity = proxy.luminosity;
- time_to_empty = proxy.time_to_empty;
- time_to_full = proxy.time_to_full;
- percentage = proxy.percentage / 100;
- temperature = proxy.temperature;
- is_present = proxy.is_present;
- state = (State)proxy.state;
- is_rechargable = proxy.is_rechargable;
- capacity = proxy.capacity / 100;
- technology = (Technology)proxy.technology;
- warning_level = (WarningLevel)proxy.warning_level;
- battery_level = (BatteryLevel)proxy.battery_level;
- icon_name = proxy.icon_name;
-
- charging = state == State.FULLY_CHARGED || state == State.CHARGING;
- is_battery = device_type != Type.UNKNOWN && device_type != Type.LINE_POWER;
-
- if (!is_battery) {
- battery_icon_name = "battery-missing-symbolic";
- } else if (percentage >= 0.95 && charging) {
- battery_icon_name = "battery-level-100-charged-symbolic";
- } else {
- var state = charging ? "-charging" : "";
- var level = (int)Math.round(percentage * 10)*10;
- battery_icon_name = @"battery-level-$level$state-symbolic";
- }
-
- device_type_name = device_type.get_name();
- device_type_icon = device_type.get_icon_name();
- }
-}
-
-[CCode (type_signature = "u")]
-public enum AstalBattery.State {
- UNKNOWN,
- CHARGING,
- DISCHARGING,
- EMPTY,
- FULLY_CHARGED,
- PENDING_CHARGE,
- PENDING_DISCHARGE,
-}
-
-[CCode (type_signature = "u")]
-public enum AstalBattery.Technology {
- UNKNOWN,
- LITHIUM_ION,
- LITHIUM_POLYMER,
- LITHIUM_IRON_PHOSPHATE,
- LEAD_ACID,
- NICKEL_CADMIUM,
- NICKEL_METAL_HYDRIDE,
-}
-
-[CCode (type_signature = "u")]
-public enum AstalBattery.WarningLevel {
- UNKNOWN,
- NONE,
- DISCHARGING,
- LOW,
- CRITICIAL,
- ACTION,
-}
-
-[CCode (type_signature = "u")]
-public enum AstalBattery.BatteryLevel {
- UNKNOWN,
- NONE,
- LOW,
- CRITICIAL,
- NORMAL,
- HIGH,
- FULL,
-}
-
-[CCode (type_signature = "u")]
-public enum AstalBattery.Type {
- UNKNOWN,
- LINE_POWER,
- BATTERY,
- UPS,
- MONITOR,
- MOUSE,
- KEYBOARD,
- PDA,
- PHONE,
- MEDIA_PLAYER,
- TABLET,
- COMPUTER,
- GAMING_INPUT,
- PEN,
- TOUCHPAD,
- MODEM,
- NETWORK,
- HEADSET,
- SPEAKERS,
- HEADPHONES,
- VIDEO,
- OTHER_AUDIO,
- REMOVE_CONTROL,
- PRINTER,
- SCANNER,
- CAMERA,
- WEARABLE,
- TOY,
- BLUETOOTH_GENERIC;
-
- // TODO: add more icon names
- internal string? get_icon_name () {
- switch (this) {
- case UPS:
- return "uninterruptible-power-supply";
- case MOUSE:
- return "input-mouse";
- case KEYBOARD:
- return "input-keyboard";
- case PDA:
- case PHONE:
- return "phone";
- case MEDIA_PLAYER:
- return "multimedia-player";
- case TABLET:
- case PEN:
- return "input-tablet";
- case GAMING_INPUT:
- return "input-gaming";
- default:
- return null;
- }
- }
-
- internal unowned string? get_name () {
- switch (this) {
- case LINE_POWER:
- return "Plugged In";
- case BATTERY:
- return "Battery";
- case UPS:
- return "UPS";
- case MONITOR:
- return "Display";
- case MOUSE:
- return "Mouse";
- case KEYBOARD:
- return "Keyboard";
- case PDA:
- return "PDA";
- case PHONE:
- return "Phone";
- case MEDIA_PLAYER:
- return "Media Player";
- case TABLET:
- return "Tablet";
- case COMPUTER:
- return "Computer";
- case GAMING_INPUT:
- return "Controller";
- case PEN:
- return "Pen";
- case TOUCHPAD:
- return "Touchpad";
- case MODEM:
- return "Modem";
- case NETWORK:
- return "Network";
- case HEADSET:
- return "Headset";
- case SPEAKERS:
- return "Speakers";
- case HEADPHONES:
- return "Headphones";
- case VIDEO:
- return "Video";
- case OTHER_AUDIO:
- return "Other Audio";
- case REMOVE_CONTROL:
- return "Remove Control";
- case PRINTER:
- return "Printer";
- case SCANNER:
- return "Scanner";
- case CAMERA:
- return "Camera";
- case WEARABLE:
- return "Wearable";
- case TOY:
- return "Toy";
- case BLUETOOTH_GENERIC:
- return "Bluetooth Generic";
- default:
- return "Unknown";
- }
- }
-}