From 59f71452d71ca6ad512a722946e67dc89db3b18b Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 20 Sep 2015 12:55:48 +0200 Subject: [PATCH] Sensor sim: Initialize sensor data to zero --- src/platforms/posix/drivers/accelsim/accelsim.cpp | 9 +++++---- src/platforms/posix/drivers/gyrosim/gyrosim.cpp | 14 ++++++++------ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/platforms/posix/drivers/accelsim/accelsim.cpp b/src/platforms/posix/drivers/accelsim/accelsim.cpp index cc299b5847..fa0a256605 100644 --- a/src/platforms/posix/drivers/accelsim/accelsim.cpp +++ b/src/platforms/posix/drivers/accelsim/accelsim.cpp @@ -448,6 +448,9 @@ ACCELSIM::init() { int ret = ERROR; + struct mag_report mrp = {}; + struct accel_report arp = {}; + /* do SIM init first */ if (VDev::init() != OK) { PX4_WARN("SIM init failed"); @@ -478,7 +481,6 @@ ACCELSIM::init() measure(); /* advertise sensor topic, measure manually to initialize valid report */ - struct mag_report mrp; _mag_reports->get(&mrp); /* measurement will have generated a report, publish */ @@ -493,7 +495,6 @@ ACCELSIM::init() _accel_class_instance = register_class_devname(ACCEL_BASE_DEVICE_PATH); /* advertise sensor topic, measure manually to initialize valid report */ - struct accel_report arp = {}; _accel_reports->get(&arp); /* measurement will have generated a report, publish */ @@ -1014,7 +1015,7 @@ ACCELSIM::measure() } raw_accel_report; #pragma pack(pop) - accel_report accel_report; + accel_report accel_report = {}; /* start the performance counter */ perf_begin(_accel_sample_perf); @@ -1023,7 +1024,7 @@ ACCELSIM::measure() memset(&raw_accel_report, 0, sizeof(raw_accel_report)); raw_accel_report.cmd = DIR_READ | ACC_READ; - if(OK != transfer((uint8_t *)&raw_accel_report, (uint8_t *)&raw_accel_report, sizeof(raw_accel_report))) { + if (OK != transfer((uint8_t *)&raw_accel_report, (uint8_t *)&raw_accel_report, sizeof(raw_accel_report))) { return; } diff --git a/src/platforms/posix/drivers/gyrosim/gyrosim.cpp b/src/platforms/posix/drivers/gyrosim/gyrosim.cpp index 850bf0f9d1..50cc5091d8 100644 --- a/src/platforms/posix/drivers/gyrosim/gyrosim.cpp +++ b/src/platforms/posix/drivers/gyrosim/gyrosim.cpp @@ -419,6 +419,9 @@ GYROSIM::init() return ret; } + struct accel_report arp = {}; + struct gyro_report grp = {}; + /* allocate basic report buffers */ _accel_reports = new ringbuffer::RingBuffer(2, sizeof(accel_report)); if (_accel_reports == nullptr) { @@ -466,7 +469,6 @@ GYROSIM::init() measure(); /* advertise sensor topic, measure manually to initialize valid report */ - struct accel_report arp = {}; _accel_reports->get(&arp); /* measurement will have generated a report, publish */ @@ -482,7 +484,6 @@ GYROSIM::init() /* advertise sensor topic, measure manually to initialize valid report */ - struct gyro_report grp = {}; _gyro_reports->get(&grp); _gyro->_gyro_topic = orb_advertise_multi(ORB_ID(sensor_gyro), &grp, @@ -511,8 +512,9 @@ GYROSIM::transfer(uint8_t *send, uint8_t *recv, unsigned len) if (cmd == MPUREAD) { // Get data from the simulator Simulator *sim = Simulator::getInstance(); - if (sim == NULL) + if (sim == NULL) { return ENODEV; + } // FIXME - not sure what interrupt status should be recv[1] = 0; @@ -1012,7 +1014,7 @@ GYROSIM::measure() x++; } #endif - struct MPUReport mpu_report; + struct MPUReport mpu_report = {}; /* start measuring */ perf_begin(_sample_perf); @@ -1031,8 +1033,8 @@ GYROSIM::measure() /* * Report buffers. */ - accel_report arb; - gyro_report grb; + accel_report arb = {}; + gyro_report grb = {}; // for now use local time but this should be the timestamp of the simulator grb.timestamp = hrt_absolute_time();