mavlink-log 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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