Class: AstmServer

Inherits:
Object
  • Object
show all
Includes:
LabInterface, UsbModule
Defined in:
lib/ruby_astm/astm_server.rb

Constant Summary

Constants included from LabInterface

LabInterface::ACK, LabInterface::CR, LabInterface::ENQ, LabInterface::EOT, LabInterface::ETX, LabInterface::LF, LabInterface::STX

Class Method Summary collapse

Instance Method Summary collapse

Methods included from UsbModule

#begin_patient_results, #interpret?, #parse_usb_response, #request_results, #request_status, #request_version

Methods included from LabInterface

#checksum, #data_buffer, #generate_response, #process_text, #process_text_file, #process_type, #receive_data, #root, #send_enq, #terminator, #unbind

Constructor Details

#initialize(server_ip = nil, server_port = nil, mpg = nil, respond_to_queries = false, serial_port = '/dev/ttyS0', usb_port = '/dev/ttyUSB0', serial_baud = 9600, serial_parity = 8, usb_baud = 19200, usb_parity = 8) ⇒ AstmServer

DEFAULT SERIAL PORT : /dev/ttyS0 DEFAULT USB PORT : /dev/ttyUSB0



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ruby_astm/astm_server.rb', line 35

def initialize(server_ip=nil,server_port=nil,mpg=nil,respond_to_queries=false,serial_port='/dev/ttyS0',usb_port='/dev/ttyUSB0',serial_baud=9600,serial_parity=8,usb_baud=19200,usb_parity=8)
	$redis = Redis.new
	AstmServer.log("Initializing AstmServer")
	self.server_ip = server_ip || "127.0.0.1"
	self.server_port = server_port || 3000
	self.respond_to_queries = respond_to_queries
	self.serial_port = serial_port
	self.serial_baud = serial_baud
	self.serial_parity = serial_parity
	self.usb_port = usb_port
	self.usb_baud = usb_baud
	self.usb_parity = usb_parity
	$mappings = JSON.parse(IO.read(mpg || AstmServer.default_mappings))
end

Class Method Details

.default_mappings ⇒ Object



22
23
24
# File 'lib/ruby_astm/astm_server.rb', line 22

def self.default_mappings
	File.join AstmServer.root_path,"mappings.json"
end

.log(message) ⇒ Object



13
14
15
16
# File 'lib/ruby_astm/astm_server.rb', line 13

def self.log(message)
		puts "" + message
 	$redis.zadd("ruby_astm_log",Time.now.to_i,message)
end

.root_path ⇒ Object



18
19
20
# File 'lib/ruby_astm/astm_server.rb', line 18

def self.root_path
	File.dirname __dir__
end

Instance Method Details

#start_server ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/ruby_astm/astm_server.rb', line 50

def start_server
	EventMachine.run {
		serial = EventMachine.open_serial(serial_port, serial_baud, serial_parity,LabInterface)
		puts "RUNNING SERIAL ON #{serial_port} ------------ #{serial.to_s}"
		self.ethernet_server = EventMachine::start_server self.server_ip, self.server_port, LabInterface
		AstmServer.log("Running ETHERNET SERVER on #{server_port}")
		usb = EventMachine.open_serial(usb_port,usb_baud,usb_parity)
		self.usb_response_bytes = []
		EM.add_periodic_timer(5) do
			puts "running usb on #{usb_port}"
			puts "sending machine data request #{request_results}"
		   usb.send_data(request_results)
		end
		usb.on_data do |data|
			parse_usb_response(data)
		end
	}
end