void task(void) { while (!stopping()) { consumeMessages(); if (isActive() && (m_sock != NULL)) { try { for (unsigned i = 0; i < m_args.data_points; ++i) ping(i); if (m_args.save_to_file) handleSonarData(); else dispatch(m_ping); if (m_args.range_modifier) { if (m_range_counter.overflow()) { checkAltitude(); m_range_counter.reset(); } } } catch (std::exception& e) { err("%s", e.what()); setEntityState(IMC::EntityState::ESTA_ERROR, Status::CODE_COM_ERROR); throw RestartNeeded(DTR(Status::getString(CODE_COM_ERROR)), 5); } } else { waitForMessages(1.0); if (m_activating) checkActivationProgress(); } } }
void task(void) { if (!m_active) return; try { for (unsigned i = 0; i < m_args.data_points; ++i) ping(i); if (m_args.save_in_837) handleSonarData(); else dispatch(m_ping); } catch (std::exception& e) { err("%s", e.what()); setEntityState(IMC::EntityState::ESTA_ERROR, Status::CODE_COM_ERROR); } }