tamashii-agent 0.3.0 → 0.3.1
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.
- checksums.yaml +4 -4
- data/exe/tamashii-agent +7 -5
- data/lib/tamashii/agent/buzzer.rb +11 -5
- data/lib/tamashii/agent/card_reader.rb +21 -21
- data/lib/tamashii/agent/common.rb +25 -0
- data/lib/tamashii/agent/component.rb +38 -3
- data/lib/tamashii/agent/config.rb +13 -2
- data/lib/tamashii/agent/device/buzzer/base.rb +26 -0
- data/lib/tamashii/agent/device/buzzer/dummy.rb +32 -0
- data/lib/tamashii/agent/device/buzzer/gpio_buzzer.rb +89 -0
- data/lib/tamashii/agent/device/card_reader/base.rb +16 -0
- data/lib/tamashii/agent/device/card_reader/dummy.rb +37 -0
- data/lib/tamashii/agent/device/card_reader/mfrc522_spi.rb +43 -0
- data/lib/tamashii/agent/device/card_reader/pn532_uart.rb +52 -0
- data/lib/tamashii/agent/device/device_base.rb +20 -0
- data/lib/tamashii/agent/device/lcd/base.rb +29 -0
- data/lib/tamashii/agent/device/lcd/dummy.rb +30 -0
- data/lib/tamashii/agent/device/lcd/lcm1602_i2c.rb +133 -0
- data/lib/tamashii/agent/handler/base.rb +2 -2
- data/lib/tamashii/agent/handler/lcd.rb +1 -1
- data/lib/tamashii/agent/handler/remote_response.rb +1 -1
- data/lib/tamashii/agent/lcd.rb +14 -16
- data/lib/tamashii/agent/master.rb +20 -22
- data/lib/tamashii/agent/{connection.rb → networking.rb} +5 -6
- data/lib/tamashii/agent/{connection → networking}/request_observer.rb +5 -5
- data/lib/tamashii/agent/version.rb +1 -1
- data/tamashii-agent.gemspec +4 -3
- metadata +32 -16
- data/lib/tamashii/agent/adapter/base.rb +0 -28
- data/lib/tamashii/agent/adapter/buzzer.rb +0 -21
- data/lib/tamashii/agent/adapter/card_reader.rb +0 -20
- data/lib/tamashii/agent/adapter/lcd.rb +0 -22
- data/lib/tamashii/agent/device/fake_buzzer.rb +0 -30
- data/lib/tamashii/agent/device/fake_card_reader.rb +0 -40
- data/lib/tamashii/agent/device/fake_lcd.rb +0 -31
- data/lib/tamashii/agent/device/lcd.rb +0 -91
- data/lib/tamashii/agent/device/pi_buzzer.rb +0 -70
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'tamashii/agent/common'
|
2
|
-
require 'tamashii/agent/
|
2
|
+
require 'tamashii/agent/networking'
|
3
3
|
require 'tamashii/agent/lcd'
|
4
4
|
require 'tamashii/agent/buzzer'
|
5
5
|
require 'tamashii/agent/card_reader'
|
@@ -12,13 +12,10 @@ module Tamashii
|
|
12
12
|
class Master < Component
|
13
13
|
|
14
14
|
attr_reader :serial_number
|
15
|
-
attr_reader :host, :port
|
16
15
|
|
17
|
-
def initialize
|
18
|
-
super(self)
|
16
|
+
def initialize
|
17
|
+
super(:master, self)
|
19
18
|
logger.info "Starting Tamashii::Agent #{Tamashii::Agent::VERSION} in #{Config.env} mode"
|
20
|
-
@host = host
|
21
|
-
@port = port
|
22
19
|
@serial_number = get_serial_number
|
23
20
|
logger.info "Serial number: #{@serial_number}"
|
24
21
|
create_components
|
@@ -43,30 +40,30 @@ module Tamashii
|
|
43
40
|
|
44
41
|
def create_components
|
45
42
|
@components = {}
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
create_component(CardReader, self)
|
43
|
+
Config.components.each do |name, params|
|
44
|
+
create_component(name, params)
|
45
|
+
end
|
50
46
|
end
|
51
47
|
|
52
|
-
def create_component(
|
53
|
-
|
54
|
-
logger.info "Starting component
|
48
|
+
def create_component(name, params)
|
49
|
+
klass = Agent.const_get(params[:class_name])
|
50
|
+
logger.info "Starting component #{name}:#{klass}"
|
51
|
+
c = klass.new(name, self, params[:options])
|
52
|
+
c.instance_eval(¶ms[:block]) if params[:block]
|
55
53
|
yield c if block_given?
|
56
54
|
c.run
|
57
|
-
@components[
|
58
|
-
|
59
|
-
c
|
55
|
+
@components[name] = c
|
60
56
|
end
|
61
57
|
|
62
|
-
def restart_component(
|
63
|
-
if old_component = @components[
|
64
|
-
|
58
|
+
def restart_component(name)
|
59
|
+
if old_component = @components[name]
|
60
|
+
params = Config.components[name]
|
61
|
+
logger.info "Stopping component: #{name}"
|
65
62
|
old_component.stop # TODO: set timeout for stopping?
|
66
|
-
logger.info "Restarting component: #{
|
67
|
-
create_component(
|
63
|
+
logger.info "Restarting component: #{name}"
|
64
|
+
create_component(name, params)
|
68
65
|
else
|
69
|
-
logger.error "
|
66
|
+
logger.error "Restart component failed: unknown component #{name}"
|
70
67
|
end
|
71
68
|
end
|
72
69
|
|
@@ -129,6 +126,7 @@ module Tamashii
|
|
129
126
|
@components.each_value do |c|
|
130
127
|
c.stop
|
131
128
|
end
|
129
|
+
logger.info "Master stopped"
|
132
130
|
end
|
133
131
|
|
134
132
|
|
@@ -14,9 +14,9 @@ require 'tamashii/client'
|
|
14
14
|
|
15
15
|
module Tamashii
|
16
16
|
module Agent
|
17
|
-
class
|
17
|
+
class Networking < Component
|
18
18
|
|
19
|
-
autoload :RequestObserver, 'tamashii/agent/
|
19
|
+
autoload :RequestObserver, 'tamashii/agent/networking/request_observer'
|
20
20
|
|
21
21
|
class RequestTimeoutError < RuntimeError; end
|
22
22
|
|
@@ -43,7 +43,7 @@ module Tamashii
|
|
43
43
|
attr_reader :url
|
44
44
|
attr_reader :master
|
45
45
|
|
46
|
-
def initialize(master)
|
46
|
+
def initialize(name, master, options = {})
|
47
47
|
super
|
48
48
|
|
49
49
|
self.reset
|
@@ -59,13 +59,13 @@ module Tamashii
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def setup_resolver
|
62
|
-
env_data = {
|
62
|
+
env_data = {networking: self, master: @master}
|
63
63
|
Resolver.config do
|
64
64
|
[Type::REBOOT, Type::POWEROFF, Type::RESTART, Type::UPDATE].each do |type|
|
65
65
|
handle type, Handler::System, env_data
|
66
66
|
end
|
67
67
|
[Type::LCD_MESSAGE, Type::LCD_SET_IDLE_TEXT].each do |type|
|
68
|
-
handle type, Handler::
|
68
|
+
handle type, Handler::Lcd, env_data
|
69
69
|
end
|
70
70
|
handle Type::BUZZER_SOUND, Handler::Buzzer, env_data
|
71
71
|
handle Type::RFID_RESPONSE_JSON, Handler::RemoteResponse, env_data
|
@@ -101,7 +101,6 @@ module Tamashii
|
|
101
101
|
@client.close
|
102
102
|
end
|
103
103
|
|
104
|
-
|
105
104
|
def send_auth_request
|
106
105
|
# TODO: other types of auth
|
107
106
|
if @client.transmit(Packet.new(Type::AUTH_TOKEN, 0, [Type::CLIENT[:agent], @master.serial_number,Config.token].join(",")).dump)
|
@@ -2,12 +2,12 @@ require 'tamashii/common'
|
|
2
2
|
|
3
3
|
module Tamashii
|
4
4
|
module Agent
|
5
|
-
class
|
5
|
+
class Networking
|
6
6
|
class RequestObserver
|
7
7
|
|
8
8
|
include Common::Loggable
|
9
|
-
def initialize(
|
10
|
-
@
|
9
|
+
def initialize(networking, id, ev_type, ev_body, future)
|
10
|
+
@networking = networking
|
11
11
|
@id = id
|
12
12
|
@ev_type = ev_type
|
13
13
|
@ev_body = ev_body
|
@@ -21,13 +21,13 @@ module Tamashii
|
|
21
21
|
case res_ev_type
|
22
22
|
when Type::RFID_RESPONSE_JSON
|
23
23
|
logger.debug "Handled: #{res_ev_type}: #{res_ev_body}"
|
24
|
-
@
|
24
|
+
@networking.handle_card_result(JSON.parse(res_ev_body))
|
25
25
|
else
|
26
26
|
logger.warn "Unhandled packet result: #{res_ev_type}: #{res_ev_body}"
|
27
27
|
end
|
28
28
|
else
|
29
29
|
logger.error "#{@id} Failed with #{reason}"
|
30
|
-
@
|
30
|
+
@networking.on_request_timeout(@ev_type, @ev_body)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
data/tamashii-agent.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
|
12
12
|
spec.summary = %q{The agent module for RubyConfTW checkin system.}
|
13
13
|
spec.description = %q{The agent module for RubyConfTW checkin system.}
|
14
|
-
spec.homepage = "https://github.com/
|
14
|
+
spec.homepage = "https://github.com/tamashii-io/tamashii-agent"
|
15
15
|
|
16
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
17
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
@@ -40,11 +40,12 @@ Gem::Specification.new do |spec|
|
|
40
40
|
|
41
41
|
|
42
42
|
spec.add_runtime_dependency "tamashii-common", ">=0.1.6"
|
43
|
-
spec.add_runtime_dependency "tamashii-client"
|
43
|
+
spec.add_runtime_dependency "tamashii-client", ">=0.1.2"
|
44
44
|
spec.add_runtime_dependency "websocket-driver"
|
45
45
|
spec.add_runtime_dependency "nio4r"
|
46
46
|
spec.add_runtime_dependency "pi_piper"
|
47
|
-
spec.add_runtime_dependency "tamashii-mfrc522"
|
47
|
+
spec.add_runtime_dependency "tamashii-mfrc522", ">=1.0.8"
|
48
|
+
spec.add_runtime_dependency "tamashii-nfc"
|
48
49
|
spec.add_runtime_dependency "i2c"
|
49
50
|
spec.add_runtime_dependency "aasm"
|
50
51
|
spec.add_runtime_dependency "concurrent-ruby"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tamashii-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 蒼時弦也
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-09-
|
13
|
+
date: 2017-09-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -144,14 +144,14 @@ dependencies:
|
|
144
144
|
requirements:
|
145
145
|
- - ">="
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
147
|
+
version: 0.1.2
|
148
148
|
type: :runtime
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - ">="
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
154
|
+
version: 0.1.2
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
156
|
name: websocket-driver
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,6 +196,20 @@ dependencies:
|
|
196
196
|
version: '0'
|
197
197
|
- !ruby/object:Gem::Dependency
|
198
198
|
name: tamashii-mfrc522
|
199
|
+
requirement: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: 1.0.8
|
204
|
+
type: :runtime
|
205
|
+
prerelease: false
|
206
|
+
version_requirements: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - ">="
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: 1.0.8
|
211
|
+
- !ruby/object:Gem::Dependency
|
212
|
+
name: tamashii-nfc
|
199
213
|
requirement: !ruby/object:Gem::Requirement
|
200
214
|
requirements:
|
201
215
|
- - ">="
|
@@ -272,23 +286,23 @@ files:
|
|
272
286
|
- bin/setup
|
273
287
|
- exe/tamashii-agent
|
274
288
|
- lib/tamashii/agent.rb
|
275
|
-
- lib/tamashii/agent/adapter/base.rb
|
276
|
-
- lib/tamashii/agent/adapter/buzzer.rb
|
277
|
-
- lib/tamashii/agent/adapter/card_reader.rb
|
278
|
-
- lib/tamashii/agent/adapter/lcd.rb
|
279
289
|
- lib/tamashii/agent/buzzer.rb
|
280
290
|
- lib/tamashii/agent/card_reader.rb
|
281
291
|
- lib/tamashii/agent/common.rb
|
282
292
|
- lib/tamashii/agent/common/loggable.rb
|
283
293
|
- lib/tamashii/agent/component.rb
|
284
294
|
- lib/tamashii/agent/config.rb
|
285
|
-
- lib/tamashii/agent/
|
286
|
-
- lib/tamashii/agent/
|
287
|
-
- lib/tamashii/agent/device/
|
288
|
-
- lib/tamashii/agent/device/
|
289
|
-
- lib/tamashii/agent/device/
|
290
|
-
- lib/tamashii/agent/device/
|
291
|
-
- lib/tamashii/agent/device/
|
295
|
+
- lib/tamashii/agent/device/buzzer/base.rb
|
296
|
+
- lib/tamashii/agent/device/buzzer/dummy.rb
|
297
|
+
- lib/tamashii/agent/device/buzzer/gpio_buzzer.rb
|
298
|
+
- lib/tamashii/agent/device/card_reader/base.rb
|
299
|
+
- lib/tamashii/agent/device/card_reader/dummy.rb
|
300
|
+
- lib/tamashii/agent/device/card_reader/mfrc522_spi.rb
|
301
|
+
- lib/tamashii/agent/device/card_reader/pn532_uart.rb
|
302
|
+
- lib/tamashii/agent/device/device_base.rb
|
303
|
+
- lib/tamashii/agent/device/lcd/base.rb
|
304
|
+
- lib/tamashii/agent/device/lcd/dummy.rb
|
305
|
+
- lib/tamashii/agent/device/lcd/lcm1602_i2c.rb
|
292
306
|
- lib/tamashii/agent/event.rb
|
293
307
|
- lib/tamashii/agent/handler.rb
|
294
308
|
- lib/tamashii/agent/handler/base.rb
|
@@ -298,9 +312,11 @@ files:
|
|
298
312
|
- lib/tamashii/agent/handler/system.rb
|
299
313
|
- lib/tamashii/agent/lcd.rb
|
300
314
|
- lib/tamashii/agent/master.rb
|
315
|
+
- lib/tamashii/agent/networking.rb
|
316
|
+
- lib/tamashii/agent/networking/request_observer.rb
|
301
317
|
- lib/tamashii/agent/version.rb
|
302
318
|
- tamashii-agent.gemspec
|
303
|
-
homepage: https://github.com/
|
319
|
+
homepage: https://github.com/tamashii-io/tamashii-agent
|
304
320
|
licenses: []
|
305
321
|
metadata: {}
|
306
322
|
post_install_message:
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'tamashii/common'
|
2
|
-
require 'tamashii/agent/config'
|
3
|
-
|
4
|
-
module Tamashii
|
5
|
-
module Agent
|
6
|
-
module Adapter
|
7
|
-
class Base
|
8
|
-
class << self
|
9
|
-
def object(*args, &block)
|
10
|
-
current_class.new(*args, &block)
|
11
|
-
end
|
12
|
-
|
13
|
-
def current_class
|
14
|
-
Config.env == "test" ? fake_class : real_class
|
15
|
-
end
|
16
|
-
|
17
|
-
def real_class
|
18
|
-
raise NotImplementedError
|
19
|
-
end
|
20
|
-
|
21
|
-
def fake_class
|
22
|
-
raise NotImplementedError
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'tamashii/agent/adapter/base'
|
2
|
-
require 'tamashii/agent/device/pi_buzzer'
|
3
|
-
require 'tamashii/agent/device/fake_buzzer'
|
4
|
-
|
5
|
-
module Tamashii
|
6
|
-
module Agent
|
7
|
-
module Adapter
|
8
|
-
class Buzzer < Base
|
9
|
-
class << self
|
10
|
-
def real_class
|
11
|
-
Device::PIBuzzer
|
12
|
-
end
|
13
|
-
|
14
|
-
def fake_class
|
15
|
-
Device::FakeBuzzer
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'tamashii/agent/adapter/base'
|
2
|
-
require 'tamashii/agent/device/fake_card_reader'
|
3
|
-
|
4
|
-
module Tamashii
|
5
|
-
module Agent
|
6
|
-
module Adapter
|
7
|
-
class CardReader < Base
|
8
|
-
class << self
|
9
|
-
def real_class
|
10
|
-
MFRC522
|
11
|
-
end
|
12
|
-
|
13
|
-
def fake_class
|
14
|
-
Device::FakeCardReader
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'tamashii/agent/adapter/base'
|
2
|
-
require 'tamashii/agent/device/lcd'
|
3
|
-
require 'tamashii/agent/device/fake_lcd'
|
4
|
-
|
5
|
-
module Tamashii
|
6
|
-
module Agent
|
7
|
-
module Adapter
|
8
|
-
# :nodoc:
|
9
|
-
class LCD < Base
|
10
|
-
class << self
|
11
|
-
def real_class
|
12
|
-
Device::LCD
|
13
|
-
end
|
14
|
-
|
15
|
-
def fake_class
|
16
|
-
Device::FakeLCD
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'tamashii/agent/common'
|
2
|
-
module Tamashii
|
3
|
-
module Agent
|
4
|
-
module Device
|
5
|
-
class FakeBuzzer
|
6
|
-
include Common::Loggable
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
logger.debug "Initialized"
|
10
|
-
end
|
11
|
-
|
12
|
-
def play_ok
|
13
|
-
logger.debug "Played: OK"
|
14
|
-
end
|
15
|
-
|
16
|
-
def play_no
|
17
|
-
logger.debug "Played: No"
|
18
|
-
end
|
19
|
-
|
20
|
-
def play_error
|
21
|
-
logger.debug "Played: Error"
|
22
|
-
end
|
23
|
-
|
24
|
-
def stop
|
25
|
-
logger.debug "Stopped"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'tamashii/agent/common'
|
2
|
-
module Tamashii
|
3
|
-
module Agent
|
4
|
-
module Device
|
5
|
-
class FakeCardReader
|
6
|
-
include Common::Loggable
|
7
|
-
|
8
|
-
def initialize(*args)
|
9
|
-
logger.debug "Initialized"
|
10
|
-
@last_time = Time.now
|
11
|
-
end
|
12
|
-
|
13
|
-
def picc_request(*args)
|
14
|
-
if Time.now - @last_time > 2
|
15
|
-
@last_time = Time.now
|
16
|
-
if rand > 0.5
|
17
|
-
logger.debug "Fake Card Generated"
|
18
|
-
return true
|
19
|
-
else
|
20
|
-
return false
|
21
|
-
end
|
22
|
-
else
|
23
|
-
return false
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def picc_select(*args)
|
28
|
-
[Array.new(4){ rand(256)}, "sak"]
|
29
|
-
end
|
30
|
-
|
31
|
-
def picc_halt(*args)
|
32
|
-
end
|
33
|
-
|
34
|
-
def shutdown(*args)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|