rfbeam 0.3.1 → 0.3.3

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: 8b330fbbd75049114a6b8be3c4870ac68723bb2a25fd0870e40e81304f215cc7
4
- data.tar.gz: f740ced4593c75173d216527ab4f0afcaf85cb323097a8b7a86f9c3ad7717a74
3
+ metadata.gz: 9b79b7e0fa02dd099a126d18b8eb2de0d6d4c6bf3396891d42082851851160dd
4
+ data.tar.gz: 98bb8d9c52705fb542785adbbb798330af16fde06498acddbd12156c9eece97c
5
5
  SHA512:
6
- metadata.gz: 5c6e265438debcac0e7a3cae53cbe68a589e9eca2529f57ca49179b70aa7ded7e8d0dab2052a748319fe6d02fe4b74640907c3909603e58b13f0b632cb5bbed5
7
- data.tar.gz: eb1d53dea2e385a06c8729657f3a9283c2da19120ce122c5b763ba83dc980235ae543bf31fc53e2b27338b43eeed760e2cf7fef407e8e9ac34f866916bc60bd5
6
+ metadata.gz: 35619295790790e9d3ffb3d80dab111cae4650e083d227ec1787a96fc0c8741369463d1678ae2256413ecbf0dd104078328d32a1e76b6278fea817742cecefa3
7
+ data.tar.gz: 39ea4038c1175e9d4f598c1662c1f0152bee7d14fc6222fff29cf6e4b76af2886d57138003feb26d1e25ee45485972f600f7eb99c66e62770e2c7dcbfb4dded3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [0.3.1] - 2023-3-28
2
2
 
3
+ - Added setters for Parameter settings
4
+
5
+ ## [0.3.1] - 2023-3-28
6
+
3
7
  - Added setter for Max Distance
4
8
  - Added setter for Max Speed
5
9
  - Added setter for Threshold offset
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rfbeam (0.3.0)
4
+ rfbeam (0.3.3)
5
5
  activesupport (~> 6.1.0)
6
6
  rubyserial (~> 0.6.0)
7
7
  thor (~> 1.2.1)
data/README.md CHANGED
@@ -59,7 +59,7 @@ Returns the Parameter settings, values map to setting as detailed in the device
59
59
 
60
60
  ### config
61
61
 
62
- Returns a formatted String of all parameter settings
62
+ Returns a formatted String of all parameter settings. The only way to read parameter settings is with config
63
63
 
64
64
  radar.config
65
65
 
@@ -86,6 +86,198 @@ Returns a formatted String of all parameter settings
86
86
  Micro Detection Retrigger: Off
87
87
  Micro Detection Sensitivity: 4 (0 - 9, 0 = Min, 9 = Max)
88
88
 
89
+ ## Parameter setters
90
+
91
+ ### Base Frequency
92
+
93
+ 0 = low, 1 = middle (default), 2 = high
94
+
95
+ alias :rbfr
96
+
97
+ ```ruby
98
+ set_base_frequency(1)
99
+ ```
100
+
101
+ ### Maximum Speed
102
+
103
+ 0 = 12.5km/h, 1 = 25km/h (default), 2 = 50km/h, 3 = 100km/h, alias :rspi
104
+
105
+ ```ruby
106
+ set_max_speed(1)
107
+ ```
108
+
109
+ ### Maximum Range
110
+
111
+ 0 = 5m, 1 = 10m (default), 2 = 30m, 3 = 100m, alias :rrai
112
+
113
+ ```ruby
114
+ set_max_range(1)
115
+ ```
116
+
117
+ ### Threshold Offset
118
+
119
+ 10 - 60db, (default = 30), alias :thof
120
+
121
+ ```ruby
122
+ set_threshold_offset(30)
123
+ ```
124
+
125
+ ### Tracking filter type
126
+
127
+ 0 = Standard (Default), 1 = Fast Tracking, 2 = Long visibility, alias :trtf
128
+
129
+ ```ruby
130
+ set_tracking_filter(0)
131
+ ```
132
+
133
+ ### Vibration suppression
134
+
135
+ 0 - 16, 0 = No Suppression, 16 = High Suppression, default = 2, alias :visu
136
+
137
+ ```ruby
138
+ set_vibration_suppression(2)
139
+ ```
140
+
141
+ ### Minimum Detection distance
142
+
143
+ 0 - 100% of Range setting, default = 0, alias :mira
144
+
145
+ ```ruby
146
+ set_min_detection_distance(0)
147
+ ```
148
+
149
+ ### Maximum Detection distance
150
+
151
+ 0 - 100% of Range setting, default = 50, alias :mara
152
+
153
+ ```ruby
154
+ set_max_detection_distance(50)
155
+ ```
156
+
157
+ ### Minimum Detection Angle
158
+
159
+ -90° - 90°, default = -90, alias :mian
160
+
161
+ ```ruby
162
+ set_min_detection_angle(-90
163
+ ```
164
+
165
+ ### Maximum Detection Angle
166
+
167
+ -90° - 90°, default = 90, alias :maan
168
+
169
+ ```ruby
170
+ set_min_detection_angle(90)
171
+ ```
172
+
173
+ ### Minimum Detection Speed
174
+
175
+ 0 - 100% of Speed setting, default = 0, alias :misp
176
+
177
+ ```ruby
178
+ set_min_detection_speed(0)
179
+ ```
180
+
181
+ ### Maximum Detection Speed
182
+
183
+ 0 - 100% of Speed setting, default = 100, alias :masp
184
+
185
+ ```ruby
186
+ set_max_detection_speed(100)
187
+ ```
188
+
189
+ ### Detection Direction
190
+
191
+ 0 = Receding, 1 = Approaching, 2 = Both (default), alias :dedi
192
+
193
+ ```ruby
194
+ set_detection_direction(2)
195
+ ```
196
+
197
+ ### Range Threshold
198
+
199
+ 0 - 100% of Range setting, default = 10, alias :rath
200
+
201
+ ```ruby
202
+ set_range_threshold(10)
203
+ ```
204
+
205
+ ### Angle Threshold
206
+
207
+ -90° to 90°, default = 0, alias :anth
208
+
209
+ ```ruby
210
+ set_range_threshold(0)
211
+ ```
212
+
213
+ ### Speed Threshold
214
+
215
+ 0 - 100% of speed setting, default = 50, alias :spth
216
+
217
+ ```ruby
218
+ set_angle_threshold(50)
219
+ ```
220
+
221
+ ### Digital output 1
222
+
223
+ 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 0
224
+
225
+ alias :dig1, :set_dio_1
226
+
227
+ ```ruby
228
+ set_dio_1(0)
229
+ ```
230
+
231
+ ### Digital output 2
232
+
233
+ 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 1
234
+
235
+ alias :dig2, :set_dio_2
236
+
237
+ ```ruby
238
+ set_dio_2(1)
239
+ ```
240
+
241
+ ### Digital output 3
242
+
243
+ 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 2
244
+
245
+ alias :dig3, :set_dio_3
246
+
247
+ ```ruby
248
+ set_dio_3(2)
249
+ ```
250
+
251
+ ### Hold Time
252
+
253
+ 1 - 7200s, default = 1
254
+
255
+ alias :hold
256
+
257
+ ```ruby
258
+ set_hold_time(1)
259
+ ```
260
+
261
+ ### Micro Detection retrigger
262
+
263
+ 0 = Off (default), 1 = Retrigger
264
+
265
+ alias: :mide
266
+
267
+ ```ruby
268
+ set_micro_detection_retrigger(0)
269
+ ```
270
+
271
+ ### Micro Detection sensitivity
272
+
273
+ 0 - 9, 0 = Min, 9 = Max, default = 4
274
+
275
+ alias: :mids
276
+
277
+ ```ruby
278
+ set_micro_detection_sensitivty(4)
279
+ ```
280
+
89
281
  ## Development
90
282
 
91
283
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,230 @@
1
+ module RfBeam
2
+ module KLD7
3
+
4
+ def detection?
5
+ data = ddat
6
+ (data[2] == 1)
7
+ end
8
+
9
+ def config
10
+ puts formatted_grps(grps)
11
+ end
12
+
13
+ # Get the radar parameter structure
14
+ def grps
15
+ command = ['GRPS', 0]
16
+ write command.pack('a4L')
17
+ check_response
18
+ read(50).unpack('a4LA19C8c2C4cCCCCSCC')
19
+ end
20
+
21
+ # Base Frequency, 0 = low, 1 = middle (default), 2 = high
22
+ def set_base_frequency(frequency = 1)
23
+ set_parameter(:rbfr, frequency, :uint8)
24
+ end
25
+ alias_method :rbfr, :set_base_frequency
26
+
27
+ # Maximum Speed, 0 = 12.5km/h, 1 = 25km/h (default), 2 = 50km/h, 3 = 100km/h
28
+ def set_max_speed(speed = 1)
29
+ set_parameter :rspi, speed, :uint8
30
+ end
31
+ alias_method :rspi, :set_max_speed
32
+
33
+ # Maximum Range, 0 = 5m, 1 = 10m (default), 2 = 30m, 3 = 100m
34
+ def set_max_range(range = 1)
35
+ set_parameter :rrai, range, :uint8
36
+ end
37
+ alias_method :rrai, :set_max_range
38
+
39
+ # Threshold Offset, 10 - 60db, (default = 30)
40
+ def set_threshold_offset(offset = 30)
41
+ range = 10..60
42
+ return false unless range.include?(offset)
43
+
44
+ set_parameter :thof, offset, :uint8
45
+ end
46
+ alias_method :thof, :set_threshold_offset
47
+
48
+ # Tracking filter type, 0 = Standard (Default), 1 = Fast Tracking, 2 = Long visibility
49
+ def set_tracking_filter(type = 0)
50
+ set_parameter :trft, type, :uint8
51
+ end
52
+ alias_method :trtf, :set_tracking_filter
53
+
54
+ # Vibration suppression, 0 - 16, 0 = No Suppression, 16 = High Suppression, default = 2
55
+ def set_vibration_suppression(value = 2)
56
+ set_parameter :visu, value, :uint8
57
+ end
58
+ alias_method :visu, :set_vibration_suppression
59
+
60
+ # Minimum Detection distance, 0 - 100% of Range setting, default = 0
61
+ def set_min_detection_distance(value = 0)
62
+ set_parameter :mira, value, :uint8
63
+ end
64
+ alias_method :mira, :set_min_detection_distance
65
+
66
+ # Maximum Detection distance, 0 - 100% of Range setting, default = 50
67
+ def set_max_detection_distance(value = 50)
68
+ set_parameter :mara, value, :uint8
69
+ end
70
+ alias_method :mara, :set_max_detection_distance
71
+
72
+ # Minimum Detection Angle, -90° - 90°, default = -90
73
+ def set_min_detection_angle(angle = -90)
74
+ set_parameter :mian, angle, :int8
75
+ end
76
+ alias_method :mian, :set_min_detection_distance
77
+
78
+ # Maximum Detection Angle, -90° - 90°, default = 90
79
+ def set_min_detection_angle(angle = 90)
80
+ set_parameter :maan, angle, :int8
81
+ end
82
+ alias_method :maan, :set_min_detection_angle
83
+
84
+ # Minimum Detection Speed, 0 - 100% of Speed setting, default = 0
85
+ def set_min_detection_speed(speed = 0)
86
+ set_parameter :misp, speed, :uint8
87
+ end
88
+ alias_method :misp, :set_min_detection_speed
89
+
90
+ # Maximum Detection Speed, 0 - 100% of Speed setting, default = 100
91
+ def set_max_detection_speed(speed = 100)
92
+ set_parameter :masp, speed, :uint8
93
+ end
94
+ alias_method :masp, :set_max_detection_speed
95
+
96
+ # Detection Direction, 0 = Receding, 1 = Approaching, 2 = Both (default)
97
+ def set_detection_direction(direction = 2)
98
+ set_parameter :dedi, direction, :uint8
99
+ end
100
+ alias_method :dedi, :set_detection_direction
101
+
102
+ # Range Threshold, 0 - 100% of Range setting, default = 10
103
+ def set_range_threshold(value = 10)
104
+ range = 0..100
105
+ return false unless range.include?(value)
106
+
107
+ set_parameter :rath, value, :uint8
108
+ end
109
+ alias_method :rath, :set_range_threshold
110
+
111
+ # Angle Threshold, -90° to 90°, default = 0
112
+ def set_range_threshold(value = 0)
113
+ range = -90..90
114
+ return false unless range.include?(value)
115
+
116
+ set_parameter :anth, value, :int8
117
+ end
118
+ alias_method :anth, :set_range_threshold
119
+
120
+ # Speed Threshold, 0 - 100% of speed setting, default = 50
121
+ def set_angle_threshold(value = 50)
122
+ range = 0..100
123
+ return false unless range.include?(value)
124
+
125
+ set_parameter :spth, value, :uint8
126
+ end
127
+ alias_method :spth, :set_angle_threshold
128
+
129
+ # Digital output 1, 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 0
130
+ def set_dio_1(value = 0)
131
+ range = 0..4
132
+ return false unless range.include?(value)
133
+
134
+ set_parameter :dig1, value, :uint8
135
+ end
136
+ alias_method :dig1, :set_dio_1
137
+
138
+ # Digital output 2, 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 1
139
+ def set_dio_2(value = 1)
140
+ range = 0..4
141
+ return false unless range.include?(value)
142
+
143
+ set_parameter :dig2, value, :uint8
144
+ end
145
+ alias_method :dig2, :set_dio_2
146
+
147
+ # Digital output 3, 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 2
148
+ def set_dio_3(value = 2)
149
+ range = 0..4
150
+ return false unless range.include?(value)
151
+
152
+ set_parameter :dig3, value, :uint8
153
+ end
154
+ alias_method :dig3, :set_dio_3
155
+
156
+ # Hold Time, 1 - 7200s, default = 1
157
+ def set_hold_time(time = 1)
158
+ range = 1..7200
159
+ return false unless range.include?(time)
160
+
161
+ set_parameter :hold, time, :uint16
162
+ end
163
+ alias_method :hold, :set_hold_time
164
+
165
+ # Micro Detection retrigger, 0 = Off (default), 1 = Retrigger
166
+ def set_micro_detection_retrigger(value = 0)
167
+ return false unless (value == 0 || value == 1)
168
+
169
+ set_parameter :mide, value, :uint8
170
+ end
171
+ alias_method :mide, :set_micro_detection_retrigger
172
+
173
+ # Micro Detection sensitivity, 0 - 9, 0 = Min, 9 = Max, default = 4
174
+ def set_micro_detection_sensitivty(value = 4)
175
+ range = 0..9
176
+ return false unless range.include?(value)
177
+
178
+ set_parameter :mids, value, :uint8
179
+ end
180
+ alias_method :mids, :set_micro_detection_sensitivty
181
+
182
+ private
183
+
184
+ def set_parameter(header, value, return_type = :uint8)
185
+ return_type =
186
+ case return_type
187
+ when :uint8
188
+ 'L'
189
+ when :int8
190
+ 'c'
191
+ when :uint16
192
+ 'S'
193
+ else
194
+ 'L'
195
+ end
196
+ command = [header.upcase.to_s, 4, value]
197
+ write command.pack("a4L#{return_type}")
198
+ check_response
199
+ end
200
+
201
+ def formatted_grps(data)
202
+ output = "\n"
203
+ output << "Software Version: #{data[2]}\n"
204
+ output << "Base Frequency: #{PARAMETER_STRUCTURE[:base_frequency][data[3]]}\n"
205
+ output << "Max Speed: #{PARAMETER_STRUCTURE[:max_speed][data[4]]}\n"
206
+ output << "Max Range: #{PARAMETER_STRUCTURE[:max_range][data[5]]}\n"
207
+ output << "Threshold offset: #{data[6]}db\n"
208
+ output << "Tracking Filter Type: #{PARAMETER_STRUCTURE[:tracking_filter_type][data[7]]}\n"
209
+ output << "Vibration Suppression: #{data[8]} , (#{PARAMETER_STRUCTURE[:vibration_suppression]})\n"
210
+ output << "Minimum Detection Distance: #{data[9]} , (#{PARAMETER_STRUCTURE[:min_detection_distance]})\n"
211
+ output << "Maximum Detection Distance: #{data[10]} , (#{PARAMETER_STRUCTURE[:max_detection_distance]})\n"
212
+ output << "Minimum Detection Angle: #{data[11]}° , (#{PARAMETER_STRUCTURE[:min_detection_angle]})\n"
213
+ output << "Maximum Detection Angle: #{data[12]}° , (#{PARAMETER_STRUCTURE[:max_detection_angle]})\n"
214
+ output << "Minimum Detection Speed: #{data[13]} , (#{PARAMETER_STRUCTURE[:min_detection_speed]})\n"
215
+ output << "Maximum Detection Speed: #{data[14]} , (#{PARAMETER_STRUCTURE[:max_detection_speed]})\n"
216
+ output << "Detection Direction: #{PARAMETER_STRUCTURE[:detection_direction][data[15]]}\n"
217
+ output << "Range Threshold: #{data[16]}%, (#{PARAMETER_STRUCTURE[:range_threshold]})\n"
218
+ output << "Angle Threshold: #{data[17]}°, (#{PARAMETER_STRUCTURE[:angle_threshold]})\n"
219
+ output << "Speed Threshold: #{data[18]}%, (#{PARAMETER_STRUCTURE[:speed_threshold]})\n"
220
+ output << "Digital output 1: #{PARAMETER_STRUCTURE[:digital_output_1][data[19]]}\n"
221
+ output << "Digital output 2: #{PARAMETER_STRUCTURE[:digital_output_2][data[20]]}\n"
222
+ output << "Digital output 3: #{PARAMETER_STRUCTURE[:digital_output_3][data[21]]}\n"
223
+ output << "Hold time: #{data[22]}sec\n"
224
+ output << "Micro Detection Retrigger: #{PARAMETER_STRUCTURE[:micro_detection_trigger][data[23]]}\n"
225
+ output << "Micro Detection Sensitivity: #{data[24]} (#{PARAMETER_STRUCTURE[:micro_detection_sensitivity]})"
226
+
227
+ output
228
+ end
229
+ end
230
+ end
@@ -4,6 +4,14 @@ module RfBeam
4
4
  data = ddat
5
5
  (data[2] == 1)
6
6
  end
7
+
8
+ def pdat
9
+ request_frame_data(:pdat)
10
+ sleep 0.1
11
+
12
+ resp = read(102).unpack('a4LSssSSssS')
13
+ resp
14
+ end
7
15
 
8
16
  def tdat
9
17
  request_frame_data(:tdat)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RfBeam
4
- VERSION = '0.3.1'
4
+ VERSION = '0.3.3'
5
5
  end
data/lib/rfbeam.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rfbeam/kld7/commands'
4
- require 'rfbeam/kld7/detection'
5
- require 'rfbeam/kld7/parameters'
6
- require 'rfbeam/kld7/device_data'
3
+ require 'rfbeam/kld7/app_commands'
4
+ require 'rfbeam/kld7/app_messages'
5
+ require 'rfbeam/kld7/connection'
6
+ require 'rfbeam/kld7/constants'
7
7
  require_relative 'rfbeam/version'
8
8
 
9
9
  module RfBeam
@@ -14,16 +14,16 @@ module RfBeam
14
14
  include RfBeam::KLD7
15
15
  end
16
16
 
17
- def self.connected
18
- path_str, dir =
19
- if RubySerial::ON_LINUX
20
- %w[ttyUSB /dev/]
21
- elsif RubySerial::ON_WINDOWS
22
- ['TODO: Implement find device for Windows', 'You lazy bugger']
23
- else
24
- %w[tty.usbserial /dev/]
25
- end
26
-
27
- Dir.glob("#{dir}#{path_str}*")
17
+ def self.connected
18
+ path_str, dir =
19
+ if RubySerial::ON_LINUX
20
+ %w[ttyUSB /dev/]
21
+ elsif RubySerial::ON_WINDOWS
22
+ ['TODO: Implement find device for Windows', 'You lazy bugger']
23
+ else
24
+ %w[tty.usbserial /dev/]
25
+ end
26
+
27
+ Dir.glob("#{dir}#{path_str}*")
28
28
  end
29
29
  end
data/rfbeam.gemspec ADDED
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/rfbeam/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'rfbeam'
7
+ spec.version = RfBeam::VERSION
8
+ spec.authors = ['Rob Carruthers']
9
+ spec.email = ['robc@hey.com']
10
+
11
+ spec.summary = 'Ruby Serial interface and CLI for RFBeam doplar radar modules'
12
+ spec.description = 'Currently only works K-LD7 on Raspberry Pi (MacOS & Ubuntu 22.04 LTS)'
13
+ spec.homepage = 'https://gitlab.com/robcarruthers/rfbeam'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 2.7.6'
16
+
17
+ # spec.metadata["allowed_push_host"] = "TODO: Set to your gem server 'https://example.com'"
18
+
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = 'https://gitlab.com/robcarruthers/rfbeam'
21
+ spec.metadata['changelog_uri'] = 'https://gitlab.com/robcarruthers/rfbeam/CHANGELOG.md'
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ spec.files =
26
+ Dir.chdir(__dir__) do
27
+ `git ls-files -z`.split("\x0")
28
+ .reject do |f|
29
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
30
+ end
31
+ end
32
+ spec.bindir = 'exe'
33
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
34
+ spec.require_paths = ['lib']
35
+
36
+ # Uncomment to register a new dependency of your gem
37
+ # spec.add_dependency "example-gem", "~> 1.0"
38
+ spec.add_dependency 'activesupport', '~> 6.1.0'
39
+ # spec.add_dependency 'bindata', '~> 2.4.10'
40
+ spec.add_dependency 'rubyserial', '~> 0.6.0'
41
+ # spec.add_dependency 'terminal-table', '~> 3.0.2'
42
+ spec.add_dependency 'thor', '~> 1.2.1'
43
+
44
+ # For more information and examples about making a new gem, check out our
45
+ # guide at: https://bundler.io/guides/creating_gem.html
46
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfbeam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Carruthers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-28 00:00:00.000000000 Z
11
+ date: 2023-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -69,10 +69,10 @@ files:
69
69
  - README.md
70
70
  - Rakefile
71
71
  - lib/rfbeam.rb
72
- - lib/rfbeam/kld7/commands.rb
73
- - lib/rfbeam/kld7/detection.rb
74
- - lib/rfbeam/kld7/device_data.rb
75
- - lib/rfbeam/kld7/parameters.rb
72
+ - lib/rfbeam/kld7/app_commands.rb
73
+ - lib/rfbeam/kld7/app_messages.rb
74
+ - lib/rfbeam/kld7/connection.rb
75
+ - lib/rfbeam/kld7/constants.rb
76
76
  - lib/rfbeam/version.rb
77
77
  - node_modules/.bin/prettier
78
78
  - node_modules/.yarn-integrity
@@ -160,6 +160,7 @@ files:
160
160
  - node_modules/prettier/standalone.js
161
161
  - node_modules/prettier/third-party.js
162
162
  - package.json
163
+ - rfbeam.gemspec
163
164
  - sig/rfbeam.rbs
164
165
  - yarn.lock
165
166
  homepage: https://gitlab.com/robcarruthers/rfbeam
@@ -1,96 +0,0 @@
1
- module RfBeam
2
- module KLD7
3
-
4
- def detection?
5
- data = ddat
6
- (data[2] == 1)
7
- end
8
-
9
- def config
10
- puts formatted_grps(grps)
11
- end
12
-
13
- # Get the radar parameter structure
14
- def grps
15
- command = ['GRPS', 0]
16
- write command.pack('a4L')
17
- check_response
18
- read(50).unpack('a4LA19C8c2C4cCCCCSCC')
19
- end
20
-
21
- # Base Frequency, 0 = low, 1 = middle (default), 2 = high
22
- def set_base_frequency(frequency = 1)
23
- set_parameter(:rbfr, frequency, :uint8)
24
- end
25
- alias_method :rbfr, :set_base_frequency
26
-
27
- # Maximum Speed, 0 = 12.5km/h, 1 = 25km/h (default), 2 = 50km/h, 3 = 100km/h
28
- def set_max_speed(speed = 1)
29
- set_parameter :rspi, speed, :uint8
30
- end
31
- alias_method :rspi, :set_max_speed
32
-
33
- # Maximum Range, 0 = 5m, 1 = 10m (default), 2 = 30m, 3 = 100m
34
- def set_max_range(range = 1)
35
- set_parameter :rrai, range, :unit8
36
- end
37
- alias_method :rrai, :set_max_range
38
-
39
- # Threshold Offset, 10 - 60db, (default = 30)
40
- def set_threshold_offset(offset = 30)
41
- range = 10..60
42
- return false unless range.include?(offset)
43
-
44
- set_parameter :thof, range, :unit8
45
- end
46
- alias_method :thof, :set_threshold_offset
47
-
48
- private
49
-
50
- def set_parameter(header, value, return_type = :uint8)
51
- return_type =
52
- case return_type
53
- when :uint8
54
- 'L'
55
- when :int8
56
- 'c'
57
- when :uint16
58
- 'S'
59
- else
60
- 'L'
61
- end
62
- command = [header.upcase.to_s, 4, value]
63
- write command.pack("a4L#{return_type}")
64
- check_response
65
- end
66
-
67
- def formatted_grps(data)
68
- output = "\n"
69
- output << "Software Version: #{data[2]}\n"
70
- output << "Base Frequency: #{PARAMETER_STRUCTURE[:base_frequency][data[3]]}\n"
71
- output << "Max Speed: #{PARAMETER_STRUCTURE[:max_speed][data[4]]}\n"
72
- output << "Max Range: #{PARAMETER_STRUCTURE[:max_range][data[5]]}\n"
73
- output << "Threshold offset: #{data[6]}db\n"
74
- output << "Tracking Filter Type: #{PARAMETER_STRUCTURE[:tracking_filter_type][data[7]]}\n"
75
- output << "Vibration Suppression: #{data[8]} , (#{PARAMETER_STRUCTURE[:vibration_suppression]})\n"
76
- output << "Minimum Detection Distance: #{data[9]} , (#{PARAMETER_STRUCTURE[:min_detection_distance]})\n"
77
- output << "Maximum Detection Distance: #{data[10]} , (#{PARAMETER_STRUCTURE[:max_detection_distance]})\n"
78
- output << "Minimum Detection Angle: #{data[11]}° , (#{PARAMETER_STRUCTURE[:min_detection_angle]})\n"
79
- output << "Maximum Detection Angle: #{data[12]}° , (#{PARAMETER_STRUCTURE[:max_detection_distance]})\n"
80
- output << "Maximum Detection Speed: #{data[13]} , (#{PARAMETER_STRUCTURE[:min_detection_speed]})\n"
81
- output << "Maximum Detection Speed: #{data[14]} , (#{PARAMETER_STRUCTURE[:max_detection_speed]})\n"
82
- output << "Detection Direction: #{data[15]}"
83
- output << "Range Threshold: #{data[16]}%, (#{PARAMETER_STRUCTURE[:range_threshold]})\n"
84
- output << "Angle Threshold: #{data[17]}°, (#{PARAMETER_STRUCTURE[:angle_threshold]})\n"
85
- output << "Speed Threshold: #{data[18]}%, (#{PARAMETER_STRUCTURE[:speed_threshold]})\n"
86
- output << "Digital output 1: #{PARAMETER_STRUCTURE[:digital_output_1][data[19]]}\n"
87
- output << "Digital output 2: #{PARAMETER_STRUCTURE[:digital_output_2][data[20]]}\n"
88
- output << "Digital output 3: #{PARAMETER_STRUCTURE[:digital_output_3][data[21]]}\n"
89
- output << "Hold time: #{data[22]}sec\n"
90
- output << "Micro Detection Retrigger: #{PARAMETER_STRUCTURE[:micro_detection_trigger][data[23]]}\n"
91
- output << "Micro Detection Sensitivity: #{data[24]} (#{PARAMETER_STRUCTURE[:micro_detection_sensitivity]})"
92
-
93
- output
94
- end
95
- end
96
- end
File without changes
File without changes