/** * Handler for all Language HMI objects * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2015-09-03 */ #pragma once #include #include #include "handler_vehicle.h" #include "dds_handler.h" #include "control_unit_handler.h" #include "logger.h" namespace EffectShowClient { class MainHandler; class HandlerOperatingCondition : public QObject , protected Interface::Fts::SendAmmunitionRequestHandler , protected Interface::Fts::SendSafetyRevokeRequestHandler , protected Interface::Fts::SendReadinessRequestHandler { Q_OBJECT public: explicit HandlerOperatingCondition(MainHandler *mainHandler, QObject *parent = nullptr); ~HandlerOperatingCondition(); bool init(); void sendStatus(); private slots: void onVehicleBattery(double battery); void onVehicleSmokeCardridgesFireStatus(const CardRidges &fireStatus); void onVehicleSmokeCardridgesStatus(const CardRidges &fireStatus); void onVehicleFireUnits(const CardRidges &fireStatus); void onVehicleErrorStatus(const CardRidges &errorStatus); void onVehicleType(const EffectShowManagement::Feature_e &type); void onConnectionToSerial(); void onSafetyStatus(const SafetyStatus &status); void onVehicleRoundCount(int loadedRounds); void onVolleyRounds(int usedRounds); void onOperationalStatusTimeout(); /** * @brief Get vehicle status * @param vehicleStatus Status of the vehicle needed by telegram: DMF-Einsatzbereitschafts-Status */ void getVehicleStatus(ConvertToTab::VehicleStatus_t &vehicleStatus); private: void onSendAmmunitionRequest(const rti::core::SampleIdentity &cookie, const SendAmmunitionRequest &request); void onSendSafetyRevokeRequest(const rti::core::SampleIdentity &cookie, const SendSafetyRevokeRequest &request); void onSendReadinessRequest(const rti::core::SampleIdentity &cookie, const SendReadinessRequest &request); bool isErrorDmf(); private: MainHandler *m_mainHandler{nullptr}; CardRidges m_readyCardridges; CardRidges m_smokingCardridges; bool m_isOperational; bool m_oldErrorState; QTimer *m_operationalStatusTimer{nullptr}; NGL::INGLLogger &m_logger; EffectShowClient::OperatingConditionEntity m_operatingCondition; }; }