class PiGPIO::GPIO

Constants

MODES
MODE_CODES
MODE_VALUES

Attributes

g[R]
invert_logic[RW]

Public Class Methods

new(pigpio, g) click to toggle source
# File lib/pi_gpio/gpio.rb, line 31
def initialize(pigpio, g) # rubocop:disable Naming/MethodParameterName
  @pigpio = pigpio
  @g = g
  @invert_logic = false
end

Public Instance Methods

inspect() click to toggle source
# File lib/pi_gpio/gpio.rb, line 37
def inspect
  vals = {
    g: g,
    invert_logic: invert_logic,
    mode: @mode
  }.compact
  "#<PiGPIO::GPIO #{vals.map { |k, v| "#{k}=#{v.inspect}" }.join(" ")}>"
end
level() click to toggle source
# File lib/pi_gpio/gpio.rb, line 63
def level
  result = !command("r #{g}").zero?
  result = !result if invert_logic
  result
end
level=(value) click to toggle source
# File lib/pi_gpio/gpio.rb, line 69
def level=(value)
  raise ArgumentError, "Invalid level #{value.inspect}" unless [true, false].include?(value)

  value = !value if invert_logic
  command("w #{g} #{value ? 1 : 0}")
end
mode() click to toggle source
# File lib/pi_gpio/gpio.rb, line 46
def mode
  @mode ||= MODE_VALUES[command("mg #{g}")]
end
mode=(value) click to toggle source
# File lib/pi_gpio/gpio.rb, line 50
def mode=(value)
  raise ArgumentError, "Invalid mode #{value.inspect}" unless MODE_CODES.key?(value)

  @mode = nil
  command("m #{g} #{MODE_CODES[value]}")
end
pull_up_down=(value) click to toggle source
# File lib/pi_gpio/gpio.rb, line 57
def pull_up_down=(value)
  raise ArgumentError, "Invalid setting #{value.inspect}" unless %i[up down off].include?(value)

  command("pud #{g} #{value.to_s.first}")
end

Private Instance Methods

command(command) click to toggle source
# File lib/pi_gpio/gpio.rb, line 78
def command(command)
  @pigpio.send(:command, command)
end