spektrum-log 0.1.1 → 0.1.2
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/lib/spektrum/log/file.rb +3 -3
- data/lib/spektrum/log/flight.rb +2 -2
- data/lib/spektrum/log/headers.rb +2 -2
- data/lib/spektrum/log/records.rb +21 -21
- data/lib/spektrum/log/version.rb +1 -1
- data/spektrum-log.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54c5526710a152f84a57087a9e04b6b11bbff9de
|
4
|
+
data.tar.gz: fff8907b1912b94aa3f5d6b039023133f9e596f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab81bcce78e95b0de66d204efe78a1821b95227f0f7980c02d0a35c226a680a0fbc99f216560bd0dc7fd360af5d62239c73a092cc9edd98fe2a2bae8e670a362
|
7
|
+
data.tar.gz: a1d9d3fab34d2c5250ec389a200c89ec762b97c78c46d63919f651c75b1ed32130f484c9d53825cabfbcfb145d285889717910afd8655bae74409590577c47d3
|
data/lib/spektrum/log/file.rb
CHANGED
@@ -11,11 +11,11 @@ module Spektrum
|
|
11
11
|
#
|
12
12
|
# @param uri URI to file to read
|
13
13
|
# @return [Spektrum::Log::File] loaded file if the file is a Spektrum log file, nil otherwise
|
14
|
-
def self.spektrum?
|
14
|
+
def self.spektrum?(uri)
|
15
15
|
File.new(uri) rescue nil
|
16
16
|
end
|
17
17
|
|
18
|
-
def initialize
|
18
|
+
def initialize(uri)
|
19
19
|
headers = []
|
20
20
|
headers_complete = false
|
21
21
|
records = []
|
@@ -128,7 +128,7 @@ module Spektrum
|
|
128
128
|
|
129
129
|
private
|
130
130
|
|
131
|
-
def apply_default_file_options
|
131
|
+
def apply_default_file_options(options)
|
132
132
|
options = { :name => 'Spektrum TLM GPS Path' }.merge(options)
|
133
133
|
options = { :description => 'Flight paths for GPS telemetry data' }.merge(options)
|
134
134
|
options
|
data/lib/spektrum/log/flight.rb
CHANGED
@@ -229,14 +229,14 @@ module Spektrum
|
|
229
229
|
@records.any? { |rec| rec.is_a?(type) && rec.valid? }
|
230
230
|
end
|
231
231
|
|
232
|
-
def apply_default_file_options
|
232
|
+
def apply_default_file_options(options)
|
233
233
|
options = { :name => 'Spektrum TLM GPS Path' }.merge(options)
|
234
234
|
options = { :description => 'Flight paths for GPS telemetry data' }.merge(options)
|
235
235
|
options = { :style_id => 'default-poly-style' }.merge(options)
|
236
236
|
options
|
237
237
|
end
|
238
238
|
|
239
|
-
def apply_default_placemark_options
|
239
|
+
def apply_default_placemark_options(options)
|
240
240
|
options = { :altitude_mode => 'absolute' }.merge(options)
|
241
241
|
options = { :extrude => true }.merge(options)
|
242
242
|
options = { :name => "#{model_name} (#{duration.round(1)}s)" }.merge(options)
|
data/lib/spektrum/log/headers.rb
CHANGED
@@ -9,7 +9,7 @@ module Spektrum
|
|
9
9
|
# Creates a new header.
|
10
10
|
#
|
11
11
|
# @param [String] raw_data string of data from the data file for this header
|
12
|
-
def initialize
|
12
|
+
def initialize(raw_data)
|
13
13
|
@raw_data = raw_data
|
14
14
|
end
|
15
15
|
|
@@ -18,7 +18,7 @@ module Spektrum
|
|
18
18
|
# Helper class to create the correct type of header for the given data.
|
19
19
|
class Headers
|
20
20
|
|
21
|
-
def self.create
|
21
|
+
def self.create(raw_data)
|
22
22
|
Header.new(raw_data)
|
23
23
|
end
|
24
24
|
|
data/lib/spektrum/log/records.rb
CHANGED
@@ -6,7 +6,7 @@ module Spektrum
|
|
6
6
|
|
7
7
|
attr_reader :timestamp
|
8
8
|
|
9
|
-
def initialize
|
9
|
+
def initialize(timestamp, raw_data)
|
10
10
|
if raw_data.length != 16
|
11
11
|
raise ArgumentError, "raw_data incorrectly sized (#{raw_data.length})"
|
12
12
|
end
|
@@ -35,23 +35,23 @@ module Spektrum
|
|
35
35
|
|
36
36
|
protected
|
37
37
|
|
38
|
-
def byte_field
|
38
|
+
def byte_field(range)
|
39
39
|
@raw_data[range].unpack('C')[0]
|
40
40
|
end
|
41
41
|
|
42
|
-
def hex_byte_field
|
42
|
+
def hex_byte_field(range)
|
43
43
|
@raw_data[range].unpack('H*')[0].to_i
|
44
44
|
end
|
45
45
|
|
46
|
-
def hex_string_field
|
46
|
+
def hex_string_field(range)
|
47
47
|
@raw_data[range].unpack('H*')[0]
|
48
48
|
end
|
49
49
|
|
50
|
-
def two_byte_field
|
50
|
+
def two_byte_field(range, endian = :big)
|
51
51
|
@raw_data[range].unpack(endian == :big ? 'n' : 'v')[0]
|
52
52
|
end
|
53
53
|
|
54
|
-
def four_byte_field
|
54
|
+
def four_byte_field(range, endian = :big)
|
55
55
|
@raw_data[range].unpack(endian == :big ? 'N' : 'V')[0]
|
56
56
|
end
|
57
57
|
|
@@ -59,7 +59,7 @@ module Spektrum
|
|
59
59
|
|
60
60
|
class AltimeterRecord < Record
|
61
61
|
|
62
|
-
def initialize
|
62
|
+
def initialize(timestamp, raw_data)
|
63
63
|
super timestamp, raw_data
|
64
64
|
end
|
65
65
|
|
@@ -71,11 +71,11 @@ module Spektrum
|
|
71
71
|
|
72
72
|
class BasicDataRecord < Record
|
73
73
|
|
74
|
-
def initialize
|
74
|
+
def initialize(timestamp, raw_data)
|
75
75
|
super timestamp, raw_data
|
76
76
|
end
|
77
77
|
|
78
|
-
def rpm
|
78
|
+
def rpm(pole_count)
|
79
79
|
raw_rpm * pole_count
|
80
80
|
end
|
81
81
|
|
@@ -98,7 +98,7 @@ module Spektrum
|
|
98
98
|
raw_voltage != 0xFFFF
|
99
99
|
end
|
100
100
|
|
101
|
-
def temperature
|
101
|
+
def temperature(unit = :f)
|
102
102
|
@temperature ||= two_byte_field(6..7)
|
103
103
|
case unit
|
104
104
|
when :f
|
@@ -128,7 +128,7 @@ module Spektrum
|
|
128
128
|
|
129
129
|
class FlightLogRecord < Record
|
130
130
|
|
131
|
-
def initialize
|
131
|
+
def initialize(timestamp, raw_data)
|
132
132
|
super timestamp, raw_data
|
133
133
|
end
|
134
134
|
|
@@ -157,7 +157,7 @@ module Spektrum
|
|
157
157
|
|
158
158
|
class GForceRecord < Record
|
159
159
|
|
160
|
-
def initialize
|
160
|
+
def initialize(timestamp, raw_data)
|
161
161
|
super timestamp, raw_data
|
162
162
|
end
|
163
163
|
|
@@ -189,7 +189,7 @@ module Spektrum
|
|
189
189
|
|
190
190
|
class GPSRecord1 < Record
|
191
191
|
|
192
|
-
def initialize
|
192
|
+
def initialize(timestamp, raw_data)
|
193
193
|
super timestamp, raw_data
|
194
194
|
end
|
195
195
|
|
@@ -198,7 +198,7 @@ module Spektrum
|
|
198
198
|
# @param unit one of :feet, :meters to define desired unit
|
199
199
|
# @return [Float] altitude in the desired unit
|
200
200
|
# @note This conversion has been verified via Spektrum STi
|
201
|
-
def altitude
|
201
|
+
def altitude(unit = :feet)
|
202
202
|
@altitude ||= (hex_byte_field(3) * 100) + hex_byte_field(2)
|
203
203
|
case unit
|
204
204
|
when :feet
|
@@ -272,7 +272,7 @@ module Spektrum
|
|
272
272
|
multiplier * convert_latlon([hundreds, elements].flatten)
|
273
273
|
end
|
274
274
|
|
275
|
-
def convert_latlon
|
275
|
+
def convert_latlon(elts)
|
276
276
|
raise ArgumentError unless elts.length == 5
|
277
277
|
elts[0] * 100 + elts[1].to_i + ("#{elts[2]}.#{elts[3]}#{elts[4]}".to_f / 60.0)
|
278
278
|
end
|
@@ -281,7 +281,7 @@ module Spektrum
|
|
281
281
|
|
282
282
|
class GPSRecord2 < Record
|
283
283
|
|
284
|
-
def initialize
|
284
|
+
def initialize(timestamp, raw_data)
|
285
285
|
super timestamp, raw_data
|
286
286
|
end
|
287
287
|
|
@@ -290,7 +290,7 @@ module Spektrum
|
|
290
290
|
# @param unit one of :knots, :mph, :kph to define desired unit
|
291
291
|
# @return [Float] speed in the desired unit
|
292
292
|
# @note This conversion has been verified via Spektrum STi
|
293
|
-
def speed
|
293
|
+
def speed(unit = :knots)
|
294
294
|
@speed ||= (hex_byte_field(3) * 100) + hex_byte_field(2)
|
295
295
|
case unit
|
296
296
|
when :knots
|
@@ -310,7 +310,7 @@ module Spektrum
|
|
310
310
|
# @note This conversion has been verified via Spektrum STi
|
311
311
|
def time
|
312
312
|
elements = 7.downto(4).map { |i| hex_byte_field(i) }
|
313
|
-
@time ||=
|
313
|
+
@time ||= '%.2i:%.2i:%.2i.%.2i' % elements
|
314
314
|
end
|
315
315
|
|
316
316
|
# Gets the number of satellites current visible and in-use.
|
@@ -325,7 +325,7 @@ module Spektrum
|
|
325
325
|
|
326
326
|
class SpeedRecord < Record
|
327
327
|
|
328
|
-
def initialize
|
328
|
+
def initialize(timestamp, raw_data)
|
329
329
|
super timestamp, raw_data
|
330
330
|
end
|
331
331
|
|
@@ -351,7 +351,7 @@ module Spektrum
|
|
351
351
|
|
352
352
|
class MysteryRecord < Record
|
353
353
|
|
354
|
-
def initialize
|
354
|
+
def initialize(timestamp, raw_data)
|
355
355
|
super timestamp, raw_data
|
356
356
|
end
|
357
357
|
|
@@ -371,7 +371,7 @@ module Spektrum
|
|
371
371
|
0xFF => FlightLogRecord,
|
372
372
|
}
|
373
373
|
|
374
|
-
def self.create
|
374
|
+
def self.create(type, timestamp, raw_data)
|
375
375
|
@@types.fetch(type, MysteryRecord).new(timestamp, raw_data)
|
376
376
|
end
|
377
377
|
|
data/lib/spektrum/log/version.rb
CHANGED
data/spektrum-log.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["nick@codelever.com"]
|
11
11
|
spec.description = %q{Read and interpret Spektrum TLM log files.}
|
12
12
|
spec.summary = %q{Spektrum TLM log file reader}
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "http://github.com/code-lever/spektrum-log"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spektrum-log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Veys
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -190,7 +190,7 @@ files:
|
|
190
190
|
- spec/spec_helper.rb
|
191
191
|
- spec/speed_record_spec.rb
|
192
192
|
- spektrum-log.gemspec
|
193
|
-
homepage:
|
193
|
+
homepage: http://github.com/code-lever/spektrum-log
|
194
194
|
licenses:
|
195
195
|
- MIT
|
196
196
|
metadata: {}
|
@@ -210,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
210
|
version: '0'
|
211
211
|
requirements: []
|
212
212
|
rubyforge_project:
|
213
|
-
rubygems_version: 2.0.
|
213
|
+
rubygems_version: 2.0.6
|
214
214
|
signing_key:
|
215
215
|
specification_version: 4
|
216
216
|
summary: Spektrum TLM log file reader
|