Class: SDN::Message::ILT2::PostMotorPosition

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

Overview

Response carrying an ILT2 motor's current position.

Constant Summary collapse

MSG =

Protocol message number

0x64
PARAMS_LENGTH =

Number of protocol parameter bytes expected

3

Instance Attribute Summary collapse

Attributes inherited from SDN::Message

#ack_requested, #dest, #node_type, #src

Instance Method Summary collapse

Methods inherited from SDN::Message

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

Methods included from Helpers

#checksum, #from_number, #from_string, #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(position_pulses = nil, position_percent = nil) ⇒ PostMotorPosition

Creates an ILT2 motor position response.

Parameters:

  • position_pulses (Integer, nil) (defaults to: nil)

    current position in pulses

  • position_percent (Numeric, nil) (defaults to: nil)

    current position in percent



136
137
138
139
140
# File 'lib/sdn/message/ilt2/post.rb', line 136

def initialize(position_pulses = nil, position_percent = nil, **)
  super(**)
  self.position_pulses = position_pulses
  self.position_percent = position_percent
end

Instance Attribute Details

#position_percentNumeric?

Returns:

  • (Numeric, nil)


130
131
132
# File 'lib/sdn/message/ilt2/post.rb', line 130

def position_percent
  @position_percent
end

#position_pulsesInteger?

Returns:

  • (Integer, nil)


127
128
129
# File 'lib/sdn/message/ilt2/post.rb', line 127

def position_pulses
  @position_pulses
end

Instance Method Details

#params<Integer>

Returns the protocol-specific payload bytes for this message.

Returns:

  • (<Integer>)


150
151
152
153
# File 'lib/sdn/message/ilt2/post.rb', line 150

def params
  from_number(position_pulses, 2) +
    from_number(position_percent && (position_percent * 255 / 100))
end

#parse(params) ⇒ void

This method returns an undefined value.

Parses protocol-specific parameter bytes into this message instance.

Parameters:

  • params (<Integer>)

    raw parameter bytes

Raises:



143
144
145
146
147
# File 'lib/sdn/message/ilt2/post.rb', line 143

def parse(params)
  super
  self.position_pulses = to_number(params[0..1])
  self.position_percent = to_number(params[2]).to_f / 255 * 100
end