Class: Battman::Battery

Inherits:
Object
  • Object
show all
Defined in:
lib/battman/battery.rb

Direct Known Subclasses

AcpiBattery, SmapiBattery

Constant Summary collapse

CONVERSIONS =
{
  power: {
    watts: lambda {|value| value},
    milliwatts: lambda {|value| value * 1000}
  },
  time: {
    seconds: lambda {|value| value},
    minutes: lambda {|value| value.to_f / 1.minute},
    hours: lambda {|value| value.to_f / 1.hour}
  },
  energy: {
    watt_hours: lambda {|value| value},
    milliwatt_hours: lambda {|value| value * 1000}
  }
}

Instance Method Summary collapse

Constructor Details

#initialize(battery_index = 0, **opts) ⇒ Battery

Returns a new instance of Battery.



24
25
26
27
28
29
30
# File 'lib/battman/battery.rb', line 24

def initialize(battery_index = 0, **opts)
  if self.class == Battery
    raise AbstractError.new('cannot instantiate Battery')
  end

  @index = battery_index
end

Instance Method Details

#full_energyObject



88
89
90
# File 'lib/battman/battery.rb', line 88

def full_energy
  raise NotImplementedError.new
end

#full_energy_in(unit) ⇒ Object



92
93
94
95
96
97
98
# File 'lib/battman/battery.rb', line 92

def full_energy_in(unit)
  unless unit.in?(CONVERSIONS[:energy].keys)
    raise UnsupportedUnitError.new(unit)
  end

  CONVERSIONS[:energy][unit].call(full_energy)
end

#powerObject



40
41
42
# File 'lib/battman/battery.rb', line 40

def power
  raise NotImplementedError.new
end

#power_in(unit) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/battman/battery.rb', line 44

def power_in(unit)
  unless unit.in?(CONVERSIONS[:power].keys)
    raise UnsupportedUnitError.new(unit)
  end

  CONVERSIONS[:power][unit].call(power)
end

#remaining_charging_timeObject



64
65
66
# File 'lib/battman/battery.rb', line 64

def remaining_charging_time
  raise NotImplementedError.new
end

#remaining_charging_time_in(unit) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/battman/battery.rb', line 68

def remaining_charging_time_in(unit)
  unless unit.in?(CONVERSIONS[:time].keys)
    raise UnsupportedUnitError.new(unit)
  end

  CONVERSIONS[:time][unit].call(remaining_charging_time)
end

#remaining_energyObject



76
77
78
# File 'lib/battman/battery.rb', line 76

def remaining_energy
  raise NotImplementedError.new
end

#remaining_energy_in(unit) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/battman/battery.rb', line 80

def remaining_energy_in(unit)
  unless unit.in?(CONVERSIONS[:energy].keys)
    raise UnsupportedUnitError.new(unit)
  end

  CONVERSIONS[:energy][unit].call(remaining_energy)
end

#remaining_percentObject



36
37
38
# File 'lib/battman/battery.rb', line 36

def remaining_percent
  raise NotImplementedError.new
end

#remaining_running_timeObject



52
53
54
# File 'lib/battman/battery.rb', line 52

def remaining_running_time
  raise NotImplementedError.new
end

#remaining_running_time_in(unit) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/battman/battery.rb', line 56

def remaining_running_time_in(unit)
  unless unit.in?(CONVERSIONS[:time].keys)
    raise UnsupportedUnitError.new(unit)
  end

  CONVERSIONS[:time][unit].call(remaining_running_time)
end

#stateObject



32
33
34
# File 'lib/battman/battery.rb', line 32

def state
  raise NotImplementedError.new
end