da_funk 0.6.7 → 0.7.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4ecfc56704e73c282ee07fba23ce1fd9b80a3999
4
- data.tar.gz: 23a3e8272e9b54cf3f83eb50f61935fda1c480d4
3
+ metadata.gz: 4ec3525c8b86df99abedcdc53570b5566932e225
4
+ data.tar.gz: e9a9f6add66d948a31ccf63353a8b104a3b5f508
5
5
  SHA512:
6
- metadata.gz: 6332262e7d61471e94141fba3358a43130d35c64504fafb74ab494c8572ad9a9d29f185dc641fd7f3df35096232ef75b7b8082297f9b1ff2244c9669d7909dee
7
- data.tar.gz: 750db4f4957e904bf1800c786cefcf5b7784c13cc6b0a0da041934c15f5ec9a4adbe3495d84aff5cc443f421d3160960db5d6021154ba4401d7c54b5c5d65cb3
6
+ metadata.gz: dd7f60bf1c62851bc4ce07cb0fcf7f8b1d2e7ee9657a5184e686a9593a58a41629e870371393c6bb776e2d945898385663cfcdcaba462bbf2f9f793f77a18a72
7
+ data.tar.gz: 053fbb6613d76a2d8125b012597e49ba61d7b5ba100cc7eb1f26b74f5971e1a892da9b5d369c4c371a43c77a57ade4db9e16a540efe2ba5a953d2ee7d9c366e3
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- da_funk (0.6.7)
4
+ da_funk (0.7.0)
5
5
  bundler (~> 1.7)
6
6
  cloudwalk_handshake (~> 0.5)
7
7
  posxml_parser (~> 0.6)
@@ -13,7 +13,7 @@ GEM
13
13
  specs:
14
14
  cloudwalk_handshake (0.5.4)
15
15
  funky-simplehttp (0.4.4)
16
- posxml_parser (0.7.3)
16
+ posxml_parser (0.7.7)
17
17
  rake (10.5.0)
18
18
  yard (0.8.7.6)
19
19
 
@@ -1,5 +1,17 @@
1
1
  # DaFunk
2
2
 
3
+ ### 0.7.0 - 2016-03-10 - EventListener and EventHandler
4
+
5
+ - Implemented method each for FileDb.
6
+ - Implement method to_json to array and hash on an extension.
7
+ - Extract app_loop method from Device to DaFunk::Engine.
8
+ - Implement method Magnetic#bin? to change range read.
9
+ - Implement EventListener and EventHandler to deal with custom events.
10
+ - Remove Notification setup from app_loop and DaFunk responsibility.
11
+ - Change status bar update timeout to 60 seconds.
12
+ - Implemented Magnetic#read? to check if status is STATUS_SUCCESSFUL_READ.
13
+ - Update posxml_parser to version 0.7.6.
14
+
3
15
  ### 0.6.7 - 2016-02-29 - DaFunk::Engine and DaFunk::StatusBar
4
16
 
5
17
  - Refactoring screen string manipulation.
data/Rakefile CHANGED
@@ -9,6 +9,10 @@ DA_FUNK_ROOT = File.dirname(File.expand_path(__FILE__))
9
9
  FileUtils.cd DA_FUNK_ROOT
10
10
 
11
11
  FILES = FileList[
12
+ "lib/ext/kernel.rb",
13
+ "lib/ext/string.rb",
14
+ "lib/ext/array.rb",
15
+ "lib/ext/hash.rb",
12
16
  "lib/device/version.rb",
13
17
  "lib/da_funk/version.rb",
14
18
  "lib/da_funk/helper.rb",
@@ -21,6 +25,8 @@ FILES = FileList[
21
25
  "lib/da_funk/i18n.rb",
22
26
  "lib/da_funk/file_parameter.rb",
23
27
  "lib/da_funk/helper/status_bar.rb",
28
+ "lib/da_funk/event_listener.rb",
29
+ "lib/da_funk/event_handler.rb",
24
30
  "lib/da_funk/engine.rb",
25
31
  "lib/device.rb",
26
32
  "lib/device/audio.rb",
@@ -58,9 +64,7 @@ FILES = FileList[
58
64
  "lib/device/notification.rb",
59
65
  "lib/device/application.rb",
60
66
  "lib/zip.rb",
61
- "lib/device/magnetic.rb",
62
- "lib/ext/kernel.rb",
63
- "lib/ext/string.rb"
67
+ "lib/device/magnetic.rb"
64
68
  ]
65
69
 
66
70
  DaFunk::RakeTask.new do |t|
@@ -1,15 +1,23 @@
1
1
  module DaFunk
2
2
  class Engine
3
- def self.setup
4
- Device::Display.clear
5
- puts "SETUP NOTIFICATIONS..."
6
- Device::Notification.setup
7
- end
8
-
9
3
  def self.check
4
+ DaFunk::EventListener.check
10
5
  Device::Notification.check
11
6
  DaFunk::Helper::StatusBar.check
12
7
  end
8
+
9
+ def self.app_loop(&block)
10
+ @stop = false
11
+ loop do
12
+ self.check
13
+ break if @stop
14
+ block.call
15
+ end
16
+ end
17
+
18
+ def self.stop!
19
+ @stop = true
20
+ end
13
21
  end
14
22
  end
15
23
 
@@ -0,0 +1,21 @@
1
+ module DaFunk
2
+ class EventHandler
3
+ attr_reader :option, :type
4
+
5
+ def initialize(type, option, &block)
6
+ @type = type
7
+ @option = option
8
+ @perform_block = block
9
+ self.register
10
+ end
11
+
12
+ def register
13
+ EventListener.add_handler(self)
14
+ end
15
+
16
+ def perform(*parameter)
17
+ @perform_block.call(*parameter)
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,80 @@
1
+ module DaFunk
2
+ class EventListener
3
+ class << self
4
+ attr_accessor :listeners
5
+ end
6
+
7
+ self.listeners = {}
8
+
9
+ def self.check
10
+ self.listeners.each { |type, listener| listener.check }
11
+ end
12
+
13
+ def self.register(event_listener)
14
+ self.listeners[event_listener.type] = event_listener
15
+ end
16
+
17
+ def self.delete(event_listener)
18
+ self.listeners.delete(self.type)
19
+ end
20
+
21
+ def self.add_handler(handler)
22
+ if listener = self.listeners[handler.type]
23
+ listener.handlers[handler.option] = handler
24
+ end
25
+ end
26
+
27
+ attr_accessor :block_start, :block_check, :block_finish, :handlers
28
+ attr_reader :type
29
+
30
+ def initialize(type)
31
+ @type = type
32
+ @handlers = {}
33
+ yield self if block_given?
34
+ self.register
35
+ self.start
36
+ end
37
+
38
+ def register
39
+ EventListener.register(self)
40
+ end
41
+
42
+ def delete
43
+ self.finish if sel.started?
44
+ EventListener.delete(self)
45
+ end
46
+
47
+ def start(&block)
48
+ if block_given?
49
+ @block_start = block
50
+ else
51
+ @started = true
52
+ @block_start.call if @block_start
53
+ end
54
+ end
55
+
56
+ def check(&block)
57
+ if block_given?
58
+ @block_check = block
59
+ else
60
+ if @block_check && ! self.handlers.empty?
61
+ @block_check.call
62
+ end
63
+ end
64
+ end
65
+
66
+ def finish(&block)
67
+ if block_given?
68
+ @block_finish = block
69
+ else
70
+ @started = false
71
+ @block_finish.call if @block_finish
72
+ end
73
+ end
74
+
75
+ def started?
76
+ @started
77
+ end
78
+ end
79
+ end
80
+
@@ -1,7 +1,7 @@
1
1
  module DaFunk
2
2
  module Helper
3
3
  class StatusBar
4
- STATUS_TIMEOUT = 10
4
+ STATUS_TIMEOUT = 60
5
5
  SLOT_CONNECTION = 0
6
6
  SLOT_BATTERY = 7
7
7
 
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="0.6.7"
2
+ VERSION="0.7.0"
3
3
  end
4
4
 
@@ -17,13 +17,5 @@ class Device
17
17
 
18
18
  def self.call(*args)
19
19
  end
20
-
21
- def self.app_loop(&block)
22
- DaFunk::Engine.setup
23
- loop do
24
- DaFunk::Engine.check
25
- block.call(self)
26
- end
27
- end
28
20
  end
29
21
 
@@ -50,7 +50,7 @@ class Device
50
50
 
51
51
  # Setup Keyboard Map
52
52
  #
53
- # @param key_map [Array] contains the key map from 1 to 0 (0..9)
53
+ # @param map [Array] contains the key map from 1 to 0 (0..9)
54
54
  # @return [NilClass] nil.
55
55
  #
56
56
  # @example
@@ -138,7 +138,7 @@ class Device
138
138
  text = text[0..-2]
139
139
  elsif key == ENTER || key == KEY_TIMEOUT
140
140
  return text
141
- elsif key == F1 || key == DOWN || key == UP
141
+ elsif key == F1 || key == DOWN || key == UP
142
142
  change_next(text, check_mask_type(text, options))
143
143
  next
144
144
  elsif text.size >= max
@@ -52,6 +52,10 @@ class Device
52
52
  false
53
53
  end
54
54
 
55
+ def read?
56
+ @status == STATUS_SUCCESSFUL_READ
57
+ end
58
+
55
59
  def read
56
60
  adapter.read
57
61
  end
@@ -65,6 +69,16 @@ class Device
65
69
  @tracks
66
70
  end
67
71
 
72
+ def bin?(value)
73
+ tracks if STATUS_SUCCESSFUL_READ
74
+ digits = track2.to_s[0..3]
75
+ if value.is_a?(Range) && ! digits.empty? && digits.integer?
76
+ value.include? digits.to_f
77
+ else
78
+ digits.to_s == value.to_s
79
+ end
80
+ end
81
+
68
82
  private
69
83
  def read_tracks
70
84
  @tracks = adapter.tracks
@@ -48,23 +48,6 @@ class Device
48
48
  end
49
49
  end
50
50
 
51
- def self.setup
52
- NotificationCallback.new "APP_UPDATE", :on => Proc.new { Device::ParamsDat.update_apps(true) }
53
- NotificationCallback.new "SETUP_DEVICE_CONFIG", :on => Proc.new { Device::ParamsDat.update_apps(true) }
54
- NotificationCallback.new "RESET_DEVICE_CONFIG", :on => Proc.new { Device::ParamsDat.format! }
55
-
56
- NotificationCallback.new "SYSTEM_UPDATE", :on => Proc.new { |file| }
57
- NotificationCallback.new "CANCEL_SYSTEM_UPDATE", :on => Proc.new { }
58
- NotificationCallback.new "TIMEZONE_UPDATE", :on => Proc.new { Device::Setting.cw_pos_timezone = "" }
59
- NotificationCallback.new "SHOW_MESSAGE", :on => Proc.new { |message, datetime|
60
- Device::Display.clear
61
- date = datetime.sub(" ", "-").split("-")
62
- Device::Display.print_line("#{date[1]}/#{date[0]}/#{date[2]} #{date[3]}", 0)
63
- Device::Display.print_line("#{message}", 2)
64
- getc(0)
65
- }
66
- end
67
-
68
51
  def self.create_fiber?
69
52
  (! Device::Setting.company_name.empty?) && (! Device::Setting.logical_number.empty?) && self.valid_creation_interval?
70
53
  end
@@ -87,6 +70,7 @@ class Device
87
70
 
88
71
  # Check if there is any notification
89
72
  def check
73
+ # TODO check if should execute this(because of connection exception)
90
74
  if valid_check_interval? && Device::Network.connected? == Device::Network::SUCCESS
91
75
  if @fiber.alive?
92
76
  if (notification = @fiber.resume)
@@ -0,0 +1,6 @@
1
+ class Array
2
+ def to_json
3
+ JSON::stringify(self)
4
+ end
5
+ end
6
+
@@ -0,0 +1,6 @@
1
+ class Hash
2
+ def to_json
3
+ JSON::stringify(self)
4
+ end
5
+ end
6
+
@@ -25,6 +25,10 @@ class FileDb
25
25
  end
26
26
  end
27
27
 
28
+ def each(&block)
29
+ @hash.each(&block)
30
+ end
31
+
28
32
  def save
29
33
  file_new = File.open(@path, "w+")
30
34
  @hash.each do |line_key, line_value|
@@ -64,8 +64,8 @@ module Serfx
64
64
  # @return [Hash]
65
65
  def read_data(read_timeout = self.timeout)
66
66
  buf = read_buffer(read_timeout)
67
- return if buf.nil?
68
- return {'Error' => "Socket closed"} if buf.empty?
67
+ return {'Error' => "Socket closed"} if buf.nil?
68
+ return if buf.empty?
69
69
  parse_package(buf)
70
70
  end
71
71
 
@@ -85,9 +85,9 @@ module Serfx
85
85
  bytes = socket.bytes_available
86
86
  return socket.recv_nonblock(bytes) if bytes > 0
87
87
  break unless time_timeout > Time.now
88
- sleep 1
88
+ usleep 200_000
89
89
  end
90
- nil
90
+ ""
91
91
  end
92
92
 
93
93
  # takes raw RPC command name and an optional request body
@@ -0,0 +1,5 @@
1
+
2
+ class DaFunkEventListenerTest < DaFunk::Test.case
3
+ def setup
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: da_funk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Scalone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-29 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -112,6 +112,8 @@ files:
112
112
  - lib/da_funk.rb
113
113
  - lib/da_funk/callback_flow.rb
114
114
  - lib/da_funk/engine.rb
115
+ - lib/da_funk/event_handler.rb
116
+ - lib/da_funk/event_listener.rb
115
117
  - lib/da_funk/file_parameter.rb
116
118
  - lib/da_funk/helper.rb
117
119
  - lib/da_funk/helper/status_bar.rb
@@ -145,6 +147,8 @@ files:
145
147
  - lib/device/transaction/emv.rb
146
148
  - lib/device/transaction/iso.rb
147
149
  - lib/device/version.rb
150
+ - lib/ext/array.rb
151
+ - lib/ext/hash.rb
148
152
  - lib/ext/kernel.rb
149
153
  - lib/ext/string.rb
150
154
  - lib/file_db.rb
@@ -170,6 +174,7 @@ files:
170
174
  - test/integration/params_dat_test.rb
171
175
  - test/resources/shared/bitmap.dat
172
176
  - test/test_helper.rb
177
+ - test/unit/da_funk/event_listener_test.rb
173
178
  - test/unit/device/application_test.rb
174
179
  - test/unit/device/display_test.rb
175
180
  - test/unit/device/helper_test.rb
@@ -215,6 +220,7 @@ test_files:
215
220
  - test/integration/params_dat_test.rb
216
221
  - test/resources/shared/bitmap.dat
217
222
  - test/test_helper.rb
223
+ - test/unit/da_funk/event_listener_test.rb
218
224
  - test/unit/device/application_test.rb
219
225
  - test/unit/device/display_test.rb
220
226
  - test/unit/device/helper_test.rb