Browse Source

Sensor sim: Initialize sensor data to zero

sbg
Lorenz Meier 10 years ago
parent
commit
59f71452d7
  1. 9
      src/platforms/posix/drivers/accelsim/accelsim.cpp
  2. 14
      src/platforms/posix/drivers/gyrosim/gyrosim.cpp

9
src/platforms/posix/drivers/accelsim/accelsim.cpp

@ -448,6 +448,9 @@ ACCELSIM::init() @@ -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() @@ -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() @@ -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() @@ -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() @@ -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;
}

14
src/platforms/posix/drivers/gyrosim/gyrosim.cpp

@ -419,6 +419,9 @@ GYROSIM::init() @@ -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() @@ -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() @@ -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) @@ -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() @@ -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() @@ -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();

Loading…
Cancel
Save