px4_log_reader 0.0.5 → 0.0.6

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.
data/lib/px4log_parser.rb DELETED
@@ -1,228 +0,0 @@
1
-
2
-
3
-
4
-
5
- # class Px4LogReader
6
-
7
- # include PX4
8
-
9
- # HEADER_MARKER = [0xA3,0x95]#.pack('CC').freeze
10
- # HEADER_LENGTH = 3
11
-
12
- # FORMAT_MESSAGE = Px4LogMessageDescription.new({
13
- # name: 'FMT',
14
- # type: 0x80,
15
- # length: 89,
16
- # format: 'BBnZ',
17
- # fields: ["Type", "Length", "Name", "Format", "Labels"] }).freeze
18
-
19
- # attr_reader :message_descriptions
20
- # attr_reader :messages
21
- # attr_reader :px4_log_format
22
-
23
- # def initialize
24
- # @message_descriptions = {}
25
- # @messages = []
26
- # @px4_log_format = false
27
- # end
28
-
29
- # def parse_log( filename, cache_filename=nil )
30
- # @message_descriptions = {}
31
- # @messages = []
32
-
33
- # @file_size = File.size?(filename)
34
-
35
- # if cache_filename && File.exist?( cache_filename )
36
- # if File.exist?( cache_filename )
37
- # File.open( cache_filename, 'r' ) do |io|
38
- # begin
39
- # loop do
40
- # description_size = io.read_nonblock(4).unpack('L').first
41
- # description = Marshal.load( io.read(description_size) )
42
-
43
- # @message_descriptions[ description.type ] = description
44
- # end
45
- # rescue EOFError => error
46
- # puts "Parsed #{@message_descriptions.size} cached message descriptions"
47
- # # @message_descriptions.each do |message_type,description|
48
- # # puts description
49
- # # end
50
- # rescue StandardError => error
51
- # puts "#{error.class}: #{error.message}"
52
- # puts error.backtrace.join("\n")
53
- # end
54
- # end
55
- # else
56
- # puts "Cache file '#{cache_filename}' not found"
57
- # end
58
- # else
59
- # File.open( filename, 'r' ) do |io|
60
- # read_formats( io, cache_filename )
61
- # end
62
- # end
63
-
64
- # if @message_descriptions.size > 0
65
- # File.open( filename, 'r' ) do |io|
66
- # begin
67
- # loop do
68
- # message = read_message( io )
69
-
70
- # if message.nil?
71
- # puts "Failed to read message"
72
- # break
73
- # elsif message.description.name != "FMT"
74
- # @messages << message
75
- # end
76
-
77
- # $stdout.printf "\rReading messages %d/%d", io.pos, @file_size
78
- # end
79
- # rescue StandardError => error
80
- # puts "#{error.class}: #{error.message}"
81
- # puts error.backtrace.join("\n")
82
- # end
83
- # end
84
- # else
85
- # raise "No message descriptions found"
86
- # end
87
- # puts
88
- # end
89
-
90
- # def read_message_header( io )
91
- # byte = nil
92
-
93
- # begin
94
-
95
- # data = io.read(2)
96
-
97
- # if data && data.length == 2
98
- # loop do
99
-
100
- # data << io.read_nonblock(1)
101
-
102
- # # puts "#{data.unpack('CCC')[0,2]} == #{HEADER_MARKER}"
103
- # if data.unpack('CCC')[0,2] == HEADER_MARKER
104
- # byte = data.unpack('CCC').last & 0xFF
105
- # # puts "Found message header #{data.unpack('CCC')}"
106
- # # puts "message_type = #{'%02X'%byte}"
107
- # break
108
- # else
109
- # data = data[1..-1]
110
- # end
111
-
112
- # end
113
- # end
114
-
115
- # rescue EOFError => error
116
- # # Nothing to do.
117
- # rescue StandardError => error
118
- # puts error.message
119
- # puts error.backtrace.join("\n")
120
- # end
121
-
122
- # return byte
123
- # end
124
-
125
- # def read_message( io )
126
-
127
- # message = nil
128
- # while message.nil? do
129
- # message_type = read_message_header( io )
130
-
131
- # if message_type && (message_type != FORMAT_MESSAGE.type)
132
- # message_description = @message_descriptions[ message_type ]
133
-
134
- # if message_description
135
- # message_data = io.read( message_description.length - HEADER_LENGTH )
136
- # message = message_description.parse_message( message_data )
137
- # else
138
- # puts "ERROR: Failed to get description for message of type '#{'0x%02X' % message_type}'"
139
- # end
140
- # elsif message_type.nil?
141
- # break
142
- # end
143
-
144
- # # $stdout.printf "\rReading formats %d/%d", io.pos, @file_size
145
- # end
146
-
147
- # return message
148
- # end
149
-
150
- # def read_formats( io, cache_filename )
151
- # loop do
152
- # begin
153
- # message_type = read_message_header( io )
154
-
155
- # if message_type.nil?
156
- # break
157
- # elsif message_type == FORMAT_MESSAGE.type
158
- # # puts "Found format message"
159
- # message_description = Px4LogMessageDescription.new
160
- # message_description.parse_from_io( io )
161
-
162
- # unless @message_descriptions.keys.include? message_description.type
163
- # @message_descriptions[message_description.type] = message_description
164
- # end
165
-
166
- # if message_description.name == "TIME"
167
- # @px4_log_format = true
168
- # end
169
- # end
170
-
171
- # $stdout.printf "\rReading formats %d/%d", io.pos, @file_size
172
-
173
- # rescue StandardError => e
174
- # puts "#{e.class}: #{e.message}"
175
- # puts e.backtrace.join("\n")
176
- # break
177
- # end
178
- # end
179
- # $stdout.puts
180
-
181
- # if cache_filename
182
- # File.open( cache_filename, 'w+' ) do |io|
183
- # @message_descriptions.each do |message_type,description|
184
- # description_data = Marshal.dump( description )
185
- # io.write( [ description_data.size ].pack('L') )
186
- # io.write( description_data )
187
- # end
188
- # end
189
- # end
190
- # end
191
-
192
- # end
193
-
194
-
195
- # if ARGV.size == 2
196
- # filename = ARGV[0]
197
- # output_dir = ARGV[1]
198
- # puts "Attempting to parse #{filename}"
199
-
200
- # cache_filename = File.join( 'px4_csvs', "#{File.basename( filename, '.px4log' )}.px4log_description_cache" )
201
-
202
- # log = Px4LogReader.new
203
- # log.parse_log( filename, cache_filename )
204
-
205
- # log.message_descriptions.each do |type,description|
206
- # # puts description
207
- # File.open(File.join(output_dir,"#{description.name.downcase}_log.csv"),"w+") do |io|
208
- # io.puts description.to_csv_line
209
- # end
210
- # end
211
-
212
- # last_timestamp = 0
213
- # log.messages.each do |message|
214
- # if message.description.name == "TIME"
215
- # last_timestamp = message.get(0)
216
- # end
217
-
218
- # File.open(File.join(output_dir,"#{message.description.name.downcase}_log.csv"),"a+") do |io|
219
- # io.puts message.to_csv_line(last_timestamp)
220
- # end
221
- # end
222
-
223
- # else
224
-
225
- # puts "Specify source and destination"
226
-
227
- # end
228
-
data/test/test.rb DELETED
@@ -1,33 +0,0 @@
1
- if ARGV.size == 2
2
- filename = ARGV[0]
3
- output_dir = ARGV[1]
4
- puts "Attempting to parse #{filename}"
5
-
6
- cache_filename = File.join( 'px4_csvs', "#{File.basename( filename, '.px4log' )}.px4log_description_cache" )
7
-
8
- log = Px4LogReader.new
9
- log.parse_log( filename, cache_filename )
10
-
11
- log.message_descriptions.each do |type,description|
12
- # puts description
13
- File.open(File.join(output_dir,"#{description.name.downcase}_log.csv"),"w+") do |io|
14
- io.puts description.to_csv_line
15
- end
16
- end
17
-
18
- last_timestamp = 0
19
- log.messages.each do |message|
20
- if message.description.name == "TIME"
21
- last_timestamp = message.get(0)
22
- end
23
-
24
- File.open(File.join(output_dir,"#{message.description.name.downcase}_log.csv"),"a+") do |io|
25
- io.puts message.to_csv_line(last_timestamp)
26
- end
27
- end
28
-
29
- else
30
-
31
- puts "Specify source and destination"
32
-
33
- end