Class: SDN::Message::Move

Inherits:
SDN::Message show all
Defined in:
lib/sdn/message/control.rb

Overview

Move in momentary mode

Constant Summary collapse

MSG =
0x01
PARAMS_LENGTH =
3
DIRECTION =
{ down: 0x00, up: 0x01, cancel: 0x02 }.freeze
SPEED =
{ up: 0x00, down: 0x01, slow: 0x02 }.freeze

Instance Attribute Summary collapse

Attributes inherited from SDN::Message

#ack_requested, #dest, #node_type, #src

Instance Method Summary collapse

Methods inherited from SDN::Message

#==, #class_inspect, expected_response?, inherited, #inspect, parse, #serialize

Methods included from Helpers

#checksum, #from_number, #from_string, #is_group_address?, #node_type_from_number, #node_type_to_number, #node_type_to_string, #parse_address, #print_address, #to_number, #to_string, #transform_param

Constructor Details

#initialize(dest = nil, direction = :cancel, duration: nil, speed: :up, **kwargs) ⇒ Move

Returns a new instance of Move.



53
54
55
56
57
58
59
# File 'lib/sdn/message/control.rb', line 53

def initialize(dest = nil, direction = :cancel, duration: nil, speed: :up, **kwargs)
   kwargs[:dest] ||= dest
   super(**kwargs)
   self.direction = direction
   self.duration = duration
   self.speed = speed
end

Instance Attribute Details

#directionObject

Returns the value of attribute direction.



51
52
53
# File 'lib/sdn/message/control.rb', line 51

def direction
  @direction
end

#durationObject

Returns the value of attribute duration.



51
52
53
# File 'lib/sdn/message/control.rb', line 51

def duration
  @duration
end

#speedObject

Returns the value of attribute speed.



51
52
53
# File 'lib/sdn/message/control.rb', line 51

def speed
  @speed
end

Instance Method Details

#paramsObject



85
86
87
88
89
# File 'lib/sdn/message/control.rb', line 85

def params
  transform_param(DIRECTION[direction]) +
    transform_param(duration || 0) +
    transform_param(SPEED[speed])
end

#parse(params) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/sdn/message/control.rb', line 61

def parse(params)
  super
  self.direction = DIRECTION.invert[to_number(params[0])]
  duration = to_number(params[1])
  duration = nil if duration == 0
  self.duration = duration
  self.speed = SPEED.invert[to_number(params[3])]
end