diff --git a/src/platforms/posix/drivers/df_bmp280_wrapper/df_bmp280_wrapper.cpp b/src/platforms/posix/drivers/df_bmp280_wrapper/df_bmp280_wrapper.cpp index 0d580b19f9..124de2a0e3 100644 --- a/src/platforms/posix/drivers/df_bmp280_wrapper/df_bmp280_wrapper.cpp +++ b/src/platforms/posix/drivers/df_bmp280_wrapper/df_bmp280_wrapper.cpp @@ -115,16 +115,6 @@ DfBmp280Wrapper::~DfBmp280Wrapper() int DfBmp280Wrapper::start() { - // TODO: don't publish garbage here - baro_report baro_report = {}; - _baro_topic = orb_advertise_multi(ORB_ID(sensor_baro), &baro_report, - &_baro_orb_class_instance, ORB_PRIO_DEFAULT); - - if (_baro_topic == nullptr) { - PX4_ERR("sensor_baro advert fail"); - return -1; - } - /* Init device and start sensor. */ int ret = init(); @@ -197,7 +187,10 @@ int DfBmp280Wrapper::_publish(struct baro_sensor_data &data) // TODO: when is this ever blocked? if (!(m_pub_blocked)) { - if (_baro_topic != nullptr) { + if (_baro_topic == nullptr) { + _baro_topic = orb_advertise_multi(ORB_ID(sensor_baro), &baro_report, + &_baro_orb_class_instance, ORB_PRIO_DEFAULT); + } else { orb_publish(ORB_ID(sensor_baro), _baro_topic, &baro_report); } }