// %flair:license{ // This file is part of the Flair framework distributed under the // CECILL-C License, Version 1.0. // %flair:license} // created: 2016/07/05 // filename: Mavlink.h // // authors: Thomas Fuhrmann // Copyright Heudiasyc UMR UTC/CNRS 7253 // // version: $Id: $ // // purpose: Mavlink controller in client side. // // /*********************************************************************/ #ifndef MAVLINK_TEST_H #define MAVLINK_TEST_H #include #include namespace flair { namespace core { class FrameworkManager; class Socket; } namespace gui { class SpinBox; class Label; class CheckBox; class Tab; class TabWidget; class DoubleSpinBox; class PushButton; class Label; class ComboBox; class GroupBox; class ListWidget; } } namespace flair { namespace sensor { class Mavlink : public core::Thread { public: Mavlink(const core::FrameworkManager *parent, std::string name, std::string receiverAddress, int receiverPort); ~Mavlink(); private: gui::SpinBox *deadZone; gui::CheckBox *enabled; gui::Label *batteryChargeLevel; core::Time now; gui::TabWidget *tabWidget; gui::Tab *tab; gui::Tab *settingsTab; // Controls groupbox gui::GroupBox* controlsGroupBox; gui::PushButton* btn_initialize; gui::PushButton* btn_start_mission; gui::PushButton* btn_stop_mission; gui::PushButton* btn_kill; // Add wpt groupbox gui::GroupBox* add_wptGroupBox; gui::DoubleSpinBox* latField; gui::DoubleSpinBox* lonField; gui::PushButton* btn_add_mission_wpt; gui::PushButton* btn_add_entrance_wpt; gui::PushButton* btn_add_exit_wpt; // Show wpt groupbox gui::GroupBox* show_wptGroupBox; gui::ListWidget* list_mission_wpt; gui::ListWidget* list_entrance_wpt; gui::ListWidget* list_exit_wpt; gui::PushButton* btn_remove_mission_wpt; gui::PushButton* btn_remove_entrance_wpt; gui::PushButton* btn_remove_exit_wpt; // Action wpt groupbox gui::GroupBox* action_wptGroupBox; gui::PushButton* btn_send_wpt; gui::PushButton* btn_clear_wpt; gui::PushButton* btn_loop; core::Socket* mavlinkSocket; core::Socket* recvSocket; // reimplement the run of the Thread class void Run(); std::string GetWptLatLon(); // First tab callbacks void MissionInitialize(); void MissionStart(); void MissionStop(); void MissionKill(); // Second tab callbacks void MissionWptAdd(); void EntranceWptAdd(); void ExitWptAdd(); void WptSend(); void WptClear(); void WptLoopSend(); void SendWptMessage(gui::DoubleSpinBox* latField, gui::DoubleSpinBox* lonField); void SendHeartbeat(); void SendAllWptMessage(); void DecodeWptMessage(std::string wpt_to_decode); std::string U8toString(const uint8_t* chars, const uint16_t chars_size); }; } } #endif // MAVLINK_H