rfbeam 0.5.1 → 0.5.8
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/.pre-commit-config.yaml +8 -0
- data/.tool-versions +1 -1
- data/CHANGELOG.md +39 -46
- data/Gemfile +10 -7
- data/Gemfile.lock +47 -44
- data/README.md +71 -113
- data/Rakefile +5 -9
- data/cliff.toml +74 -0
- data/cog.toml +7 -3
- data/exe/rfbeam +0 -1
- data/lib/rfbeam/cli.rb +37 -29
- data/lib/rfbeam/kld7/constants.rb +5 -4
- data/lib/rfbeam/kld7/detection_params.rb +149 -0
- data/lib/rfbeam/kld7/module_params.rb +96 -0
- data/lib/rfbeam/kld7/operation_params.rb +162 -0
- data/lib/rfbeam/kld7/radar_messages.rb +23 -39
- data/lib/rfbeam/kld7/serial_connection.rb +13 -14
- data/lib/rfbeam/kld7/streamer.rb +15 -14
- data/lib/rfbeam/version.rb +1 -1
- data/lib/rfbeam.rb +8 -7
- data/output.csv +257 -0
- data/rfbeam.gemspec +3 -8
- data/yarn.lock +221 -12
- metadata +12 -167
- data/.rubocop.yml +0 -25
- data/.streerc~1f4cd14e3c0a9afdf972aa5f3982d36a89869b72 +0 -2
- data/lib/rfbeam/kld7/cli_formatter.rb +0 -61
- data/lib/rfbeam/kld7/cli_output.rb +0 -141
- data/lib/rfbeam/kld7/radar_parameters.rb +0 -441
- data/node_modules/.bin/prettier +0 -1
- data/node_modules/.yarn-integrity +0 -19
- data/node_modules/@prettier/plugin-ruby/CHANGELOG.md +0 -1351
- data/node_modules/@prettier/plugin-ruby/CODE_OF_CONDUCT.md +0 -76
- data/node_modules/@prettier/plugin-ruby/CONTRIBUTING.md +0 -185
- data/node_modules/@prettier/plugin-ruby/LICENSE +0 -21
- data/node_modules/@prettier/plugin-ruby/README.md +0 -226
- data/node_modules/@prettier/plugin-ruby/docs/logo.png +0 -0
- data/node_modules/@prettier/plugin-ruby/node_modules/.bin/prettier +0 -1
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/LICENSE +0 -5945
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/README.md +0 -109
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/bin-prettier.js +0 -62
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/cli.js +0 -15136
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/doc.js +0 -1473
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-angular.mjs +0 -2
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-babel.mjs +0 -29
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-espree.mjs +0 -26
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-flow.mjs +0 -35
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-glimmer.mjs +0 -27
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-graphql.mjs +0 -15
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-html.mjs +0 -36
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-markdown.mjs +0 -76
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-meriyah.mjs +0 -19
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-postcss.mjs +0 -76
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-typescript.mjs +0 -257
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-yaml.mjs +0 -150
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/standalone.mjs +0 -116
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/index.js +0 -37885
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/package.json +0 -21
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-angular.js +0 -2
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-babel.js +0 -29
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-espree.js +0 -26
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-flow.js +0 -35
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-glimmer.js +0 -27
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-graphql.js +0 -15
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-html.js +0 -36
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-markdown.js +0 -76
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-meriyah.js +0 -19
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-postcss.js +0 -76
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-typescript.js +0 -257
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-yaml.js +0 -150
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/standalone.js +0 -116
- data/node_modules/@prettier/plugin-ruby/node_modules/prettier/third-party.js +0 -8978
- data/node_modules/@prettier/plugin-ruby/package.json +0 -64
- data/node_modules/@prettier/plugin-ruby/prettier.gemspec +0 -36
- data/node_modules/@prettier/plugin-ruby/rubocop.yml +0 -64
- data/node_modules/@prettier/plugin-ruby/src/getInfo.js +0 -23
- data/node_modules/@prettier/plugin-ruby/src/netcat.js +0 -13
- data/node_modules/@prettier/plugin-ruby/src/parseSync.js +0 -236
- data/node_modules/@prettier/plugin-ruby/src/plugin.js +0 -172
- data/node_modules/@prettier/plugin-ruby/src/server.rb +0 -199
- data/node_modules/prettier/LICENSE +0 -5970
- data/node_modules/prettier/README.md +0 -109
- data/node_modules/prettier/bin-prettier.js +0 -64
- data/node_modules/prettier/cli.js +0 -15364
- data/node_modules/prettier/doc.js +0 -1473
- data/node_modules/prettier/esm/parser-angular.mjs +0 -2
- data/node_modules/prettier/esm/parser-babel.mjs +0 -29
- data/node_modules/prettier/esm/parser-espree.mjs +0 -26
- data/node_modules/prettier/esm/parser-flow.mjs +0 -35
- data/node_modules/prettier/esm/parser-glimmer.mjs +0 -27
- data/node_modules/prettier/esm/parser-graphql.mjs +0 -15
- data/node_modules/prettier/esm/parser-html.mjs +0 -36
- data/node_modules/prettier/esm/parser-markdown.mjs +0 -76
- data/node_modules/prettier/esm/parser-meriyah.mjs +0 -19
- data/node_modules/prettier/esm/parser-postcss.mjs +0 -76
- data/node_modules/prettier/esm/parser-typescript.mjs +0 -49
- data/node_modules/prettier/esm/parser-yaml.mjs +0 -150
- data/node_modules/prettier/esm/standalone.mjs +0 -116
- data/node_modules/prettier/index.js +0 -38236
- data/node_modules/prettier/package.json +0 -21
- data/node_modules/prettier/parser-angular.js +0 -2
- data/node_modules/prettier/parser-babel.js +0 -29
- data/node_modules/prettier/parser-espree.js +0 -26
- data/node_modules/prettier/parser-flow.js +0 -35
- data/node_modules/prettier/parser-glimmer.js +0 -27
- data/node_modules/prettier/parser-graphql.js +0 -15
- data/node_modules/prettier/parser-html.js +0 -36
- data/node_modules/prettier/parser-markdown.js +0 -76
- data/node_modules/prettier/parser-meriyah.js +0 -19
- data/node_modules/prettier/parser-postcss.js +0 -76
- data/node_modules/prettier/parser-typescript.js +0 -49
- data/node_modules/prettier/parser-yaml.js +0 -150
- data/node_modules/prettier/standalone.js +0 -116
- data/node_modules/prettier/third-party.js +0 -8978
- data/package.json +0 -6
data/README.md
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# Rfbeam
|
|
2
2
|
|
|
3
|
-

|
|
4
|
-

|
|
5
|
-
|
|
6
3
|

|
|
7
|
-

|
|
5
|
+

|
|
9
6
|
|
|
10
|
-
RfBeam is a simple, high-level interface
|
|
11
|
-
The user can query
|
|
7
|
+
RfBeam is a simple, high-level interface for the RFBeam radar modules.
|
|
8
|
+
The user can query process and raw detection data and set the radar parameters for the sensor.
|
|
12
9
|
|
|
13
10
|
At this stage it only works on Linux and Mac with the K-LD7 module.
|
|
14
11
|
|
|
@@ -26,90 +23,75 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
|
26
23
|
|
|
27
24
|
The RfBeam class will return the path of any connected modules
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
RfBeam.connected
|
|
31
|
-
=> ["/dev/ttyUSB0"]
|
|
32
|
-
```
|
|
26
|
+
RfBeam.connected
|
|
33
27
|
|
|
34
|
-
Simple pass the path and
|
|
28
|
+
Simple pass the path and baude rate to initialise a new radar object
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
=>
|
|
41
|
-
Software Version: K-LD7_APP-RFB-0103
|
|
42
|
-
Base Frequency: Low
|
|
43
|
-
Maximum Speed: 100km/h
|
|
44
|
-
Maximum Range: 100m
|
|
45
|
-
Threshold Offset: 30db
|
|
46
|
-
Tracking Filter Type: Long Visibility
|
|
47
|
-
Vibration Suppression: 16
|
|
48
|
-
Minimum Detection Distance: 0%
|
|
49
|
-
Maximum Detection Distance: 100%
|
|
50
|
-
Minimum Detection Angle: -10°
|
|
51
|
-
Maximum Detection Angle: 90°
|
|
52
|
-
Minimum Detection Speed: 0%
|
|
53
|
-
Maximum Detection Speed: 100%
|
|
54
|
-
Detection Direction: Both
|
|
55
|
-
Range Threshold: 10%
|
|
56
|
-
Angle Threshold: 0°
|
|
57
|
-
Speed Threshold: 50%
|
|
58
|
-
Digital Output 1: Direction
|
|
59
|
-
Digital Output 2: Angle
|
|
60
|
-
Digital Output 3: Range
|
|
61
|
-
Hold Time: 1s
|
|
62
|
-
Micro Detection Trigger: Off
|
|
63
|
-
Micro Detection Sensativity: 4
|
|
64
|
-
```
|
|
30
|
+
RfBeam::Kld7.new("/dev/ttyUSB0", 115200) do |radar|
|
|
31
|
+
puts radar.config
|
|
32
|
+
end
|
|
65
33
|
|
|
66
|
-
## RfBeam::
|
|
34
|
+
## RfBeam::Kld7 API
|
|
67
35
|
|
|
68
36
|
### detection?
|
|
69
37
|
|
|
70
38
|
Returns true if the module has a valid detection.
|
|
71
39
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
=> true
|
|
75
|
-
```
|
|
40
|
+
radar.detection?
|
|
41
|
+
=> true
|
|
76
42
|
|
|
77
43
|
### ddat
|
|
78
44
|
|
|
79
45
|
Returns an array with the current detection values
|
|
80
46
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
=> ["DDAT", 6, 0, 0, 0, 0, 0, 0]
|
|
84
|
-
```
|
|
47
|
+
radar.ddat
|
|
48
|
+
=> ["DDAT", 6, 0, 0, 0, 0, 0, 0]
|
|
85
49
|
|
|
86
50
|
### tdat
|
|
87
51
|
|
|
88
52
|
Returns a hash with the current tracked object values
|
|
89
53
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
=> ["TDAT", 4, 68, 196, 469, 6303]
|
|
93
|
-
```
|
|
54
|
+
radar.tdat
|
|
55
|
+
=> {:dist=>68, :speed=>196, :angle=>469, :mag=>6303}
|
|
94
56
|
|
|
95
57
|
### grps
|
|
96
58
|
|
|
97
59
|
Returns the Parameter settings, values map to setting as detailed in the device datasheet.
|
|
98
60
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
=> ["RPST", 42, "K-LD7_APP-RFB-0103", 1, 1, 1, 30, 0, 2, 0, 50, -90, 90, 0, 100, 2, 10, 0, 50, 0, 1, 2, 1, 0, 4]
|
|
102
|
-
```
|
|
61
|
+
radar.grps
|
|
62
|
+
=> ["RPST", 42, "K-LD7_APP-RFB-0103", 1, 1, 1, 30, 0, 2, 0, 50, -90, 90, 0, 100, 2, 10, 0, 50, 0, 1, 2, 1, 0, 4]
|
|
103
63
|
|
|
104
64
|
### config
|
|
105
65
|
|
|
106
66
|
Returns a formatted String of all parameter settings. The only way to read parameter settings is with config
|
|
107
67
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
68
|
+
radar.config
|
|
69
|
+
|
|
70
|
+
Software Version: K-LD7_APP-RFB-0103
|
|
71
|
+
Base Frequency: Low
|
|
72
|
+
Maximum Speed: 100km/h
|
|
73
|
+
Maximum Range: 100m
|
|
74
|
+
Threshold Offset: 30db
|
|
75
|
+
Tracking Filter Type: Long Visibility
|
|
76
|
+
Vibration Suppression: 16
|
|
77
|
+
Minimum Detection Distance: 0%
|
|
78
|
+
Maximum Detection Distance: 100%
|
|
79
|
+
Minimum Detection Angle: -10°
|
|
80
|
+
Maximum Detection Angle: 90°
|
|
81
|
+
Minimum Detection Speed: 0%
|
|
82
|
+
Maximum Detection Speed: 100%
|
|
83
|
+
Detection Direction: Both
|
|
84
|
+
Range Threshold: 10%
|
|
85
|
+
Angle Threshold: 0°
|
|
86
|
+
Speed Threshold: 50%
|
|
87
|
+
Digital Output 1: Direction
|
|
88
|
+
Digital Output 2: Angle
|
|
89
|
+
Digital Output 3: Range
|
|
90
|
+
Hold Time: 1s
|
|
91
|
+
Micro Detection Trigger: Off
|
|
92
|
+
Micro Detection Sensativity: 4
|
|
93
|
+
|
|
94
|
+
## Parameter setters
|
|
113
95
|
|
|
114
96
|
### Base Frequency
|
|
115
97
|
|
|
@@ -118,7 +100,7 @@ radar.config
|
|
|
118
100
|
alias :rbfr
|
|
119
101
|
|
|
120
102
|
```ruby
|
|
121
|
-
|
|
103
|
+
set_base_frequency(1)
|
|
122
104
|
```
|
|
123
105
|
|
|
124
106
|
### Maximum Speed
|
|
@@ -126,7 +108,7 @@ radar.base_frequency = 1
|
|
|
126
108
|
0 = 12.5km/h, 1 = 25km/h (default), 2 = 50km/h, 3 = 100km/h, alias :rspi
|
|
127
109
|
|
|
128
110
|
```ruby
|
|
129
|
-
|
|
111
|
+
set_max_speed(1)
|
|
130
112
|
```
|
|
131
113
|
|
|
132
114
|
### Maximum Range
|
|
@@ -134,7 +116,7 @@ radar.max_speed = 1
|
|
|
134
116
|
0 = 5m, 1 = 10m (default), 2 = 30m, 3 = 100m, alias :rrai
|
|
135
117
|
|
|
136
118
|
```ruby
|
|
137
|
-
|
|
119
|
+
set_max_range(1)
|
|
138
120
|
```
|
|
139
121
|
|
|
140
122
|
### Threshold Offset
|
|
@@ -142,7 +124,7 @@ radar.max_range = 1
|
|
|
142
124
|
10 - 60db, (default = 30), alias :thof
|
|
143
125
|
|
|
144
126
|
```ruby
|
|
145
|
-
|
|
127
|
+
set_threshold_offset(30)
|
|
146
128
|
```
|
|
147
129
|
|
|
148
130
|
### Tracking filter type
|
|
@@ -150,7 +132,7 @@ radar.threshold_offset = 30
|
|
|
150
132
|
0 = Standard (Default), 1 = Fast Tracking, 2 = Long visibility, alias :trtf
|
|
151
133
|
|
|
152
134
|
```ruby
|
|
153
|
-
|
|
135
|
+
set_tracking_filter(0)
|
|
154
136
|
```
|
|
155
137
|
|
|
156
138
|
### Vibration suppression
|
|
@@ -158,7 +140,7 @@ radar.tracking_filter = 0
|
|
|
158
140
|
0 - 16, 0 = No Suppression, 16 = High Suppression, default = 2, alias :visu
|
|
159
141
|
|
|
160
142
|
```ruby
|
|
161
|
-
|
|
143
|
+
set_vibration_suppression(2)
|
|
162
144
|
```
|
|
163
145
|
|
|
164
146
|
### Minimum Detection distance
|
|
@@ -166,7 +148,7 @@ radar.vibration_suppression = 2
|
|
|
166
148
|
0 - 100% of Range setting, default = 0, alias :mira
|
|
167
149
|
|
|
168
150
|
```ruby
|
|
169
|
-
|
|
151
|
+
set_min_detection_distance(0)
|
|
170
152
|
```
|
|
171
153
|
|
|
172
154
|
### Maximum Detection distance
|
|
@@ -174,7 +156,7 @@ radar.min_detection_distance = 0
|
|
|
174
156
|
0 - 100% of Range setting, default = 50, alias :mara
|
|
175
157
|
|
|
176
158
|
```ruby
|
|
177
|
-
|
|
159
|
+
set_max_detection_distance(50)
|
|
178
160
|
```
|
|
179
161
|
|
|
180
162
|
### Minimum Detection Angle
|
|
@@ -182,7 +164,7 @@ radar.max_detection_distance = 50
|
|
|
182
164
|
-90° - 90°, default = -90, alias :mian
|
|
183
165
|
|
|
184
166
|
```ruby
|
|
185
|
-
|
|
167
|
+
set_min_detection_angle(-90
|
|
186
168
|
```
|
|
187
169
|
|
|
188
170
|
### Maximum Detection Angle
|
|
@@ -190,7 +172,7 @@ radar.min_detection_angle = -90
|
|
|
190
172
|
-90° - 90°, default = 90, alias :maan
|
|
191
173
|
|
|
192
174
|
```ruby
|
|
193
|
-
|
|
175
|
+
set_min_detection_angle(90)
|
|
194
176
|
```
|
|
195
177
|
|
|
196
178
|
### Minimum Detection Speed
|
|
@@ -198,7 +180,7 @@ radar.min_detection_angle = 90
|
|
|
198
180
|
0 - 100% of Speed setting, default = 0, alias :misp
|
|
199
181
|
|
|
200
182
|
```ruby
|
|
201
|
-
|
|
183
|
+
set_min_detection_speed(0)
|
|
202
184
|
```
|
|
203
185
|
|
|
204
186
|
### Maximum Detection Speed
|
|
@@ -206,7 +188,7 @@ radar.min_detection_speed = 0
|
|
|
206
188
|
0 - 100% of Speed setting, default = 100, alias :masp
|
|
207
189
|
|
|
208
190
|
```ruby
|
|
209
|
-
|
|
191
|
+
set_max_detection_speed(100)
|
|
210
192
|
```
|
|
211
193
|
|
|
212
194
|
### Detection Direction
|
|
@@ -214,7 +196,7 @@ radar.max_detection_speed = 100
|
|
|
214
196
|
0 = Receding, 1 = Approaching, 2 = Both (default), alias :dedi
|
|
215
197
|
|
|
216
198
|
```ruby
|
|
217
|
-
|
|
199
|
+
set_detection_direction(2)
|
|
218
200
|
```
|
|
219
201
|
|
|
220
202
|
### Range Threshold
|
|
@@ -222,7 +204,7 @@ radar. detection_direction = 2
|
|
|
222
204
|
0 - 100% of Range setting, default = 10, alias :rath
|
|
223
205
|
|
|
224
206
|
```ruby
|
|
225
|
-
|
|
207
|
+
set_range_threshold(10)
|
|
226
208
|
```
|
|
227
209
|
|
|
228
210
|
### Angle Threshold
|
|
@@ -230,7 +212,7 @@ radar. range_threshold = 10
|
|
|
230
212
|
-90° to 90°, default = 0, alias :anth
|
|
231
213
|
|
|
232
214
|
```ruby
|
|
233
|
-
|
|
215
|
+
set_range_threshold(0)
|
|
234
216
|
```
|
|
235
217
|
|
|
236
218
|
### Speed Threshold
|
|
@@ -238,37 +220,37 @@ radar. range_threshold = 0
|
|
|
238
220
|
0 - 100% of speed setting, default = 50, alias :spth
|
|
239
221
|
|
|
240
222
|
```ruby
|
|
241
|
-
|
|
223
|
+
set_angle_threshold(50)
|
|
242
224
|
```
|
|
243
225
|
|
|
244
226
|
### Digital output 1
|
|
245
227
|
|
|
246
228
|
0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 0
|
|
247
229
|
|
|
248
|
-
alias :dig1
|
|
230
|
+
alias :dig1, :set_dio_1
|
|
249
231
|
|
|
250
232
|
```ruby
|
|
251
|
-
|
|
233
|
+
set_dio_1(0)
|
|
252
234
|
```
|
|
253
235
|
|
|
254
236
|
### Digital output 2
|
|
255
237
|
|
|
256
238
|
0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 1
|
|
257
239
|
|
|
258
|
-
alias :dig2
|
|
240
|
+
alias :dig2, :set_dio_2
|
|
259
241
|
|
|
260
242
|
```ruby
|
|
261
|
-
|
|
243
|
+
set_dio_2(1)
|
|
262
244
|
```
|
|
263
245
|
|
|
264
246
|
### Digital output 3
|
|
265
247
|
|
|
266
248
|
0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 2
|
|
267
249
|
|
|
268
|
-
alias :dig3
|
|
250
|
+
alias :dig3, :set_dio_3
|
|
269
251
|
|
|
270
252
|
```ruby
|
|
271
|
-
|
|
253
|
+
set_dio_3(2)
|
|
272
254
|
```
|
|
273
255
|
|
|
274
256
|
### Hold Time
|
|
@@ -278,7 +260,7 @@ radar.digital_output3 = 2
|
|
|
278
260
|
alias :hold
|
|
279
261
|
|
|
280
262
|
```ruby
|
|
281
|
-
|
|
263
|
+
set_hold_time(1)
|
|
282
264
|
```
|
|
283
265
|
|
|
284
266
|
### Micro Detection retrigger
|
|
@@ -288,7 +270,7 @@ radar.hold_time = 1
|
|
|
288
270
|
alias: :mide
|
|
289
271
|
|
|
290
272
|
```ruby
|
|
291
|
-
|
|
273
|
+
set_micro_detection_retrigger(0)
|
|
292
274
|
```
|
|
293
275
|
|
|
294
276
|
### Micro Detection sensitivity
|
|
@@ -298,31 +280,7 @@ radar.micro_detection_retrigger = 0
|
|
|
298
280
|
alias: :mids
|
|
299
281
|
|
|
300
282
|
```ruby
|
|
301
|
-
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
## CLI
|
|
305
|
-
|
|
306
|
-
```fish
|
|
307
|
-
❯ bundle exec rfbeam list
|
|
308
|
-
|
|
309
|
-
+--+------------+------------------+
|
|
310
|
-
|id|Path |Version |
|
|
311
|
-
+--+------------+------------------+
|
|
312
|
-
|0 |/dev/ttyUSB0|K-LD7_APP-RFB-0103|
|
|
313
|
-
+--+------------+------------------+
|
|
314
|
-
|
|
315
|
-
❯ bundle exec rfbeam help
|
|
316
|
-
Commands:
|
|
317
|
-
rfbeam config <radar_id> # Shows the parameter setting for the Radar module
|
|
318
|
-
rfbeam ddat <radar_id> -s, [--stream] # stream any valid detections, stop stream with q and enter
|
|
319
|
-
rfbeam help [COMMAND] # Describe available commands or one specific command
|
|
320
|
-
rfbeam list # List available radar modules
|
|
321
|
-
rfbeam pdat <radar_id> # Display Tracked Targets
|
|
322
|
-
rfbeam reset <radar_id> # Shows the parameter setting for the Radar module
|
|
323
|
-
rfbeam rfft <radar_id> -s, [--stream] # Display the dopplar radar data as a plot
|
|
324
|
-
rfbeam set_param <radar_id> <key> <value> # Set radar parameters, see readme for keys
|
|
325
|
-
rfbeam tdat <radar_id> # Display tracked target data
|
|
283
|
+
set_micro_detection_sensitivty(4)
|
|
326
284
|
```
|
|
327
285
|
|
|
328
286
|
## Development
|
|
@@ -333,7 +291,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
|
333
291
|
|
|
334
292
|
## Contributing
|
|
335
293
|
|
|
336
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
|
294
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/rfbeam.
|
|
337
295
|
|
|
338
296
|
## License
|
|
339
297
|
|
data/Rakefile
CHANGED
|
@@ -2,20 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
require 'bundler/gem_tasks'
|
|
4
4
|
require 'rake/testtask'
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Rake::TestTask.new(:local_test) do |t|
|
|
8
|
-
t.libs << 'test'
|
|
9
|
-
t.libs << 'lib'
|
|
10
|
-
t.test_files = FileList['test/local_tests/test_*.rb']
|
|
11
|
-
end
|
|
5
|
+
Dir.glob('tasks/*.rake').each { |r| import r }
|
|
12
6
|
|
|
13
7
|
Rake::TestTask.new(:test) do |t|
|
|
14
|
-
t.libs <<
|
|
8
|
+
t.libs << %w[test spec]
|
|
15
9
|
t.libs << 'lib'
|
|
16
|
-
t.test_files = FileList['test/**/test_*.rb'
|
|
10
|
+
t.test_files = FileList['test/**/test_*.rb', 'spec/**/*_spec.rb']
|
|
17
11
|
end
|
|
18
12
|
|
|
13
|
+
require 'rubocop/rake_task'
|
|
14
|
+
|
|
19
15
|
RuboCop::RakeTask.new
|
|
20
16
|
|
|
21
17
|
task default: %i[test rubocop]
|
data/cliff.toml
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# configuration file for git-cliff (0.1.0)
|
|
2
|
+
|
|
3
|
+
[changelog]
|
|
4
|
+
# changelog header
|
|
5
|
+
header = """
|
|
6
|
+
# Changelog\n
|
|
7
|
+
All notable changes to this project will be documented in this file.\n
|
|
8
|
+
"""
|
|
9
|
+
# template for the changelog body
|
|
10
|
+
# https://tera.netlify.app/docs/#introduction
|
|
11
|
+
body = """
|
|
12
|
+
{% if version %}\
|
|
13
|
+
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
|
14
|
+
{% else %}\
|
|
15
|
+
## [unreleased]
|
|
16
|
+
{% endif %}\
|
|
17
|
+
{% if previous %}\
|
|
18
|
+
{% if previous.commit_id %}
|
|
19
|
+
[{{ previous.commit_id | truncate(length=7, end="") }}]({{ previous.commit_id }})...\
|
|
20
|
+
[{{ commit_id | truncate(length=7, end="") }}]({{ commit_id }})
|
|
21
|
+
{% endif %}\
|
|
22
|
+
{% endif %}\
|
|
23
|
+
{% for group, commits in commits | group_by(attribute="group") %}
|
|
24
|
+
### {{ group | upper_first }}
|
|
25
|
+
{% for commit in commits %}
|
|
26
|
+
- {{ commit.message | upper_first }} ([{{ commit.id | truncate(length=7, end="") }}]({{ commit.id }}))\
|
|
27
|
+
{% for footer in commit.footers -%}
|
|
28
|
+
, {{ footer.token }}{{ footer.separator }}{{ footer.value }}\
|
|
29
|
+
{% endfor %}\
|
|
30
|
+
{% endfor %}
|
|
31
|
+
{% endfor %}\n
|
|
32
|
+
"""
|
|
33
|
+
# remove the leading and trailing whitespace from the template
|
|
34
|
+
trim = true
|
|
35
|
+
# changelog footer
|
|
36
|
+
footer = """
|
|
37
|
+
<!-- generated by git-cliff -->
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
[git]
|
|
41
|
+
# parse the commits based on https://www.conventionalcommits.org
|
|
42
|
+
conventional_commits = true
|
|
43
|
+
# filter out the commits that are not conventional
|
|
44
|
+
filter_unconventional = true
|
|
45
|
+
# process each line of a commit as an individual commit
|
|
46
|
+
split_commits = false
|
|
47
|
+
# regex for parsing and grouping commits
|
|
48
|
+
commit_parsers = [
|
|
49
|
+
{ message = "^feat", group = "Features"},
|
|
50
|
+
{ message = "^fix", group = "Bug Fixes"},
|
|
51
|
+
{ message = "^doc", group = "Documentation"},
|
|
52
|
+
{ message = "^perf", group = "Performance"},
|
|
53
|
+
{ message = "^refactor", group = "Refactor"},
|
|
54
|
+
{ message = "^style", group = "Styling"},
|
|
55
|
+
{ message = "^test", group = "Testing"},
|
|
56
|
+
{ message = "^chore\\(release\\): prepare for", skip = true},
|
|
57
|
+
{ message = "^chore", group = "Miscellaneous Tasks"},
|
|
58
|
+
{ message = "^task", group = "Miscellaneous Tasks"},
|
|
59
|
+
{ body = ".*security", group = "Security"},
|
|
60
|
+
]
|
|
61
|
+
# protect breaking changes from being skipped due to matching a skipping commit_parser
|
|
62
|
+
protect_breaking_commits = false
|
|
63
|
+
# filter out the commits that are not matched by commit parsers
|
|
64
|
+
filter_commits = false
|
|
65
|
+
# glob pattern for matching git tags
|
|
66
|
+
tag_pattern = "v[0-9]*"
|
|
67
|
+
# regex for skipping tags
|
|
68
|
+
skip_tags = "v0.1.0-beta.1"
|
|
69
|
+
# regex for ignoring tags
|
|
70
|
+
ignore_tags = ""
|
|
71
|
+
# sort the tags topologically
|
|
72
|
+
topo_order = false
|
|
73
|
+
# sort the commits inside sections by oldest/newest order
|
|
74
|
+
sort_commits = "oldest"
|
data/cog.toml
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
from_latest_tag =
|
|
1
|
+
from_latest_tag = true
|
|
2
2
|
ignore_merge_commits = false
|
|
3
3
|
branch_whitelist = []
|
|
4
|
-
pre_bump_hooks = [
|
|
5
|
-
post_bump_hooks = [
|
|
4
|
+
pre_bump_hooks = ["bump set {{version}} --no-bundle --no-commit"]
|
|
5
|
+
post_bump_hooks = []
|
|
6
6
|
pre_package_bump_hooks = []
|
|
7
7
|
post_package_bump_hooks = []
|
|
8
8
|
tag_prefix = "v"
|
|
9
9
|
|
|
10
10
|
[commit_types]
|
|
11
|
+
hotfix = { changelog_title = "Hotfixes" }
|
|
12
|
+
release = { changelog_title = "Releases" }
|
|
13
|
+
task = { changelog_title = "Miscellaneous Tasks" }
|
|
14
|
+
chore = { changelog_title = "Miscellaneous Tasks" }
|
|
11
15
|
|
|
12
16
|
[changelog]
|
|
13
17
|
path = "CHANGELOG.md"
|
data/exe/rfbeam
CHANGED
data/lib/rfbeam/cli.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
# rubocop:disable all
|
|
2
3
|
|
|
3
4
|
require 'thor'
|
|
4
5
|
require 'tty-table'
|
|
@@ -15,31 +16,36 @@ module RfBeam
|
|
|
15
16
|
def list
|
|
16
17
|
logger = TTY::Logger.new
|
|
17
18
|
devices = RfBeam.connected
|
|
18
|
-
|
|
19
|
+
logger.info 'No Radar modules found.' unless devices.count.positive?
|
|
19
20
|
|
|
20
21
|
table = TTY::Table.new(header: %w[id Path Version])
|
|
21
22
|
|
|
22
|
-
devices.each.with_index
|
|
23
|
+
devices.each.with_index do |path, index|
|
|
24
|
+
init_radar(index)
|
|
25
|
+
table << ["#{index}", path, @radar.sw_version]
|
|
26
|
+
end
|
|
23
27
|
puts table.render(:ascii)
|
|
24
28
|
end
|
|
25
29
|
|
|
26
|
-
desc 'config
|
|
30
|
+
desc 'config <radar_id>', 'Shows the parameter setting for the Radar module'
|
|
27
31
|
def config(radar_id)
|
|
28
|
-
|
|
32
|
+
init_radar(radar_id)
|
|
33
|
+
puts @radar.config
|
|
29
34
|
end
|
|
30
35
|
|
|
31
|
-
desc 'reset
|
|
36
|
+
desc 'reset <radar_id>', 'Shows the parameter setting for the Radar module'
|
|
32
37
|
def reset(radar_id)
|
|
33
|
-
|
|
38
|
+
init_radar(radar_id)
|
|
39
|
+
@logger.success 'Radar reset to factory defaults' if @radar.reset
|
|
34
40
|
end
|
|
35
41
|
|
|
36
|
-
desc 'set_param
|
|
42
|
+
desc 'set_param <radar_id> <key> <value>', 'Set radar parameters, see readme for keys'
|
|
37
43
|
def set_param(radar_id, param, value)
|
|
38
|
-
|
|
44
|
+
init_radar radar_id
|
|
45
|
+
return @logger.warn("Invalid param: '#{param}'") unless RfBeam::KLD7::RADAR_PARAMETERS.include?(param.to_sym)
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
@logger.success r.formatted_parameter(param.to_sym)
|
|
47
|
+
@radar.send("#{param}=", value.to_i)
|
|
48
|
+
@logger.success "Set #{@radar.formatted_parameter(param.to_sym)}"
|
|
43
49
|
end
|
|
44
50
|
|
|
45
51
|
desc 'ddat <radar_id>', 'stream any valid detections, stop stream with q and enter'
|
|
@@ -63,43 +69,46 @@ module RfBeam
|
|
|
63
69
|
end
|
|
64
70
|
end
|
|
65
71
|
|
|
66
|
-
desc '
|
|
67
|
-
option :raw, type: :boolean, aliases: '-r', desc: 'Display raw data'
|
|
68
|
-
def tdat(radar_id)
|
|
69
|
-
cli = RfBeam::Kld7::CliOutput.new(radar_id)
|
|
70
|
-
cli.display(:tdat, options)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
desc 'pdat [RADAR_ID]', 'Display Tracked Targets'
|
|
72
|
+
desc 'pdat <radar_id>', 'Display Tracked Targets'
|
|
74
73
|
def pdat(radar_id)
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
init_radar radar_id
|
|
75
|
+
puts @radar.pdat
|
|
77
76
|
end
|
|
78
77
|
|
|
79
78
|
desc 'rfft <radar_id>', 'Display the dopplar radar data as a plot'
|
|
80
79
|
option :stream, type: :boolean, aliases: '-s', desc: 'Stream the data from the device'
|
|
81
80
|
option :raw, type: :boolean, aliases: '-r', desc: 'Display raw data'
|
|
82
81
|
def rfft(radar_id)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
init_radar(radar_id)
|
|
83
|
+
|
|
84
|
+
case
|
|
85
|
+
when options[:stream]
|
|
86
|
+
streamer = RfBeam::KLD7::Streamer.new(@radar)
|
|
87
|
+
streamer.rfft
|
|
88
|
+
when options[:raw]
|
|
89
|
+
print @radar.rfft
|
|
86
90
|
else
|
|
87
|
-
|
|
91
|
+
plot = rfft_plot(@radar)
|
|
92
|
+
p plot.render
|
|
88
93
|
end
|
|
89
94
|
end
|
|
90
95
|
|
|
91
96
|
private
|
|
92
97
|
|
|
93
|
-
def
|
|
98
|
+
def init_radar(id)
|
|
94
99
|
devices = RfBeam.connected
|
|
95
100
|
@logger = TTY::Logger.new
|
|
96
|
-
return @logger.
|
|
101
|
+
return @logger.warn 'No Radar modules found.' unless devices.count.positive?
|
|
97
102
|
|
|
98
103
|
@radar = RfBeam::K_ld7.new(devices[id.to_i])
|
|
99
104
|
end
|
|
100
105
|
|
|
101
106
|
def plot_data(data)
|
|
102
|
-
{
|
|
107
|
+
{
|
|
108
|
+
x: Array(-128...128),
|
|
109
|
+
series1: data.shift(256).map { |value| value / 100 },
|
|
110
|
+
series2: data.shift(256).map { |value| value.to_i / 100 }
|
|
111
|
+
}
|
|
103
112
|
end
|
|
104
113
|
|
|
105
114
|
def monitor_keypress
|
|
@@ -116,7 +125,6 @@ module RfBeam
|
|
|
116
125
|
def rfft_plot(radar)
|
|
117
126
|
speed = radar.max_speed
|
|
118
127
|
speed_label = radar.formatted_parameter(:max_speed)
|
|
119
|
-
xlim = [speed - speed * 2, speed]
|
|
120
128
|
data = plot_data(radar.rfft)
|
|
121
129
|
plot =
|
|
122
130
|
UnicodePlot.lineplot(
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
# rubocop:disable all
|
|
2
3
|
|
|
3
4
|
module RfBeam
|
|
4
|
-
module
|
|
5
|
+
module KLD7
|
|
5
6
|
# All supported Serial port baude rates
|
|
6
7
|
BAUDE_RATES = { 0 => 115_200, 1 => 460_800, 2 => 921_600, 3 => 2_000_000, 4 => 3_000_000 }.freeze
|
|
7
8
|
|
|
@@ -25,10 +26,10 @@ module RfBeam
|
|
|
25
26
|
|
|
26
27
|
# The angle, direction, range and speed flags are only valid if the detection flag is 1.
|
|
27
28
|
DETECTION_FLAGS = {
|
|
28
|
-
detection:
|
|
29
|
-
micro_detection:
|
|
29
|
+
detection: ['No Detection', 'Detection'],
|
|
30
|
+
micro_detection: ['No Detection', 'Detection'],
|
|
30
31
|
angle: %w[Left Right],
|
|
31
|
-
direction: [
|
|
32
|
+
direction: %w[Receding Approaching],
|
|
32
33
|
range: %w[Far Near],
|
|
33
34
|
speed: %w[Low High]
|
|
34
35
|
}.freeze
|