#ifndef _MODULES_NETWORK_HPP_ #define _MODULES_NETWORK_HPP_ #include #include #include #include #include "modules/base.hpp" #include "interfaces/net.hpp" #include "services/logger.hpp" #include "drawtypes/icon.hpp" #include "drawtypes/label.hpp" #include "drawtypes/animation.hpp" #include "drawtypes/ramp.hpp" namespace modules { DefineModule(NetworkModule, TimerModule) { const char *FORMAT_CONNECTED = "format:connected"; const char *FORMAT_PACKETLOSS = "format:packetloss"; const char *FORMAT_DISCONNECTED = "format:disconnected"; const char *TAG_RAMP_SIGNAL = ""; const char *TAG_LABEL_CONNECTED = ""; const char *TAG_LABEL_DISCONNECTED = ""; const char *TAG_LABEL_PACKETLOSS = ""; const char *TAG_ANIMATION_PACKETLOSS = ""; std::unique_ptr wired_network; std::unique_ptr wireless_network; std::unique_ptr ramp_signal; std::unique_ptr animation_packetloss; std::unique_ptr label_connected; std::unique_ptr label_connected_tokenized; std::unique_ptr label_disconnected; std::unique_ptr label_packetloss; std::unique_ptr label_packetloss_tokenized; std::string interface; concurrency::Atomic connected; concurrency::Atomic conseq_packetloss; concurrency::Atomic signal_quality; int ping_nth_update; int counter = -1; // Set to -1 to ignore the first run void subthread_routine(); public: NetworkModule(const std::string& name); void start(); bool update(); std::string get_format(); bool build(Builder *builder, const std::string& tag); }; } #endif