class SDN::Message::ILT2::SetMotorPosition

Constants

MSG
PARAMS_LENGTH
TARGET_TYPE

Attributes

target[R]
target_type[R]

Public Class Methods

new(dest = nil, target_type = :up_limit, target = 0, **kwargs) click to toggle source
Calls superclass method SDN::Message::new
# File lib/sdn/message/ilt2/set.rb, line 118
def initialize(dest = nil, target_type = :up_limit, target = 0, **kwargs)
  kwargs[:dest] ||= dest
  super(**kwargs)
  self.target_type = target_type
  self.target = target
end

Public Instance Methods

params() click to toggle source
# File lib/sdn/message/ilt2/set.rb, line 151
def params
  param = target
  param = (param * 255 / 100).to_i if target_type == :position_percent
  param -= 1 if target_type == :ip
  transform_param(TARGET_TYPE[target_type]) + from_number(param, 2)
end
parse(params) click to toggle source
Calls superclass method SDN::Message::parse
# File lib/sdn/message/ilt2/set.rb, line 125
def parse(params)
  super
  self.target_type = TARGET_TYPE.invert[to_number(params[0])]
  target = to_number(params[1..2])
  if target_type == :position_percent
    target = target.to_f / 255 * 100
  end
  if target_type == :ip
    target += 1
  end
  self.target = target
end
target=(value) click to toggle source
# File lib/sdn/message/ilt2/set.rb, line 143
def target=(value)
  if target_type == :position_percent && value
    @target = [[0, value].max, 100].min
  else
    @target = value&. & 0xffff
  end
end
target_type=(value) click to toggle source
# File lib/sdn/message/ilt2/set.rb, line 138
def target_type=(value)
  raise ArgumentError, "target_type must be one of :up_limit, :down_limit, :stop, :ip, :next_ip_up, :next_ip_down, :jog_up, :jog_down, or :position_percent" unless TARGET_TYPE.keys.include?(value)
  @target_type = value
end