Class: McProtocolE::Frame1e::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/mc_protocol_e/frame_1e/request.rb

Overview

This class shows a request of MC protocol.

Constant Summary collapse

DEFAULT_READ_TIMEOUT =
3

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(access_route:, wait_sec:, command:) ⇒ Request

Constructor.



18
19
20
21
22
23
# File 'lib/mc_protocol_e/frame_1e/request.rb', line 18

def initialize(access_route:, wait_sec:, command:)
  @sub_header = command.request_header
  @access_route = access_route
  @wait_sec = WaitSec.new(wait_sec)
  @command = command
end

Class Method Details

.batch_read_in_word(access_route:, wait_sec:, device_range:) ⇒ Object

Returns a request to batch read.



29
30
31
# File 'lib/mc_protocol_e/frame_1e/request.rb', line 29

def self.batch_read_in_word(access_route:, wait_sec:, device_range:)
  new(access_route: access_route, wait_sec: wait_sec, command: BatchReadInWord.new(device_range: device_range))
end

.batch_write_in_word(access_route:, wait_sec:, device_range:, values:) ⇒ Object

Returns a request to batch write.



38
39
40
# File 'lib/mc_protocol_e/frame_1e/request.rb', line 38

def self.batch_write_in_word(access_route:, wait_sec:, device_range:, values:)
  new(access_route: access_route, wait_sec: wait_sec, command: BatchWriteInWord.new(device_range: device_range, values: values))
end

Instance Method Details

#exec(socket, read_timeout = DEFAULT_READ_TIMEOUT) ⇒ Object

Writes and returns a response.



46
47
48
49
50
# File 'lib/mc_protocol_e/frame_1e/request.rb', line 46

def exec(socket, read_timeout = DEFAULT_READ_TIMEOUT)
  socket.write(to_b)
  res = Response.recv(socket, read_timeout)
  command.parse(res)
end

#to_bString

Returns binary string.



54
55
56
# File 'lib/mc_protocol_e/frame_1e/request.rb', line 54

def to_b
  sub_header + access_route.to_b + wait_sec.to_b + command.to_b
end