diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index a93c201..8d3e0e3 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.5) -project(PprzlinkQtExample LANGUAGES CXX) +project(linkQtExample LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -15,8 +15,8 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Widgets Network Xml REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Widgets Network Xml REQUIRED) -set(PprzlinkQt_DIR "../PprzlinkQt/") -add_subdirectory(${PprzlinkQt_DIR} pprzlinkqt) +find_package(pprzlinkQt) + set(PROJECT_SOURCES main.cpp @@ -25,19 +25,27 @@ set(PROJECT_SOURCES ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) - qt_add_executable(PprzlinkQtExample ${PROJECT_SOURCES}) + qt_add_executable(${PROJECT_NAME} ${PROJECT_SOURCES}) else() - add_executable(PprzlinkQtExample ${PROJECT_SOURCES}) + add_executable(${PROJECT_NAME} ${PROJECT_SOURCES}) endif() -target_include_directories(PprzlinkQtExample PRIVATE ${PprzlinkQt_DIR}) +target_include_directories(${PROJECT_NAME} PRIVATE ${ppagain_DIR}) + +include_directories(${CMAKE_PREFIX_PATH}/include) +link_directories(${CMAKE_PREFIX_PATH}/lib) -target_link_libraries(PprzlinkQtExample PRIVATE +target_link_libraries(${PROJECT_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Xml - PprzlinkQt - IvyQt + pprzlinkQt + #IvyQt ) + + + + + diff --git a/example/mainwindow.cpp b/example/mainwindow.cpp index b8b0d25..f785e57 100644 --- a/example/mainwindow.cpp +++ b/example/mainwindow.cpp @@ -1,6 +1,10 @@ #include "mainwindow.h" #include "ui_mainwindow.h" -#include "pprzlinkqt.h" +#include +#include "pprzlinkQt/MessageDictionary.h" +#include "pprzlinkQt/Message.h" +#include "pprzlinkQt/IvyQtLink.h" +#include "iostream" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -8,35 +12,42 @@ MainWindow::MainWindow(QWidget *parent) : { ui->setupUi(this); - connect(ui->label_button, &QPushButton::clicked, this, [=]() { - //vbox->removeWidget(label); - ui->label->deleteLater(); - }); + auto dict = new pprzlink::MessageDictionary("/home/fabien/paparazzi/var/messages.xml"); + auto link = new pprzlink::IvyQtLink(*dict, "test", "127.255.255.255:2010", this); - auto pp = new PprzlinkQt("/home/fabien/paparazzi/var/messages.xml", "testPprzLinkQt", "testPprzLinkQt ready"); - pp->start("127.255.255.255", 2010); - - pp->bind("FLIGHT_PARAM", ui->label, [=](QString sender, Message msg) { - QString ac_id; - float alt; - msg.getField("ac_id", ac_id); + auto def_fp = dict->getDefinition("FLIGHT_PARAM"); + + link->BindMessage(def_fp, ui->label, [=](QString, pprzlink::Message msg){ + float alt, lat, lon; + msg.getField("ac_id", last_ac_id); msg.getField("alt", alt); - //qDebug() << ac_id << alt; - ui->label->setText(ac_id + QString(" alt: %1 m").arg(alt)); + msg.getField("lat", lat); + msg.getField("long", lon); + qDebug() << last_ac_id + " " + QString::number(alt) + "m" + " " + QString::number(lat) + " " + QString::number(lon); + ui->label->setText(last_ac_id + " " + QString::number(alt) + "m" + " " + QString::number(lat) + " " + QString::number(lon)); + }); + connect(ui->label_button, &QPushButton::clicked, ui->label, [=]() { + ui->label->deleteLater(); }); + connect(ui->line_edit, &QLineEdit::returnPressed, this, [=]() { - // ivyqt->send(ui->line_edit->text()); - Message msg(pp->getDefinition("MOVE_WAYPOINT")); - msg.setSender("ground"); - msg.addField("ac_id", QString("2")); - msg.addField("wp_id", (uint8_t)2); - msg.addField("lat", (float)43.456); - msg.addField("long", (float)1.345); - msg.addField("alt", (float)123.3); - pp->sendMessage(msg); + bool ok = false; + uint8_t block_id = ui->line_edit->text().toUInt(&ok); + if(ok) { + auto def = dict->getDefinition("JUMP_TO_BLOCK"); + auto msg = pprzlink::Message(def); + msg.addField("ac_id", last_ac_id); + msg.addField("block_id", block_id); + + msg.setSenderId("ground"); + + link->sendMessage(msg); + } else { + qDebug() << "not a number!!!"; + } }); } diff --git a/example/mainwindow.h b/example/mainwindow.h index 9353441..545f55a 100644 --- a/example/mainwindow.h +++ b/example/mainwindow.h @@ -17,6 +17,8 @@ class MainWindow : public QMainWindow private: Ui::MainWindow *ui; + + QString last_ac_id; }; #endif // MAINWINDOW_H diff --git a/example/mainwindow.ui b/example/mainwindow.ui index 1fcc335..5b2b037 100644 --- a/example/mainwindow.ui +++ b/example/mainwindow.ui @@ -18,7 +18,7 @@ - Send "Hello <name>" to change the label text. + Start paparazzi with one AC to update the label. @@ -53,7 +53,7 @@ - enter text and press ENTER to send it. + enter a block number and press ENTER to send it.