tg-can-controls-gateway 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/can_controls_gateway +1 -0
- data/lib/ccg_logger.rb +11 -0
- data/lib/dispatcher.rb +13 -35
- data/lib/osc_package.rb +1 -4
- data/lib/osc_to_rca_dispatcher.rb +2 -2
- data/lib/runner.rb +4 -26
- data/lib/server.rb +2 -15
- metadata +2 -2
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ begin
|
|
18
18
|
gem.add_runtime_dependency "eventmachine", ">=0.12.10"
|
19
19
|
gem.add_runtime_dependency "applix"
|
20
20
|
gem.add_runtime_dependency "gom-core", ">=0.1.1"
|
21
|
-
gem.add_runtime_dependency "gom-script"
|
21
|
+
gem.add_runtime_dependency "gom-script", ">=0.1.6"
|
22
22
|
gem.add_runtime_dependency "osc", ">=0.1.4"
|
23
23
|
end
|
24
24
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/bin/can_controls_gateway
CHANGED
data/lib/ccg_logger.rb
CHANGED
@@ -5,3 +5,14 @@ module CcgLogger
|
|
5
5
|
#LOGGER = Logger.new(File.join(File.dirname(__FILE__), '..', 'log/ccg.log'))
|
6
6
|
LOGGER = Gom::Logger.new
|
7
7
|
end
|
8
|
+
|
9
|
+
module Ccg
|
10
|
+
def self.logger out = nil
|
11
|
+
if out.nil?
|
12
|
+
@@logger ||= Gom::Logger.new
|
13
|
+
else
|
14
|
+
out = STDOUT if(out == '-')
|
15
|
+
@@logger = (Gom::Logger.new out)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/dispatcher.rb
CHANGED
@@ -26,60 +26,38 @@ module CanControlsGateway
|
|
26
26
|
if my_station
|
27
27
|
|
28
28
|
@events.each do |event|
|
29
|
-
##
|
30
|
-
#CcgLogger::LOGGER.info "#{Time.now.iso8601} | Dispatcher: rca dispatching: event_type: #{event.event_type}"
|
31
|
-
##
|
32
|
-
|
33
29
|
# If it is a RCA mappable event send it as RCA command...
|
34
30
|
if EVENTS[event.event_type]
|
35
31
|
if my_station['rci_uri']
|
36
32
|
my_args = { 'action' => EVENTS[event.event_type] }
|
37
|
-
|
33
|
+
Ccg.logger.info "Dispatcher: sending command : rci_uri: #{my_station['rci_uri']}, target: #{my_station['target']}, args: #{my_args.inspect}"
|
38
34
|
my_command = CanControlsGateway::RcaCommand.new my_station['rci_uri'],
|
39
35
|
my_station['target'],
|
40
36
|
my_args
|
41
|
-
|
37
|
+
Ccg.logger.info my_command.send_command
|
42
38
|
else
|
43
|
-
|
39
|
+
Ccg.logger.info "Device '#{my_station['device']}' not properly initialized in gom? (sender: station #{station})"
|
44
40
|
end
|
45
41
|
else
|
46
|
-
|
47
|
-
#CcgLogger::LOGGER.info "#{Time.now.iso8601} | event '#{event.event_type}' not mappable to RCA command..."
|
48
|
-
##
|
42
|
+
# ????
|
49
43
|
end
|
50
44
|
end
|
51
45
|
|
52
46
|
else
|
53
|
-
#
|
47
|
+
# ????
|
54
48
|
end
|
55
49
|
|
56
50
|
rescue => e
|
57
51
|
"ERROR: #{e.backtrace.join "\n\t"}"
|
58
52
|
end
|
59
53
|
|
60
|
-
#def dispatch_osc
|
61
|
-
# @events.each do |event|
|
62
|
-
# if event.event_type && @station_id
|
63
|
-
# ##
|
64
|
-
# #CcgLogger::LOGGER.info "#{Time.now.iso8601} | Dispatcher: osc dispatching: event_type: #{event.event_type} - vector: #{event.vector}"
|
65
|
-
# ##
|
66
|
-
# my_osc_package = CanControlsGateway::OscPackage.new event, @station_id
|
67
|
-
# my_ret = my_osc_package.broadcast
|
68
|
-
# nil
|
69
|
-
# end
|
70
|
-
# end
|
71
|
-
#end
|
72
|
-
|
73
54
|
private
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
end
|
82
|
-
|
55
|
+
def get_raw_events
|
56
|
+
my_events = []
|
57
|
+
my_event_nodes = REXML::XPath.each(@raw_data, "/trackingdata/event") { |event|
|
58
|
+
my_events << CanControlsGateway::RawEvent.new(event)
|
59
|
+
}
|
60
|
+
my_events
|
61
|
+
end
|
83
62
|
end
|
84
|
-
|
85
|
-
end
|
63
|
+
end
|
data/lib/osc_package.rb
CHANGED
@@ -15,9 +15,6 @@ module CanControlsGateway
|
|
15
15
|
|
16
16
|
def broadcast
|
17
17
|
my_message = prepare_message
|
18
|
-
##
|
19
|
-
#CcgLogger::LOGGER.info "#{Time.now.iso8601} | broadcasting osc_package with vector '#{@event.vector}' and event_type '#{@event.event_type}'"
|
20
|
-
##
|
21
18
|
my_encoded_message = my_message.encode
|
22
19
|
BasicSocket.do_not_reverse_lookup = true
|
23
20
|
my_socket = UDPSocket.new
|
@@ -53,4 +50,4 @@ module CanControlsGateway
|
|
53
50
|
|
54
51
|
end
|
55
52
|
|
56
|
-
end
|
53
|
+
end
|
@@ -17,11 +17,11 @@ module CanControlsGateway
|
|
17
17
|
def dispatch_rca
|
18
18
|
return true if @event.nil?
|
19
19
|
my_args = { 'action' => @event }
|
20
|
-
|
20
|
+
Ccg.logger.info "OscToRcaDispatcher: sending command : rci_uri: #{STATION['rci_uri']}, target: #{STATION['target']}, args: #{my_args.inspect}"
|
21
21
|
my_command = CanControlsGateway::RcaCommand.new STATION['rci_uri'],
|
22
22
|
STATION['target'],
|
23
23
|
my_args
|
24
|
-
|
24
|
+
Ccg.logger.info my_command.send_command
|
25
25
|
end
|
26
26
|
|
27
27
|
private
|
data/lib/runner.rb
CHANGED
@@ -15,7 +15,7 @@ class CcgRunner < Gom::Remote::Entry
|
|
15
15
|
}
|
16
16
|
|
17
17
|
include OAttr
|
18
|
-
oattr :incoming_osc_port, :device, :valve
|
18
|
+
oattr :incoming_osc_port, :device, :valve, :logfile
|
19
19
|
|
20
20
|
def self.instance
|
21
21
|
@@instance
|
@@ -26,6 +26,7 @@ class CcgRunner < Gom::Remote::Entry
|
|
26
26
|
@path = path
|
27
27
|
@options = Defaults.merge(gnode @path).merge(options)
|
28
28
|
puts "options: #{@options.inspect}"
|
29
|
+
(Ccg::logger logfile)
|
29
30
|
|
30
31
|
# FIXIT: legacy! pushing config values from GOM to global variable!!!
|
31
32
|
STATION['port'] = Integer(incoming_osc_port)
|
@@ -48,10 +49,10 @@ class CcgRunner < Gom::Remote::Entry
|
|
48
49
|
raise "NOT Starting servers since port cannot be determined"
|
49
50
|
end
|
50
51
|
|
51
|
-
|
52
|
+
Ccg.logger.info "Starting servers"
|
52
53
|
EventMachine::threadpool_size = 20
|
53
54
|
EventMachine::run do
|
54
|
-
|
55
|
+
Ccg.logger.info "UdpServer (port: #{port}) ..."
|
55
56
|
EventMachine::open_datagram_socket('0.0.0.0', port, UdpServer)
|
56
57
|
# TODO place http server component for GNP callbacks here...
|
57
58
|
end
|
@@ -71,26 +72,3 @@ class CcgRunner < Gom::Remote::Entry
|
|
71
72
|
puts " -- can-controls-valve now: #{valve}"
|
72
73
|
end
|
73
74
|
end
|
74
|
-
|
75
|
-
__END__
|
76
|
-
|
77
|
-
def _fill_settings
|
78
|
-
CcgLogger::LOGGER.info "#{Time.now.iso8601} | ++ Initializing settings ..."
|
79
|
-
my_gom = RestFs::Client.new GOM_ROOT
|
80
|
-
|
81
|
-
my_res = my_gom.retrieve("#{STATION['device']}:rci_uri")
|
82
|
-
if my_res
|
83
|
-
STATION['rci_uri'] = my_res['attribute']['value']
|
84
|
-
CcgLogger::LOGGER.info "#{Time.now.iso8601} | ++ setting rci_uri for station #{STATION['device']} => #{STATION['rci_uri'].inspect}"
|
85
|
-
|
86
|
-
my_port_res = my_gom.retrieve("#{STATION['device']}/hid:port")
|
87
|
-
if my_port_res
|
88
|
-
STATION['port'] = my_port_res['attribute']['value']
|
89
|
-
else
|
90
|
-
CcgLogger::LOGGER.info "#{Time.now.iso8601} | ++ device's hid:port #{STATION['device']}/hid:port not found in gom"
|
91
|
-
end
|
92
|
-
else
|
93
|
-
CcgLogger::LOGGER.info "#{Time.now.iso8601} | ++ device's rci_uri #{STATION['device']}:rci_uri not found in gom"
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
data/lib/server.rb
CHANGED
@@ -7,41 +7,28 @@ require 'osc_to_rca_dispatcher'
|
|
7
7
|
module UdpServer
|
8
8
|
|
9
9
|
def post_init
|
10
|
-
|
10
|
+
Ccg.logger.info "... server started"
|
11
11
|
end
|
12
12
|
|
13
13
|
def receive_data(data)
|
14
14
|
return unless(CcgRunner.instance.valve == :open)
|
15
15
|
|
16
|
-
##
|
17
|
-
#CcgLogger::LOGGER.info "#{Time.now.iso8601} | >> raw incoming data: ----------------------"
|
18
|
-
#CcgLogger::LOGGER.info data.inspect
|
19
|
-
#CcgLogger::LOGGER.info " --------------------------------------------"
|
20
|
-
##
|
21
|
-
|
22
|
-
#port, ip = Socket.unpack_sockaddr_in(get_peername)
|
23
|
-
#CcgLogger::LOGGER.info "#{Time.now.iso8601} | >> UdpServer: sender: #{ip}, #{port}"
|
24
|
-
|
25
16
|
# RCA
|
26
17
|
rca_dispatching = proc {
|
27
18
|
begin
|
28
19
|
my_dispatcher = CanControlsGateway::OscToRcaDispatcher.new data
|
29
|
-
#CcgLogger::LOGGER.info my_dispatcher.event.inspect
|
30
20
|
my_dispatcher.dispatch_rca
|
31
21
|
rescue Exception => e
|
32
22
|
puts " ## #{e}\n -> #{e.backtrace.join "\n "}"
|
33
23
|
end
|
34
24
|
}
|
35
25
|
rca_callback = proc { |result|
|
36
|
-
#if result
|
37
|
-
# CcgLogger::LOGGER.info "#{Time.now.iso8601} | >> UdpServer: result is: #{result.inspect}"
|
38
|
-
#end
|
39
26
|
}
|
40
27
|
EventMachine::defer rca_dispatching, rca_callback
|
41
28
|
end
|
42
29
|
|
43
30
|
def unbind
|
44
|
-
|
31
|
+
Ccg.logger.info "UdpServer stopped"
|
45
32
|
end
|
46
33
|
|
47
34
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tg-can-controls-gateway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- art+com/andreas marr
|
@@ -60,7 +60,7 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
63
|
+
version: 0.1.6
|
64
64
|
version:
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
66
|
name: osc
|