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