rfbeam 0.5.0 → 0.5.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/.pre-commit-config.yaml +8 -0
  3. data/.streerc +1 -0
  4. data/.tool-versions +1 -1
  5. data/CHANGELOG.md +48 -47
  6. data/Gemfile +10 -7
  7. data/Gemfile.lock +48 -44
  8. data/README.md +71 -113
  9. data/Rakefile +3 -2
  10. data/cliff.toml +74 -0
  11. data/cog.toml +28 -0
  12. data/exe/rfbeam +0 -1
  13. data/lib/rfbeam/cli.rb +93 -36
  14. data/lib/rfbeam/kld7/constants.rb +66 -138
  15. data/lib/rfbeam/kld7/detection_params.rb +149 -0
  16. data/lib/rfbeam/kld7/module_params.rb +96 -0
  17. data/lib/rfbeam/kld7/operation_params.rb +162 -0
  18. data/lib/rfbeam/kld7/radar_messages.rb +18 -17
  19. data/lib/rfbeam/kld7/serial_connection.rb +13 -14
  20. data/lib/rfbeam/kld7/streamer.rb +83 -0
  21. data/lib/rfbeam/version.rb +1 -1
  22. data/lib/rfbeam.rb +8 -7
  23. data/output.csv +257 -0
  24. data/rfbeam.gemspec +6 -11
  25. data/streamer2.rb +55 -0
  26. data/streaming.rb +71 -0
  27. data/yarn.lock +221 -12
  28. metadata +23 -173
  29. data/.rubocop.yml +0 -25
  30. data/.streerc +0 -2
  31. data/lib/rfbeam/kld7/cli_formatter.rb +0 -61
  32. data/lib/rfbeam/kld7/cli_output.rb +0 -141
  33. data/lib/rfbeam/kld7/radar_parameters.rb +0 -397
  34. data/node_modules/.bin/prettier +0 -1
  35. data/node_modules/.yarn-integrity +0 -19
  36. data/node_modules/@prettier/plugin-ruby/CHANGELOG.md +0 -1351
  37. data/node_modules/@prettier/plugin-ruby/CODE_OF_CONDUCT.md +0 -76
  38. data/node_modules/@prettier/plugin-ruby/CONTRIBUTING.md +0 -185
  39. data/node_modules/@prettier/plugin-ruby/LICENSE +0 -21
  40. data/node_modules/@prettier/plugin-ruby/README.md +0 -226
  41. data/node_modules/@prettier/plugin-ruby/docs/logo.png +0 -0
  42. data/node_modules/@prettier/plugin-ruby/node_modules/.bin/prettier +0 -1
  43. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/LICENSE +0 -5945
  44. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/README.md +0 -109
  45. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/bin-prettier.js +0 -62
  46. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/cli.js +0 -15136
  47. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/doc.js +0 -1473
  48. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-angular.mjs +0 -2
  49. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-babel.mjs +0 -29
  50. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-espree.mjs +0 -26
  51. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-flow.mjs +0 -35
  52. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-glimmer.mjs +0 -27
  53. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-graphql.mjs +0 -15
  54. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-html.mjs +0 -36
  55. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-markdown.mjs +0 -76
  56. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-meriyah.mjs +0 -19
  57. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-postcss.mjs +0 -76
  58. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-typescript.mjs +0 -257
  59. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/parser-yaml.mjs +0 -150
  60. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/esm/standalone.mjs +0 -116
  61. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/index.js +0 -37885
  62. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/package.json +0 -21
  63. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-angular.js +0 -2
  64. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-babel.js +0 -29
  65. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-espree.js +0 -26
  66. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-flow.js +0 -35
  67. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-glimmer.js +0 -27
  68. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-graphql.js +0 -15
  69. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-html.js +0 -36
  70. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-markdown.js +0 -76
  71. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-meriyah.js +0 -19
  72. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-postcss.js +0 -76
  73. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-typescript.js +0 -257
  74. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/parser-yaml.js +0 -150
  75. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/standalone.js +0 -116
  76. data/node_modules/@prettier/plugin-ruby/node_modules/prettier/third-party.js +0 -8978
  77. data/node_modules/@prettier/plugin-ruby/package.json +0 -64
  78. data/node_modules/@prettier/plugin-ruby/prettier.gemspec +0 -36
  79. data/node_modules/@prettier/plugin-ruby/rubocop.yml +0 -64
  80. data/node_modules/@prettier/plugin-ruby/src/getInfo.js +0 -23
  81. data/node_modules/@prettier/plugin-ruby/src/netcat.js +0 -13
  82. data/node_modules/@prettier/plugin-ruby/src/parseSync.js +0 -236
  83. data/node_modules/@prettier/plugin-ruby/src/plugin.js +0 -172
  84. data/node_modules/@prettier/plugin-ruby/src/server.rb +0 -199
  85. data/node_modules/prettier/LICENSE +0 -5970
  86. data/node_modules/prettier/README.md +0 -109
  87. data/node_modules/prettier/bin-prettier.js +0 -64
  88. data/node_modules/prettier/cli.js +0 -15364
  89. data/node_modules/prettier/doc.js +0 -1473
  90. data/node_modules/prettier/esm/parser-angular.mjs +0 -2
  91. data/node_modules/prettier/esm/parser-babel.mjs +0 -29
  92. data/node_modules/prettier/esm/parser-espree.mjs +0 -26
  93. data/node_modules/prettier/esm/parser-flow.mjs +0 -35
  94. data/node_modules/prettier/esm/parser-glimmer.mjs +0 -27
  95. data/node_modules/prettier/esm/parser-graphql.mjs +0 -15
  96. data/node_modules/prettier/esm/parser-html.mjs +0 -36
  97. data/node_modules/prettier/esm/parser-markdown.mjs +0 -76
  98. data/node_modules/prettier/esm/parser-meriyah.mjs +0 -19
  99. data/node_modules/prettier/esm/parser-postcss.mjs +0 -76
  100. data/node_modules/prettier/esm/parser-typescript.mjs +0 -49
  101. data/node_modules/prettier/esm/parser-yaml.mjs +0 -150
  102. data/node_modules/prettier/esm/standalone.mjs +0 -116
  103. data/node_modules/prettier/index.js +0 -38236
  104. data/node_modules/prettier/package.json +0 -21
  105. data/node_modules/prettier/parser-angular.js +0 -2
  106. data/node_modules/prettier/parser-babel.js +0 -29
  107. data/node_modules/prettier/parser-espree.js +0 -26
  108. data/node_modules/prettier/parser-flow.js +0 -35
  109. data/node_modules/prettier/parser-glimmer.js +0 -27
  110. data/node_modules/prettier/parser-graphql.js +0 -15
  111. data/node_modules/prettier/parser-html.js +0 -36
  112. data/node_modules/prettier/parser-markdown.js +0 -76
  113. data/node_modules/prettier/parser-meriyah.js +0 -19
  114. data/node_modules/prettier/parser-postcss.js +0 -76
  115. data/node_modules/prettier/parser-typescript.js +0 -49
  116. data/node_modules/prettier/parser-yaml.js +0 -150
  117. data/node_modules/prettier/standalone.js +0 -116
  118. data/node_modules/prettier/third-party.js +0 -8978
  119. data/package.json +0 -6
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
+ # rubocop:disable all
2
3
 
3
4
  module RfBeam
4
- module Kld7
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,239 +26,166 @@ 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: %w[No Yes],
29
- micro_detection: %w[No Yes],
29
+ detection: ['No Detection', 'Detection'],
30
+ micro_detection: ['No Detection', 'Detection'],
30
31
  angle: %w[Left Right],
31
- direction: ['Going away', 'Approaching'],
32
+ direction: %w[Receding Approaching],
32
33
  range: %w[Far Near],
33
34
  speed: %w[Low High]
34
35
  }.freeze
35
36
 
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, [])
37
+ Param =
38
+ Data.define(:name, :grps_index, :description, :default, :units, :values) do |_param|
39
+ def initialize(name:, grps_index:, description: nil, default: nil, units: nil, values: [])
40
+ super(name:, grps_index:, description:, default:, units:, values:)
41
+ end
46
42
  end
47
- end
48
43
 
49
44
  RADAR_PARAMETERS = {
50
- sw_version: Param.new(name: 'Software Version', grps_index: 2, options: { default: 'K-LD7_APP-RFB-XXXX' }),
45
+ sw_version: Param.new(name: 'Software Version', grps_index: 2, default: 'K-LD7_APP-RFB-XXXX'),
51
46
  base_frequency:
52
47
  Param.new(
53
48
  name: 'Base Frequency',
54
49
  grps_index: 3,
55
- options: {
56
- description: '0 = Low, 1 = Middle, 2 = High',
57
- default: 1,
58
- str_values: %w[Low Middle High]
59
- }
50
+ description: '0 = Low, 1 = Middle, 2 = High',
51
+ default: 1,
52
+ values: %w[Low Middle High]
60
53
  ),
61
54
  max_speed:
62
55
  Param.new(
63
56
  name: 'Maximum Speed',
64
57
  grps_index: 4,
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
- }
58
+ description: '0 = 12km/h, 1 = 25km/h, 2 = 50km/h, 3 = 100km/h',
59
+ default: 1,
60
+ units: 'km/h',
61
+ values: %w[12.5 25 50 100]
71
62
  ),
72
63
  max_range:
73
64
  Param.new(
74
65
  name: 'Maximum Range',
75
66
  grps_index: 5,
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
+ description: '0 = 5m, 1 = 10m, 2 = 30m, 3 = 100m',
68
+ default: 1,
69
+ values: %w[5m 10m 30m 100m]
81
70
  ),
82
71
  threshold_offset:
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
- ),
72
+ Param.new(name: 'Threshold Offset', grps_index: 6, description: '10db - 60db', default: 30, units: 'db'),
92
73
  tracking_filter:
93
74
  Param.new(
94
75
  name: 'Tracking Filter Type',
95
76
  grps_index: 7,
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
+ description: '0 = Standard, 2 = Fast Detection, 3 = Long Visibility',
78
+ default: 0,
79
+ values: ['standard', 'Fast Detection', 'Long Visibility']
101
80
  ),
102
81
  vibration_suppression:
103
82
  Param.new(
104
83
  name: 'Vibration Suppression',
105
84
  grps_index: 8,
106
- options: {
107
- description: '0-16, 0 = No Suppression, 16 = High Suppression',
108
- default: 2
109
- }
85
+ description: '0-16, 0 = No Suppression, 16 = High Suppression',
86
+ default: 2
110
87
  ),
111
88
  min_detection_distance:
112
89
  Param.new(
113
90
  name: 'Minimum Detection Distance',
114
91
  grps_index: 9,
115
- options: {
116
- description: '0 - 100% of range setting',
117
- default: 0,
118
- units: '%'
119
- }
92
+ description: '0 - 100% of range setting',
93
+ default: 0,
94
+ units: '%'
120
95
  ),
121
96
  max_detection_distance:
122
97
  Param.new(
123
98
  name: 'Maximum Detection Distance',
124
99
  grps_index: 10,
125
- options: {
126
- description: '0 - 100% of range setting',
127
- default: 50,
128
- units: '%'
129
- }
100
+ description: '0 - 100% of range setting',
101
+ default: 50,
102
+ units: '%'
130
103
  ),
131
104
  min_detection_angle:
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
- ),
105
+ Param.new(name: 'Minimum Detection Angle', grps_index: 11, description: '-90° - 90°', default: -90, units: '°'),
141
106
  max_detection_angle:
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
- ),
107
+ Param.new(name: 'Maximum Detection Angle', grps_index: 12, description: '-90° - 90°', default: 90, units: '°'),
151
108
  min_detection_speed:
152
109
  Param.new(
153
110
  name: 'Minimum Detection Speed',
154
111
  grps_index: 13,
155
- options: {
156
- description: '0 - 100% of speed setting',
157
- default: 0,
158
- units: '%'
159
- }
112
+ description: '0 - 100% of speed setting',
113
+ default: 0,
114
+ units: '%'
160
115
  ),
161
116
  max_detection_speed:
162
117
  Param.new(
163
118
  name: 'Maximum Detection Speed',
164
119
  grps_index: 14,
165
- options: {
166
- description: '0 - 100% of speed setting',
167
- default: 100,
168
- units: '%'
169
- }
120
+ description: '0 - 100% of speed setting',
121
+ default: 100,
122
+ units: '%'
170
123
  ),
171
124
  detection_direction:
172
125
  Param.new(
173
126
  name: 'Detection Direction',
174
127
  grps_index: 15,
175
- options: {
176
- description: '0 = Receding, 1 = Approaching, 2 = Both',
177
- default: 2,
178
- str_values: %w[Receding Approaching Both]
179
- }
128
+ description: '0 = Receding, 1 = Approaching, 2 = Both',
129
+ default: 2,
130
+ values: %w[Receding Approaching Both]
180
131
  ),
181
132
  range_threshold:
182
133
  Param.new(
183
134
  name: 'Range Threshold',
184
135
  grps_index: 16,
185
- options: {
186
- description: '0 - 100% of range setting',
187
- default: 10,
188
- units: '%'
189
- }
136
+ description: '0 - 100% of range setting',
137
+ default: 10,
138
+ units: '%'
190
139
  ),
191
140
  angle_threshold:
192
- Param.new(
193
- name: 'Angle Threshold',
194
- grps_index: 17,
195
- options: {
196
- description: '-90° - 90°',
197
- default: 0,
198
- units: '°'
199
- }
200
- ),
141
+ Param.new(name: 'Angle Threshold', grps_index: 17, description: '-90° - 90°', default: 0, units: '°'),
201
142
  speed_threshold:
202
143
  Param.new(
203
144
  name: 'Speed Threshold',
204
145
  grps_index: 18,
205
- options: {
206
- description: '0 - 100% of speed setting',
207
- default: 50,
208
- units: '%'
209
- }
146
+ description: '0 - 100% of speed setting',
147
+ default: 50,
148
+ units: '%'
210
149
  ),
211
150
  digital_output1:
212
151
  Param.new(
213
152
  name: 'Digital Output 1',
214
153
  grps_index: 19,
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
+ description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
155
+ default: 0,
156
+ values: %w[Direction Angle Range Speed Micro]
220
157
  ),
221
158
  digital_output2:
222
159
  Param.new(
223
160
  name: 'Digital Output 2',
224
161
  grps_index: 20,
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
+ description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
163
+ default: 1,
164
+ values: %w[Direction Angle Range Speed Micro]
230
165
  ),
231
166
  digital_output3:
232
167
  Param.new(
233
168
  name: 'Digital Output 3',
234
169
  grps_index: 21,
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
+ description: '0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection',
171
+ default: 2,
172
+ values: %w[Direction Angle Range Speed Micro]
240
173
  ),
241
- hold_time:
242
- Param.new(name: 'Hold Time', grps_index: 22, options: { description: '1 - 7200s', default: 1, units: 's' }),
174
+ hold_time: Param.new(name: 'Hold Time', grps_index: 22, description: '1 - 7200s', default: 1, units: 's'),
243
175
  micro_detection_retrigger:
244
176
  Param.new(
245
177
  name: 'Micro Detection Trigger',
246
178
  grps_index: 23,
247
- options: {
248
- description: '0 = Off, 1 = Retrigger',
249
- default: 0,
250
- str_values: %w[Off Retrigger]
251
- }
179
+ description: '0 = Off, 1 = Retrigger',
180
+ default: 0,
181
+ values: %w[Off Retrigger]
252
182
  ),
253
183
  micro_detection_sensativity:
254
184
  Param.new(
255
185
  name: 'Micro Detection Sensativity',
256
186
  grps_index: 24,
257
- options: {
258
- description: '0 - 9, 0 = Min, 9 = Max',
259
- default: 4
260
- }
187
+ description: '0 - 9, 0 = Min, 9 = Max',
188
+ default: 4
261
189
  )
262
190
  }.freeze
263
191
  end
@@ -0,0 +1,149 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RfBeam
4
+ module KLD7
5
+ # -----------------
6
+ # Minimum Detection distance, 0 - 100% of Range setting, default = 0
7
+ # -----------------
8
+ def min_detection_distance
9
+ query_parameter RADAR_PARAMETERS[:min_detection_distance].grps_index
10
+ end
11
+
12
+ def min_detection_distance=(value = 0)
13
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..100).cover?(value)
14
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
15
+
16
+ set_parameter :mira, value, :uint32
17
+ end
18
+ alias mira= min_detection_distance=
19
+ alias set_min_detection_distance min_detection_distance=
20
+
21
+ # -----------------
22
+ # Maximum Detection distance, 0 - 100% of Range setting, default = 50
23
+ # -----------------
24
+ def max_detection_distance
25
+ query_parameter RADAR_PARAMETERS[:min_detection_distance].grps_index
26
+ end
27
+
28
+ def max_detection_distance=(value = 50)
29
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..100).cover?(value)
30
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
31
+
32
+ set_parameter :mara, value, :uint32
33
+ end
34
+ alias mara= max_detection_distance=
35
+ alias set_max_detection_distance max_detection_distance=
36
+
37
+ # -----------------
38
+ # Minimum Detection Angle, -90° - 90°, default = -90
39
+ # -----------------
40
+ def min_detection_angle
41
+ query_parameter RADAR_PARAMETERS[:min_detection_angle].grps_index
42
+ end
43
+
44
+ def min_detection_angle=(angle = -90)
45
+ raise ArgumentError, "Invalid arg: '#{angle}'" unless (-90..90).cover?(angle)
46
+ raise ArgumentError, 'Expected an Integer' unless angle.is_a?(Integer)
47
+
48
+ set_parameter :mian, angle, :int32
49
+ end
50
+ alias mian= min_detection_angle=
51
+ alias set_min_detection_angle min_detection_angle=
52
+
53
+ # -----------------
54
+ # Maximum Detection Angle, -90° - 90°, default = 90
55
+ # -----------------
56
+ def max_detection_angleq
57
+ query_parameter RADAR_PARAMETERS[:max_detection_angle].grps_index
58
+ end
59
+
60
+ def max_detection_angle=(angle = 90)
61
+ raise ArgumentError, "Invalid arg: '#{angle}'" unless (-90..90).cover?(angle)
62
+ raise ArgumentError, 'Expected an Integer' unless angle.is_a?(Integer)
63
+
64
+ set_parameter :maan, angle, :int32
65
+ end
66
+ alias maan= max_detection_angle=
67
+ alias set_max_detection_angle max_detection_angle=
68
+
69
+ # -----------------
70
+ # Minimum Detection Speed, 0 - 100% of Speed setting, default = 0
71
+ # -----------------
72
+ def min_detection_speed
73
+ query_parameter RADAR_PARAMETERS[:min_detection_angle].grps_index
74
+ end
75
+
76
+ def min_detection_speed=(speed = 0)
77
+ raise ArgumentError, "Invalid arg: '#{speed}'" unless (0..100).cover?(speed)
78
+ raise ArgumentError, 'Expected an Integer' unless speed.is_a?(Integer)
79
+
80
+ set_parameter :misp, speed, :uint32
81
+ end
82
+ alias misp= min_detection_speed=
83
+ alias set_min_detection_speed min_detection_speed=
84
+
85
+ # -----------------
86
+ # Maximum Detection Speed, 0 - 100% of Speed setting, default = 100
87
+ # -----------------
88
+ def max_detection_speed
89
+ query_parameter RADAR_PARAMETERS[:max_detection_speed].grps_index
90
+ end
91
+
92
+ def max_detection_speed=(speed = 100)
93
+ raise ArgumentError, "Invalid arg: '#{speed}'" unless (0..100).cover?(speed)
94
+ raise ArgumentError, 'Expected an Integer' unless speed.is_a?(Integer)
95
+
96
+ set_parameter :masp, speed, :uint32
97
+ end
98
+ alias masp= max_detection_speed=
99
+ alias set_max_detection_speed max_detection_speed=
100
+
101
+ # -----------------
102
+ # Detection Direction, 0 = Receding, 1 = Approaching, 2 = Both (default)
103
+ # -----------------
104
+ def detection_direction
105
+ query_parameter RADAR_PARAMETERS[:detection_direction].grps_index
106
+ end
107
+
108
+ def detection_direction=(direction = 2)
109
+ raise ArgumentError, "Invalid arg: '#{direction}'" unless (0..2).cover?(direction)
110
+ raise ArgumentError, 'Expected an Integer' unless direction.is_a?(Integer)
111
+
112
+ set_parameter :dedi, direction, :uint32
113
+ end
114
+ alias dedi= detection_direction=
115
+ alias set_detection_direction detection_direction=
116
+
117
+ # -----------------
118
+ # Micro Detection retrigger, 0 = Off (default), 1 = Retrigger
119
+ # -----------------
120
+ def micro_detection_retrigger
121
+ query_parameter RADAR_PARAMETERS[:set_micro_detection_retrigger].grps_index
122
+ end
123
+
124
+ def micro_detection_retrigger=(value = 0)
125
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..1).cover?(value)
126
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
127
+
128
+ set_parameter :mide, value, :uint32
129
+ end
130
+ alias mide= micro_detection_retrigger=
131
+ alias set_micro_detection_retrigger micro_detection_retrigger=
132
+
133
+ # -----------------
134
+ # Micro Detection sensitivity, 0 - 9, 0 = Min, 9 = Max, default = 4
135
+ # -----------------
136
+ def micro_detection_sensitivity
137
+ query_parameter RADAR_PARAMETERS[:micro_detection_sensitivity].grps_index
138
+ end
139
+
140
+ def micro_detection_sensitivity=(value = 4)
141
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..9).cover?(value)
142
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
143
+
144
+ set_parameter :mids, value, :uint32
145
+ end
146
+ alias mids= micro_detection_sensitivity=
147
+ alias set_micro_detection_sensitivity micro_detection_sensitivity=
148
+ end
149
+ end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rfbeam
4
+ module KLD7
5
+ # -----------------
6
+ # Software Version, 'K-LD7_APP-RFB-XXXX'
7
+ # -----------------
8
+ def sw_version
9
+ query_parameter RADAR_PARAMETERS[:sw_version].grps_index
10
+ end
11
+
12
+ # -----------------
13
+ # Digital output 1, 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 0
14
+ # -----------------
15
+ def digital_output1
16
+ query_parameter RADAR_PARAMETERS[:digital_output1].grps_index
17
+ end
18
+
19
+ def digital_output1=(value = 0)
20
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..4).cover?(value)
21
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
22
+
23
+ set_parameter :dig1, value, :uint32
24
+ end
25
+ alias dig1= digital_output1=
26
+ alias set_digital_output1 digital_output1=
27
+
28
+ # -----------------
29
+ # Digital output 2, 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 1
30
+ # -----------------
31
+ def digital_output2
32
+ query_parameter RADAR_PARAMETERS[:digital_output2].grps_index
33
+ end
34
+
35
+ def digital_output2=(value = 1)
36
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..4).cover?(value)
37
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
38
+
39
+ set_parameter :dig2, value, :uint32
40
+ end
41
+ alias dig2= digital_output2=
42
+ alias set_digital_output2 digital_output2=
43
+
44
+ # -----------------
45
+ # Digital output 3, 0 = Direction, 1 = Angle, 2 = Range, 3 = Speed, 4 = Micro Detection, default = 2
46
+ # -----------------
47
+ def digital_output3
48
+ query_parameter RADAR_PARAMETERS[:digital_output3].grps_index
49
+ end
50
+
51
+ def digital_output3=(value = 2)
52
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..4).cover?(value)
53
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
54
+
55
+ set_parameter :dig3, value, :uint32
56
+ end
57
+ alias dig3= digital_output3=
58
+ alias set_digital_output3 digital_output3=
59
+
60
+ # -----------------
61
+ # Hold Time, 1 - 7200s, default = 1
62
+ # -----------------
63
+ def hold_time
64
+ query_parameter RADAR_PARAMETERS[:hold_time].grps_index
65
+ end
66
+
67
+ def hold_time=(time = 1)
68
+ raise ArgumentError, "Invalid arg: '#{time}'" unless (1..7200).cover?(time)
69
+ raise ArgumentError, 'Expected an Integer' unless time.is_a?(Integer)
70
+
71
+ set_parameter :hold, time, :uint32
72
+ end
73
+ alias hold= hold_time=
74
+ alias set_hold_time hold_time=
75
+
76
+ private
77
+
78
+ def query_parameter(index)
79
+ data = grps
80
+ data[index]
81
+ end
82
+
83
+ def set_parameter(header, value, return_type = :uint32)
84
+ char =
85
+ case return_type
86
+ when :int32
87
+ 'l'
88
+ else
89
+ 'L'
90
+ end
91
+ command = [header.upcase.to_s, 4, value]
92
+ write command.pack("a4L#{char}")
93
+ check_response
94
+ end
95
+ end
96
+ end