#pragma once // STL includes #include #include #include #include // QT includes #include // Utils includes #include // Hyperion includes #include class PriorityMuxer { public: struct InputInfo { int priority; int64_t timeoutTime_ms; std::vector ledColors; }; PriorityMuxer(); ~PriorityMuxer(); int getCurrentPriority() const; bool hasPriority(const int priority) const; QList getPriorities() const; const InputInfo& getInputInfo(const int priority) const; void setInput(const int priority, const std::vector& ledColors, const int64_t timeoutTime_ms=-1); void clearInput(const int priority); void clearAll(); void setCurrentTime(const int64_t& now); private: int mCurrentPriority; QMap mActiveInputs; const static int MAX_PRIORITY = std::numeric_limits::max(); };