#pragma once #include #include #include #include class CCSDSHandler; FSFW_ENUM( CCSDSCommands, DeviceCommandId_t, ((SET_LOW_RATE, 0, "Set Low rate"))((SET_HIGH_RATE, 1, "Set High Rate"))( (EN_TRANSMITTER, 2, "Enable Transmitter"))((DISABLE_TRANSMITTER, 3, "Disable Transmitter"))( (ARBITRARY_RATE, 4, "Set Bit Rate"))((ENABLE_TX_CLK_MANIPULATOR, 5, "Enable Tx Clock Manipulator"))( (DISABLE_TX_CLK_MANIPULATOR, 6, "Enable Tx Clock Manipulator"))( (UPDATE_ON_RISING_EDGE, 7, "update data on rising edge"))((UPDATE_ON_FALLING_EDGE, 8, "update data on falling edge"))) class SetLowRateAction : public TemplateAction { public: SetLowRateAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::SET_LOW_RATE) {} }; class SetHighRateAction : public TemplateAction { public: SetHighRateAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::SET_HIGH_RATE) {} }; class EnTransmitterAction : public TemplateAction { public: EnTransmitterAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::EN_TRANSMITTER) {} }; class DisableTransmitterAction : public TemplateAction { public: DisableTransmitterAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::DISABLE_TRANSMITTER) {} }; class ArbitraryRateAction : public TemplateAction { public: ArbitraryRateAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::ARBITRARY_RATE) {} Parameter bitrate = Parameter::createParameter(this, "Bitrate"); }; class EnableTxClkManipulatorAction : public TemplateAction { public: EnableTxClkManipulatorAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::ENABLE_TX_CLK_MANIPULATOR) {} }; class DisableTxClkManipulatorAction : public TemplateAction { public: DisableTxClkManipulatorAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::DISABLE_TX_CLK_MANIPULATOR) {} }; class UpdateOnRisingEdgeAction : public TemplateAction { public: UpdateOnRisingEdgeAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::UPDATE_ON_RISING_EDGE) {} }; class UpdateOnFallingEdgeAction : public TemplateAction { public: UpdateOnFallingEdgeAction(CCSDSHandler* owner) : TemplateAction(owner, CCSDSCommands::UPDATE_ON_FALLING_EDGE) {} };