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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/exe/tamashii-agent +7 -5
  3. data/lib/tamashii/agent/buzzer.rb +11 -5
  4. data/lib/tamashii/agent/card_reader.rb +21 -21
  5. data/lib/tamashii/agent/common.rb +25 -0
  6. data/lib/tamashii/agent/component.rb +38 -3
  7. data/lib/tamashii/agent/config.rb +13 -2
  8. data/lib/tamashii/agent/device/buzzer/base.rb +26 -0
  9. data/lib/tamashii/agent/device/buzzer/dummy.rb +32 -0
  10. data/lib/tamashii/agent/device/buzzer/gpio_buzzer.rb +89 -0
  11. data/lib/tamashii/agent/device/card_reader/base.rb +16 -0
  12. data/lib/tamashii/agent/device/card_reader/dummy.rb +37 -0
  13. data/lib/tamashii/agent/device/card_reader/mfrc522_spi.rb +43 -0
  14. data/lib/tamashii/agent/device/card_reader/pn532_uart.rb +52 -0
  15. data/lib/tamashii/agent/device/device_base.rb +20 -0
  16. data/lib/tamashii/agent/device/lcd/base.rb +29 -0
  17. data/lib/tamashii/agent/device/lcd/dummy.rb +30 -0
  18. data/lib/tamashii/agent/device/lcd/lcm1602_i2c.rb +133 -0
  19. data/lib/tamashii/agent/handler/base.rb +2 -2
  20. data/lib/tamashii/agent/handler/lcd.rb +1 -1
  21. data/lib/tamashii/agent/handler/remote_response.rb +1 -1
  22. data/lib/tamashii/agent/lcd.rb +14 -16
  23. data/lib/tamashii/agent/master.rb +20 -22
  24. data/lib/tamashii/agent/{connection.rb → networking.rb} +5 -6
  25. data/lib/tamashii/agent/{connection → networking}/request_observer.rb +5 -5
  26. data/lib/tamashii/agent/version.rb +1 -1
  27. data/tamashii-agent.gemspec +4 -3
  28. metadata +32 -16
  29. data/lib/tamashii/agent/adapter/base.rb +0 -28
  30. data/lib/tamashii/agent/adapter/buzzer.rb +0 -21
  31. data/lib/tamashii/agent/adapter/card_reader.rb +0 -20
  32. data/lib/tamashii/agent/adapter/lcd.rb +0 -22
  33. data/lib/tamashii/agent/device/fake_buzzer.rb +0 -30
  34. data/lib/tamashii/agent/device/fake_card_reader.rb +0 -40
  35. data/lib/tamashii/agent/device/fake_lcd.rb +0 -31
  36. data/lib/tamashii/agent/device/lcd.rb +0 -91
  37. data/lib/tamashii/agent/device/pi_buzzer.rb +0 -70
@@ -1,5 +1,5 @@
1
1
  require 'tamashii/agent/common'
2
- require 'tamashii/agent/connection'
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(host, port)
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
- create_component(Connection, self)
47
- create_component(Buzzer, self)
48
- create_component(LCD, self)
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(class_name, *args)
53
- c = class_name.new(*args)
54
- logger.info "Starting component: #{class_name}"
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(&params[:block]) if params[:block]
55
53
  yield c if block_given?
56
54
  c.run
57
- @components[class_name] = c
58
-
59
- c
55
+ @components[name] = c
60
56
  end
61
57
 
62
- def restart_component(class_name)
63
- if old_component = @components[class_name]
64
- logger.info "Stopping component: #{class_name}"
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: #{class_name}"
67
- create_component(class_name, self)
63
+ logger.info "Restarting component: #{name}"
64
+ create_component(name, params)
68
65
  else
69
- logger.error "Rstart component failed: unknown component #{name}"
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 Connection < Component
17
+ class Networking < Component
18
18
 
19
- autoload :RequestObserver, 'tamashii/agent/connection/request_observer'
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 = {connection: self}
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::LCD, env_data
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 Connection
5
+ class Networking
6
6
  class RequestObserver
7
7
 
8
8
  include Common::Loggable
9
- def initialize(connection, id, ev_type, ev_body, future)
10
- @connection = connection
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
- @connection.handle_card_result(JSON.parse(res_ev_body))
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
- @connection.on_request_timeout(@ev_type, @ev_body)
30
+ @networking.on_request_timeout(@ev_type, @ev_body)
31
31
  end
32
32
  end
33
33
  end
@@ -1,5 +1,5 @@
1
1
  module Tamashii
2
2
  module Agent
3
- VERSION = "0.3.0"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
@@ -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/5xruby/tamashii-agent"
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.0
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-07 00:00:00.000000000 Z
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: '0'
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: '0'
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/connection.rb
286
- - lib/tamashii/agent/connection/request_observer.rb
287
- - lib/tamashii/agent/device/fake_buzzer.rb
288
- - lib/tamashii/agent/device/fake_card_reader.rb
289
- - lib/tamashii/agent/device/fake_lcd.rb
290
- - lib/tamashii/agent/device/lcd.rb
291
- - lib/tamashii/agent/device/pi_buzzer.rb
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/5xruby/tamashii-agent
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
-