da_funk 3.29.1 → 3.33.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/RELEASE_NOTES.md +34 -0
- data/Rakefile +1 -0
- data/lib/da_funk/connection_management.rb +25 -10
- data/lib/da_funk/event_handler.rb +1 -1
- data/lib/da_funk/helper.rb +55 -16
- data/lib/da_funk/helper/status_bar.rb +158 -105
- data/lib/da_funk/params_dat.rb +65 -25
- data/lib/da_funk/rake_task.rb +13 -6
- data/lib/da_funk/transaction/reversal.rb +13 -0
- data/lib/da_funk/version.rb +1 -1
- data/lib/device/display.rb +13 -3
- data/lib/device/io.rb +53 -0
- data/lib/device/network.rb +19 -33
- data/lib/device/system.rb +9 -0
- data/lib/device/virtual_keyboard.rb +81 -34
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8eeac1f3c7449183cfd65b190bd2ca9515f586eb55af7e70fa6ac38762a8ae80
|
4
|
+
data.tar.gz: be5906723b2ef951f592bf8434626f7cac9b20a01f699432132692e0a2df8428
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9667b789d09b2d1ccc41734b1112a243eec58e91504c85618f9177c4e007ab9ec59e857c99f867295794b5bba3d2c33c25e66e2061fa09b47ee2c3c7b2f929b5
|
7
|
+
data.tar.gz: 693e92596f8be1c74e338e2d3b6bebe20d9b4c9f190f4bee820e76046350039cd8317379a3e9b59101183a9525881110a6e8a94c4527d5601de36bb7c00fde77
|
data/Gemfile.lock
CHANGED
data/RELEASE_NOTES.md
CHANGED
@@ -1,5 +1,39 @@
|
|
1
1
|
# DaFunk
|
2
2
|
|
3
|
+
### 3.33.1 - 2021-02-19
|
4
|
+
|
5
|
+
- Fixed argument being passed to hours2seconds method which was nil;
|
6
|
+
|
7
|
+
### 3.33.0 - 2021-02-08
|
8
|
+
|
9
|
+
- Added method Device::IO#get_format_or_touchscreen_action;
|
10
|
+
- Added support to images on ParamsDat#download, ParamsDat#update_app and ParamsDat#update_file;
|
11
|
+
- Return result of ParamsDat#update_apps call to the caller.
|
12
|
+
|
13
|
+
### 3.32.0 - 2021-01-04
|
14
|
+
|
15
|
+
- Remapped virtual keyboard to add support to new layout;
|
16
|
+
- Make timeout of virtual keyboard parametrized;
|
17
|
+
- Limit size of string to 20 on virtual keyboard;
|
18
|
+
- Refactoring status bar:
|
19
|
+
- Check if thread is paused which means communication it's being configured. In this case 'sem sinal' message should be displayed;
|
20
|
+
- Do not show media type an media icon if thread is paused;
|
21
|
+
- Removed thread pause from attach and scan calls, let the application that is doing the configuration take care of that;
|
22
|
+
- Move reload of metadata to communication thread;
|
23
|
+
- Added support to check network conn status from time to time, default is each 5 minutes.
|
24
|
+
|
25
|
+
### 3.31.0 - 2020-11-27
|
26
|
+
|
27
|
+
- Added support to new battery view (Exact percentage);
|
28
|
+
- Added support to new main screen when there's a pending sale.
|
29
|
+
|
30
|
+
### 3.30.0 - 2020-11-16
|
31
|
+
|
32
|
+
- Replace GPRS icon to 3G;
|
33
|
+
- Added new method main_image_format on Device::Display;
|
34
|
+
- Use main_image_format method to get the image name instead adapter;
|
35
|
+
- Added new class DaFunk::Transaction::Reversal.
|
36
|
+
|
3
37
|
### 3.29.1 - 2020-11-04
|
4
38
|
|
5
39
|
- Fix battery charging status. When power supply is connected the SDK always returns 50% of battery, in this case it won't show the percentage until the SDK returns 100%.
|
data/Rakefile
CHANGED
@@ -53,6 +53,7 @@ FILES = FileList[
|
|
53
53
|
"lib/da_funk/application.rb",
|
54
54
|
"lib/da_funk/transaction/iso.rb",
|
55
55
|
"lib/da_funk/transaction/download.rb",
|
56
|
+
"lib/da_funk/transaction/reversal.rb",
|
56
57
|
"lib/da_funk/notification_event.rb",
|
57
58
|
"lib/da_funk/notification_callback.rb",
|
58
59
|
"lib/da_funk/notification.rb",
|
@@ -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
|
11
|
-
if
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
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
|
-
|
@@ -52,7 +52,7 @@ module DaFunk
|
|
52
52
|
end
|
53
53
|
|
54
54
|
unless config["timestamp"]
|
55
|
-
config["timestamp"] = hours2seconds(option[
|
55
|
+
config["timestamp"] = hours2seconds(option[:hours])
|
56
56
|
else
|
57
57
|
if config["interval"]["hours"].to_s != option[:hours].to_s
|
58
58
|
config["timestamp"] = hours2seconds(option[:hours])
|
data/lib/da_funk/helper.rb
CHANGED
@@ -61,38 +61,77 @@ module DaFunk
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
def check_download_error(
|
65
|
-
value =
|
64
|
+
def check_download_error(download_ret, enable_txt_ui = true)
|
65
|
+
value = false
|
66
|
+
|
67
|
+
if download_ret == DaFunk::Transaction::Download::FILE_NOT_CHANGE
|
68
|
+
if enable_txt_ui
|
69
|
+
I18n.pt(:download_file_is_the_same, :args => [download_ret])
|
70
|
+
getc(1000)
|
71
|
+
end
|
72
|
+
value = true
|
73
|
+
elsif download_ret == DaFunk::Transaction::Download::SUCCESS
|
74
|
+
if enable_txt_ui
|
75
|
+
I18n.pt(:download_success, :args => [download_ret])
|
76
|
+
getc(1000)
|
77
|
+
end
|
78
|
+
value = true
|
79
|
+
end
|
80
|
+
value
|
81
|
+
end
|
82
|
+
|
83
|
+
def show_download_error(download_ret, enable_txt_ui = true)
|
66
84
|
ui = {}
|
67
85
|
|
68
|
-
case
|
86
|
+
case download_ret
|
69
87
|
when DaFunk::Transaction::Download::SERIAL_NUMBER_NOT_FOUND
|
88
|
+
unless enable_txt_ui
|
89
|
+
Device::Display.print_bitmap('./shared/config_fail.bmp')
|
90
|
+
getc(5000)
|
91
|
+
end
|
70
92
|
ui[:i18n] = :download_serial_number_not_found
|
71
|
-
|
93
|
+
ContextLog.info "[I] Download error, serial number not registered"
|
72
94
|
when DaFunk::Transaction::Download::FILE_NOT_FOUND
|
95
|
+
unless enable_txt_ui
|
96
|
+
Device::Display.print_bitmap('./shared/config_fail.bmp')
|
97
|
+
getc(5000)
|
98
|
+
end
|
73
99
|
ui[:i18n] = :download_file_not_found
|
74
|
-
|
75
|
-
when DaFunk::Transaction::Download::FILE_NOT_CHANGE
|
76
|
-
ui[:i18n] = :download_file_is_the_same
|
77
|
-
when DaFunk::Transaction::Download::SUCCESS
|
78
|
-
ui[:i18n] = :download_success
|
100
|
+
ContextLog.info "[I] Download error, file not found"
|
79
101
|
when DaFunk::Transaction::Download::COMMUNICATION_ERROR
|
102
|
+
unless enable_txt_ui
|
103
|
+
Device::Display.print_bitmap('./shared/network_system_error.bmp')
|
104
|
+
getc(5000)
|
105
|
+
end
|
80
106
|
ui[:i18n] = :download_communication_failure
|
81
|
-
|
107
|
+
ContextLog.info "[I] Download error, connection problem"
|
82
108
|
when DaFunk::Transaction::Download::MAPREDUCE_RESPONSE_ERROR
|
109
|
+
unless enable_txt_ui
|
110
|
+
Device::Display.print_bitmap('./shared/config_fail.bmp')
|
111
|
+
getc(5000)
|
112
|
+
end
|
83
113
|
ui[:i18n] = :download_encoding_error
|
84
|
-
|
114
|
+
ContextLog.info "[I] Download error, encoding problem"
|
85
115
|
when DaFunk::Transaction::Download::IO_ERROR
|
116
|
+
unless enable_txt_ui
|
117
|
+
Device::Display.print_bitmap('./shared/config_fail.bmp')
|
118
|
+
getc(5000)
|
119
|
+
end
|
86
120
|
ui[:i18n] = :download_io_error
|
87
|
-
|
121
|
+
ContextLog.info "[I] Download error, IO error"
|
88
122
|
else
|
123
|
+
unless enable_txt_ui
|
124
|
+
Device::Display.print_bitmap('./shared/network_system_error.bmp')
|
125
|
+
getc(5000)
|
126
|
+
end
|
89
127
|
ui[:i18n] = :download_communication_failure
|
90
|
-
|
128
|
+
ContextLog.info "[I] Download error, connection problem"
|
91
129
|
end
|
92
130
|
|
93
|
-
|
94
|
-
|
95
|
-
|
131
|
+
if enable_txt_ui
|
132
|
+
I18n.pt(ui[:i18n], :args => [download_ret])
|
133
|
+
getc(5000)
|
134
|
+
end
|
96
135
|
end
|
97
136
|
|
98
137
|
def try(tries, &block)
|
@@ -1,31 +1,75 @@
|
|
1
|
+
#
|
2
|
+
# @file status_bar.rb
|
3
|
+
# @brief DaFunk status bar helper script.
|
4
|
+
# @platform N/A
|
5
|
+
#
|
6
|
+
# @copyright Copyright (c) 2016 CloudWalk, Inc.
|
7
|
+
#
|
8
|
+
|
1
9
|
module DaFunk
|
2
10
|
module Helper
|
11
|
+
# Status bar class definition.
|
3
12
|
class StatusBar
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
13
|
+
# Class macros and constants
|
14
|
+
STATUS_TIMEOUT = 60
|
15
|
+
SLOT_MEDIA = 0
|
16
|
+
SLOT_SIGNAL_LEVEL = 1
|
17
|
+
SLOT_UPDATE = 2
|
8
18
|
SLOT_BATTERY_PERCENTUAL = 6
|
9
|
-
SLOT_BATTERY_LEVEL
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
SLOT_BATTERY_LEVEL = 7
|
20
|
+
|
21
|
+
# TODO: review the 'print_status_bar' API to reduce the number of files
|
22
|
+
# to eleven?
|
23
|
+
BATTERY_PERCENTAGE_IMAGES = [
|
24
|
+
'./shared/1%.png', './shared/1%.png', './shared/2%.png',
|
25
|
+
'./shared/3%.png', './shared/4%.png', './shared/5%.png',
|
26
|
+
'./shared/6%.png', './shared/7%.png', './shared/8%.png',
|
27
|
+
'./shared/9%.png', './shared/10%.png', './shared/11%.png',
|
28
|
+
'./shared/12%.png', './shared/13%.png', './shared/14%.png',
|
29
|
+
'./shared/15%.png', './shared/16%.png', './shared/17%.png',
|
30
|
+
'./shared/18%.png', './shared/19%.png', './shared/20%.png',
|
31
|
+
'./shared/21%.png', './shared/22%.png', './shared/23%.png',
|
32
|
+
'./shared/24%.png', './shared/25%.png', './shared/26%.png',
|
33
|
+
'./shared/27%.png', './shared/28%.png', './shared/29%.png',
|
34
|
+
'./shared/30%.png', './shared/31%.png', './shared/32%.png',
|
35
|
+
'./shared/33%.png', './shared/34%.png', './shared/35%.png',
|
36
|
+
'./shared/36%.png', './shared/37%.png', './shared/38%.png',
|
37
|
+
'./shared/39%.png', './shared/40%.png', './shared/41%.png',
|
38
|
+
'./shared/42%.png', './shared/43%.png', './shared/44%.png',
|
39
|
+
'./shared/45%.png', './shared/46%.png', './shared/47%.png',
|
40
|
+
'./shared/48%.png', './shared/49%.png', './shared/50%.png',
|
41
|
+
'./shared/51%.png', './shared/52%.png', './shared/53%.png',
|
42
|
+
'./shared/54%.png', './shared/55%.png', './shared/56%.png',
|
43
|
+
'./shared/57%.png', './shared/58%.png', './shared/59%.png',
|
44
|
+
'./shared/60%.png', './shared/61%.png', './shared/62%.png',
|
45
|
+
'./shared/63%.png', './shared/64%.png', './shared/65%.png',
|
46
|
+
'./shared/66%.png', './shared/67%.png', './shared/68%.png',
|
47
|
+
'./shared/69%.png', './shared/70%.png', './shared/71%.png',
|
48
|
+
'./shared/72%.png', './shared/73%.png', './shared/74%.png',
|
49
|
+
'./shared/75%.png', './shared/76%.png', './shared/77%.png',
|
50
|
+
'./shared/78%.png', './shared/79%.png', './shared/80%.png',
|
51
|
+
'./shared/81%.png', './shared/82%.png', './shared/83%.png',
|
52
|
+
'./shared/84%.png', './shared/85%.png', './shared/86%.png',
|
53
|
+
'./shared/87%.png', './shared/88%.png', './shared/89%.png',
|
54
|
+
'./shared/90%.png', './shared/91%.png', './shared/92%.png',
|
55
|
+
'./shared/93%.png', './shared/94%.png', './shared/95%.png',
|
56
|
+
'./shared/96%.png', './shared/97%.png', './shared/98%.png',
|
57
|
+
'./shared/99%.png', './shared/100%.png'
|
58
|
+
].freeze
|
59
|
+
|
60
|
+
MEDIA_PATH = {
|
61
|
+
:gprs => './shared/3G.png',
|
62
|
+
:wifi => './shared/WIFI.png'
|
23
63
|
}
|
24
64
|
|
65
|
+
BATTERY_CHARGING = [
|
66
|
+
"./shared/battery_charging.png",
|
67
|
+
"./shared/battery_charged.png"
|
68
|
+
].freeze
|
69
|
+
|
25
70
|
BATTERY_IMAGES = {
|
26
71
|
0..4 => "./shared/battery0.png",
|
27
|
-
5..
|
28
|
-
10..19 => "./shared/battery10.png",
|
72
|
+
5..19 => "./shared/battery10.png",
|
29
73
|
20..29 => "./shared/battery20.png",
|
30
74
|
30..39 => "./shared/battery30.png",
|
31
75
|
40..49 => "./shared/battery40.png",
|
@@ -34,48 +78,29 @@ module DaFunk
|
|
34
78
|
70..79 => "./shared/battery70.png",
|
35
79
|
80..89 => "./shared/battery80.png",
|
36
80
|
90..99 => "./shared/battery90.png",
|
37
|
-
100..100 => "./shared/battery100.png"
|
38
|
-
}
|
39
|
-
|
40
|
-
BATTERY_CHARGE_IMAGES = {
|
41
|
-
50 => "./shared/battery0c.png",
|
42
|
-
100 => "./shared/battery100c.png"
|
43
|
-
}
|
44
|
-
|
45
|
-
BATTERY_PERCENTAGE_IMAGES = {
|
46
|
-
0..4 => "./shared/battery1_percent.png",
|
47
|
-
5..9 => "./shared/battery5_percent.png",
|
48
|
-
10..19 => "./shared/battery10_percent.png",
|
49
|
-
20..29 => "./shared/battery20_percent.png",
|
50
|
-
30..39 => "./shared/battery30_percent.png",
|
51
|
-
40..49 => "./shared/battery40_percent.png",
|
52
|
-
50..59 => "./shared/battery50_percent.png",
|
53
|
-
60..69 => "./shared/battery60_percent.png",
|
54
|
-
70..79 => "./shared/battery70_percent.png",
|
55
|
-
80..89 => "./shared/battery80_percent.png",
|
56
|
-
90..99 => "./shared/battery90_percent.png",
|
57
|
-
100..100 => "./shared/battery100_percent.png",
|
81
|
+
100..100 => "./shared/battery100.png"
|
58
82
|
}
|
59
83
|
|
60
84
|
WIFI_IMAGES = {
|
61
|
-
0..0
|
62
|
-
1..25
|
63
|
-
26..50
|
64
|
-
59..75
|
65
|
-
76..200
|
85
|
+
0..0 => "./shared/wifi0.png",
|
86
|
+
1..25 => "./shared/wifi25.png",
|
87
|
+
26..50 => "./shared/wifi50.png",
|
88
|
+
59..75 => "./shared/wifi75.png",
|
89
|
+
76..200 => "./shared/wifi100.png"
|
66
90
|
}
|
67
91
|
|
68
92
|
MOBILE_IMAGES = {
|
69
|
-
0..0
|
70
|
-
1..20
|
71
|
-
21..40
|
72
|
-
41..60
|
73
|
-
61..80
|
74
|
-
81..200
|
93
|
+
0..0 => "./shared/mobile0.png",
|
94
|
+
1..20 => "./shared/mobile20.png",
|
95
|
+
21..40 => "./shared/mobile40.png",
|
96
|
+
41..60 => "./shared/mobile60.png",
|
97
|
+
61..80 => "./shared/mobile80.png",
|
98
|
+
81..200 => "./shared/mobile100.png"
|
75
99
|
}
|
76
100
|
|
77
101
|
class << self
|
78
|
-
attr_accessor :
|
102
|
+
attr_accessor :current_signal, :current_message, :battery, :power, :managment
|
103
|
+
attr_accessor :current_media
|
79
104
|
end
|
80
105
|
|
81
106
|
def self.check
|
@@ -90,98 +115,127 @@ module DaFunk
|
|
90
115
|
if File.exists?('./shared/system_update')
|
91
116
|
PAX::Display.print_status_bar(SLOT_UPDATE, "./shared/system_update_download.png")
|
92
117
|
PAX::Display.print_status_bar(3, nil)
|
93
|
-
self.connected = false
|
94
118
|
else
|
95
|
-
change_message
|
119
|
+
self.change_message
|
96
120
|
end
|
97
121
|
end
|
98
122
|
|
99
123
|
def self.change_message
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
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')
|
114
141
|
end
|
115
142
|
end
|
116
143
|
end
|
117
144
|
|
118
145
|
def self.change_connection
|
119
|
-
if
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
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))
|
134
162
|
end
|
135
163
|
else
|
136
164
|
Device::Display.print_status_bar(SLOT_MEDIA, nil)
|
137
165
|
Device::Display.print_status_bar(SLOT_SIGNAL_LEVEL, "./shared/searching.png")
|
166
|
+
self.current_media = nil
|
167
|
+
self.current_signal = nil
|
138
168
|
end
|
139
169
|
end
|
140
170
|
|
171
|
+
# Updates the battery slot whenever a capacity or power supply change is
|
172
|
+
# detected.
|
141
173
|
def self.change_battery
|
142
|
-
|
143
|
-
|
174
|
+
capacity_type = Device::System.battery_capacity_type
|
175
|
+
|
176
|
+
capacity = Device::System.battery
|
177
|
+
charging = Device::System.power_supply
|
144
178
|
|
145
|
-
if self.battery !=
|
146
|
-
self.battery = bat
|
147
|
-
self.power = dock
|
179
|
+
if self.battery != capacity || self.power != charging
|
148
180
|
|
149
|
-
if self.
|
150
|
-
|
181
|
+
if self.battery.nil? # basic integrity check
|
182
|
+
self.battery = capacity
|
183
|
+
elsif charging
|
184
|
+
capacity >= self.battery && self.battery = capacity
|
151
185
|
else
|
152
|
-
|
153
|
-
|
186
|
+
capacity <= self.battery && self.battery = capacity
|
187
|
+
end
|
188
|
+
|
189
|
+
if self.power == charging && capacity != self.battery
|
190
|
+
return nil
|
154
191
|
end
|
155
192
|
|
156
|
-
|
157
|
-
|
158
|
-
|
193
|
+
self.power = charging
|
194
|
+
|
195
|
+
rsc = self.get_image_path(self.power ? :battery_charge : :battery, self.battery)
|
196
|
+
|
197
|
+
Device::Display.print_status_bar(SLOT_BATTERY_LEVEL, rsc)
|
198
|
+
|
199
|
+
if capacity_type == 'percentage' || !self.power
|
200
|
+
rsc = self.get_image_path(:battery_percentual, self.battery)
|
159
201
|
else
|
160
|
-
|
161
|
-
get_image_path(:battery, self.battery))
|
202
|
+
rsc = nil
|
162
203
|
end
|
204
|
+
|
205
|
+
Device::Display.print_status_bar(SLOT_BATTERY_PERCENTUAL, rsc)
|
163
206
|
end
|
164
207
|
end
|
165
208
|
|
209
|
+
# Searches for the correspondent image to 'type' and 'signal strength'.
|
166
210
|
def self.get_image_path(type, sig)
|
167
211
|
return if sig.nil?
|
168
212
|
case type
|
169
213
|
when :gprs
|
170
|
-
MOBILE_IMAGES.each
|
214
|
+
MOBILE_IMAGES.each do |k, v|
|
215
|
+
return v if k.include? sig
|
216
|
+
end
|
171
217
|
when :wifi
|
172
|
-
WIFI_IMAGES.each
|
218
|
+
WIFI_IMAGES.each do |k, v|
|
219
|
+
return v if k.include? sig
|
220
|
+
end
|
173
221
|
when :battery
|
174
|
-
BATTERY_IMAGES.each
|
222
|
+
BATTERY_IMAGES.each do |k, v|
|
223
|
+
return v if k.include? sig
|
224
|
+
end
|
175
225
|
when :battery_charge
|
176
|
-
|
226
|
+
if sig < 100
|
227
|
+
BATTERY_CHARGING[0]
|
228
|
+
else
|
229
|
+
BATTERY_CHARGING[1]
|
230
|
+
end
|
177
231
|
when :battery_percentual
|
178
|
-
BATTERY_PERCENTAGE_IMAGES
|
232
|
+
BATTERY_PERCENTAGE_IMAGES[sig]
|
179
233
|
else
|
180
234
|
nil
|
181
235
|
end
|
182
236
|
end
|
183
237
|
|
184
|
-
self.managment
|
238
|
+
self.managment ||= true
|
185
239
|
def self.valid?
|
186
240
|
if self.managment
|
187
241
|
true
|
@@ -190,4 +244,3 @@ module DaFunk
|
|
190
244
|
end
|
191
245
|
end
|
192
246
|
end
|
193
|
-
|
data/lib/da_funk/params_dat.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
module DaFunk
|
2
2
|
class ParamsDat
|
3
|
-
FILE_NAME
|
3
|
+
FILE_NAME = "./main/params.dat"
|
4
|
+
SEARCHING_IMAGE_PATH = './shared/searching_updates_app.bmp'
|
5
|
+
UPDATING_IMAGE_PATH = './shared/updating.bmp'
|
6
|
+
ATTACH_IMAGE_PATH = './shared/network_conectar_init.bmp'
|
7
|
+
CONNECTION_ERROR_IMAGE_PATH = './shared/network_system_error.bmp'
|
4
8
|
|
5
9
|
include DaFunk::Helper
|
6
10
|
|
@@ -117,31 +121,40 @@ module DaFunk
|
|
117
121
|
end
|
118
122
|
|
119
123
|
def self.download(enable_txt_ui = true)
|
124
|
+
ret = false
|
125
|
+
download_ret = false
|
126
|
+
Device::Display.print_bitmap(ATTACH_IMAGE_PATH) unless enable_txt_ui
|
120
127
|
if attach(attach_options(enable_txt_ui))
|
121
128
|
parse
|
122
|
-
|
129
|
+
try(3) do |attempt|
|
123
130
|
if enable_txt_ui
|
124
131
|
Device::Display.clear
|
125
132
|
I18n.pt(:downloading_content, :args => ["PARAMS", 1, 1])
|
133
|
+
getc(100)
|
126
134
|
end
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
getc(2000)
|
131
|
-
false
|
132
|
-
else
|
133
|
-
true
|
134
|
-
end
|
135
|
+
Device::Display.print_bitmap(SEARCHING_IMAGE_PATH) unless enable_txt_ui
|
136
|
+
download_ret = DaFunk::Transaction::Download.request_param_file(FILE_NAME)
|
137
|
+
ret = check_download_error(download_ret, enable_txt_ui)
|
135
138
|
end
|
139
|
+
show_download_error(download_ret, enable_txt_ui) unless ret
|
136
140
|
parse if ret
|
137
|
-
|
141
|
+
else
|
142
|
+
unless enable_txt_ui
|
143
|
+
Device::Display.print_bitmap(CONNECTION_ERROR_IMAGE_PATH)
|
144
|
+
getc(5000)
|
145
|
+
end
|
138
146
|
end
|
147
|
+
ret
|
139
148
|
end
|
140
149
|
|
141
150
|
def self.update_apps(force_params = false, force_crc = false, force = false, enable_txt_ui = true)
|
142
|
-
|
151
|
+
ret = true
|
152
|
+
if force_params || ! self.valid
|
153
|
+
ret = self.download(enable_txt_ui)
|
154
|
+
end
|
155
|
+
|
143
156
|
main_updated = nil
|
144
|
-
if self.valid
|
157
|
+
if self.valid && ret
|
145
158
|
apps_to_update = self.outdated_apps(force_crc, force)
|
146
159
|
size_apps = apps_to_update.size
|
147
160
|
apps_to_update.each_with_index do |app, index|
|
@@ -149,12 +162,15 @@ module DaFunk
|
|
149
162
|
main_updated ||= (ret && app.main_application?)
|
150
163
|
end
|
151
164
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
165
|
+
if ret
|
166
|
+
files_to_update = self.outdated_files(force_crc, force)
|
167
|
+
size_files = files_to_update.size
|
168
|
+
files_to_update.each_with_index do |file_, index|
|
169
|
+
ret = self.update_file(file_, index+1, size_files, force_crc || force, enable_txt_ui)
|
170
|
+
end
|
156
171
|
end
|
157
172
|
end
|
173
|
+
ret
|
158
174
|
ensure
|
159
175
|
self.restart if main_updated
|
160
176
|
end
|
@@ -199,34 +215,58 @@ module DaFunk
|
|
199
215
|
end
|
200
216
|
|
201
217
|
def self.update_app(application, index = 1, all = 1, force = false, enable_txt_ui = true)
|
218
|
+
ret = false
|
219
|
+
download_ret = false
|
220
|
+
Device::Display.print_bitmap(ATTACH_IMAGE_PATH) unless enable_txt_ui
|
202
221
|
if attach(attach_options(enable_txt_ui)) && application
|
203
222
|
try(3) do |attempt|
|
204
223
|
if enable_txt_ui
|
205
224
|
Device::Display.clear
|
206
225
|
I18n.pt(:downloading_content, :args => [I18n.t(:apps), index, all])
|
226
|
+
getc(100)
|
207
227
|
end
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
228
|
+
Device::Display.print_bitmap(UPDATING_IMAGE_PATH) unless enable_txt_ui
|
229
|
+
download_ret = application.download(force)
|
230
|
+
ret = check_download_error(download_ret, enable_txt_ui)
|
231
|
+
end
|
232
|
+
show_download_error(download_ret, enable_txt_ui) unless ret
|
233
|
+
else
|
234
|
+
unless enable_txt_ui
|
235
|
+
Device::Display.print_bitmap(CONNECTION_ERROR_IMAGE_PATH)
|
236
|
+
getc(5000)
|
212
237
|
end
|
213
238
|
end
|
239
|
+
ret
|
214
240
|
end
|
215
241
|
|
216
242
|
def self.update_file(file_parameter, index = 1, all = 1, force = false, enable_txt_ui = true)
|
243
|
+
ret = false
|
244
|
+
download_ret = false
|
245
|
+
Device::Display.print_bitmap(ATTACH_IMAGE_PATH) unless enable_txt_ui
|
217
246
|
if attach(attach_options(enable_txt_ui)) && file_parameter
|
218
247
|
try(3) do |attempt|
|
219
248
|
if enable_txt_ui
|
220
249
|
Device::Display.clear
|
221
250
|
I18n.pt(:downloading_content, :args => [I18n.t(:files), index, all])
|
251
|
+
getc(100)
|
252
|
+
end
|
253
|
+
Device::Display.print_bitmap(UPDATING_IMAGE_PATH) unless enable_txt_ui
|
254
|
+
download_ret = file_parameter.download(force)
|
255
|
+
ret = check_download_error(download_ret, enable_txt_ui)
|
256
|
+
if ret
|
257
|
+
file_parameter.unzip
|
258
|
+
getc(1000)
|
222
259
|
end
|
223
|
-
getc(100)
|
224
|
-
ret = check_download_error(file_parameter.download(force), enable_txt_ui)
|
225
|
-
file_parameter.unzip if ret
|
226
|
-
getc(1000)
|
227
260
|
ret
|
228
261
|
end
|
262
|
+
show_download_error(download_ret, enable_txt_ui) unless ret
|
263
|
+
else
|
264
|
+
unless enable_txt_ui
|
265
|
+
Device::Display.print_bitmap(CONNECTION_ERROR_IMAGE_PATH)
|
266
|
+
getc(5000)
|
267
|
+
end
|
229
268
|
end
|
269
|
+
ret
|
230
270
|
end
|
231
271
|
|
232
272
|
def self.apps
|
data/lib/da_funk/rake_task.rb
CHANGED
@@ -31,7 +31,7 @@ module DaFunk
|
|
31
31
|
@resources_out ||= @resources.pathmap("%{resources,#{File.join(root_path, "out")}}p")
|
32
32
|
@tests_res_out ||= @tests_resources.pathmap("%{test/resources,out}p")
|
33
33
|
@mruby ||= "cloudwalk run -b"
|
34
|
-
@mrbc
|
34
|
+
@mrbc = get_mrbc_bin(@mrbc)
|
35
35
|
|
36
36
|
define
|
37
37
|
end
|
@@ -44,14 +44,21 @@ module DaFunk
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
# Searches for a mrbc binary.
|
47
48
|
def get_mrbc_bin(from_user)
|
48
|
-
|
49
|
+
device = "/dev/null"
|
50
|
+
|
51
|
+
if %w[i386-mingw32 x64-mingw32].include?(RUBY_PLATFORM) && !ENV['SHELL']
|
52
|
+
device = "NUL" # Windows Command Prompt
|
53
|
+
end
|
54
|
+
|
55
|
+
if !system("type mrbc > #{device} 2>&1") && from_user
|
49
56
|
from_user
|
50
|
-
elsif system("type mrbc >
|
57
|
+
elsif system("type mrbc > #{device} 2>&1")
|
51
58
|
"env mrbc"
|
52
59
|
elsif ENV["MRBC"]
|
53
60
|
ENV["MRBC"]
|
54
|
-
elsif system("type cloudwalk >
|
61
|
+
elsif system("type cloudwalk > #{device} 2>&1")
|
55
62
|
"env cloudwalk compile"
|
56
63
|
else
|
57
64
|
puts "$MRBC isn't set or mrbc/cloudwalk isn't on $PATH"
|
@@ -64,7 +71,7 @@ module DaFunk
|
|
64
71
|
command_line = File.join(File.dirname(__FILE__), "..", "..", "utils", "command_line_platform.rb")
|
65
72
|
command_line_obj = File.join(root_path, "out", "main", "command_line_platform.mrb")
|
66
73
|
all_files = FileList["test/test_helper.rb"] + libs + files + [command_line] + [File.join(File.dirname(__FILE__), "..", "..", "utils", "test_run.rb")]
|
67
|
-
if platform_call("#{mrbc} -g -o #{command_line_obj} #{command_line}") && platform_call("#{mrbc} -g -o #{test_out} #{all_files.uniq}")
|
74
|
+
if platform_call("#{@mrbc} -g -o #{command_line_obj} #{command_line}") && platform_call("#{@mrbc} -g -o #{test_out} #{all_files.uniq}")
|
68
75
|
puts "cd #{File.dirname(out_path)}"
|
69
76
|
FileUtils.cd File.dirname(out_path)
|
70
77
|
platform_call("#{mruby} #{File.join(name, "test.mrb")}")
|
@@ -108,7 +115,7 @@ module DaFunk
|
|
108
115
|
|
109
116
|
desc "Compile app to mrb and process resources"
|
110
117
|
task :build => :resources do
|
111
|
-
platform_call "#{mrbc} #{debug_flag} -o #{main_out} #{libs} "
|
118
|
+
platform_call "#{@mrbc} #{debug_flag} -o #{main_out} #{libs} "
|
112
119
|
end
|
113
120
|
|
114
121
|
desc "Compile, build and pack app and resources"
|
data/lib/da_funk/version.rb
CHANGED
data/lib/device/display.rb
CHANGED
@@ -71,13 +71,23 @@ class Device
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def self.main_image
|
74
|
-
|
75
|
-
|
76
|
-
|
74
|
+
file = main_image_format
|
75
|
+
if File.exists?("./shared/#{file}")
|
76
|
+
file
|
77
77
|
else
|
78
78
|
MAIN_BMP
|
79
79
|
end
|
80
80
|
end
|
81
|
+
|
82
|
+
private
|
83
|
+
def self.main_image_format
|
84
|
+
major, min, patch = Device.version.to_s.split('.').map { |v| v.to_i }
|
85
|
+
if DaFunk::Transaction::Reversal.exists? && major >= 8
|
86
|
+
"main_#{Device::System.model}_reversal.bmp"
|
87
|
+
else
|
88
|
+
"main_#{Device::System.model}.bmp"
|
89
|
+
end
|
90
|
+
end
|
81
91
|
end
|
82
92
|
end
|
83
93
|
|
data/lib/device/io.rb
CHANGED
@@ -161,6 +161,59 @@ class Device
|
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
164
|
+
def self.get_format_or_touchscreen_action(max, touch_map, options = {})
|
165
|
+
set_default_format_option(options)
|
166
|
+
key = text = options[:value] || ""
|
167
|
+
time = Time.now + (options[:timeout] || 30000) / 1000
|
168
|
+
ret = {}
|
169
|
+
touch_clear
|
170
|
+
Device::Display.clear options[:line]
|
171
|
+
Device::Display.print_line format(text, options), options[:line], options[:column]
|
172
|
+
loop do
|
173
|
+
line_x, line_y = getxy_stream(100)
|
174
|
+
if line_x && line_y
|
175
|
+
ret = parse_touchscreen(touch_map, line_x, line_y)
|
176
|
+
break(ret) if ret.include?(:touch_action)
|
177
|
+
else
|
178
|
+
key = getc(100)
|
179
|
+
if key == BACK
|
180
|
+
text = text[0..-2]
|
181
|
+
Device::Display.clear options[:line]
|
182
|
+
Device::Display.print_line format(text, options), options[:line], options[:column]
|
183
|
+
elsif options[:timeout_enabled] && time < Time.now
|
184
|
+
ret[:timeout] = Device::IO::KEY_TIMEOUT
|
185
|
+
break(ret)
|
186
|
+
elsif key == ENTER
|
187
|
+
ret[:text] = text
|
188
|
+
break(ret)
|
189
|
+
elsif key == CANCEL
|
190
|
+
ret[:cancel] = Device::IO::CANCEL
|
191
|
+
break(ret)
|
192
|
+
elsif key == F1 || key == DOWN || key == UP || key == ALPHA
|
193
|
+
change_next(text, check_mask_type(text, options))
|
194
|
+
next
|
195
|
+
elsif text.size >= max
|
196
|
+
next
|
197
|
+
elsif insert_key?(key, options)
|
198
|
+
text << key
|
199
|
+
Device::Display.clear options[:line]
|
200
|
+
Device::Display.print_line format(text, options), options[:line], options[:column]
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def self.parse_touchscreen(touch_map, line_x, line_y)
|
207
|
+
ret = {}
|
208
|
+
touch_map.each do |key, value|
|
209
|
+
if value[:x].include?(line_x) && value[:y].include?(line_y)
|
210
|
+
Device::Audio.beep(7, 60)
|
211
|
+
ret[:touch_action] = key
|
212
|
+
end
|
213
|
+
end
|
214
|
+
ret
|
215
|
+
end
|
216
|
+
|
164
217
|
def self.set_default_format_option(options)
|
165
218
|
options[:mode] ||= IO_INPUT_LETTERS
|
166
219
|
options[:line] ||= 2
|
data/lib/device/network.rb
CHANGED
@@ -159,9 +159,7 @@ class Device
|
|
159
159
|
# Device::Setting.mode = selected[:mode]
|
160
160
|
def self.scan
|
161
161
|
if wifi?
|
162
|
-
|
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
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
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
|
-
|
218
|
-
Context::ThreadPubSub.publish('communication_update')
|
219
|
-
self.code
|
220
|
-
end
|
204
|
+
self.code = hash[:ret]
|
221
205
|
|
222
|
-
|
223
|
-
|
224
|
-
|
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
|
-
|
data/lib/device/system.rb
CHANGED
@@ -45,6 +45,15 @@ class Device
|
|
45
45
|
adapter.battery
|
46
46
|
end
|
47
47
|
|
48
|
+
# Checks the type of the battery capacity return (percentage or scale).
|
49
|
+
def self.battery_capacity_type
|
50
|
+
begin
|
51
|
+
adapter.battery_capacity_type
|
52
|
+
rescue StandardError => exception
|
53
|
+
'scale'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
48
57
|
def self.beep
|
49
58
|
adapter.beep
|
50
59
|
end
|
@@ -82,34 +82,76 @@ class Device
|
|
82
82
|
],
|
83
83
|
|
84
84
|
keyboard_symbol_number: [
|
85
|
-
{ x: 0..
|
86
|
-
{ x: 0..
|
87
|
-
{ x: 0..
|
88
|
-
{ x: 0..
|
89
|
-
{ x: 0..
|
90
|
-
{ x: 0..
|
91
|
-
{ x: 0..
|
92
|
-
{ x: 0..
|
93
|
-
{ x: 0..
|
94
|
-
{ x: 0..
|
95
|
-
{ x: 0..
|
96
|
-
{ x: 0..
|
97
|
-
{ x: 0..
|
98
|
-
{ x: 0..
|
99
|
-
{ x: 0..
|
100
|
-
{ x: 0..
|
101
|
-
{ x: 0..
|
102
|
-
{ x: 0..
|
103
|
-
{ x: 0..
|
104
|
-
{ x: 0..
|
105
|
-
{ x: 0..
|
106
|
-
{ x: 0..
|
107
|
-
{ x: 0..
|
108
|
-
{ x: 0..
|
109
|
-
{ x: 0..
|
110
|
-
{ x: 0..
|
111
|
-
{ x: 0..
|
112
|
-
{ x: 0..
|
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
|
-
|
121
|
-
|
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
|
-
|
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
|
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.
|
4
|
+
version: 3.33.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thiago Scalone
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -179,6 +179,7 @@ files:
|
|
179
179
|
- lib/da_funk/test.rb
|
180
180
|
- lib/da_funk/transaction/download.rb
|
181
181
|
- lib/da_funk/transaction/iso.rb
|
182
|
+
- lib/da_funk/transaction/reversal.rb
|
182
183
|
- lib/da_funk/version.rb
|
183
184
|
- lib/device.rb
|
184
185
|
- lib/device/audio.rb
|
@@ -258,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
259
|
- !ruby/object:Gem::Version
|
259
260
|
version: '0'
|
260
261
|
requirements: []
|
261
|
-
rubygems_version: 3.
|
262
|
+
rubygems_version: 3.1.2
|
262
263
|
signing_key:
|
263
264
|
specification_version: 4
|
264
265
|
summary: MRuby Embedded System Framework
|