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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 156a74e9c90ed12d937afba89ed165d4c79f655b81158352aca3138962aeab2c
4
- data.tar.gz: 5a3ec61486354ecfd8c359a8cc651b1c94f73eceba33164dedab67abc27ede56
3
+ metadata.gz: 9fa70bb5704e05561bc7351104356734d38c68eee18a7b6b6423f561734ad5a0
4
+ data.tar.gz: 7db6bbdcbbae58b244715b2107b675a9a400c13fed384006ec3cad299144c64a
5
5
  SHA512:
6
- metadata.gz: 873fca115ba479772b24a1f9cafce41112528c8fe5847a190e67a77cfb10e73b6aa4a0e14049178bb5b811be8e9e38d6d43defa0dd41cdb9d5f0313be2202b56
7
- data.tar.gz: 15fb64bf910ce1ac9178535af37818f9c2482877db381df655b7412046189d28bb927cde60d8ac7f5839bc4514b2e068ef1532740766886dddbf9baf19d98bad
6
+ metadata.gz: d4608f14f8518b6fe018e840ef7c7e5935d428be716f37bc8c2604288a64d0ffc6915541fab4675e4b6595117d47e3f6e8757c21530fbe9da0b9771708772e75
7
+ data.tar.gz: 40bd1f4cb692bc038f319b628616e992d4702c95f630f8b70d3286850694048ad343bcc5c8a571c4c3e549612af3684e5c12f794c415ae9ad6c442af688429be
@@ -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 < 3 * 365
25
+ !date.nil? && (date - DateTime.now).abs < 25 * 365
26
26
  rescue Date::Error
27
27
  false
28
28
  end
@@ -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.blank? || v.include?(value)
30
+ next if value.nil? || value == '' || v.include?(value)
30
31
 
31
32
  raise_error(k, error)
32
33
  end
@@ -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: (5..86_400),
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
@@ -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 < 3 * 365
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'quelink-mg'
5
- s.version = '0.4.0'
5
+ s.version = '0.6.0'
6
6
  s.summary = 'Quelink devices command reader and writer'
7
7
  s.description = 'Quelink devices command reader and writer'
8
8
  s.authors = ['Stanislaw Zawadzki']
@@ -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.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: 2023-12-25 00:00:00.000000000 Z
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.3.7
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