rfbeam 0.4.3 → 0.4.4

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: 9cd82af6ee6d040de78fe19f179f643b0617c37b09a0f0f79ad952d05514b934
4
- data.tar.gz: 4efe06f17ac00595fa1407212cc77f909bf3fcdcaacf190587daa73424132f41
3
+ metadata.gz: bf7e877bee6e38f770c7058a27e5c3b8240347699d7f5839dcb1785200288d33
4
+ data.tar.gz: f69fa55d36aa8c160329224f88cf8d9ed291ff107fce17a4d2915809237352e8
5
5
  SHA512:
6
- metadata.gz: 07fac5306643bdac200b16c6aec4515602e6dcd42f96dc7198706d863fece4fc1b648accb1da80a48959826a50e9fcaaa6a4d7dbbc9f8775416c17faf3b49b35
7
- data.tar.gz: 64e52d170ad21a8a6fb98006310b3e874f62300162c25bd3a3de5d6f158a55652add50c1646be4c3f8d597f580ebc4c7b3f7a848212f190cf6836508e1dcf494
6
+ metadata.gz: 5eee8481b7e290057353b9b5aca03ac22949824b1eefee979a26d36e34c46bbe029d893948af78df0c97354271adf14d495eae41491c3fd56afb3719e847012a
7
+ data.tar.gz: cacf5bc2b75eeb187ffaca4b2a9c28dad4f55d0a4f25492f163c1b9fe8cf0d9d7b27cb75c5c5d372f2618ed72d1923e091e93afdf6cfcb259b46cda182ea3f75
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rfbeam (0.4.3)
4
+ rfbeam (0.4.4)
5
5
  activesupport (~> 6.1.0)
6
6
  rubyserial (~> 0.6.0)
7
7
  thor (~> 1.2.1)
data/README.md CHANGED
@@ -27,7 +27,7 @@ The RfBeam class will return the path of any connected modules
27
27
 
28
28
  Simple pass the path and baude rate to initialise a new radar object
29
29
 
30
- RfBeam::K_ld7.new("/dev/ttyUSB0", 115200) do |radar|
30
+ RfBeam::KLD7.new("/dev/ttyUSB0", 115200) do |radar|
31
31
  puts radar.config
32
32
  end
33
33
 
@@ -285,7 +285,7 @@ radar.micro_detection_sensitivty = 4
285
285
 
286
286
  ## CLI
287
287
 
288
- ``` fish
288
+ ```fish
289
289
  ❯ bundle exec rfbeam list
290
290
 
291
291
  +--+------------+------------------+
data/lib/rfbeam/cli.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
  require 'rfbeam'
3
5
  require 'tty-table'
@@ -8,7 +10,7 @@ require 'unicode_plot'
8
10
 
9
11
  module RfBeam
10
12
  class CLI < Thor
11
- attr_accessor :radar, :logger
13
+ attr_accessor :logger
12
14
 
13
15
  desc 'list', 'List available radar modules'
14
16
  def list
@@ -18,7 +20,7 @@ module RfBeam
18
20
 
19
21
  table = TTY::Table.new(header: %w[id Path Version])
20
22
 
21
- devices.each.with_index { |path, index| table << ["#{index}", path, radar(index).sw_version] }
23
+ devices.each.with_index { |path, index| table << [index.to_s, path, radar(index).sw_version] }
22
24
  puts table.render(:ascii)
23
25
  end
24
26
 
@@ -44,13 +46,13 @@ module RfBeam
44
46
  desc 'ddat <radar_id>', 'stream any valid detections, stop stream with q and enter'
45
47
  option :stream, type: :boolean, aliases: '-s', desc: 'Stream the data from the device'
46
48
  def ddat(radar_id)
47
- cli = RfBeam::KLD7::CliOutput.new(radar_id)
49
+ cli = RfBeam::Kld7::CliOutput.new(radar_id)
48
50
  cli.display(:ddat, stream: options[:stream])
49
51
  end
50
52
 
51
53
  desc 'pdat <radar_id>', 'Display Tracked Targets'
52
54
  def pdat(radar_id)
53
- cli = RfBeam::KLD7::CliOutput.new(radar_id)
55
+ cli = RfBeam::Kld7::CliOutput.new(radar_id)
54
56
  cli.display(:pdat, stream: options[:stream])
55
57
  end
56
58
 
@@ -58,7 +60,7 @@ module RfBeam
58
60
  option :stream, type: :boolean, aliases: '-s', desc: 'Stream the data from the device'
59
61
  option :raw, type: :boolean, aliases: '-r', desc: 'Display raw data'
60
62
  def rfft(radar_id)
61
- plotter = RfBeam::KLD7::CliOutput.new(radar_id)
63
+ plotter = RfBeam::Kld7::CliOutput.new(radar_id)
62
64
  if options[:raw]
63
65
  print radar(radar_id).rfft
64
66
  else
@@ -68,7 +70,7 @@ module RfBeam
68
70
 
69
71
  desc 'tdat <radar_id>', 'Display tracked target data'
70
72
  def tdat(radar_id)
71
- cli = RfBeam::KLD7::CliOutput.new(radar_id)
73
+ cli = RfBeam::Kld7::CliOutput.new(radar_id)
72
74
  cli.display(:tdat, stream: options[:stream])
73
75
  end
74
76
 
@@ -79,7 +81,7 @@ module RfBeam
79
81
  @logger = TTY::Logger.new
80
82
  return @logger.warning 'No Radar modules found.' unless devices.count.positive?
81
83
 
82
- RfBeam::K_ld7.new(devices[id.to_i])
84
+ RfBeam::KLD7.new(devices[id.to_i])
83
85
  end
84
86
  end
85
87
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tty-table'
2
4
 
3
5
  module RfBeam
4
- module KLD7
6
+ module Kld7
5
7
  class CliFormatter
6
8
  def tdat(data)
7
9
  { dist: data[2], speed: data[3], angle: data[4], mag: data[5] }
@@ -11,7 +13,7 @@ module RfBeam
11
13
  table = TTY::Table.new header: ['index', 'dist (M)', 'speed (Km/h)', 'angle (°)', 'mag (db)']
12
14
  count = data[1] / 8
13
15
  data.shift(2)
14
- count.times.with_index do |index|
16
+ count.times do |index|
15
17
  values = data.shift(4).map { |value| value.to_f / 100.0 }
16
18
  table << [index, values].flatten
17
19
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'unicode_plot'
2
4
  require 'io/console'
3
5
  require 'stringio'
@@ -5,7 +7,7 @@ require 'tty-screen'
5
7
  require 'tty-logger'
6
8
 
7
9
  module RfBeam
8
- module KLD7
10
+ module Kld7
9
11
  class CliOutput
10
12
  attr_reader :radar
11
13
 
@@ -13,7 +15,7 @@ module RfBeam
13
15
  devices = RfBeam.connected
14
16
  return TTY::Logger.new.warning 'No Radar modules found.' unless devices.count.positive?
15
17
 
16
- @radar = RfBeam::K_ld7.new(devices[radar_id.to_i])
18
+ @radar = RfBeam::KLD7.new(devices[radar_id.to_i])
17
19
  end
18
20
 
19
21
  def display(type, stream: false)
@@ -39,10 +41,10 @@ module RfBeam
39
41
  $stdout.print "\e[0J"
40
42
  $stdout.flush
41
43
 
42
- if @streaming
43
- n = lines.count
44
- $stdout.print "\e[#{n}F"
45
- end
44
+ return unless @streaming
45
+
46
+ n = lines.count
47
+ $stdout.print "\e[#{n}F"
46
48
  end
47
49
 
48
50
  def stream_plot(type)
@@ -59,7 +61,7 @@ module RfBeam
59
61
 
60
62
  def monitor_keypress
61
63
  loop do
62
- key = STDIN.getch
64
+ key = $stdin.getch
63
65
  if key.downcase == 'q'
64
66
  @streaming = false
65
67
  break
@@ -76,6 +78,7 @@ module RfBeam
76
78
  end
77
79
 
78
80
  def display_ddat(stream)
81
+ data = @radar.ddat
79
82
  if stream
80
83
  @streaming = true
81
84
  Thread.new { monitor_keypress }
@@ -83,28 +86,28 @@ module RfBeam
83
86
  logger = TTY::Logger.new
84
87
  loop do
85
88
  break unless @streaming
89
+
86
90
  spinner.spin
87
- data = @radar.ddat
88
- spinner.update title: "Searching... #{data[:detection_str]}"
89
- logger.success "#{@radar.tdat}" if data[:detection]
91
+ spinner.update title: "Detection: #{DETECTION_FLAGS[data[2]]}"
92
+ logger.success @radar.tdat.to_s unless data[2].zero?
90
93
  end
91
94
  else
92
- puts RfBeam::KLD7::CliFormatter.new.ddat(@radar.ddat)
95
+ puts RfBeam::Kld7::CliFormatter.new.ddat(data)
93
96
  end
94
97
  end
95
98
 
96
99
  def display_tdat(stream)
97
- puts RfBeam::KLD7::CliFormatter.new.tdat(@radar.tdat)
100
+ puts RfBeam::Kld7::CliFormatter.new.tdat(@radar.tdat)
98
101
  end
99
102
 
100
103
  def display_pdat(stream)
101
- table = RfBeam::KLD7::CliFormatter.new.pdat_table(@radar.pdat)
104
+ table = RfBeam::Kld7::CliFormatter.new.pdat_table(@radar.pdat)
102
105
  puts "\n Detected Raw Targets"
103
106
  puts table.render(:unicode, alignment: :center)
104
107
  end
105
108
 
106
109
  def rfft_plot
107
- width = TTY::Screen.width * 0.65
110
+ screen_width = TTY::Screen.width * 0.65
108
111
  data = rfft_plot_data(@radar.rfft)
109
112
  plot =
110
113
  UnicodePlot.lineplot(
@@ -113,7 +116,7 @@ module RfBeam
113
116
  name: 'IF1/2 Averaged',
114
117
  title: 'Raw FFT',
115
118
  height: 25,
116
- width: width,
119
+ width: screen_width,
117
120
  xlabel: 'Speed (km/h)',
118
121
  ylabel: 'Signal (db)',
119
122
  xlim: [-128, 128],
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RfBeam
2
- module KLD7
4
+ module Kld7
3
5
  # All supported Serial port baude rates
4
6
  BAUDE_RATES = { 0 => 115_200, 1 => 460_800, 2 => 921_600, 3 => 2_000_000, 4 => 3_000_000 }.freeze
5
7
 
@@ -31,158 +33,231 @@ module RfBeam
31
33
  speed: %w[Low High]
32
34
  }.freeze
33
35
 
34
- Param =
35
- Struct.new(:name, :grps_index, :description, :default, :units, :values) do
36
- def initialize(name:, grps_index:, description: nil, default: nil, units: nil, values: [])
37
- super(name, grps_index, description, default, units, values)
38
- end
36
+ class Param
37
+ attr_accessor :name, :grps_index, :description, :default, :units, :str_values
38
+
39
+ def initialize(name:, grps_index:, options: {})
40
+ @name = name
41
+ @grps_index = grps_index
42
+ @description = options.fetch(:description, nil)
43
+ @default = options.fetch(:default, nil)
44
+ @units = options.fetch(:units, nil)
45
+ @str_values = options.fetch(:str_values, [])
39
46
  end
47
+ end
40
48
 
41
49
  RADAR_PARAMETERS = {
42
- sw_version: Param.new(name: 'Software Version', grps_index: 2, default: 'K-LD7_APP-RFB-XXXX'),
50
+ sw_version: Param.new(name: 'Software Version', grps_index: 2, options: { default: 'K-LD7_APP-RFB-XXXX' }),
43
51
  base_frequency:
44
52
  Param.new(
45
53
  name: 'Base Frequency',
46
54
  grps_index: 3,
47
- description: '0 = Low, 1 = Middle, 2 = High',
48
- default: 1,
49
- values: %w[Low Middle High]
55
+ options: {
56
+ description: '0 = Low, 1 = Middle, 2 = High',
57
+ default: 1,
58
+ str_values: %w[Low Middle High]
59
+ }
50
60
  ),
51
61
  max_speed:
52
62
  Param.new(
53
63
  name: 'Maximum Speed',
54
64
  grps_index: 4,
55
- description: '0 = 12km/h, 1 = 25km/h, 2 = 50km/h, 3 = 100km/h',
56
- default: 1,
57
- units: 'km/h',
58
- values: %w[12.5 25 50 100]
65
+ options: {
66
+ description: '0 = 12km/h, 1 = 25km/h, 2 = 50km/h, 3 = 100km/h',
67
+ default: 1,
68
+ units: 'km/h',
69
+ str_values: %w[12.5 25 50 100]
70
+ }
59
71
  ),
60
72
  max_range:
61
73
  Param.new(
62
74
  name: 'Maximum Range',
63
75
  grps_index: 5,
64
- description: '0 = 5m, 1 = 10m, 2 = 30m, 3 = 100m',
65
- default: 1,
66
- values: %w[5m 10m 30m 100m]
76
+ options: {
77
+ description: '0 = 5m, 1 = 10m, 2 = 30m, 3 = 100m',
78
+ default: 1,
79
+ str_values: %w[5m 10m 30m 100m]
80
+ }
67
81
  ),
68
82
  threshold_offset:
69
- Param.new(name: 'Threshold Offset', grps_index: 6, description: '10db - 60db', default: 30, units: 'db'),
83
+ Param.new(
84
+ name: 'Threshold Offset',
85
+ grps_index: 6,
86
+ options: {
87
+ description: '10db - 60db',
88
+ default: 30,
89
+ units: 'db'
90
+ }
91
+ ),
70
92
  tracking_filter:
71
93
  Param.new(
72
94
  name: 'Tracking Filter Type',
73
95
  grps_index: 7,
74
- description: '0 = Standard, 2 = Fast Detection, 3 = Long Visibility',
75
- default: 0,
76
- values: ['standard', 'Fast Detection', 'Long Visibility']
96
+ options: {
97
+ description: '0 = Standard, 2 = Fast Detection, 3 = Long Visibility',
98
+ default: 0,
99
+ str_values: ['standard', 'Fast Detection', 'Long Visibility']
100
+ }
77
101
  ),
78
102
  vibration_suppression:
79
103
  Param.new(
80
104
  name: 'Vibration Suppression',
81
105
  grps_index: 8,
82
- description: '0-16, 0 = No Suppression, 16 = High Suppression',
83
- default: 2
106
+ options: {
107
+ description: '0-16, 0 = No Suppression, 16 = High Suppression',
108
+ default: 2
109
+ }
84
110
  ),
85
111
  min_detection_distance:
86
112
  Param.new(
87
113
  name: 'Minimum Detection Distance',
88
114
  grps_index: 9,
89
- description: '0 - 100% of range setting',
90
- default: 0,
91
- units: '%'
115
+ options: {
116
+ description: '0 - 100% of range setting',
117
+ default: 0,
118
+ units: '%'
119
+ }
92
120
  ),
93
121
  max_detection_distance:
94
122
  Param.new(
95
123
  name: 'Maximum Detection Distance',
96
124
  grps_index: 10,
97
- description: '0 - 100% of range setting',
98
- default: 50,
99
- units: '%'
125
+ options: {
126
+ description: '0 - 100% of range setting',
127
+ default: 50,
128
+ units: '%'
129
+ }
100
130
  ),
101
131
  min_detection_angle:
102
- Param.new(name: 'Minimum Detection Angle', grps_index: 11, description: '-90° - 90°', default: -90, units: '°'),
132
+ Param.new(
133
+ name: 'Minimum Detection Angle',
134
+ grps_index: 11,
135
+ options: {
136
+ description: '-90° - 90°',
137
+ default: -90,
138
+ units: '°'
139
+ }
140
+ ),
103
141
  max_detection_angle:
104
- Param.new(name: 'Maximum Detection Angle', grps_index: 12, description: '-90° - 90°', default: 90, units: '°'),
142
+ Param.new(
143
+ name: 'Maximum Detection Angle',
144
+ grps_index: 12,
145
+ options: {
146
+ description: '-90° - 90°',
147
+ default: 90,
148
+ units: '°'
149
+ }
150
+ ),
105
151
  min_detection_speed:
106
152
  Param.new(
107
153
  name: 'Minimum Detection Speed',
108
154
  grps_index: 13,
109
- description: '0 - 100% of speed setting',
110
- default: 0,
111
- units: '%'
155
+ options: {
156
+ description: '0 - 100% of speed setting',
157
+ default: 0,
158
+ units: '%'
159
+ }
112
160
  ),
113
161
  max_detection_speed:
114
162
  Param.new(
115
163
  name: 'Maximum Detection Speed',
116
164
  grps_index: 14,
117
- description: '0 - 100% of speed setting',
118
- default: 100,
119
- units: '%'
165
+ options: {
166
+ description: '0 - 100% of speed setting',
167
+ default: 100,
168
+ units: '%'
169
+ }
120
170
  ),
121
171
  detection_direction:
122
172
  Param.new(
123
173
  name: 'Detection Direction',
124
174
  grps_index: 15,
125
- description: '0 = Receding, 1 = Approaching, 2 = Both',
126
- default: 2,
127
- values: %w[Receding Approaching Both]
175
+ options: {
176
+ description: '0 = Receding, 1 = Approaching, 2 = Both',
177
+ default: 2,
178
+ str_values: %w[Receding Approaching Both]
179
+ }
128
180
  ),
129
181
  range_threshold:
130
182
  Param.new(
131
183
  name: 'Range Threshold',
132
184
  grps_index: 16,
133
- description: '0 - 100% of range setting',
134
- default: 10,
135
- units: '%'
185
+ options: {
186
+ description: '0 - 100% of range setting',
187
+ default: 10,
188
+ units: '%'
189
+ }
136
190
  ),
137
191
  angle_threshold:
138
- Param.new(name: 'Angle Threshold', grps_index: 17, description: '-90° - 90°', default: 0, units: '°'),
192
+ Param.new(
193
+ name: 'Angle Threshold',
194
+ grps_index: 17,
195
+ options: {
196
+ description: '-90° - 90°',
197
+ default: 0,
198
+ units: '°'
199
+ }
200
+ ),
139
201
  speed_threshold:
140
202
  Param.new(
141
203
  name: 'Speed Threshold',
142
204
  grps_index: 18,
143
- description: '0 - 100% of speed setting',
144
- default: 50,
145
- units: '%'
205
+ options: {
206
+ description: '0 - 100% of speed setting',
207
+ default: 50,
208
+ units: '%'
209
+ }
146
210
  ),
147
211
  digital_output1:
148
212
  Param.new(
149
213
  name: 'Digital Output 1',
150
214
  grps_index: 19,
151
- description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
152
- default: 0,
153
- values: %w[Direction Angle Range Speed Micro]
215
+ options: {
216
+ description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
217
+ default: 0,
218
+ str_values: %w[Direction Angle Range Speed Micro]
219
+ }
154
220
  ),
155
221
  digital_output2:
156
222
  Param.new(
157
223
  name: 'Digital Output 2',
158
224
  grps_index: 20,
159
- description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
160
- default: 1,
161
- values: %w[Direction Angle Range Speed Micro]
225
+ options: {
226
+ description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
227
+ default: 1,
228
+ str_values: %w[Direction Angle Range Speed Micro]
229
+ }
162
230
  ),
163
231
  digital_output3:
164
232
  Param.new(
165
233
  name: 'Digital Output 3',
166
234
  grps_index: 21,
167
- description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
168
- default: 2,
169
- values: %w[Direction Angle Range Speed Micro]
235
+ options: {
236
+ description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
237
+ default: 2,
238
+ str_values: %w[Direction Angle Range Speed Micro]
239
+ }
170
240
  ),
171
- hold_time: Param.new(name: 'Hold Time', grps_index: 22, description: '1 - 7200s', default: 1, units: 's'),
241
+ hold_time:
242
+ Param.new(name: 'Hold Time', grps_index: 22, options: { description: '1 - 7200s', default: 1, units: 's' }),
172
243
  micro_detection_retrigger:
173
244
  Param.new(
174
245
  name: 'Micro Detection Trigger',
175
246
  grps_index: 23,
176
- description: '0 = Off, 1 = Retrigger',
177
- default: 0,
178
- values: %w[Off Retrigger]
247
+ options: {
248
+ description: '0 = Off, 1 = Retrigger',
249
+ default: 0,
250
+ str_values: %w[Off Retrigger]
251
+ }
179
252
  ),
180
253
  micro_detection_sensativity:
181
254
  Param.new(
182
255
  name: 'Micro Detection Sensativity',
183
256
  grps_index: 24,
184
- description: '0 - 9, 0 = Min, 9 = Max',
185
- default: 4
257
+ options: {
258
+ description: '0 - 9, 0 = Min, 9 = Max',
259
+ default: 4
260
+ }
186
261
  )
187
262
  }.freeze
188
263
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'csv'
2
4
 
3
5
  module RfBeam
4
- module KLD7
6
+ module Kld7
5
7
  def detection?
6
8
  data = ddat
7
9
  (data[2] == 1)
@@ -33,7 +35,7 @@ module RfBeam
33
35
  return resp unless formatted
34
36
 
35
37
  target_count = resp[1].to_i / 8
36
- return [] unless target_count > 0
38
+ return [] unless target_count.positive?
37
39
 
38
40
  resp.shift 2
39
41
  resp.compact
@@ -58,6 +60,7 @@ module RfBeam
58
60
 
59
61
  resp = read(14).unpack('a4LC6')
60
62
  raise Error, "DDAT response = #{resp[0]}" unless resp[0] == 'DDAT'
63
+
61
64
  resp
62
65
  end
63
66
 
@@ -71,8 +74,8 @@ module RfBeam
71
74
 
72
75
  def config
73
76
  data = grps
74
- output = "\n"
75
- RADAR_PARAMETERS.keys.each { |key| output << formatted_parameter(key, data[RADAR_PARAMETERS[key].grps_index]) }
77
+ output = []
78
+ RADAR_PARAMETERS.each_key { |key| output << formatted_parameter(key, data[RADAR_PARAMETERS[key].grps_index]) }
76
79
  output
77
80
  end
78
81
 
@@ -82,7 +85,7 @@ module RfBeam
82
85
  data = grps
83
86
  value = data[param.grps_index]
84
87
  end
85
- param_str_value = param.values.empty? ? value.to_s : param.values[value]
88
+ param_str_value = param.str_values.empty? ? value.to_s : param.str_values[value]
86
89
  "#{param.name}: #{param_str_value}#{param.units}\n"
87
90
  end
88
91
 
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RfBeam
2
- module KLD7
4
+ module Kld7
3
5
  # -----------------
4
6
  # Software Version, 'K-LD7_APP-RFB-XXXX'
5
7
  # -----------------
@@ -386,8 +388,6 @@ module RfBeam
386
388
  'L'
387
389
  when :int32
388
390
  'l'
389
- when :uint32
390
- 'S'
391
391
  else
392
392
  'L'
393
393
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RfBeam
2
- module KLD7
4
+ module Kld7
3
5
  require 'rubyserial'
4
6
  require 'timeout'
5
-
7
+
6
8
  class Error < StandardError
7
9
  end
8
10
 
@@ -80,10 +82,10 @@ module RfBeam
80
82
  raise Error, 'No valid response from Serial Port' if resp[2].nil?
81
83
 
82
84
  response_key = resp[2]
83
- return response_key.zero? # Everything OK
84
-
85
85
  error_string = RESP_CODES[response_key].nil? ? 'Response unknown' : RESP_CODES[response_key]
86
- raise Error, "Radar response Error: #{error_string}"
86
+ raise Error, "Radar response Error: #{error_string}" unless response_key.zero?
87
+
88
+ response_key.zero? # Everything OK
87
89
  end
88
90
  end
89
91
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RfBeam
4
- VERSION = '0.4.3'
4
+ VERSION = '0.4.4'
5
5
  end
data/lib/rfbeam.rb CHANGED
@@ -13,8 +13,8 @@ module RfBeam
13
13
  class Error < StandardError
14
14
  end
15
15
 
16
- class K_ld7
17
- include RfBeam::KLD7
16
+ class KLD7
17
+ include RfBeam::Kld7
18
18
  end
19
19
 
20
20
  def self.connected
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfbeam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Carruthers