1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//! Lets you get power info about the system.

use crate::c_int;

/// The basic state for the system's power supply.
///
/// See the `SDL_POWERSTATE_*` constants.
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)]
pub struct SDL_PowerState(pub u32);

/// Cannot determine power status.
pub const SDL_POWERSTATE_UNKNOWN: SDL_PowerState = SDL_PowerState(0);
/// Not plugged in, running on the battery.
pub const SDL_POWERSTATE_ON_BATTERY: SDL_PowerState = SDL_PowerState(1);
/// Plugged in, no battery available.
pub const SDL_POWERSTATE_NO_BATTERY: SDL_PowerState = SDL_PowerState(2);
/// Plugged in, charging battery.
pub const SDL_POWERSTATE_CHARGING: SDL_PowerState = SDL_PowerState(3);
/// Plugged in, battery charged.
pub const SDL_POWERSTATE_CHARGED: SDL_PowerState = SDL_PowerState(4);

extern "C" {
  /// Get the current power supply details.
  ///
  /// * `secs` Seconds of battery life left. You can pass a NULL here if you
  ///   don't care. Will return -1 if we can't determine a value, or if we're
  ///   not running on a battery.
  ///
  /// * `pct` Percentage of battery life left, between 0 and 100. You can pass a
  ///   NULL here if you don't care. Will return -1 if we can't determine a
  ///   value, or if we're not running on a battery.
  ///
  /// **Returns:** The state of the battery (if any).
  pub fn SDL_GetPowerInfo(secs: *mut c_int, pct: *mut c_int) -> SDL_PowerState;
}