quelink-mg 0.4.0 → 0.6.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 +4 -4
- data/lib/quelink-mg/ack/base.rb +1 -1
- data/lib/quelink-mg/at/base.rb +2 -1
- data/lib/quelink-mg/at/gtfri.rb +1 -1
- data/lib/quelink-mg/at/gtupd.rb +31 -0
- data/lib/quelink-mg/resp/base.rb +4 -4
- data/lib/quelink-mg/resp/gtver.rb +14 -0
- data/lib/quelink_mg.rb +2 -0
- data/quelink-mg.gemspec +1 -1
- data/spec/quelink_mg/at/gtupd_spec.rb +25 -0
- data/spec/quelink_mg/resp/gtver_spec.rb +15 -0
- metadata +7 -4
- data/pkg/quelink-mg.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fa70bb5704e05561bc7351104356734d38c68eee18a7b6b6423f561734ad5a0
|
4
|
+
data.tar.gz: 7db6bbdcbbae58b244715b2107b675a9a400c13fed384006ec3cad299144c64a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4608f14f8518b6fe018e840ef7c7e5935d428be716f37bc8c2604288a64d0ffc6915541fab4675e4b6595117d47e3f6e8757c21530fbe9da0b9771708772e75
|
7
|
+
data.tar.gz: 40bd1f4cb692bc038f319b628616e992d4702c95f630f8b70d3286850694048ad343bcc5c8a571c4c3e549612af3684e5c12f794c415ae9ad6c442af688429be
|
data/lib/quelink-mg/ack/base.rb
CHANGED
data/lib/quelink-mg/at/base.rb
CHANGED
@@ -8,6 +8,7 @@ class InvalidATGTQSSException < StandardError; end
|
|
8
8
|
class InvalidATGTRTOException < StandardError; end
|
9
9
|
class InvalidATGTSRIException < StandardError; end
|
10
10
|
class InvalidATGTUDFException < StandardError; end
|
11
|
+
class InvalidATGTUPDException < StandardError; end
|
11
12
|
|
12
13
|
module QuelinkMg
|
13
14
|
module At
|
@@ -26,7 +27,7 @@ module QuelinkMg
|
|
26
27
|
acceptable_values.each do |k, v|
|
27
28
|
value = @params.fetch(k, nil)
|
28
29
|
|
29
|
-
next if value.
|
30
|
+
next if value.nil? || value == '' || v.include?(value)
|
30
31
|
|
31
32
|
raise_error(k, error)
|
32
33
|
end
|
data/lib/quelink-mg/at/gtfri.rb
CHANGED
@@ -25,7 +25,7 @@ module QuelinkMg
|
|
25
25
|
mode: (0..5),
|
26
26
|
discard_no_fix: (0..1),
|
27
27
|
check_interval: (1..86_400),
|
28
|
-
send_interval: (
|
28
|
+
send_interval: (1..86_400),
|
29
29
|
ignition_check_interval: (5..86_400),
|
30
30
|
ignition_send_interval: (5..86_400),
|
31
31
|
distance: (50..65_535),
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module QuelinkMg
|
4
|
+
module At
|
5
|
+
class Gtupd < Base
|
6
|
+
def message
|
7
|
+
validate_values
|
8
|
+
|
9
|
+
"AT+GTUPD=#{joined_params}$"
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
GTUPD_VALID_PARAMS = %i[password subcommand max_download_retry download_timeout download_protocol download_username download_password
|
15
|
+
download_url reserved update_type reserved reserved serial_number].freeze
|
16
|
+
|
17
|
+
def joined_params
|
18
|
+
GTUPD_VALID_PARAMS.map { |method| @params.fetch(method, nil) }.join(',')
|
19
|
+
end
|
20
|
+
|
21
|
+
def validate_values
|
22
|
+
acceptable_values = {
|
23
|
+
download_retry: (0..3),
|
24
|
+
download_timeout: (10..30),
|
25
|
+
}
|
26
|
+
|
27
|
+
verify_params(acceptable_values, InvalidATGTUPDException)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/quelink-mg/resp/base.rb
CHANGED
@@ -22,7 +22,7 @@ module QuelinkMg
|
|
22
22
|
def date?(value)
|
23
23
|
date = DateTime.strptime(value, QUELINK_DATE_FORMAT)
|
24
24
|
|
25
|
-
!date.nil? && (date - DateTime.now).abs <
|
25
|
+
!date.nil? && (date - DateTime.now).abs < 25 * 365
|
26
26
|
rescue Date::Error
|
27
27
|
false
|
28
28
|
end
|
@@ -31,13 +31,13 @@ module QuelinkMg
|
|
31
31
|
Time.use_zone('UTC') { Time.zone.parse(value) }.in_time_zone
|
32
32
|
end
|
33
33
|
|
34
|
-
def unify_keys(hash)
|
34
|
+
def unify_keys(hash, skip_number_change=false)
|
35
35
|
hash.transform_values do |v|
|
36
36
|
if date?(v)
|
37
37
|
transform_with_timezone(v)
|
38
|
-
elsif integer?(v)
|
38
|
+
elsif integer?(v) && !skip_number_change
|
39
39
|
v.to_i
|
40
|
-
elsif float?(v)
|
40
|
+
elsif float?(v) && !skip_number_change
|
41
41
|
v.to_f
|
42
42
|
else
|
43
43
|
v
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module QuelinkMg
|
4
|
+
module Resp
|
5
|
+
class Gtver < Base
|
6
|
+
GTVER_RESP_KEYS = %w[protocol_version unique_id device_name device_type firmware_version hardware_version reserved
|
7
|
+
modem_hardware_version modem_software_version send_time count_number].freeze
|
8
|
+
|
9
|
+
def hash
|
10
|
+
unify_keys(GTVER_RESP_KEYS.zip(@response.split(',')).to_h, true)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/quelink_mg.rb
CHANGED
@@ -15,6 +15,7 @@ require File.expand_path('quelink-mg/at/gtqss.rb', __dir__)
|
|
15
15
|
require File.expand_path('quelink-mg/at/gtrto.rb', __dir__)
|
16
16
|
require File.expand_path('quelink-mg/at/gtsri.rb', __dir__)
|
17
17
|
require File.expand_path('quelink-mg/at/gtudf.rb', __dir__)
|
18
|
+
require File.expand_path('quelink-mg/at/gtupd.rb', __dir__)
|
18
19
|
|
19
20
|
require File.expand_path('quelink-mg/resp/base.rb', __dir__)
|
20
21
|
require File.expand_path('quelink-mg/resp/gtfri.rb', __dir__)
|
@@ -23,6 +24,7 @@ require File.expand_path('quelink-mg/resp/gtinf.rb', __dir__)
|
|
23
24
|
require File.expand_path('quelink-mg/resp/gtsos.rb', __dir__)
|
24
25
|
require File.expand_path('quelink-mg/resp/gtstt.rb', __dir__)
|
25
26
|
require File.expand_path('quelink-mg/resp/gtupc.rb', __dir__)
|
27
|
+
require File.expand_path('quelink-mg/resp/gtver.rb', __dir__)
|
26
28
|
|
27
29
|
require File.expand_path('quelink-mg/ack/base.rb', __dir__)
|
28
30
|
require File.expand_path('quelink-mg/ack/gtbsi.rb', __dir__)
|
data/quelink-mg.gemspec
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe QuelinkMg::At::Gtupd do
|
6
|
+
it 'creates command when params are valid' do
|
7
|
+
params =
|
8
|
+
{
|
9
|
+
password: 'gl310m',
|
10
|
+
subcommand: 0,
|
11
|
+
max_download_retry: 0,
|
12
|
+
download_timeout: 10,
|
13
|
+
download_protocol: 0,
|
14
|
+
download_url: 'https://example.org',
|
15
|
+
update_type: 0,
|
16
|
+
serial_number: 'FFFF'
|
17
|
+
}
|
18
|
+
|
19
|
+
expect(described_class.new(params:).message).to eq 'AT+GTUPD=gl310m,0,0,10,0,,,https://example.org,,0,,,FFFF$'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'raises error on wrong params' do
|
23
|
+
expect { described_class.new(params: { download_timeout: 666}).message }.to raise_error(InvalidATGTUPDException)
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe QuelinkMg::Resp::Gtver do
|
6
|
+
it 'parses valid response' do
|
7
|
+
response = 'C30303,860201065688841,,GL320M_B7K1,0C09,0108,,BG95-M5,BG95M5LAR02A03,20250824185409,0006$'
|
8
|
+
|
9
|
+
parsed_response = described_class.new(response:).hash
|
10
|
+
expect(parsed_response).not_to eq({})
|
11
|
+
expect(parsed_response['device_type']).to eq 'GL320M_B7K1'
|
12
|
+
expect(parsed_response['firmware_version']).to eq '0C09'
|
13
|
+
expect(parsed_response['hardware_version']).to eq '0108'
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quelink-mg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stanislaw Zawadzki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- lib/quelink-mg/at/gtrto.rb
|
110
110
|
- lib/quelink-mg/at/gtsri.rb
|
111
111
|
- lib/quelink-mg/at/gtudf.rb
|
112
|
+
- lib/quelink-mg/at/gtupd.rb
|
112
113
|
- lib/quelink-mg/buff/base.rb
|
113
114
|
- lib/quelink-mg/buff/gtfri.rb
|
114
115
|
- lib/quelink-mg/configuration.rb
|
@@ -119,8 +120,8 @@ files:
|
|
119
120
|
- lib/quelink-mg/resp/gtsos.rb
|
120
121
|
- lib/quelink-mg/resp/gtstt.rb
|
121
122
|
- lib/quelink-mg/resp/gtupc.rb
|
123
|
+
- lib/quelink-mg/resp/gtver.rb
|
122
124
|
- lib/quelink_mg.rb
|
123
|
-
- pkg/quelink-mg.gem
|
124
125
|
- quelink-mg.gemspec
|
125
126
|
- spec/quelink_mg/ack/gtbsi_spec.rb
|
126
127
|
- spec/quelink_mg/ack/gtcfg_spec.rb
|
@@ -138,6 +139,7 @@ files:
|
|
138
139
|
- spec/quelink_mg/at/gtrto_spec.rb
|
139
140
|
- spec/quelink_mg/at/gtsri_spec.rb
|
140
141
|
- spec/quelink_mg/at/gtudf_spec.rb
|
142
|
+
- spec/quelink_mg/at/gtupd_spec.rb
|
141
143
|
- spec/quelink_mg/buff/gtfri_spec.rb
|
142
144
|
- spec/quelink_mg/resp/gtfri_spec.rb
|
143
145
|
- spec/quelink_mg/resp/gtgsv_spec.rb
|
@@ -145,6 +147,7 @@ files:
|
|
145
147
|
- spec/quelink_mg/resp/gtsos_spec.rb
|
146
148
|
- spec/quelink_mg/resp/gtstt_spec.rb
|
147
149
|
- spec/quelink_mg/resp/gtupc_spec.rb
|
150
|
+
- spec/quelink_mg/resp/gtver_spec.rb
|
148
151
|
- spec/spec_helper.rb
|
149
152
|
homepage:
|
150
153
|
licenses:
|
@@ -166,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
169
|
- !ruby/object:Gem::Version
|
167
170
|
version: '0'
|
168
171
|
requirements: []
|
169
|
-
rubygems_version: 3.
|
172
|
+
rubygems_version: 3.5.18
|
170
173
|
signing_key:
|
171
174
|
specification_version: 4
|
172
175
|
summary: Quelink devices command reader and writer
|
data/pkg/quelink-mg.gem
DELETED
Binary file
|