da_funk 3.31.0 → 3.32.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5492c7a7c61fc8559c3d0267a010c62fc6b85f47ff9c40b6164d6afef3536cfd
4
- data.tar.gz: 06cccc06f994055eb85e68163412af8b076b2342a59661f92e2ab2907514be32
3
+ metadata.gz: b33827fb8e6019dae3a230de689a73d62065b71fe5d87cde66a5d034e10c8958
4
+ data.tar.gz: b88cd578be7d53abc94f00ffe3ff35fe21ecc028b75296c5d7b46391a35a6520
5
5
  SHA512:
6
- metadata.gz: 158eb51a52a2895383bfb2864c5717659aa3d601a3780c0abcc42029b3ad86e7606aa5b1c02c55bb95e6c90dbe187f55e5fdc0ab3a1af659a4320598ef192703
7
- data.tar.gz: cdff69f582095c79cbe9a5e1e063e495aec2a21fd74e29cc132b12653942b770da6d56d8fa309a07c433ea4e2d0a3ac8b9680c47692c109897d68020d615fa56
6
+ metadata.gz: 2f06599b79a0a3a2f098b2d544ef440231289d554737acf02cb7c1fae1a54509f503f6e66c7e90c2936eac9de0cab6aa3d9cdce8e9ebff2960adaf468c973dcb
7
+ data.tar.gz: 0d22fb804323266724e6efdf3eb79f075a69674cda33ee6321e3117a91983b9bed246bc2ae3c9408649c2ad20755c7e672b55a7c62502fdf77ff6d9562c9df20
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- da_funk (3.31.0)
4
+ da_funk (3.32.0)
5
5
  archive-zip (~> 0.5)
6
6
  bundler
7
7
  cloudwalk_handshake
@@ -1,5 +1,17 @@
1
1
  # DaFunk
2
2
 
3
+ ### 3.32.0 - 2021-01-04
4
+
5
+ - Remapped virtual keyboard to add support to new layout;
6
+ - Make timeout of virtual keyboard parametrized;
7
+ - Limit size of string to 20 on virtual keyboard;
8
+ - Refactoring status bar:
9
+ - Check if thread is paused which means communication it's being configured. In this case 'sem sinal' message should be displayed;
10
+ - Do not show media type an media icon if thread is paused;
11
+ - Removed thread pause from attach and scan calls, let the application that is doing the configuration take care of that;
12
+ - Move reload of metadata to communication thread;
13
+ - Added support to check network conn status from time to time, default is each 5 minutes.
14
+
3
15
  ### 3.31.0 - 2020-11-27
4
16
 
5
17
  - Added support to new battery view (Exact percentage);
@@ -1,21 +1,23 @@
1
1
  module DaFunk
2
2
  class ConnectionManagement
3
3
  class << self
4
- attr_accessor :drops, :primary_timeout
4
+ attr_accessor :drops, :primary_timeout, :last_time_check
5
5
  end
6
6
  self.drops = 0
7
7
  DEFAULT_DROP_LIMIT = 2
8
8
 
9
9
  def self.check
10
- if Device::Network.connected?
11
- if primary_try?
12
- :primary_communication
13
- end
14
- else
15
- if fallback?
16
- :fallback_communication
10
+ if must_check?
11
+ if Device::Network.connected?
12
+ if primary_try?
13
+ :primary_communication
14
+ end
17
15
  else
18
- :attach_registration_fail
16
+ if fallback?
17
+ :fallback_communication
18
+ else
19
+ :attach_registration_fail
20
+ end
19
21
  end
20
22
  end
21
23
  end
@@ -125,6 +127,19 @@ module DaFunk
125
127
  def self.schedule_primary_timeout
126
128
  self.primary_timeout = (Time.now + self.conn_fallback_timer)
127
129
  end
130
+
131
+ def self.must_check?
132
+ if self.last_time_check
133
+ if self.last_time_check < Time.now
134
+ self.last_time_check = Time.now + @value
135
+ true
136
+ end
137
+ else
138
+ @value = DaFunk::ParamsDat.file['conn_check_timer']
139
+ @value = @value.nil? ? 300 : @value * 60
140
+ self.last_time_check = Time.now + @value
141
+ true
142
+ end
143
+ end
128
144
  end
129
145
  end
130
-
@@ -18,21 +18,6 @@ module DaFunk
18
18
  SLOT_BATTERY_PERCENTUAL = 6
19
19
  SLOT_BATTERY_LEVEL = 7
20
20
 
21
- SLOT_MESSAGE_CONNECTION = {
22
- true => {
23
- :slot1 => 2,
24
- :slot2 => 3,
25
- :message1 => './shared/conectado_01.png',
26
- :message2 => './shared/conectado_02.png'
27
- },
28
- false => {
29
- :slot1 => 2,
30
- :slot2 => 3,
31
- :message1 => './shared/buscando_01.png',
32
- :message2 => './shared/buscando_02.png'
33
- }
34
- }
35
-
36
21
  # TODO: review the 'print_status_bar' API to reduce the number of files
37
22
  # to eleven?
38
23
  BATTERY_PERCENTAGE_IMAGES = [
@@ -72,6 +57,11 @@ module DaFunk
72
57
  './shared/99%.png', './shared/100%.png'
73
58
  ].freeze
74
59
 
60
+ MEDIA_PATH = {
61
+ :gprs => './shared/3G.png',
62
+ :wifi => './shared/WIFI.png'
63
+ }
64
+
75
65
  BATTERY_CHARGING = [
76
66
  "./shared/battery_charging.png",
77
67
  "./shared/battery_charged.png"
@@ -109,7 +99,8 @@ module DaFunk
109
99
  }
110
100
 
111
101
  class << self
112
- attr_accessor :signal, :battery, :power, :managment, :connected
102
+ attr_accessor :current_signal, :current_message, :battery, :power, :managment
103
+ attr_accessor :current_media
113
104
  end
114
105
 
115
106
  def self.check
@@ -124,51 +115,56 @@ module DaFunk
124
115
  if File.exists?('./shared/system_update')
125
116
  PAX::Display.print_status_bar(SLOT_UPDATE, "./shared/system_update_download.png")
126
117
  PAX::Display.print_status_bar(3, nil)
127
- self.connected = false
128
118
  else
129
119
  self.change_message
130
120
  end
131
121
  end
132
122
 
133
123
  def self.change_message
134
- unless File.exists?('./shared/system_update')
135
- connected = Device::Network.connected?
136
-
137
- if connected != self.connected
138
- self.connected = connected
139
-
140
- slot_message_1 = SLOT_MESSAGE_CONNECTION[self.connected][:slot1]
141
- slot_message_2 = SLOT_MESSAGE_CONNECTION[self.connected][:slot2]
142
-
143
- message_1 = SLOT_MESSAGE_CONNECTION[self.connected][:message1]
144
- message_2 = SLOT_MESSAGE_CONNECTION[self.connected][:message2]
145
-
146
- Device::Display.print_status_bar(slot_message_1, message_1)
147
- Device::Display.print_status_bar(slot_message_2, message_2)
124
+ if ThreadScheduler.pause?(ThreadScheduler::THREAD_EXTERNAL_COMMUNICATION, 200)
125
+ if self.current_message != :pause
126
+ self.current_message = :pause
127
+ Device::Display.print_status_bar(2, './shared/semsinal_01.png')
128
+ Device::Display.print_status_bar(3, './shared/semsinal_02.png')
129
+ end
130
+ elsif Device::Network.connected?
131
+ if self.current_message != :connected
132
+ self.current_message = :connected
133
+ Device::Display.print_status_bar(2, './shared/conectado_01.png')
134
+ Device::Display.print_status_bar(3, './shared/conectado_02.png')
135
+ end
136
+ else
137
+ if self.current_message != :searching
138
+ self.current_message = :searching
139
+ Device::Display.print_status_bar(2, './shared/buscando_01.png')
140
+ Device::Display.print_status_bar(3, './shared/buscando_02.png')
148
141
  end
149
142
  end
150
143
  end
151
144
 
152
145
  def self.change_connection
153
- if Device::Network.connected?
154
- sig = Device::Network.signal
155
-
156
- if self.signal != sig
157
- self.signal = sig
158
-
159
- if Device::Network.gprs?
160
- Device::Display.print_status_bar(SLOT_MEDIA, "./shared/3G.png")
161
- Device::Display.print_status_bar(SLOT_SIGNAL_LEVEL,
162
- get_image_path(:gprs, self.signal))
163
- elsif Device::Network.wifi?
164
- Device::Display.print_status_bar(SLOT_MEDIA, "./shared/WIFI.png")
165
- Device::Display.print_status_bar(SLOT_SIGNAL_LEVEL,
166
- self.get_image_path(:wifi, self.signal))
167
- end
146
+ if ThreadScheduler.pause?(ThreadScheduler::THREAD_EXTERNAL_COMMUNICATION, 200)
147
+ Device::Display.print_status_bar(SLOT_MEDIA, nil)
148
+ Device::Display.print_status_bar(SLOT_SIGNAL_LEVEL, nil)
149
+ self.current_media = nil
150
+ self.current_signal = nil
151
+ elsif Device::Network.connected?
152
+ media = Device::Network.gprs? ? :gprs : :wifi
153
+ signal = Device::Network.signal
154
+ if media != self.current_media
155
+ self.current_media = media
156
+ Device::Display.print_status_bar(SLOT_MEDIA, MEDIA_PATH[self.current_media])
157
+ end
158
+ if signal != self.current_signal
159
+ self.current_signal = signal
160
+ Device::Display.print_status_bar(SLOT_SIGNAL_LEVEL,
161
+ self.get_image_path(self.current_media, self.current_signal))
168
162
  end
169
163
  else
170
164
  Device::Display.print_status_bar(SLOT_MEDIA, nil)
171
165
  Device::Display.print_status_bar(SLOT_SIGNAL_LEVEL, "./shared/searching.png")
166
+ self.current_media = nil
167
+ self.current_signal = nil
172
168
  end
173
169
  end
174
170
 
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="3.31.0"
2
+ VERSION="3.32.0"
3
3
  end
4
4
 
@@ -159,9 +159,7 @@ class Device
159
159
  # Device::Setting.mode = selected[:mode]
160
160
  def self.scan
161
161
  if wifi?
162
- ThreadScheduler.pausing_communication do
163
- adapter.scan if Device::Network.init(*self.config)
164
- end
162
+ adapter.scan if Device::Network.init(*self.config)
165
163
  end
166
164
  end
167
165
 
@@ -192,39 +190,28 @@ class Device
192
190
  def self.attach(options = nil)
193
191
  Device::Network.connected?
194
192
  if self.code != SUCCESS
195
- ThreadScheduler.pausing_communication do
196
- self.code = Device::Network.init(*self.config)
197
- self.code = Device::Network.connect
198
- Device::Network.connected? if self.code != SUCCESS
199
-
200
- hash = try_user(self.attach_timeout, options) do |process|
201
- Device::Network.connected?
202
- process[:ret] = self.code
203
- # TODO develop an interface to keep waiting communication module dial
204
- # based on platform returns
205
- process[:ret] == PROCESSING || process[:ret] == 2 || process[:ret] == -3307 # if true keep trying
206
- end
207
- self.code = hash[:ret]
208
-
209
- if self.code == SUCCESS
210
- self.load_metadata
211
- self.code = Device::Network.dhcp_client(20000) if (wifi? || ethernet?)
212
- else
213
- self.code = ERR_USER_CANCEL if hash[:key] == Device::IO::CANCEL
214
- Device::Network.shutdown
215
- end
193
+ self.code = Device::Network.init(*self.config)
194
+ self.code = Device::Network.connect
195
+ Device::Network.connected? if self.code != SUCCESS
196
+
197
+ hash = try_user(self.attach_timeout, options) do |process|
198
+ Device::Network.connected?
199
+ process[:ret] = self.code
200
+ # TODO develop an interface to keep waiting communication module dial
201
+ # based on platform returns
202
+ process[:ret] == PROCESSING || process[:ret] == 2 || process[:ret] == -3307 # if true keep trying
216
203
  end
217
- end
218
- Context::ThreadPubSub.publish('communication_update')
219
- self.code
220
- end
204
+ self.code = hash[:ret]
221
205
 
222
- def self.load_metadata
223
- if Object.const_defined?(:CwMetadata)
224
- CwMetadata.load_variable if CwMetadata.respond_to?(:load_variable)
206
+ if self.code == SUCCESS
207
+ self.code = Device::Network.dhcp_client(20000) if (wifi? || ethernet?)
208
+ else
209
+ self.code = ERR_USER_CANCEL if hash[:key] == Device::IO::CANCEL
210
+ Device::Network.shutdown
211
+ end
225
212
  end
213
+ self.code
226
214
  end
227
-
228
215
  def self.shutdown
229
216
  if self.adapter.started?
230
217
  Device::Network.disconnect
@@ -276,4 +263,3 @@ class Device
276
263
  end
277
264
  end
278
265
  end
279
-
@@ -82,34 +82,76 @@ class Device
82
82
  ],
83
83
 
84
84
  keyboard_symbol_number: [
85
- { x: 0..35, y: 190..210, char: '(' },
86
- { x: 0..68, y: 190..210, char: ')' },
87
- { x: 0..104, y: 190..210, char: '1' },
88
- { x: 0..138, y: 190..210, char: '2' },
89
- { x: 0..169, y: 190..210, char: '3' },
90
- { x: 0..203, y: 190..210, char: '+' },
91
- { x: 0..239, y: 190..210, char: '-' },
92
- { x: 0..35, y: 220..245, char: '?' },
93
- { x: 0..68, y: 220..245, char: '$' },
94
- { x: 0..104, y: 220..245, char: '4' },
95
- { x: 0..138, y: 220..245, char: '5' },
96
- { x: 0..169, y: 220..245, char: '6' },
97
- { x: 0..203, y: 220..245, char: '*' },
98
- { x: 0..239, y: 220..245, char: '/' },
99
- { x: 0..35, y: 255..275, char: '!' },
100
- { x: 0..68, y: 255..275, char: ';' },
101
- { x: 0..104, y: 255..275, char: '7' },
102
- { x: 0..138, y: 255..275, char: '8' },
103
- { x: 0..169, y: 255..275, char: '9' },
104
- { x: 0..203, y: 255..275, char: '=' },
105
- { x: 0..239, y: 255..275, char: :erase },
106
- { x: 0..35, y: 290..315, char: :keyboard_capital },
107
- { x: 0..68, y: 290..315, char: '@' },
108
- { x: 0..104, y: 290..315, char: '%' },
109
- { x: 0..138, y: 290..315, char: '0' },
110
- { x: 0..169, y: 290..315, char: '#' },
111
- { x: 0..203, y: 290..315, char: '_' },
112
- { x: 0..239, y: 290..315, char: :enter }
85
+ { x: 0..34, y: 191..209, char: '1' },
86
+ { x: 0..46, y: 191..209, char: '2' },
87
+ { x: 0..65, y: 191..209, char: '3' },
88
+ { x: 0..96, y: 191..209, char: '4' },
89
+ { x: 0..115, y: 191..209, char: '5' },
90
+ { x: 0..145, y: 191..209, char: '6' },
91
+ { x: 0..161, y: 191..209, char: '7' },
92
+ { x: 0..191, y: 191..209, char: '8' },
93
+ { x: 0..216, y: 191..209, char: '9' },
94
+ { x: 0..255, y: 191..209, char: '0' },
95
+ { x: 0..31, y: 223..241, char: '%' },
96
+ { x: 0..52, y: 223..241, char: '#' },
97
+ { x: 0..77, y: 223..241, char: '$' },
98
+ { x: 0..97, y: 223..241, char: '_' },
99
+ { x: 0..121, y: 223..241, char: '&' },
100
+ { x: 0..143, y: 223..241, char: '-' },
101
+ { x: 0..168, y: 223..241, char: '+' },
102
+ { x: 0..186, y: 223..241, char: '(' },
103
+ { x: 0..215, y: 223..241, char: ')' },
104
+ { x: 0..236, y: 223..241, char: '/' },
105
+ { x: 0..42, y: 223..274, char: :keyboard_symbol_number_2 },
106
+ { x: 0..60, y: 223..274, char: '*' },
107
+ { x: 0..84, y: 223..274, char: '"' },
108
+ { x: 0..107, y: 223..274, char: "'" },
109
+ { x: 0..130, y: 223..274, char: ':' },
110
+ { x: 0..152, y: 223..274, char: ';' },
111
+ { x: 0..171, y: 223..274, char: '!' },
112
+ { x: 0..197, y: 223..274, char: '?' },
113
+ { x: 0..255, y: 223..274, char: :erase },
114
+ { x: 0..36, y: 223..315, char: :keyboard_capital },
115
+ { x: 0..63, y: 223..315, char: '@' },
116
+ { x: 0..88, y: 223..315, char: ',' },
117
+ { x: 0..152, y: 223..315, char: :space },
118
+ { x: 0..168, y: 223..315, char: '.' },
119
+ { x: 0..255, y: 223..315, char: :enter }
120
+ ],
121
+
122
+ keyboard_symbol_number_2: [
123
+ { x: 0..34, y: 191..209, char: '1' },
124
+ { x: 0..46, y: 191..209, char: '2' },
125
+ { x: 0..69, y: 191..209, char: '3' },
126
+ { x: 0..96, y: 191..209, char: '4' },
127
+ { x: 0..115, y: 191..209, char: '5' },
128
+ { x: 0..145, y: 191..209, char: '6' },
129
+ { x: 0..161, y: 191..209, char: '7' },
130
+ { x: 0..191, y: 191..209, char: '8' },
131
+ { x: 0..216, y: 191..209, char: '9' },
132
+ { x: 0..255, y: 191..209, char: '0' },
133
+ { x: 0..35, y: 223..241, char: '^' },
134
+ { x: 0..63, y: 223..241, char: '[' },
135
+ { x: 0..97, y: 223..241, char: ']' },
136
+ { x: 0..128, y: 223..241, char: '{' },
137
+ { x: 0..158, y: 223..241, char: '}' },
138
+ { x: 0..193, y: 223..241, char: '<' },
139
+ { x: 0..255, y: 223..241, char: '>' },
140
+ { x: 0..39, y: 223..274, char: :keyboard_symbol_number },
141
+ { x: 0..63, y: 223..274, char: '\\' },
142
+ { x: 0..86, y: 223..274, char: '-' },
143
+ { x: 0..106, y: 223..274, char: '+' },
144
+ { x: 0..130, y: 223..274, char: '=' },
145
+ { x: 0..149, y: 223..274, char: '_' },
146
+ { x: 0..175, y: 223..274, char: '˜' },
147
+ { x: 0..195, y: 223..274, char: '|' },
148
+ { x: 0..255, y: 223..274, char: :erase },
149
+ { x: 0..34, y: 223..310, char: :keyboard_capital },
150
+ { x: 0..61, y: 223..310, char: '@' },
151
+ { x: 0..87, y: 223..310, char: ',' },
152
+ { x: 0..146, y: 223..313, char: :space },
153
+ { x: 0..168, y: 223..311, char: '.' },
154
+ { x: 0..194, y: 223..319, char: :enter }
113
155
  ]
114
156
  }
115
157
 
@@ -117,9 +159,11 @@ class Device
117
159
  phisical_keys = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', "\017"]
118
160
  change_keyboard
119
161
  Device::Display.print_line("#{self.text}", params[:line], params[:column])
120
- time = Time.now + (params[:timeout] || Device::IO.timeout) / 1000
121
- key = nil
162
+ if params[:timeout_enabled]
163
+ time = Time.now + (params[:timeout] || Device::IO.timeout) / 1000
164
+ end
122
165
 
166
+ key = nil
123
167
  while text_not_ready?(key)
124
168
  line_x, line_y = getxy_stream(100)
125
169
 
@@ -127,8 +171,9 @@ class Device
127
171
  touch_clear
128
172
  key = parse(line_x, line_y, params)
129
173
  else
130
- break(Device::IO::KEY_TIMEOUT) if Time.now > time
131
-
174
+ if params[:timeout_enabled]
175
+ break(Device::IO::KEY_TIMEOUT) if Time.now > time
176
+ end
132
177
  key = getc(100)
133
178
  if phisical_keys.include?(key)
134
179
  if key == Device::IO::BACK
@@ -161,7 +206,7 @@ class Device
161
206
 
162
207
  def self.show_text(key, params)
163
208
  case key[:char]
164
- when :keyboard_uppercase, :keyboard_symbol_number, :keyboard_capital
209
+ when :keyboard_uppercase, :keyboard_symbol_number, :keyboard_symbol_number_2, :keyboard_capital
165
210
  self.type = key[:char]
166
211
  change_keyboard
167
212
  when :erase
@@ -170,7 +215,9 @@ class Device
170
215
  when :space
171
216
  self.text += ' '
172
217
  else
173
- self.text << key[:char] unless key[:char] == :enter
218
+ if self.text && self.text.size < 20
219
+ self.text << key[:char] unless key[:char] == :enter
220
+ end
174
221
  end
175
222
  Device::Display.print_line("#{self.text}", params[:line], params[:column])
176
223
  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: 3.31.0
4
+ version: 3.32.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: 2020-11-27 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  - !ruby/object:Gem::Version
260
260
  version: '0'
261
261
  requirements: []
262
- rubygems_version: 3.0.6
262
+ rubygems_version: 3.1.2
263
263
  signing_key:
264
264
  specification_version: 4
265
265
  summary: MRuby Embedded System Framework