forked from Archive/PX4-Autopilot
BAROSIM: Fixed error in transfer function
The transfer function would previously return error if the receive buffer length was 0. This appears to be a valid condition for requesting a measurmement be taken but no data returned. Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This commit is contained in:
parent
466db74d29
commit
791d780bb8
|
@ -280,7 +280,7 @@ BAROSIM::init()
|
||||||
/* do temperature first */
|
/* do temperature first */
|
||||||
if (OK != measure()) {
|
if (OK != measure()) {
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
PX4_WARN("temp measure failed");
|
PX4_ERR("temp measure failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,14 +288,14 @@ BAROSIM::init()
|
||||||
|
|
||||||
if (OK != collect()) {
|
if (OK != collect()) {
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
PX4_WARN("temp collect failed");
|
PX4_ERR("temp collect failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now do a pressure measurement */
|
/* now do a pressure measurement */
|
||||||
if (OK != measure()) {
|
if (OK != measure()) {
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
PX4_WARN("pressure collect failed");
|
PX4_ERR("pressure collect failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,7 +303,7 @@ BAROSIM::init()
|
||||||
|
|
||||||
if (OK != collect()) {
|
if (OK != collect()) {
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
PX4_WARN("pressure collect failed");
|
PX4_ERR("pressure collect failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ BAROSIM::init()
|
||||||
&_orb_class_instance, (is_external()) ? ORB_PRIO_HIGH : ORB_PRIO_DEFAULT);
|
&_orb_class_instance, (is_external()) ? ORB_PRIO_HIGH : ORB_PRIO_DEFAULT);
|
||||||
|
|
||||||
if (_baro_topic == (orb_advert_t)(-1)) {
|
if (_baro_topic == (orb_advert_t)(-1)) {
|
||||||
PX4_WARN("failed to create sensor_baro publication");
|
PX4_ERR("failed to create sensor_baro publication");
|
||||||
}
|
}
|
||||||
//PX4_WARN("sensor_baro publication %ld", _baro_topic);
|
//PX4_WARN("sensor_baro publication %ld", _baro_topic);
|
||||||
|
|
||||||
|
@ -728,7 +728,7 @@ BAROSIM::collect()
|
||||||
orb_publish(ORB_ID(sensor_baro), _baro_topic, &report);
|
orb_publish(ORB_ID(sensor_baro), _baro_topic, &report);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PX4_ERR("BAROSIM::collect _baro_topic not initialized");
|
PX4_WARN("BAROSIM::collect _baro_topic not initialized");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -201,15 +201,20 @@ BARO_SIM::transfer(const uint8_t *send, unsigned send_len,
|
||||||
{
|
{
|
||||||
// TODO add Simulation data connection so calls retrieve
|
// TODO add Simulation data connection so calls retrieve
|
||||||
// data from the simulator
|
// data from the simulator
|
||||||
|
if (recv_len == 0) {
|
||||||
if (send_len != 1 || send[0] != 0 || recv_len != 3) {
|
PX4_DEBUG("BARO_SIM measurement requested");
|
||||||
|
}
|
||||||
|
else if (send_len != 1 || send[0] != 0 || recv_len != 3) {
|
||||||
|
PX4_WARN("BARO_SIM::transfer invalid param %u %u %u\n", send_len, send[0], recv_len);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Simulator *sim = Simulator::getInstance();
|
Simulator *sim = Simulator::getInstance();
|
||||||
if (sim == NULL) {
|
if (sim == NULL) {
|
||||||
|
PX4_ERR("Error BARO_SIM::transfer no simulator \n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
PX4_DEBUG("BARO_SIM::transfer getting sample\n");
|
||||||
sim->getBaroSample(recv, recv_len);
|
sim->getBaroSample(recv, recv_len);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue