Class: Tamashii::Agent::CardReader
Constant Summary
collapse
- ERROR_RESET_TIMER =
5
Instance Method Summary
collapse
Methods inherited from Component
#check_new_event, #display_name, #get_device_instance, #handle_new_event, #initialize_device, #load_default_device, #restart_current_component_async, #run, #run!, #run_worker_loop, #send_event, #stop, #stop_threads
#display_name, #logger, #progname
Constructor Details
#initialize(name, master, options = {}) ⇒ CardReader
Returns a new instance of CardReader.
12
13
14
15
|
# File 'lib/tamashii/agent/card_reader.rb', line 12
def initialize(name, master, options = {})
super
@reader = initialize_device
end
|
Instance Method Details
#clean_up ⇒ Object
80
81
82
83
|
# File 'lib/tamashii/agent/card_reader.rb', line 80
def clean_up
super
@reader.shutdown
end
|
#default_device_name ⇒ Object
17
18
19
|
# File 'lib/tamashii/agent/card_reader.rb', line 17
def default_device_name
'Dummy'
end
|
#get_device_class_name(device_name) ⇒ Object
21
22
23
|
# File 'lib/tamashii/agent/card_reader.rb', line 21
def get_device_class_name(device_name)
"CardReader::#{device_name}"
end
|
#handle_card ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/tamashii/agent/card_reader.rb', line 55
def handle_card
uid = @reader.poll_uid
case uid
when nil
return false
when :error
set_error_timer
return false
else
process_uid(uid)
reset_error_timer
return true
end
end
|
#process_event(event) ⇒ Object
76
77
78
|
# File 'lib/tamashii/agent/card_reader.rb', line 76
def process_event(event)
end
|
#process_uid(uid) ⇒ Object
70
71
72
73
|
# File 'lib/tamashii/agent/card_reader.rb', line 70
def process_uid(uid)
logger.info "New card detected, UID: #{uid}"
@master.send_event(Event.new(Event::CARD_DATA, uid.join('-')))
end
|
#reset_error_timer ⇒ Object
25
26
27
28
29
30
|
# File 'lib/tamashii/agent/card_reader.rb', line 25
def reset_error_timer
return unless @error_timer_task
@error_timer_task.cancel
@error_timer_task = nil
logger.info "Error timer is reset"
end
|
#set_error_timer ⇒ Object
32
33
34
35
36
|
# File 'lib/tamashii/agent/card_reader.rb', line 32
def set_error_timer
return if @error_timer_task && !@error_timer_task.unscheduled?
logger.info "Error timer is set"
@error_timer_task = Concurrent::ScheduledTask.execute(ERROR_RESET_TIMER) { restart_current_component_async }
end
|
#worker_loop ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/tamashii/agent/card_reader.rb', line 39
def worker_loop
loop do
if !handle_new_event(true)
sleep 0.1
end
if handle_card
sleep 1.0
else
sleep 0.1
end
end
end
|