Class: SDN::Message::Move
- Inherits:
-
Message
- Object
- Message
- SDN::Message::Move
- Defined in:
- lib/sdn/message/control.rb
Overview
Command that moves a motor in momentary mode.
Constant Summary collapse
- MSG =
Protocol message number
0x01- PARAMS_LENGTH =
Number of protocol parameter bytes expected
3- DIRECTION =
Mapping from symbolic directions to SDN parameter values.
{ down: 0x00, up: 0x01, cancel: 0x02 }.freeze
- SPEED =
Mapping from symbolic speed modes to SDN parameter values.
{ up: 0x00, down: 0x01, slow: 0x02 }.freeze
Instance Attribute Summary collapse
- #direction ⇒ :down, ...
-
#duration ⇒ Integer?
Requested movement duration in protocol units.
-
#speed ⇒ :up, ...
Requested movement speed mode.
Instance Method Summary collapse
-
#initialize(dest = nil, direction = :cancel, duration: nil, speed: :up, **kwargs) ⇒ Move
constructor
Creates a momentary movement command.
-
#params ⇒ <Integer>
Returns the protocol-specific payload bytes for this message.
-
#parse(params) ⇒ void
Parses protocol-specific parameter bytes into this message instance.
Constructor Details
#initialize(dest = nil, direction = :cancel, duration: nil, speed: :up, **kwargs) ⇒ Move
Creates a momentary movement command.
114 115 116 117 118 119 120 |
# File 'lib/sdn/message/control.rb', line 114 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
#direction ⇒ :down, ...
91 92 93 |
# File 'lib/sdn/message/control.rb', line 91 def direction @direction end |
#duration ⇒ Integer?
Requested movement duration in protocol units.
98 99 100 |
# File 'lib/sdn/message/control.rb', line 98 def duration @duration end |
#speed ⇒ :up, ...
Requested movement speed mode.
105 106 107 |
# File 'lib/sdn/message/control.rb', line 105 def speed @speed end |
Instance Method Details
#params ⇒ <Integer>
Returns the protocol-specific payload bytes for this message.
157 158 159 160 161 |
# File 'lib/sdn/message/control.rb', line 157 def params transform_param(DIRECTION[direction]) + transform_param(duration || 0) + transform_param(SPEED[speed]) end |
#parse(params) ⇒ void
This method returns an undefined value.
Parses protocol-specific parameter bytes into this message instance.
123 124 125 126 127 128 129 130 |
# File 'lib/sdn/message/control.rb', line 123 def parse(params) super self.direction = DIRECTION.invert[to_number(params[0])] duration = to_number(params[1]) duration = nil if duration.zero? self.duration = duration self.speed = SPEED.invert[to_number(params[3])] end |