mavlink-log 0.0.1 → 0.0.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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/lib/mavlink/log.rb +5 -1
  4. data/lib/mavlink/log/entry.rb +34 -0
  5. data/lib/mavlink/log/file.rb +16 -41
  6. data/lib/mavlink/log/header.rb +20 -0
  7. data/lib/mavlink/log/message.rb +83 -0
  8. data/lib/mavlink/log/messages/attitude.rb +37 -0
  9. data/lib/mavlink/log/messages/factory.rb +37 -0
  10. data/lib/mavlink/log/messages/global_position_int.rb +47 -0
  11. data/lib/mavlink/log/messages/gps_raw_int.rb +51 -0
  12. data/lib/mavlink/log/messages/heart_beat.rb +31 -0
  13. data/lib/mavlink/log/messages/messages.rb +15 -0
  14. data/lib/mavlink/log/messages/mission_current.rb +11 -0
  15. data/lib/mavlink/log/messages/nav_controller_output.rb +39 -0
  16. data/lib/mavlink/log/messages/param_request_list.rb +15 -0
  17. data/lib/mavlink/log/messages/param_value.rb +27 -0
  18. data/lib/mavlink/log/messages/raw_imu.rb +43 -0
  19. data/lib/mavlink/log/messages/rc_channels_raw.rb +47 -0
  20. data/lib/mavlink/log/messages/request_data_stream.rb +27 -0
  21. data/lib/mavlink/log/messages/scaled_pressure.rb +19 -0
  22. data/lib/mavlink/log/messages/servo_output_raw.rb +43 -0
  23. data/lib/mavlink/log/messages/sys_status.rb +64 -0
  24. data/lib/mavlink/log/messages/vfr_hud.rb +37 -0
  25. data/lib/mavlink/log/version.rb +1 -1
  26. data/spec/file_spec.rb +11 -1
  27. data/spec/messages/attitude_spec.rb +34 -0
  28. data/spec/messages/global_position_int_spec.rb +38 -0
  29. data/spec/messages/gps_raw_int_spec.rb +40 -0
  30. data/spec/messages/heart_beat_spec.rb +32 -0
  31. data/spec/messages/param_value_spec.rb +30 -0
  32. data/spec/messages/raw_imu_spec.rb +40 -0
  33. data/spec/messages/rc_channels_raw_spec.rb +42 -0
  34. data/spec/messages/sys_status_spec.rb +46 -0
  35. data/spec/messages/vfr_hud_spec.rb +32 -0
  36. data/spec/spec_helper.rb +2 -0
  37. data/spec/support/shared_examples_for_message.rb +13 -0
  38. data/spec/support/shared_examples_for_timed_message_micro.rb +9 -0
  39. data/spec/support/shared_examples_for_timed_message_milli.rb +9 -0
  40. data/spec/sys_status_spec.rb +0 -0
  41. metadata +48 -3
  42. data/lib/mavlink/log/messages.rb +0 -138
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::Attitude do
4
+
5
+ let(:time) { ["0004E87DD12586BD"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE1CEB01011E"].pack('H*')) }
8
+
9
+ let(:payload) { ["6533010081A986BB0EB69CBB2311D93F3CE3933AC0BB36BA80C911B9"].pack('H*') }
10
+
11
+ let(:crc) { ["4D46"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::Attitude.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ it_behaves_like 'a timed message (ms)', 78693
21
+
22
+ its(:roll) { should be_within(0.01).of(0.0) }
23
+
24
+ its(:pitch) { should be_within(0.01).of(0.0) }
25
+
26
+ its(:yaw) { should be_within(0.01).of(0.0) }
27
+
28
+ its(:rollspeed) { should be_within(0.01).of(1.695) }
29
+
30
+ its(:pitchspeed) { should be_within(0.01).of(0.0) }
31
+
32
+ its(:yawspeed) { should be_within(0.01).of(0.0) }
33
+
34
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::GlobalPositionInt do
4
+
5
+ let(:time) { ["0004D9EE608DF2D4"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE1CA7370121"].pack('H*')) }
8
+
9
+ let(:payload) { ["0C260A00E065B117B3535BC140D31900C0E0FFFFF2FF0F00EEFF3C8C"].pack('H*') }
10
+
11
+ let(:crc) { ["FD73"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::GlobalPositionInt.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ it_behaves_like 'a timed message (ms)', 665100
21
+
22
+ its(:lat) { should be_within(0.0001).of(39.7501) }
23
+
24
+ its(:lon) { should be_within(0.0001).of(-105.0979) }
25
+
26
+ its(:alt) { should be_within(0.01).of(1692.48) }
27
+
28
+ its(:relative_alt) { should be_within(0.01).of(-8.0) }
29
+
30
+ its(:vx) { should be_within(0.01).of(-0.14) }
31
+
32
+ its(:vy) { should be_within(0.01).of(0.15) }
33
+
34
+ its(:vz) { should be_within(0.01).of(-0.18) }
35
+
36
+ its(:hdg) { should be_within(0.1).of(359.0) }
37
+
38
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::GpsRawInt do
4
+
5
+ let(:time) { ["0004d9ee608d5a08"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE1E9C370118"].pack('H*')) }
8
+
9
+ let(:payload) { ["a091a127000000003066b11751535bc1959402000800ffff0500232d0305"].pack('H*') }
10
+
11
+ let(:crc) { ["c13a"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::GpsRawInt.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ it_behaves_like 'a timed message (us)', 664900000
21
+
22
+ its(:fix_type) { should eql(3) }
23
+
24
+ its(:lat) { should be_within(0.0001).of(39.7502) }
25
+
26
+ its(:lon) { should be_within(0.0001).of(-105.0979) }
27
+
28
+ its(:alt) { should be_within(0.01).of(169.11) }
29
+
30
+ its(:eph) { should be_within(0.01).of(0.08) }
31
+
32
+ its(:epv) { should be_within(0.01).of(655.35) }
33
+
34
+ its(:vel) { should be_within(0.01).of(0.05) }
35
+
36
+ its(:cog) { should be_within(0.01).of(115.55) }
37
+
38
+ its(:satellites_visible) { should eql(5) }
39
+
40
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::HeartBeat do
4
+
5
+ let(:time) { ["0004D9EE608AD128"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE09F7370100"].pack('H*')) }
8
+
9
+ let(:payload) { ["01000000010AC10403"].pack('H*') }
10
+
11
+ let(:crc) { ["F8CE"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::HeartBeat.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ its(:type) { should eql(1) }
21
+
22
+ its(:autopilot) { should eql(0) }
23
+
24
+ its(:base_mode) { should eql(0) }
25
+
26
+ its(:custom_mode) { should eql(0xC10A0100) }
27
+
28
+ its(:system_status) { should eql(4) }
29
+
30
+ its(:mavlink_version) { should eql(3) }
31
+
32
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::ParamValue do
4
+
5
+ let(:time) { ["0004E87DCDB548F1"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE192D010116"].pack('H*')) }
8
+
9
+ let(:payload) { ["0000BA4210010F014D4F545F544352565F4D41585043540002"].pack('H*') }
10
+
11
+ let(:crc) { ["6982"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::ParamValue.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ its(:param_value) { should be_within(0.01).of(93.0) }
21
+
22
+ its(:param_count) { should eql(272) }
23
+
24
+ its(:param_index) { should eql(271) }
25
+
26
+ its(:param_id) { should eql('MOT_TCRV_MAXPCT') }
27
+
28
+ its(:param_type) { should eql(2) }
29
+
30
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::RawImu do
4
+
5
+ let(:time) { ["0004D9EE608DA5E4"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE1AA237011B"].pack('H*')) }
8
+
9
+ let(:payload) { ["4018A32700000000C6027F0155F4EE17F017B418000000000000"].pack('H*') }
10
+
11
+ let(:crc) { ["DD85"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::RawImu.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ it_behaves_like 'a timed message (us)', 665000000
21
+
22
+ its(:xacc) { should eql(710) }
23
+
24
+ its(:yacc) { should eql(383) }
25
+
26
+ its(:zacc) { should eql(-2987) }
27
+
28
+ its(:xgyro) { should eql(6126) }
29
+
30
+ its(:ygyro) { should eql(6128) }
31
+
32
+ its(:zgyro) { should eql(6324) }
33
+
34
+ its(:xmag) { should eql(0) }
35
+
36
+ its(:ymag) { should eql(0) }
37
+
38
+ its(:zmag) { should eql(0) }
39
+
40
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::RcChannelsRaw do
4
+
5
+ let(:time) { ["0004E87DD1249299"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE16E5010123"].pack('H*')) }
8
+
9
+ let(:payload) { ["BA320100EE05F5054A04FA058207D905d905d9050000"].pack('H*') }
10
+
11
+ let(:crc) { ["71CD"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::RcChannelsRaw.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ it_behaves_like 'a timed message (ms)', 78522
21
+
22
+ its(:port) { should eql(0) }
23
+
24
+ its(:chan1_raw) { should eql(1518) }
25
+
26
+ its(:chan2_raw) { should eql(1525) }
27
+
28
+ its(:chan3_raw) { should eql(1098) }
29
+
30
+ its(:chan4_raw) { should eql(1530) }
31
+
32
+ its(:chan5_raw) { should eql(1922) }
33
+
34
+ its(:chan6_raw) { should eql(1497) }
35
+
36
+ its(:chan7_raw) { should eql(1497) }
37
+
38
+ its(:chan8_raw) { should eql(1497) }
39
+
40
+ its(:rssi) { should eql(0) }
41
+
42
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::SysStatus do
4
+
5
+ let(:time) { ["0004D9EE5A9C7690"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE09F7370100"].pack('H*')) }
8
+
9
+ let(:payload) { ["2FFCFFFF2FACFFFF2FFCFFFF0000112BFFFF000000000000000000000000FF"].pack('H*') }
10
+
11
+ let(:crc) { ["E3E0"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::SysStatus.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ its(:onboard_control_sensors_present) { should eql(0xFFFFFC2F) }
21
+
22
+ its(:onboard_control_sensors_enabled) { should eql(0xFFFFAC2F) }
23
+
24
+ its(:onboard_control_sensors_health) { should eql(0xFFFFFC2F) }
25
+
26
+ its(:load) { should be_within(0.001).of(0.0) }
27
+
28
+ its(:voltage_battery) { should be_within(0.01).of(11.025) }
29
+
30
+ its(:current_battery) { should be_within(0.01).of(-0.01) }
31
+
32
+ its(:battery_remaining) { should eql(0) }
33
+
34
+ its(:drop_rate_comm) { should eql(0) }
35
+
36
+ its(:errors_comm) { should eql(0) }
37
+
38
+ its(:errors_count1) { should eql(0) }
39
+
40
+ its(:errors_count2) { should eql(0) }
41
+
42
+ its(:errors_count3) { should eql(0) }
43
+
44
+ its(:errors_count4) { should eql(65280) }
45
+
46
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe MAVLink::Log::Messages::VfrHud do
4
+
5
+ let(:time) { ["0004d9ee608dc804"].pack('H*') }
6
+
7
+ let(:header) { MAVLink::Log::Header.new(["FE14A437014A"].pack('H*')) }
8
+
9
+ let(:payload) { ["713d8a3e8fc2753d5c8fd344000090c167010000"].pack('H*') }
10
+
11
+ let(:crc) { ["8C40"].pack('H*') }
12
+
13
+ subject do
14
+ entry = MAVLink::Log::Entry.new(time, header, payload, crc)
15
+ MAVLink::Log::Messages::VfrHud.new(entry)
16
+ end
17
+
18
+ it_behaves_like 'a message'
19
+
20
+ its(:airspeed) { should be_within(0.01).of(0.27) }
21
+
22
+ its(:groundspeed) { should be_within(0.01).of(0.06) }
23
+
24
+ its(:heading) { should eql(-28836) }
25
+
26
+ its(:throttle) { should eql(17619) }
27
+
28
+ its(:alt) { should be_within(0.1).of(-18.0) }
29
+
30
+ its(:climb) { should be_within(0.1).of(0.0) }
31
+
32
+ end
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,8 @@ require 'awesome_print'
8
8
  require 'pathname'
9
9
  require 'mavlink/log'
10
10
 
11
+ Dir[File.join(File.dirname(__FILE__), 'support', '**', '*.rb')].each { |f| require f }
12
+
11
13
  RSpec.configure do |config|
12
14
  config.treat_symbols_as_metadata_keys_with_true_values = true
13
15
  config.run_all_when_everything_filtered = true
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples 'a message' do
4
+
5
+ it { should respond_to(:id) }
6
+
7
+ its(:id) { should_not be_nil }
8
+
9
+ it { should respond_to(:crc) }
10
+
11
+ its(:crc) { should_not be_nil }
12
+
13
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples 'a timed message (us)' do |time|
4
+
5
+ it { should respond_to(:time_usec) }
6
+
7
+ its(:time_usec) { should eql(time) }
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples 'a timed message (ms)' do |time|
4
+
5
+ it { should respond_to(:time_boot_ms) }
6
+
7
+ its(:time_boot_ms) { should eql(time) }
8
+
9
+ end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mavlink-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.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-10-12 00:00:00.000000000 Z
11
+ date: 2013-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -150,8 +150,27 @@ files:
150
150
  - README.md
151
151
  - Rakefile
152
152
  - lib/mavlink/log.rb
153
+ - lib/mavlink/log/entry.rb
153
154
  - lib/mavlink/log/file.rb
154
- - lib/mavlink/log/messages.rb
155
+ - lib/mavlink/log/header.rb
156
+ - lib/mavlink/log/message.rb
157
+ - lib/mavlink/log/messages/attitude.rb
158
+ - lib/mavlink/log/messages/factory.rb
159
+ - lib/mavlink/log/messages/global_position_int.rb
160
+ - lib/mavlink/log/messages/gps_raw_int.rb
161
+ - lib/mavlink/log/messages/heart_beat.rb
162
+ - lib/mavlink/log/messages/messages.rb
163
+ - lib/mavlink/log/messages/mission_current.rb
164
+ - lib/mavlink/log/messages/nav_controller_output.rb
165
+ - lib/mavlink/log/messages/param_request_list.rb
166
+ - lib/mavlink/log/messages/param_value.rb
167
+ - lib/mavlink/log/messages/raw_imu.rb
168
+ - lib/mavlink/log/messages/rc_channels_raw.rb
169
+ - lib/mavlink/log/messages/request_data_stream.rb
170
+ - lib/mavlink/log/messages/scaled_pressure.rb
171
+ - lib/mavlink/log/messages/servo_output_raw.rb
172
+ - lib/mavlink/log/messages/sys_status.rb
173
+ - lib/mavlink/log/messages/vfr_hud.rb
155
174
  - lib/mavlink/log/version.rb
156
175
  - mavlink-log.gemspec
157
176
  - spec/data/delete-me-soon.tlog
@@ -160,7 +179,20 @@ files:
160
179
  - spec/data/invalid/empty.file
161
180
  - spec/data/invalid/spektrum/1.TLM
162
181
  - spec/file_spec.rb
182
+ - spec/messages/attitude_spec.rb
183
+ - spec/messages/global_position_int_spec.rb
184
+ - spec/messages/gps_raw_int_spec.rb
185
+ - spec/messages/heart_beat_spec.rb
186
+ - spec/messages/param_value_spec.rb
187
+ - spec/messages/raw_imu_spec.rb
188
+ - spec/messages/rc_channels_raw_spec.rb
189
+ - spec/messages/sys_status_spec.rb
190
+ - spec/messages/vfr_hud_spec.rb
163
191
  - spec/spec_helper.rb
192
+ - spec/support/shared_examples_for_message.rb
193
+ - spec/support/shared_examples_for_timed_message_micro.rb
194
+ - spec/support/shared_examples_for_timed_message_milli.rb
195
+ - spec/sys_status_spec.rb
164
196
  homepage: http://github.com/code-lever/mavlink-log
165
197
  licenses:
166
198
  - MIT
@@ -192,4 +224,17 @@ test_files:
192
224
  - spec/data/invalid/empty.file
193
225
  - spec/data/invalid/spektrum/1.TLM
194
226
  - spec/file_spec.rb
227
+ - spec/messages/attitude_spec.rb
228
+ - spec/messages/global_position_int_spec.rb
229
+ - spec/messages/gps_raw_int_spec.rb
230
+ - spec/messages/heart_beat_spec.rb
231
+ - spec/messages/param_value_spec.rb
232
+ - spec/messages/raw_imu_spec.rb
233
+ - spec/messages/rc_channels_raw_spec.rb
234
+ - spec/messages/sys_status_spec.rb
235
+ - spec/messages/vfr_hud_spec.rb
195
236
  - spec/spec_helper.rb
237
+ - spec/support/shared_examples_for_message.rb
238
+ - spec/support/shared_examples_for_timed_message_micro.rb
239
+ - spec/support/shared_examples_for_timed_message_milli.rb
240
+ - spec/sys_status_spec.rb