• 0
    25. День начинается утром.
    Возможно имеется в виду астрономический день — он начинается в полдень.
    https://en.wikipedia.org/wiki/Astronomical_day
    Заблуждения большинства программистов относительно «времени»
  • 0
    Из предложений: возможно имеет смысл написать за что отвечает System ID и Component ID.
    Также имеет смысл сразу сделать вместо класса AbstractHandler/HeartbeatHandler абстрактный класс для каждого MAV, который бы отвечал за обработку принятых сообщений и упаковку сообщений для каждого MAV отдельно:

    class AbstractMav: public QObject
    {
        Q_OBJECT
        
    public:
        AbstractMav(QObject* parent = nullptr, AbstractLink* link);
    
    public slots:
        void sendHeartbeat(unit8_t compid);
        void arm();
        void disarm();
        ...
    
    signals:
        void messageReady(const mavlink_message_t& message, const AbstractLink* link);
        void heartheatReceived(unit8_t compid);
        void imuReceived(unit8_t compid, uint64_t timestamp,
                         const QVector3D& accel, const QVector3D& gyro, const QVector3D& mag,
                         double pressure, double temperature);
        ...
    
    private slots:
        void processMessage(const mavlink_message_t& message);
    
    private:
        void commandLong(uint8_t compid,
                         uint16_t command,
                         uint8_t confirmation,
                         float param1, float param2, float param3, float param4,
                         float param5, float param6, float param7 );
        ...
    
        uint8_t m_sysid;
        AbstractLink* m_link;
    };
    


    слот AbstractMav::processMessage соединятеся с сигналом MavLinkCommunicator::messageReceived, и отфильтровыват сообщенния принадлежащие только ему:
    void AbstractMav::processMessage(const mavlink_message_t& message) {
        if (message.sysid != m_sysid) {
            return;
        }
        
        switch(message.msgid) {
            case MAVLINK_MSG_ID_HEARTBEAT: {
                emit heartheatReceived(message.compid);
                break;
            }
            case MAVLINK_MSG_ID_HIGHRES_IMU: {
                ...
            }
        }
    }
    


    а сигнал AbstractMav::messageReady со слотом MavLinkCommunicator::sendMessage. Каждая функция, которая отправляет данные на MAV, должна активировать сигнал messageReady:
    void AbstractMav::sendHeartbeat(unit8_t compid) {
        mavlink_message_t message;
        mavlink_heartbeat_t heartbeat;
        
        mavlink_msg_heartbeat_encode(m_sysd, compid, &message, &heartbeat);
    
        emit messageReady(message, m_link)
    }
    


    Правильная реализация MAVLink должна поддерживать общение с несколькими MAV через один канал, или даже через несколько каналов. Такую возможность лучше заложить сразу, а не переписывать потом.

    И из мелочей: имеет смысл использовать QHash вместо QMap для члена MavLinkCommunicator:: m_linkChannels, так как упорядоченности по ключу нам не важна.
    Разбираемся в MAVLink. Часть 1
  • 0
    ext3. Потому что умные дяденьки так говорят, а я ничего не смыслю в этом.
    Какие файловые системы вы используете и почему именно их?
  • +2
    Знали бы это разработчики mail.ru…
    этот удивительный tabindex
  • 0
    ссылкой не поделитесь?
    Математические парадоксы и ЕГЭ
  • 0
    Это мудаки придумали, а не философы…
    Математические парадоксы и ЕГЭ
  • +1
    Скорее НЛО прилетело и стырила сайтишко…
    Наш сайт
  • +1
    Вся проблема в том, что с каждой страницы (в моём случае) надо в функцию отправлять индивидуальный параметр.
    Разметка. Transitional vs Strict
  • –1
    только кавычки такие — "
    Разметка. Transitional vs Strict
  • 0
    А ещё почему-то теряется возможность записать onLoad=«func();» внутри body. Или я в чем-то не прав?
    Разметка. Transitional vs Strict
  • 0
    Интересно. Но я почти такое делал у себя на сайте: www.zaripov.nxt.ru. Сделанно на JavaScript'е и CSS.
    wp-cumulus, интересное представление облака тегов
  • 0
    Можешь материалы дать, или выложить где?
    И снова про мобильный Хабр
  • 0
    Да, было бы совсем неплохо если бы был HabrMobile. Часто приходится с телефона на Habr залазить.
    И снова про мобильный Хабр
  • –1
    Моя задница подсказывает, что эту хрень надо удалить куда подальше, хоть она и не представляет никакой опасности.
    Всемирное помешательство или «12111 мне в General»
  • 0
    Пардон. :-)
    Насчёт < > и « ».
    Думаю что не стоит их применять, Я долго не мог догадаться что значит « » в листалке, а < > я вообще не пользуюсь.
    Ошибки реализации постраничной навигации на сайте
  • 0
    Насчёт < > и >.
    Думаю что не стоит их применять, Я долго не мог догадаться что значит > в листалке, а < > я вообще не пользуюсь.
    Ошибки реализации постраничной навигации на сайте