Class: EISCP::Message
- Inherits:
-
Object
- Object
- EISCP::Message
- Defined in:
- lib/eiscp/message.rb
Overview
Constant Summary collapse
- MAGIC =
ISCP “magic” indicates the start of an eISCP message.
'ISCP'- HEADER_SIZE =
eISCP header size, fixed length.
16- ISCP_VERSION =
ISCP protocol version.
1- RESERVED =
Reserved for future protocol updates.
"\x00\x00\x00"
Instance Attribute Summary collapse
-
#command ⇒ Object
readonly
ISCP Command.
-
#command_description ⇒ Object
readonly
Command description.
-
#command_name ⇒ Object
readonly
Human readable command name.
-
#header ⇒ Object
EISCP header.
-
#parsed ⇒ Object
readonly
Differentiates parsed messages from command messages.
-
#start ⇒ Object
readonly
ISCP Start character, usually “!”.
-
#terminator ⇒ Object
readonly
Terminator character for eISCP packets.
-
#unit_type ⇒ Object
readonly
ISCP Unit Type character, usually “1”.
-
#value ⇒ Object
readonly
ISCP Command Value.
-
#value_description ⇒ Object
readonly
Value description.
-
#value_name ⇒ Object
readonly
Human readable value name.
-
#zone ⇒ Object
readonly
ISCP Zone.
Instance Method Summary collapse
-
#==(other) ⇒ Object
Check if two messages are equivalent comparing their ISCP messages.
-
#initialize(command: nil, value: '', terminator: "\r\n", unit_type: '1', start: '!') ⇒ Message
constructor
Create an ISCP message.
-
#to_eiscp ⇒ Object
Return EISCP Message string.
-
#to_iscp ⇒ Object
Return ISCP Message string.
-
#to_s ⇒ Object
Return human readable description.
Constructor Details
#initialize(command: nil, value: '', terminator: "\r\n", unit_type: '1', start: '!') ⇒ Message
Create an ISCP message
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/eiscp/message.rb', line 57 def initialize(command: nil, value: '', terminator: "\r\n", unit_type: '1', start: '!') unless Dictionary.known_command?(command) # STDERR.puts "Unknown command #{command}" end @command = command @value = value @terminator = terminator @unit_type = unit_type @start = start @header = { magic: MAGIC, header_size: HEADER_SIZE, data_size: to_iscp.length, version: ISCP_VERSION, reserved: RESERVED } begin get_human_readable_attrs rescue StandardError # STDERR.puts"Couldn't get all human readable attrs" end end |
Instance Attribute Details
#command ⇒ Object (readonly)
ISCP Command
33 34 35 |
# File 'lib/eiscp/message.rb', line 33 def command @command end |
#command_description ⇒ Object (readonly)
Command description
37 38 39 |
# File 'lib/eiscp/message.rb', line 37 def command_description @command_description end |
#command_name ⇒ Object (readonly)
Human readable command name
35 36 37 |
# File 'lib/eiscp/message.rb', line 35 def command_name @command_name end |
#header ⇒ Object
EISCP header
17 18 19 |
# File 'lib/eiscp/message.rb', line 17 def header @header end |
#parsed ⇒ Object (readonly)
Differentiates parsed messages from command messages
47 48 49 |
# File 'lib/eiscp/message.rb', line 47 def parsed @parsed end |
#start ⇒ Object (readonly)
ISCP Start character, usually “!”
29 30 31 |
# File 'lib/eiscp/message.rb', line 29 def start @start end |
#terminator ⇒ Object (readonly)
Terminator character for eISCP packets
50 51 52 |
# File 'lib/eiscp/message.rb', line 50 def terminator @terminator end |
#unit_type ⇒ Object (readonly)
ISCP Unit Type character, usually “1”
31 32 33 |
# File 'lib/eiscp/message.rb', line 31 def unit_type @unit_type end |
#value ⇒ Object (readonly)
ISCP Command Value
39 40 41 |
# File 'lib/eiscp/message.rb', line 39 def value @value end |
#value_description ⇒ Object (readonly)
Value description
43 44 45 |
# File 'lib/eiscp/message.rb', line 43 def value_description @value_description end |
#value_name ⇒ Object (readonly)
Human readable value name
41 42 43 |
# File 'lib/eiscp/message.rb', line 41 def value_name @value_name end |
#zone ⇒ Object (readonly)
ISCP Zone
45 46 47 |
# File 'lib/eiscp/message.rb', line 45 def zone @zone end |
Instance Method Details
#==(other) ⇒ Object
Check if two messages are equivalent comparing their ISCP messages.
81 82 83 |
# File 'lib/eiscp/message.rb', line 81 def ==(other) to_iscp == other.to_iscp end |
#to_eiscp ⇒ Object
Return EISCP Message string
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/eiscp/message.rb', line 93 def to_eiscp [ @header[:magic], @header[:header_size].to_i, @header[:data_size].to_i, @header[:version].to_i, @header[:reserved], to_iscp.to_s, @terminator ].pack('A4NNCa3A*A*') end |
#to_iscp ⇒ Object
Return ISCP Message string
87 88 89 |
# File 'lib/eiscp/message.rb', line 87 def to_iscp (@start + @unit_type + @command + @value).to_s end |
#to_s ⇒ Object
Return human readable description.
107 108 109 |
# File 'lib/eiscp/message.rb', line 107 def to_s "#{@zone} - #{@command_name}:#{@value_name}" end |