px4_log_reader 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/LICENSE.txt +23 -0
- data/README.md +2 -2
- data/Rakefile +34 -2
- data/lib/px4_log_reader/error.rb +43 -0
- data/lib/px4_log_reader/file_not_found_error.rb +41 -0
- data/lib/px4_log_reader/invalid_descriptor_error.rb +32 -14
- data/lib/px4_log_reader/log_buffer.rb +32 -0
- data/lib/px4_log_reader/log_file.rb +66 -35
- data/lib/px4_log_reader/log_message.rb +36 -5
- data/lib/px4_log_reader/message_descriptor.rb +46 -15
- data/lib/px4_log_reader/message_descriptor_cache.rb +53 -21
- data/lib/px4_log_reader/reader.rb +53 -21
- data/lib/px4_log_reader/version.rb +1 -1
- data/lib/px4_log_reader.rb +34 -0
- data/px4_log_reader.gemspec +44 -11
- data/test/test_files/pixhawk_descriptor_cache.px4mc +0 -0
- data/test/test_log_buffer.rb +32 -0
- data/test/test_log_file.rb +37 -1
- data/test/test_log_message.rb +74 -0
- data/test/test_message_descriptor.rb +32 -0
- data/test/test_message_descriptor_cache.rb +32 -0
- data/test/test_reader.rb +109 -1
- metadata +6 -4
- data/lib/px4log_parser.rb +0 -228
- data/test/test.rb +0 -33
@@ -1,3 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
1
33
|
module Px4LogReader
|
2
34
|
|
3
35
|
def self.open_common( file, options, &block )
|
@@ -33,27 +65,27 @@ module Px4LogReader
|
|
33
65
|
return reader
|
34
66
|
end
|
35
67
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
68
|
+
class Context
|
69
|
+
attr_reader :messages
|
70
|
+
def initialize
|
71
|
+
messages = {}
|
72
|
+
end
|
73
|
+
def find_by_name( name )
|
74
|
+
named_message = nil
|
75
|
+
@messages.values.each do |message|
|
76
|
+
if message.descriptor.name == name
|
77
|
+
named_message = message
|
78
|
+
end
|
79
|
+
end
|
80
|
+
return named_message
|
81
|
+
end
|
82
|
+
def find_by_type( type )
|
83
|
+
return @messages[ type ]
|
84
|
+
end
|
85
|
+
def set( message )
|
86
|
+
@messages[ message.descriptor.type ] = message.dup
|
87
|
+
end
|
88
|
+
end
|
57
89
|
|
58
90
|
class Reader
|
59
91
|
|
data/lib/px4_log_reader.rb
CHANGED
@@ -1,4 +1,38 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
1
33
|
require 'px4_log_reader/version'
|
34
|
+
require 'px4_log_reader/error'
|
35
|
+
require 'px4_log_reader/file_not_found_error'
|
2
36
|
require 'px4_log_reader/invalid_descriptor_error'
|
3
37
|
require 'px4_log_reader/log_message'
|
4
38
|
require 'px4_log_reader/message_descriptor'
|
data/px4_log_reader.gemspec
CHANGED
@@ -1,17 +1,50 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
#
|
4
|
+
# Copyright (c) 2016, Robert Glissmann
|
5
|
+
# All rights reserved.
|
6
|
+
#
|
7
|
+
# Redistribution and use in source and binary forms, with or without
|
8
|
+
# modification, are permitted provided that the following conditions are met:
|
9
|
+
#
|
10
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
11
|
+
# list of conditions and the following disclaimer.
|
12
|
+
#
|
13
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
14
|
+
# this list of conditions and the following disclaimer in the documentation
|
15
|
+
# and/or other materials provided with the distribution.
|
16
|
+
#
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
18
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
19
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
21
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
22
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
23
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
24
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
25
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
26
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
+
#
|
28
|
+
|
29
|
+
# %% license-end-token %%
|
30
|
+
#
|
31
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
32
|
+
#
|
33
|
+
#
|
34
|
+
|
2
35
|
require_relative 'lib/px4_log_reader/version'
|
3
36
|
|
4
37
|
Gem::Specification.new do |s|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
38
|
+
s.name = 'px4_log_reader'
|
39
|
+
s.version = Px4LogReader::VERSION
|
40
|
+
s.date = Time.now.to_date.strftime('%Y-%m-%d')
|
41
|
+
s.summary = "PX4 flight log reader"
|
42
|
+
s.description = "Px4LogReader is a gem for parsing PX4-format flight logs generated by the Pixhawk."
|
43
|
+
s.authors = [ "Robert Glissmann" ]
|
44
|
+
s.email = 'Robert.Glissmann@gmail.com'
|
45
|
+
s.files = `git ls-files`.split("\n")
|
46
|
+
s.licenses = ['BSD']
|
47
|
+
s.homepage = 'https://github.com/rgmann/px4_log_reader'
|
15
48
|
|
16
|
-
|
49
|
+
s.add_development_dependency 'rspec', '~> 3.1'
|
17
50
|
end
|
Binary file
|
data/test/test_log_buffer.rb
CHANGED
@@ -1,3 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
1
33
|
require 'minitest/autorun'
|
2
34
|
require 'px4_log_reader'
|
3
35
|
|
data/test/test_log_file.rb
CHANGED
@@ -1,3 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
1
33
|
require 'minitest/autorun'
|
2
34
|
require 'px4_log_reader'
|
3
35
|
|
@@ -21,6 +53,8 @@ class TestLogFile < MiniTest::Test
|
|
21
53
|
|
22
54
|
# log_file.close
|
23
55
|
|
56
|
+
# TODO
|
57
|
+
|
24
58
|
end
|
25
59
|
|
26
60
|
def test_read_message
|
@@ -33,11 +67,13 @@ class TestLogFile < MiniTest::Test
|
|
33
67
|
|
34
68
|
# puts message.descriptor
|
35
69
|
|
70
|
+
# TODO
|
71
|
+
|
36
72
|
end
|
37
73
|
|
38
74
|
|
39
75
|
def open_log_file
|
40
|
-
log_file = File.open( File.join( '
|
76
|
+
log_file = File.open( File.join( 'test', 'test_files', 'test_log.px4log' ), 'r' )
|
41
77
|
log_file
|
42
78
|
end
|
43
79
|
|
@@ -0,0 +1,74 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
33
|
+
require 'minitest/autorun'
|
34
|
+
require 'px4_log_reader'
|
35
|
+
|
36
|
+
class TestLogMessage < MiniTest::Test
|
37
|
+
|
38
|
+
def setup
|
39
|
+
end
|
40
|
+
|
41
|
+
def teardown
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_get_field
|
45
|
+
fields = [ 0x24, 32, 'test', 'IIbMh', 'id,counts,flag,length,ord' ]
|
46
|
+
|
47
|
+
message = Px4LogReader::LogMessage.new(
|
48
|
+
Px4LogReader::FORMAT_MESSAGE,
|
49
|
+
fields )
|
50
|
+
|
51
|
+
assert_equal fields[0], message.get('Type')
|
52
|
+
assert_equal fields[1], message.get('Length')
|
53
|
+
assert_equal fields[2], message.get('Name')
|
54
|
+
assert_equal fields[3], message.get('Format')
|
55
|
+
assert_equal fields[4], message.get('Labels')
|
56
|
+
|
57
|
+
assert_nil message.get('name')
|
58
|
+
assert_nil message.get('ThisFieldDoesNotExist')
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_pack_message
|
62
|
+
fields = [ 0x24, 32, 'test', 'IIbMh', 'id,counts,flag,length,ord' ]
|
63
|
+
|
64
|
+
message = Px4LogReader::LogMessage.new(
|
65
|
+
Px4LogReader::FORMAT_MESSAGE,
|
66
|
+
fields )
|
67
|
+
|
68
|
+
# This is a format message, so the format specifier is 'BBnNZ'
|
69
|
+
expected_length = 1 + 1 + 4 + 16 + 64
|
70
|
+
|
71
|
+
assert_equal expected_length, message.pack.length
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -1,3 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
1
33
|
require 'minitest/autorun'
|
2
34
|
require 'px4_log_reader'
|
3
35
|
|
@@ -1,3 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
1
33
|
require 'minitest/autorun'
|
2
34
|
require 'px4_log_reader'
|
3
35
|
|
data/test/test_reader.rb
CHANGED
@@ -1,3 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2016, Robert Glissmann
|
3
|
+
# All rights reserved.
|
4
|
+
#
|
5
|
+
# Redistribution and use in source and binary forms, with or without
|
6
|
+
# modification, are permitted provided that the following conditions are met:
|
7
|
+
#
|
8
|
+
# * Redistributions of source code must retain the above copyright notice, this
|
9
|
+
# list of conditions and the following disclaimer.
|
10
|
+
#
|
11
|
+
# * Redistributions in binary form must reproduce the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer in the documentation
|
13
|
+
# and/or other materials provided with the distribution.
|
14
|
+
#
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
16
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
17
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
19
|
+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
20
|
+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
21
|
+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
22
|
+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
23
|
+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
24
|
+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
25
|
+
#
|
26
|
+
|
27
|
+
# %% license-end-token %%
|
28
|
+
#
|
29
|
+
# Author: Robert.Glissmann@gmail.com (Robert Glissmann)
|
30
|
+
#
|
31
|
+
#
|
32
|
+
|
1
33
|
require 'minitest/autorun'
|
2
34
|
require 'px4_log_reader'
|
3
35
|
|
@@ -85,6 +117,33 @@ class TestReader < MiniTest::Test
|
|
85
117
|
|
86
118
|
end
|
87
119
|
|
120
|
+
end
|
121
|
+
|
122
|
+
assert_equal true, log_file_opened
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
def test_reader_blacklist
|
128
|
+
|
129
|
+
log_file_opened = false
|
130
|
+
log_filename = File.join( 'test', 'test_files', 'test_log.px4log' )
|
131
|
+
|
132
|
+
Px4LogReader.open( log_filename ) do |reader|
|
133
|
+
|
134
|
+
log_file_opened = true
|
135
|
+
|
136
|
+
# The log file associated with this test case contains the following
|
137
|
+
# messages in the specified order. Validate the order and context.
|
138
|
+
#
|
139
|
+
# 1) TIME
|
140
|
+
# 2) STAT
|
141
|
+
# 3) IMU
|
142
|
+
# 4) SENS
|
143
|
+
# 5) IMU1
|
144
|
+
# 6) VTOL
|
145
|
+
# 7) GPS
|
146
|
+
#
|
88
147
|
|
89
148
|
index = 0
|
90
149
|
expected_message_names = ['TIME','IMU','SENS','VTOL','GPS']
|
@@ -114,9 +173,58 @@ class TestReader < MiniTest::Test
|
|
114
173
|
end
|
115
174
|
|
116
175
|
assert_equal true, log_file_opened
|
117
|
-
|
118
176
|
end
|
119
177
|
|
178
|
+
def test_reader_whitelist
|
179
|
+
|
180
|
+
log_file_opened = false
|
181
|
+
log_filename = File.join( 'test', 'test_files', 'test_log.px4log' )
|
182
|
+
|
183
|
+
Px4LogReader.open( log_filename ) do |reader|
|
184
|
+
|
185
|
+
log_file_opened = true
|
186
|
+
|
187
|
+
# The log file associated with this test case contains the following
|
188
|
+
# messages in the specified order. Validate the order and context.
|
189
|
+
#
|
190
|
+
# 1) TIME
|
191
|
+
# 2) STAT
|
192
|
+
# 3) IMU
|
193
|
+
# 4) SENS
|
194
|
+
# 5) IMU1
|
195
|
+
# 6) VTOL
|
196
|
+
# 7) GPS
|
197
|
+
#
|
198
|
+
|
199
|
+
index = 0
|
200
|
+
expected_message_names = ['TIME','SENS']
|
201
|
+
expected_message_types = [0x81,0x05]
|
202
|
+
|
203
|
+
reader.each_message( { with: ['TIME','SENS'] } ) do |message,context|
|
204
|
+
|
205
|
+
expected_name = expected_message_names[ index ]
|
206
|
+
expected_type = expected_message_types[ index ]
|
207
|
+
|
208
|
+
assert_equal expected_name, message.descriptor.name
|
209
|
+
assert_equal expected_type, message.descriptor.type
|
210
|
+
|
211
|
+
context_message = context.find_by_name( expected_name )
|
212
|
+
refute_nil context_message
|
213
|
+
assert_equal expected_name, context_message.descriptor.name
|
214
|
+
|
215
|
+
context_message = context.find_by_type( expected_type )
|
216
|
+
refute_nil context_message
|
217
|
+
assert_equal expected_type, context_message.descriptor.type
|
218
|
+
|
219
|
+
index += 1
|
220
|
+
assert_equal index, context.messages.size
|
221
|
+
|
222
|
+
end
|
223
|
+
|
224
|
+
end
|
225
|
+
|
226
|
+
assert_equal true, log_file_opened
|
227
|
+
end
|
120
228
|
|
121
229
|
|
122
230
|
def all_descriptors_found( descriptors )
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: px4_log_reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Glissmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -32,9 +32,12 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- ".gitignore"
|
35
|
+
- LICENSE.txt
|
35
36
|
- README.md
|
36
37
|
- Rakefile
|
37
38
|
- lib/px4_log_reader.rb
|
39
|
+
- lib/px4_log_reader/error.rb
|
40
|
+
- lib/px4_log_reader/file_not_found_error.rb
|
38
41
|
- lib/px4_log_reader/invalid_descriptor_error.rb
|
39
42
|
- lib/px4_log_reader/log_buffer.rb
|
40
43
|
- lib/px4_log_reader/log_file.rb
|
@@ -43,13 +46,12 @@ files:
|
|
43
46
|
- lib/px4_log_reader/message_descriptor_cache.rb
|
44
47
|
- lib/px4_log_reader/reader.rb
|
45
48
|
- lib/px4_log_reader/version.rb
|
46
|
-
- lib/px4log_parser.rb
|
47
49
|
- px4_log_reader.gemspec
|
48
|
-
- test/test.rb
|
49
50
|
- test/test_files/pixhawk_descriptor_cache.px4mc
|
50
51
|
- test/test_files/test_log.px4log
|
51
52
|
- test/test_log_buffer.rb
|
52
53
|
- test/test_log_file.rb
|
54
|
+
- test/test_log_message.rb
|
53
55
|
- test/test_message_descriptor.rb
|
54
56
|
- test/test_message_descriptor_cache.rb
|
55
57
|
- test/test_reader.rb
|