class Snap7::Server
Constants
- S7AreaCT
- S7AreaDB
- S7AreaMK
- S7AreaPA
- S7AreaPE
- S7AreaTM
Public Class Methods
finalizer(ptr)
click to toggle source
@return [Proc] @see www.mikeperham.com/2010/02/24/the-trouble-with-ruby-finalizers/
# File lib/ffi-snap7/server/server.rb, line 18 def self.finalizer(ptr) proc do ptrptr = FFI::MemoryPointer.new :pointer ptrptr.write_pointer ptr Snap7.srv_destroy ptrptr end end
new()
click to toggle source
# File lib/ffi-snap7/server/server.rb, line 27 def initialize @srv = Snap7.srv_create ObjectSpace.define_finalizer self, self.class.finalizer(@srv) end
Public Instance Methods
local_port()
click to toggle source
@return [Integer]
# File lib/ffi-snap7/server/server.rb, line 70 def local_port p_port = FFI::MemoryPointer.new(:uint16) check_rc Snap7.srv_get_param(@srv, P_u16_LocalPort, p_port) p_port.read_uint16 end
local_port=(port)
click to toggle source
@param port [Integer] local port to bind to
# File lib/ffi-snap7/server/server.rb, line 62 def local_port=(port) p_port = FFI::MemoryPointer.new(:uint16) p_port.write_uint16 port check_rc Snap7.srv_set_param(@srv, P_u16_LocalPort, p_port) end
register_area(area_code, index, size)
click to toggle source
# File lib/ffi-snap7/server/server.rb, line 50 def register_area(area_code, index, size) p_usr_data = FFI::MemoryPointer.new :uchar, size check_rc Snap7.srv_register_area @srv, area_code, index, p_usr_data, size end
register_db(index, size)
click to toggle source
# File lib/ffi-snap7/server/server.rb, line 56 def register_db(index, size) register_area S7AreaDB, index, size end
start()
click to toggle source
# File lib/ffi-snap7/server/server.rb, line 40 def start check_rc Snap7.srv_start(@srv) end
stop()
click to toggle source
# File lib/ffi-snap7/server/server.rb, line 45 def stop check_rc Snap7.srv_stop(@srv) end
to_ptr()
click to toggle source
@return [FFI::MemoryPointer] pointer to the native object
# File lib/ffi-snap7/server/server.rb, line 35 def to_ptr @srv end
Private Instance Methods
check_rc(rc)
click to toggle source
# File lib/ffi-snap7/server/server.rb, line 80 def check_rc(rc) fail error_text(rc) unless rc == 0 end
error_text(error)
click to toggle source
# File lib/ffi-snap7/server/server.rb, line 85 def error_text(error) text_len = 1024 text_ptr = FFI::MemoryPointer.new :char, text_len if Snap7.srv_error_text(error, text_ptr, text_len) == 0 text_ptr.read_string else fail "Error getting error text for error no #{error}" end end