tasks: simulation: restructure sim data storage to better support the next step of resampling data to fit the configured partition
This commit is contained in:
17
build.rs
17
build.rs
@@ -1,5 +1,5 @@
|
||||
use std::fs;
|
||||
use std::io::{Read, Seek, Write};
|
||||
use std::io::{Read, Write};
|
||||
use std::path::Path;
|
||||
use std::fs::File;
|
||||
use image::GenericImageView;
|
||||
@@ -78,7 +78,10 @@ fn write_sim_data() {
|
||||
|
||||
println!("cargo::rerun-if-changed={}", gps_input.to_str().unwrap());
|
||||
if !gps_output.exists() || gps_output.metadata().unwrap().modified().unwrap() < gps_input.metadata().unwrap().modified().unwrap() {
|
||||
let mut gps_data = Reader::from_reader(File::open(gps_input.clone()).unwrap());
|
||||
let record_count = gps_data.records().count() as u32;
|
||||
let mut gps_data = Reader::from_reader(File::open(gps_input).unwrap());
|
||||
|
||||
let headers = gps_data.headers().unwrap();
|
||||
let (timestamp_idx, lat_idx, lon_idx) = (
|
||||
headers.iter().position(|x| { x == "seconds_elapsed" }).unwrap(),
|
||||
@@ -86,6 +89,7 @@ fn write_sim_data() {
|
||||
headers.iter().position(|x| { x == "latitude" }).unwrap(),
|
||||
);
|
||||
let mut gps_output = File::create(gps_output.clone()).unwrap();
|
||||
rmp::encode::write_array_len(&mut gps_output, record_count).unwrap();
|
||||
let mut last_stamp = 0.0;
|
||||
for record in gps_data.records().flatten() {
|
||||
let (timestamp, lat, lon) = (
|
||||
@@ -113,8 +117,12 @@ fn write_sim_data() {
|
||||
}
|
||||
};
|
||||
if rebuild_motion {
|
||||
let mut accel_data = Reader::from_reader(File::open(accel_input).unwrap());
|
||||
let mut accel_data = Reader::from_reader(File::open(accel_input.clone()).unwrap());
|
||||
let mut gyro_data = Reader::from_reader(File::open(gyro_input).unwrap());
|
||||
|
||||
let record_count = accel_data.records().count() as u32;
|
||||
let mut accel_data = Reader::from_reader(File::open(accel_input).unwrap());
|
||||
|
||||
let headers = accel_data.headers().unwrap();
|
||||
let (timestamp_idx, accel_x_idx, accel_y_idx, accel_z_idx) = (
|
||||
headers.iter().position(|x| { x == "seconds_elapsed" }).unwrap(),
|
||||
@@ -131,6 +139,7 @@ fn write_sim_data() {
|
||||
);
|
||||
|
||||
let mut motion_output = File::create(motion_output.clone()).unwrap();
|
||||
rmp::encode::write_array_len(&mut motion_output, record_count).unwrap();
|
||||
let mut last_stamp = 0.0;
|
||||
for (accel_record, gyro_record) in accel_data.records().flatten().zip(gyro_data.records().flatten()) {
|
||||
let (timestamp, accel_x, accel_y, accel_z) = (
|
||||
@@ -162,6 +171,10 @@ fn write_sim_data() {
|
||||
// GPS data = 2, motion data = 1
|
||||
|
||||
let mut unified_fd = File::create(unified_output.clone()).unwrap();
|
||||
|
||||
// Write out the stream index, which will be 2 (motion + gps)
|
||||
rmp::encode::write_array_len(&mut unified_fd, 2).unwrap();
|
||||
|
||||
let mut motion_output = File::open(motion_output).unwrap();
|
||||
let mut gps_output = File::open(gps_output).unwrap();
|
||||
rmp::encode::write_ext_meta(&mut unified_fd, motion_output.metadata().unwrap().len() as u32, 1).unwrap();
|
||||
|
||||
Reference in New Issue
Block a user