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 +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +193 -1
- data/lib/rfbeam/kld7/app_commands.rb +230 -0
- data/lib/rfbeam/kld7/{detection.rb → app_messages.rb} +8 -0
- data/lib/rfbeam/version.rb +1 -1
- data/lib/rfbeam.rb +15 -15
- data/rfbeam.gemspec +46 -0
- metadata +7 -6
- data/lib/rfbeam/kld7/parameters.rb +0 -96
- /data/lib/rfbeam/kld7/{commands.rb → connection.rb} +0 -0
- /data/lib/rfbeam/kld7/{device_data.rb → constants.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b79b7e0fa02dd099a126d18b8eb2de0d6d4c6bf3396891d42082851851160dd
|
4
|
+
data.tar.gz: 98bb8d9c52705fb542785adbbb798330af16fde06498acddbd12156c9eece97c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35619295790790e9d3ffb3d80dab111cae4650e083d227ec1787a96fc0c8741369463d1678ae2256413ecbf0dd104078328d32a1e76b6278fea817742cecefa3
|
7
|
+
data.tar.gz: 39ea4038c1175e9d4f598c1662c1f0152bee7d14fc6222fff29cf6e4b76af2886d57138003feb26d1e25ee45485972f600f7eb99c66e62770e2c7dcbfb4dded3
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
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
|
data/lib/rfbeam/version.rb
CHANGED
data/lib/rfbeam.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'rfbeam/kld7/
|
4
|
-
require 'rfbeam/kld7/
|
5
|
-
require 'rfbeam/kld7/
|
6
|
-
require 'rfbeam/kld7/
|
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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.
|
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-
|
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/
|
73
|
-
- lib/rfbeam/kld7/
|
74
|
-
- lib/rfbeam/kld7/
|
75
|
-
- lib/rfbeam/kld7/
|
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
|