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
@@ -0,0 +1,162 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RfBeam
4
+ module KLD7
5
+ # -----------------
6
+ # Base Frequency, 0 = low, 1 = middle (default), 2 = high
7
+ # -----------------
8
+ def base_frequency
9
+ query_parameter RADAR_PARAMETERS[:base_frequency].grps_index
10
+ end
11
+ alias rbfr base_frequency
12
+
13
+ def base_frequency=(frequency = 1)
14
+ value =
15
+ case frequency
16
+ when 0, :low, 'low'
17
+ 0
18
+ when 1, :middle, 'middle'
19
+ 1
20
+ when 2, :high, 'high'
21
+ 2
22
+ else
23
+ raise ArgumentError, "Invalid arg: '#{frequency}'"
24
+ end
25
+ set_parameter(:rbfr, value, :uint32)
26
+ end
27
+
28
+ alias set_base_frequency base_frequency=
29
+ alias rbfr= base_frequency=
30
+
31
+ # -----------------
32
+ # Maximum Speed, 0 = 12.5km/h, 1 = 25km/h (default), 2 = 50km/h, 3 = 100km/h
33
+ # -----------------
34
+ def max_speed
35
+ query_parameter(RADAR_PARAMETERS[:max_speed].grps_index)
36
+ end
37
+
38
+ def max_speed=(speed = 1)
39
+ raise ArgumentError, "Invalid arg: '#{speed}'" unless (0..3).cover?(speed)
40
+ raise ArgumentError, 'Expected an Integer' unless speed.is_a?(Integer)
41
+
42
+ set_parameter :rspi, speed, :uint32
43
+ end
44
+
45
+ alias set_max_speed max_speed=
46
+ alias rspi max_speed=
47
+
48
+ # -----------------
49
+ # Maximum Range, 0 = 5m, 1 = 10m (default), 2 = 30m, 3 = 100m
50
+ # -----------------
51
+ def max_range
52
+ query_parameter(RADAR_PARAMETERS[:max_range].grps_index)
53
+ end
54
+
55
+ def max_range=(range = 1)
56
+ raise ArgumentError, "Invalid arg: '#{range}'" unless (0..3).cover?(range)
57
+ raise ArgumentError, 'Expected an Integer' unless range.is_a?(Integer)
58
+
59
+ set_parameter :rrai, range, :uint32
60
+ end
61
+
62
+ alias rrai= max_range=
63
+ alias set_max_range max_range=
64
+
65
+ # -----------------
66
+ # Threshold Offset, 10 - 60db, (default = 30)
67
+ # -----------------
68
+ def threshold_offset
69
+ query_parameter RADAR_PARAMETERS[:threshold_offset].grps_index
70
+ end
71
+
72
+ def threshold_offset=(offset = 30)
73
+ raise ArgumentError, "Invalid arg: '#{offset}'" unless (10..60).cover?(offset)
74
+ raise ArgumentError, 'Expected an Integer' unless offset.is_a?(Integer)
75
+
76
+ set_parameter :thof, offset, :uint32
77
+ end
78
+
79
+ alias thof= threshold_offset=
80
+ alias set_threshold_offset threshold_offset=
81
+
82
+ # -----------------
83
+ # Tracking filter type, 0 = Standard (Default), 1 = Fast Tracking, 2 = Long visibility
84
+ # -----------------
85
+ def tracking_filter
86
+ query_parameter RADAR_PARAMETERS[:tracking_filter].grps_index
87
+ end
88
+
89
+ def tracking_filter=(type = 0)
90
+ raise ArgumentError, "Invalid arg: '#{type}'" unless (0..2).cover?(type)
91
+ raise ArgumentError, 'Expected an Integer' unless type.is_a?(Integer)
92
+
93
+ set_parameter :trft, type, :uint32
94
+ end
95
+ alias trtf= tracking_filter=
96
+ alias set_tracking_filter tracking_filter=
97
+
98
+ # -----------------
99
+ # Vibration suppression, 0 - 16, 0 = No Suppression, 16 = High Suppression, default = 2
100
+ # -----------------
101
+ def vibration_suppression
102
+ query_parameter RADAR_PARAMETERS[:vibration_suppression].grps_index
103
+ end
104
+
105
+ def vibration_suppression=(value = 2)
106
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..16).cover?(value)
107
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
108
+
109
+ set_parameter :visu, value, :uint32
110
+ end
111
+ alias visu= vibration_suppression=
112
+ alias set_vibration_suppression vibration_suppression=
113
+ end
114
+
115
+ # -----------------
116
+ # Range Threshold, 0 - 100% of Range setting, default = 10
117
+ # -----------------
118
+ def range_threshold
119
+ query_parameter RADAR_PARAMETERS[:range_threshold].grps_index
120
+ end
121
+
122
+ def range_threshold=(value = 10)
123
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..100).cover?(value)
124
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
125
+
126
+ set_parameter :rath, value, :uint32
127
+ end
128
+ alias rath= range_threshold=
129
+ alias set_range_threshold range_threshold=
130
+
131
+ # -----------------
132
+ # Angle Threshold, -90° to 90°, default = 0
133
+ # -----------------
134
+ def angle_threshold
135
+ query_parameter RADAR_PARAMETERS[:angle_threshold].grps_index
136
+ end
137
+
138
+ def angle_threshold=(value = 0)
139
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (-90..90).cover?(value)
140
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
141
+
142
+ set_parameter :anth, value, :int32
143
+ end
144
+ alias anth= angle_threshold=
145
+ alias set_angle_threshold angle_threshold=
146
+
147
+ # -----------------
148
+ # Speed Threshold, 0 - 100% of speed setting, default = 50
149
+ # -----------------
150
+ def speed_threshold
151
+ query_parameter RADAR_PARAMETERS[:speed_threshold].grps_index
152
+ end
153
+
154
+ def speed_threshold=(value = 50)
155
+ raise ArgumentError, "Invalid arg: '#{value}'" unless (0..100).cover?(value)
156
+ raise ArgumentError, 'Expected an Integer' unless value.is_a?(Integer)
157
+
158
+ set_parameter :spth, value, :uint32
159
+ end
160
+ alias spth= angle_threshold=
161
+ alias set_speed_threshold angle_threshold=
162
+ end
@@ -3,7 +3,7 @@
3
3
  require 'csv'
4
4
 
5
5
  module RfBeam
6
- module Kld7
6
+ module KLD7
7
7
  def detection?
8
8
  data = ddat
9
9
  (data[2] == 1)
@@ -30,12 +30,10 @@ module RfBeam
30
30
  def pdat(formatted: false)
31
31
  request_frame_data(:pdat)
32
32
  resp = read(102).unpack('a4LSssSSssSSssSSssSSssSSssSSssSSssSSssSSssS')
33
- raise Error, "PDAT response = #{resp[0]}" unless resp[0] == 'PDAT'
34
-
35
33
  return resp unless formatted
36
34
 
37
- target_count = resp[1].to_i / 8
38
- return [] unless target_count.positive?
35
+ target_count = Integer(resp[1], 10) / 8
36
+ return [] if target_count <= 0
39
37
 
40
38
  resp.shift 2
41
39
  resp.compact
@@ -46,22 +44,25 @@ module RfBeam
46
44
 
47
45
  def tdat
48
46
  request_frame_data(:tdat)
49
- sleep MEASUREMENT_DELAY
50
47
 
48
+ sleep 0.1
51
49
  resp = read(16).unpack('a4LSssS')
52
- raise Error, "TDAT response = #{resp[0]}" unless resp[0] == 'TDAT'
53
-
54
- resp
50
+ return { dist: resp[2], speed: resp[3], angle: resp[4], mag: resp[5] } if resp[1].nonzero?
55
51
  end
56
52
 
57
53
  def ddat
58
54
  request_frame_data(:ddat)
59
- sleep MEASUREMENT_DELAY
60
-
61
- resp = read(14).unpack('a4LC6')
62
- raise Error, "DDAT response = #{resp[0]}" unless resp[0] == 'DDAT'
63
-
64
- resp
55
+ array = read(14).unpack('a4LC6')
56
+ {
57
+ label: array[0],
58
+ detection: array[2] == 1,
59
+ detection_str: DETECTION_FLAGS[:detection][array[2]],
60
+ micro_detection: DETECTION_FLAGS[:micro_detection][array[3]],
61
+ angle: DETECTION_FLAGS[:angle][array[4]],
62
+ direction: DETECTION_FLAGS[:direction][array[5]],
63
+ range: DETECTION_FLAGS[:range][array[6]],
64
+ speed: DETECTION_FLAGS[:speed][array[7]]
65
+ }
65
66
  end
66
67
 
67
68
  # Get the radar parameter structure
@@ -74,7 +75,7 @@ module RfBeam
74
75
 
75
76
  def config
76
77
  data = grps
77
- output = []
78
+ output = "\n"
78
79
  RADAR_PARAMETERS.each_key { |key| output << formatted_parameter(key, data[RADAR_PARAMETERS[key].grps_index]) }
79
80
  output
80
81
  end
@@ -85,7 +86,7 @@ module RfBeam
85
86
  data = grps
86
87
  value = data[param.grps_index]
87
88
  end
88
- param_str_value = param.str_values.empty? ? value.to_s : param.str_values[value]
89
+ param_str_value = param.values.empty? ? value.to_s : param.values[value]
89
90
  "#{param.name}: #{param_str_value}#{param.units}\n"
90
91
  end
91
92
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RfBeam
4
- module Kld7
4
+ module KLD7
5
5
  require 'rubyserial'
6
6
  require 'timeout'
7
7
 
@@ -16,7 +16,6 @@ module RfBeam
16
16
  parity = :even
17
17
  stop_bits = 1
18
18
  open_serial_port(path, baude_rate, data_bits, parity, stop_bits)
19
- init_radar if connected?
20
19
 
21
20
  yield self if block_given?
22
21
  end
@@ -42,6 +41,12 @@ module RfBeam
42
41
  sleep 0.1
43
42
  end
44
43
 
44
+ def init_radar
45
+ command = ['INIT', 4, 0]
46
+ @serial_port.write command.pack('a4LL')
47
+ check_response
48
+ end
49
+
45
50
  private
46
51
 
47
52
  def open_serial_port(path, baude_rate, data_bits, parity, stop_bits)
@@ -49,7 +54,7 @@ module RfBeam
49
54
  end
50
55
 
51
56
  def connected?
52
- raise Error, 'ConnectionError: No open Serial device connections.' if @serial_port.nil?
57
+ raise Error, 'ConnectionError: No open Serial device connections.' if @serial_port.closed?
53
58
 
54
59
  true
55
60
  end
@@ -70,22 +75,16 @@ module RfBeam
70
75
  end
71
76
  end
72
77
 
73
- def init_radar
74
- command = ['INIT', 4, 0]
75
- @serial_port.write command.pack('a4LL') # 4 ASCII bytes, UINT32, UINT32
76
- check_response
77
- end
78
-
79
78
  def check_response
80
79
  sleep RESPONSE_DELAY
81
- resp = @serial_port.read(9).unpack('a4LC') # 4 ASCII bytes, UINT32, UINT8
80
+ resp = @serial_port.read(9).unpack('a4LC')
82
81
  raise Error, 'No valid response from Serial Port' if resp[2].nil?
83
82
 
84
- response_key = resp[2]
85
- error_string = RESP_CODES[response_key].nil? ? 'Response unknown' : RESP_CODES[response_key]
86
- raise Error, "Radar response Error: #{error_string}" unless response_key.zero?
83
+ resp_code = resp[2]
84
+ index_range = 1..RESP_CODES.size
87
85
 
88
- response_key.zero? # Everything OK
86
+ raise Error, "Radar response Error: #{RESP_CODES[resp_code]}" if index_range.include?(resp_code)
87
+ true
89
88
  end
90
89
  end
91
90
  end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'io/console'
4
+ require 'stringio'
5
+ require 'tty-screen'
6
+ require 'unicode_plot'
7
+
8
+ module RfBeam
9
+ module KLD7
10
+ class Streamer
11
+ attr_accessor :radar
12
+
13
+ def initialize(radar)
14
+ @radar = radar
15
+ end
16
+
17
+ def monitor_keypress
18
+ loop do
19
+ key = $stdin.getch
20
+ if key.casecmp('q').zero?
21
+ @stop_streaming = true
22
+ break
23
+ end
24
+ end
25
+ end
26
+
27
+ def rfft
28
+ out = StringIO.new
29
+ def out.tty?
30
+ true
31
+ end
32
+
33
+ Thread.new { monitor_keypress }
34
+
35
+ loop do
36
+ out.truncate(0)
37
+
38
+ plot = rfft_plot(@radar)
39
+ plot.render(out)
40
+
41
+ lines = out.string.lines
42
+ lines.each { |line| $stdout.print "\r#{line}" }
43
+ $stdout.print "\e[0J"
44
+ $stdout.flush
45
+ break if @stop_streaming
46
+
47
+ n = lines.count
48
+ $stdout.print "\e[#{n}F"
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ def plot_data(data)
55
+ {
56
+ x: Array(-128...128),
57
+ series1: data.shift(256).map { |value| value / 100 },
58
+ series2: data.shift(256).map { |value| Integer(value, 10) / 100 }
59
+ }
60
+ end
61
+
62
+ def rfft_plot(radar)
63
+ width = TTY::Screen.width * 0.65
64
+ data = plot_data(radar.rfft)
65
+ plot =
66
+ UnicodePlot.lineplot(
67
+ data[:x],
68
+ data[:series1],
69
+ name: 'IF1/2 Averaged',
70
+ title: 'Raw FFT',
71
+ height: 25,
72
+ width:,
73
+ xlabel: 'Speed (km/h)',
74
+ ylabel: 'Signal (db)',
75
+ xlim: [-128, 128],
76
+ ylim: [0, 100]
77
+ )
78
+ UnicodePlot.lineplot!(plot, data[:x], data[:series2], name: 'Threshold')
79
+ plot
80
+ end
81
+ end
82
+ end
83
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RfBeam
4
- VERSION = '0.5.0'
4
+ VERSION = '0.5.8'
5
5
  end
data/lib/rfbeam.rb CHANGED
@@ -1,20 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rfbeam/kld7/radar_parameters'
3
+ require 'rfbeam/cli'
4
+ require 'rfbeam/kld7/constants'
5
+ require 'rfbeam/kld7/detection_params'
6
+ require 'rfbeam/kld7/module_params'
7
+ require 'rfbeam/kld7/operation_params'
4
8
  require 'rfbeam/kld7/radar_messages'
5
9
  require 'rfbeam/kld7/serial_connection'
6
- require 'rfbeam/kld7/constants'
7
- require 'rfbeam/kld7/cli_output'
8
- require 'rfbeam/kld7/cli_formatter'
10
+ require 'rfbeam/kld7/streamer'
9
11
  require 'rfbeam/version'
10
- require 'rfbeam/cli'
11
12
 
12
13
  module RfBeam
13
14
  class Error < StandardError
14
15
  end
15
16
 
16
- class KLD7
17
- include RfBeam::Kld7
17
+ class Kld7
18
+ include RfBeam::KLD7
18
19
  end
19
20
 
20
21
  def self.connected
data/output.csv ADDED
@@ -0,0 +1,257 @@
1
+ 0,2105,2105
2
+ 1,3070,2915
3
+ 2,2915,805
4
+ 3,2325,2830
5
+ 4,805,3420
6
+ 5,1000,1340
7
+ 6,2830,1555
8
+ 7,3810,2645
9
+ 8,3420,1270
10
+ 9,1645,1400
11
+ 10,1340,1130
12
+ 11,1285,1350
13
+ 12,1555,1085
14
+ 13,1500,910
15
+ 14,2645,1400
16
+ 15,2785,1435
17
+ 16,1270,1150
18
+ 17,500,1545
19
+ 18,1400,1270
20
+ 19,615,1285
21
+ 20,1130,1435
22
+ 21,1000,785
23
+ 22,1350,710
24
+ 23,1565,955
25
+ 24,1085,1165
26
+ 25,1420,1645
27
+ 26,910,1595
28
+ 27,1265,455
29
+ 28,1400,805
30
+ 29,1015,1050
31
+ 30,1435,560
32
+ 31,1060,1530
33
+ 32,1150,3275
34
+ 33,305,3510
35
+ 34,1545,650
36
+ 35,765,1415
37
+ 36,1270,1760
38
+ 37,785,650
39
+ 38,1285,830
40
+ 39,980,560
41
+ 40,1435,850
42
+ 41,1085,0
43
+ 42,785,480
44
+ 43,1340,1150
45
+ 44,710,910
46
+ 45,1210,1050
47
+ 46,955,500
48
+ 47,1000,1230
49
+ 48,1165,1040
50
+ 49,1060,955
51
+ 50,1645,910
52
+ 51,2200,150
53
+ 52,1595,455
54
+ 53,1085,150
55
+ 54,455,830
56
+ 55,1400,455
57
+ 56,805,500
58
+ 57,1490,850
59
+ 58,1050,0
60
+ 59,560,980
61
+ 60,560,1040
62
+ 61,800,500
63
+ 62,1530,800
64
+ 63,0,1410
65
+ 64,3275,305
66
+ 65,3990,1570
67
+ 66,3510,1255
68
+ 67,1105,955
69
+ 68,650,150
70
+ 69,700,655
71
+ 70,1415,1245
72
+ 71,1295,455
73
+ 72,1760,710
74
+ 73,1235,560
75
+ 74,650,650
76
+ 75,500,1000
77
+ 76,830,760
78
+ 77,650,760
79
+ 78,560,350
80
+ 79,1240,305
81
+ 80,850,150
82
+ 81,1400,910
83
+ 82,0,650
84
+ 83,805,500
85
+ 84,480,1180
86
+ 85,150,1435
87
+ 86,1150,850
88
+ 87,1360,800
89
+ 88,910,1305
90
+ 89,1190,910
91
+ 90,1050,1260
92
+ 91,1115,455
93
+ 92,500,1000
94
+ 93,800,615
95
+ 94,1230,1265
96
+ 95,980,3955
97
+ 96,1040,3675
98
+ 97,500,615
99
+ 98,955,300
100
+ 99,1285,1825
101
+ 100,910,760
102
+ 101,980,1315
103
+ 102,150,1435
104
+ 103,1200,1260
105
+ 104,455,850
106
+ 105,480,1260
107
+ 106,150,1970
108
+ 107,500,1015
109
+ 108,830,350
110
+ 109,700,735
111
+ 110,455,1680
112
+ 111,150,350
113
+ 112,500,1135
114
+ 113,605,865
115
+ 114,850,1735
116
+ 115,805,850
117
+ 116,0,1165
118
+ 117,710,1965
119
+ 118,980,810
120
+ 119,305,1005
121
+ 120,1040,1200
122
+ 121,150,2885
123
+ 122,500,1095
124
+ 123,710,1060
125
+ 124,800,2455
126
+ 125,1265,2145
127
+ 126,1410,1665
128
+ 127,1175,3230
129
+ 128,305,4328
130
+ 129,1255,4228
131
+ 130,1570,4069
132
+ 131,980,3995
133
+ 132,1255,3946
134
+ 133,1480,3910
135
+ 134,955,3881
136
+ 135,455,3857
137
+ 136,150,3836
138
+ 137,910,3818
139
+ 138,655,3802
140
+ 139,350,3788
141
+ 140,1245,3774
142
+ 141,1150,3762
143
+ 142,455,3751
144
+ 143,560,3741
145
+ 144,710,3731
146
+ 145,150,3722
147
+ 146,560,3714
148
+ 147,830,3706
149
+ 148,650,3698
150
+ 149,655,3691
151
+ 150,1000,3684
152
+ 151,350,3677
153
+ 152,760,3671
154
+ 153,455,3665
155
+ 154,760,3659
156
+ 155,560,3654
157
+ 156,350,3648
158
+ 157,655,3643
159
+ 158,305,3638
160
+ 159,150,3633
161
+ 160,150,3629
162
+ 161,910,3624
163
+ 162,910,3620
164
+ 163,1190,3616
165
+ 164,650,3612
166
+ 165,455,3608
167
+ 166,500,3604
168
+ 167,500,3600
169
+ 168,1180,3596
170
+ 169,1500,3592
171
+ 170,1435,3589
172
+ 171,1265,3586
173
+ 172,850,3582
174
+ 173,650,3579
175
+ 174,800,3576
176
+ 175,1350,3573
177
+ 176,1305,3569
178
+ 177,1260,3566
179
+ 178,910,3563
180
+ 179,805,3561
181
+ 180,1260,3558
182
+ 181,1175,3555
183
+ 182,455,3552
184
+ 183,965,3550
185
+ 184,1000,3547
186
+ 185,755,3544
187
+ 186,615,3542
188
+ 187,350,3539
189
+ 188,1265,3537
190
+ 189,935,3534
191
+ 190,3955,3532
192
+ 191,4445,3530
193
+ 192,3675,3528
194
+ 193,1365,3530
195
+ 194,615,3532
196
+ 195,605,3534
197
+ 196,300,3537
198
+ 197,1135,3539
199
+ 198,1825,3542
200
+ 199,895,3544
201
+ 200,760,3547
202
+ 201,500,3550
203
+ 202,1315,3552
204
+ 203,1330,3555
205
+ 204,1435,3558
206
+ 205,1385,3561
207
+ 206,1260,3563
208
+ 207,920,3566
209
+ 208,850,3569
210
+ 209,615,3573
211
+ 210,1260,3576
212
+ 211,1545,3579
213
+ 212,1970,3582
214
+ 213,1605,3586
215
+ 214,1015,3589
216
+ 215,955,3592
217
+ 216,350,3596
218
+ 217,1270,3600
219
+ 218,735,3604
220
+ 219,1330,3608
221
+ 220,1680,3612
222
+ 221,630,3616
223
+ 222,350,3620
224
+ 223,1200,3624
225
+ 224,1135,3629
226
+ 225,850,3633
227
+ 226,865,3638
228
+ 227,1540,3643
229
+ 228,1735,3648
230
+ 229,500,3654
231
+ 230,850,3659
232
+ 231,150,3665
233
+ 232,1165,3671
234
+ 233,1345,3677
235
+ 234,1965,3684
236
+ 235,1630,3691
237
+ 236,810,3698
238
+ 237,1175,3706
239
+ 238,1005,3714
240
+ 239,500,3722
241
+ 240,1200,3731
242
+ 241,2830,3741
243
+ 242,2885,3751
244
+ 243,1630,3762
245
+ 244,1095,3774
246
+ 245,980,3788
247
+ 246,1060,3802
248
+ 247,1190,3818
249
+ 248,2455,3836
250
+ 249,3045,3857
251
+ 250,2145,3881
252
+ 251,1500,3910
253
+ 252,1665,3946
254
+ 253,1975,3995
255
+ 254,3230,
256
+ 255,3470,
257
+ 256,4328,