Beispiel #1
0
    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();
            }
        }
    }
Beispiel #2
0
      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);
        }
      }