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,15 @@
1
+ require_relative 'attitude'
2
+ require_relative 'global_position_int'
3
+ require_relative 'gps_raw_int'
4
+ require_relative 'heart_beat'
5
+ require_relative 'mission_current'
6
+ require_relative 'nav_controller_output'
7
+ require_relative 'param_request_list'
8
+ require_relative 'param_value'
9
+ require_relative 'raw_imu'
10
+ require_relative 'rc_channels_raw'
11
+ require_relative 'request_data_stream'
12
+ require_relative 'scaled_pressure'
13
+ require_relative 'servo_output_raw'
14
+ require_relative 'sys_status'
15
+ require_relative 'vfr_hud'
@@ -0,0 +1,11 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class MissionCurrent < Message
4
+
5
+ def seq
6
+ @seq ||= uint16_t(0..1)
7
+ end
8
+
9
+ end
10
+
11
+ end; end; end
@@ -0,0 +1,39 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class NavControllerOutput < Message
4
+
5
+ def nav_roll
6
+ @nav_roll ||= float(0..3)
7
+ end
8
+
9
+ def nav_pitch
10
+ @nav_pitch ||= float(4..7)
11
+ end
12
+
13
+ def alt_error
14
+ @alt_error ||= float(8..11)
15
+ end
16
+
17
+ def aspd_error
18
+ @aspd_error ||= float(12..15)
19
+ end
20
+
21
+ def xtrack_error
22
+ @xtrack_error ||= float(16..19)
23
+ end
24
+
25
+ def nav_bearing
26
+ @nav_bearing ||= int16_t(20..21)
27
+ end
28
+
29
+ def target_bearing
30
+ @target_bearing ||= int16_t(22..23)
31
+ end
32
+
33
+ def wp_dist
34
+ @wp_dist ||= uint16_t(24..25)
35
+ end
36
+
37
+ end
38
+
39
+ end; end; end
@@ -0,0 +1,15 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class ParamRequestList < Message
4
+
5
+ def target_system
6
+ @target_system ||= uint8_t(0)
7
+ end
8
+
9
+ def target_component
10
+ @target_component ||= uint8_t(1)
11
+ end
12
+
13
+ end
14
+
15
+ end; end; end
@@ -0,0 +1,27 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class ParamValue < Message
4
+
5
+ def param_value
6
+ @param_value ||= float(0..3)
7
+ end
8
+
9
+ def param_count
10
+ @param_count ||= uint16_t(4..5)
11
+ end
12
+
13
+ def param_index
14
+ @param_index ||= uint16_t(6..7)
15
+ end
16
+
17
+ def param_id
18
+ @param_id ||= string(8..23)
19
+ end
20
+
21
+ def param_type
22
+ @param_type ||= uint8_t(24)
23
+ end
24
+
25
+ end
26
+
27
+ end; end; end
@@ -0,0 +1,43 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class RawImu < TimedMessageMicro
4
+
5
+ def xacc
6
+ @xacc ||= int16_t(8..9)
7
+ end
8
+
9
+ def yacc
10
+ @yacc ||= int16_t(10..11)
11
+ end
12
+
13
+ def zacc
14
+ @zacc ||= int16_t(12..13)
15
+ end
16
+
17
+ def xgyro
18
+ @xgyro ||= int16_t(14..15)
19
+ end
20
+
21
+ def ygyro
22
+ @ygyro ||= int16_t(16..17)
23
+ end
24
+
25
+ def zgyro
26
+ @zgyro ||= int16_t(18..19)
27
+ end
28
+
29
+ def xmag
30
+ @xmag ||= int16_t(20..21)
31
+ end
32
+
33
+ def ymag
34
+ @ymag ||= int16_t(22..23)
35
+ end
36
+
37
+ def zmag
38
+ @zmag ||= int16_t(24..25)
39
+ end
40
+
41
+ end
42
+
43
+ end; end; end
@@ -0,0 +1,47 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class RcChannelsRaw < TimedMessageMilli
4
+
5
+ def chan1_raw
6
+ @chan1_raw ||= uint16_t(4..5)
7
+ end
8
+
9
+ def chan2_raw
10
+ @chan2_raw ||= uint16_t(6..7)
11
+ end
12
+
13
+ def chan3_raw
14
+ @chan3_raw ||= uint16_t(8..9)
15
+ end
16
+
17
+ def chan4_raw
18
+ @chan4_raw ||= uint16_t(10..11)
19
+ end
20
+
21
+ def chan5_raw
22
+ @chan5_raw ||= uint16_t(12..13)
23
+ end
24
+
25
+ def chan6_raw
26
+ @chan6_raw ||= uint16_t(14..15)
27
+ end
28
+
29
+ def chan7_raw
30
+ @chan7_raw ||= uint16_t(16..17)
31
+ end
32
+
33
+ def chan8_raw
34
+ @chan8_raw ||= uint16_t(18..19)
35
+ end
36
+
37
+ def port
38
+ @port ||= uint8_t(20)
39
+ end
40
+
41
+ def rssi
42
+ @rssi ||= uint8_t(21)
43
+ end
44
+
45
+ end
46
+
47
+ end; end; end
@@ -0,0 +1,27 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class RequestDataStream < Message
4
+
5
+ def req_message_rate
6
+ @req_message_rate ||= uint16_t(0..1)
7
+ end
8
+
9
+ def target_system
10
+ @target_system ||= uint8_t(2)
11
+ end
12
+
13
+ def target_component
14
+ @target_component ||= uint8_t(3)
15
+ end
16
+
17
+ def req_stream_id
18
+ @req_stream_id ||= uint8_t(4)
19
+ end
20
+
21
+ def start_stop
22
+ @start_stop ||= uint8_t(5)
23
+ end
24
+
25
+ end
26
+
27
+ end; end; end
@@ -0,0 +1,19 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class ScaledPressure < TimedMessageMilli
4
+
5
+ def press_abs
6
+ @press_abs ||= float(4..7)
7
+ end
8
+
9
+ def press_diff
10
+ @press_diff ||= float(8..11)
11
+ end
12
+
13
+ def temperature
14
+ @temperature ||= int16_t(12..13)
15
+ end
16
+
17
+ end
18
+
19
+ end; end; end
@@ -0,0 +1,43 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class ServoOutputRaw < TimedMessageMicro
4
+
5
+ def servo1_raw
6
+ @servo1_raw ||= uint16_t(4..5)
7
+ end
8
+
9
+ def servo2_raw
10
+ @servo2_raw ||= uint16_t(6..7)
11
+ end
12
+
13
+ def servo3_raw
14
+ @servo3_raw ||= uint16_t(8..9)
15
+ end
16
+
17
+ def servo4_raw
18
+ @servo4_raw ||= uint16_t(10..11)
19
+ end
20
+
21
+ def servo5_raw
22
+ @servo5_raw ||= uint16_t(12..13)
23
+ end
24
+
25
+ def servo6_raw
26
+ @servo6_raw ||= uint16_t(14..15)
27
+ end
28
+
29
+ def servo7_raw
30
+ @servo7_raw ||= uint16_t(16..17)
31
+ end
32
+
33
+ def servo8_raw
34
+ @servo8_raw ||= uint16_t(18..19)
35
+ end
36
+
37
+ def port
38
+ @port ||= uint8_t(20)
39
+ end
40
+
41
+ end
42
+
43
+ end; end; end
@@ -0,0 +1,64 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class SysStatus < Message
4
+
5
+ def onboard_control_sensors_present
6
+ @onboard_control_sensors_present ||= uint32_t(0..3)
7
+ end
8
+
9
+ def onboard_control_sensors_enabled
10
+ @onboard_control_sensors_enabled ||= uint32_t(4..7)
11
+ end
12
+
13
+ def onboard_control_sensors_health
14
+ @onboard_control_sensors_health ||= uint32_t(8..11)
15
+ end
16
+
17
+ # 0%..100%
18
+ def load
19
+ @load ||= (uint16_t(12..13) / 10.0)
20
+ end
21
+
22
+ # V
23
+ def voltage_battery
24
+ @load ||= (uint16_t(14..15) / 1000.0)
25
+ end
26
+
27
+ # A (-1: not measured)
28
+ def current_battery
29
+ @load ||= (int16_t(16..17) / 100.0)
30
+ end
31
+
32
+ # 0%..100% (-1: not measured)
33
+ def battery_remaining
34
+ @battery_remaining ||= uint8_t(18)
35
+ end
36
+
37
+ # 0%..100% (bad packet %age)
38
+ def drop_rate_comm
39
+ @drop_rate_comm ||= (uint16_t(19..20) / 100)
40
+ end
41
+
42
+ def errors_comm
43
+ @errors_comm ||= uint16_t(21..22)
44
+ end
45
+
46
+ def errors_count1
47
+ @errors_count1 ||= uint16_t(23..24)
48
+ end
49
+
50
+ def errors_count2
51
+ @errors_count2 ||= uint16_t(25..26)
52
+ end
53
+
54
+ def errors_count3
55
+ @errors_count3 ||= uint16_t(27..28)
56
+ end
57
+
58
+ def errors_count4
59
+ @errors_count4 ||= uint16_t(29..30)
60
+ end
61
+
62
+ end
63
+
64
+ end; end; end
@@ -0,0 +1,37 @@
1
+ module MAVLink; module Log; module Messages
2
+
3
+ class VfrHud < Message
4
+
5
+ # m/s
6
+ def airspeed
7
+ @airspeed ||= float(0..3)
8
+ end
9
+
10
+ # m/s
11
+ def groundspeed
12
+ @groundspeed ||= float(4..7)
13
+ end
14
+
15
+ # 0..360
16
+ def heading
17
+ @heading ||= int16_t(8..9)
18
+ end
19
+
20
+ # 0..100%
21
+ def throttle
22
+ @throttle ||= uint16_t(10..11)
23
+ end
24
+
25
+ # meters (MSL)
26
+ def alt
27
+ @alt ||= float(12..15)
28
+ end
29
+
30
+ # m/s
31
+ def climb
32
+ @climb ||= float(16..19)
33
+ end
34
+
35
+ end
36
+
37
+ end; end; end
@@ -1,5 +1,5 @@
1
1
  module MAVLink
2
2
  module Log
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
data/spec/file_spec.rb CHANGED
@@ -7,6 +7,7 @@ describe MAVLink::Log::File do
7
7
  context 'with data file delete-me-soon.tlog' do
8
8
 
9
9
  before(:all) { @file = MAVLink::Log::File.new(data_file('delete-me-soon.tlog')) }
10
+ #before(:all) { @file = MAVLink::Log::File.new("/Users/nick/Desktop/2013-10-11 16-28-33.tlog") }
10
11
 
11
12
  subject { @file }
12
13
 
@@ -14,10 +15,19 @@ describe MAVLink::Log::File do
14
15
 
15
16
  it { should have(21138).entries }
16
17
 
17
- its(:to_kml?) { should be_true }
18
+ it { should have(21138).messages }
18
19
 
19
20
  end
20
21
 
22
+ it 'should raise for invalid or missing files' do
23
+ files = invalid_data_files
24
+ files.should have(6).files
25
+
26
+ files.each do |f|
27
+ expect { MAVLink::Log::File.new(f) }.to raise_error
28
+ end
29
+ end
30
+
21
31
  end
22
32
 
23
33
  end