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