class Flic::Protocol::Primitives::Enum

An abstract class for 1 byte enums

Public Class Methods

max_octet() click to toggle source

@return [Integer] the byte value for the option with the largest byte value

# File lib/flic/protocol/primitives/enum.rb, line 36
def max_octet
  octets.max
end
next_available_octet() click to toggle source

@return [Integer] the next available byte value (starting at 0x00)

# File lib/flic/protocol/primitives/enum.rb, line 41
def next_available_octet
  if max_octet
    1 + max_octet
  else
    0
  end
end
octet_option() click to toggle source

@return [Hash] a map of byte values to options

# File lib/flic/protocol/primitives/enum.rb, line 21
def octet_option
  @octet_option ||= {}
end
octets() click to toggle source

@return [Array] the valid byte values for this enum

# File lib/flic/protocol/primitives/enum.rb, line 31
def octets
  octet_option.keys
end
option_octet() click to toggle source

@return [Hash] a map of options to byte values

# File lib/flic/protocol/primitives/enum.rb, line 16
def option_octet
  @option_octet ||= {}
end
options() click to toggle source

@return [Array] the valid options for this enum

# File lib/flic/protocol/primitives/enum.rb, line 26
def options
  option_octet.keys
end

Private Class Methods

octet(octet, option) click to toggle source

Associates a byte value of an enum with an option

# File lib/flic/protocol/primitives/enum.rb, line 60
def octet(octet, option)
  octet_option[octet] = option
  option_octet[option] = octet
end
option(option, octet = next_available_octet) click to toggle source

Associates an option with a byte value of the enum @param option [Symbol] @param octet [Integer] (defaults to the next available byte value)

# File lib/flic/protocol/primitives/enum.rb, line 54
def option(option, octet = next_available_octet)
  option_octet[option] = octet
  octet_option[octet] = option
end

Public Instance Methods

get() click to toggle source
# File lib/flic/protocol/primitives/enum.rb, line 68
def get
  if octet_option.has_key?(octet)
    octet_option[octet]
  else
    raise InvalidOctetError, "No such octet `#{octet.inspect}` for enum #{inspect}"
  end
end
set(option) click to toggle source
# File lib/flic/protocol/primitives/enum.rb, line 76
def set(option)
  if option_octet.has_key?(option)
    self.octet = self.class.option_octet[option]
  else
    raise InvalidOptionError, "No such option `#{option.inspect}` for enum #{inspect}"
  end
end

Private Instance Methods

octet_option() click to toggle source
# File lib/flic/protocol/primitives/enum.rb, line 86
def octet_option
  self.class.octet_option
end
option_octet() click to toggle source
# File lib/flic/protocol/primitives/enum.rb, line 90
def option_octet
  self.class.option_octet
end