2022-02-25 11:58:02 +01:00
|
|
|
#ifndef MISSION_SYSTEM_COMSUBSYSTEM_H_
|
|
|
|
#define MISSION_SYSTEM_COMSUBSYSTEM_H_
|
|
|
|
|
2023-01-27 18:38:36 +01:00
|
|
|
#include <fsfw/parameters/HasParametersIF.h>
|
|
|
|
#include <fsfw/parameters/ParameterHelper.h>
|
2022-04-14 09:54:07 +02:00
|
|
|
#include <fsfw/subsystem/Subsystem.h>
|
2023-02-02 15:33:04 +01:00
|
|
|
#include <fsfw/events/EventMessage.h>
|
2022-04-14 09:54:07 +02:00
|
|
|
|
2023-01-27 18:38:36 +01:00
|
|
|
#include "mission/comDefs.h"
|
|
|
|
|
|
|
|
class ComSubsystem : public Subsystem, public ReceivesParameterMessagesIF {
|
2022-04-14 09:54:07 +02:00
|
|
|
public:
|
2023-02-02 15:33:04 +01:00
|
|
|
/**
|
|
|
|
* @brief Constructor
|
|
|
|
*
|
|
|
|
* @param setObjectId
|
|
|
|
* @param maxNumberOfSequences
|
|
|
|
* @param maxNumberOfTables
|
|
|
|
* @param transmitterTimeout Maximum time the transmitter of the syrlinks
|
|
|
|
* will be enabled
|
|
|
|
*/
|
|
|
|
ComSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables,
|
|
|
|
uint32_t transmitterTimeout);
|
2023-01-28 14:49:28 +01:00
|
|
|
virtual ~ComSubsystem() = default;
|
2022-04-14 09:54:07 +02:00
|
|
|
|
2023-01-27 18:38:36 +01:00
|
|
|
MessageQueueId_t getCommandQueue() const override;
|
|
|
|
ReturnValue_t getParameter(uint8_t domainId, uint8_t uniqueIdentifier,
|
|
|
|
ParameterWrapper *parameterWrapper, const ParameterWrapper *newValues,
|
|
|
|
uint16_t startAtIndex) override;
|
2023-02-02 15:33:04 +01:00
|
|
|
virtual void performChildOperation() override;
|
2023-01-27 18:38:36 +01:00
|
|
|
|
2022-04-14 09:54:07 +02:00
|
|
|
private:
|
2023-01-28 14:49:28 +01:00
|
|
|
ReturnValue_t handleCommandMessage(CommandMessage *message) override;
|
|
|
|
|
|
|
|
ReturnValue_t initialize() override;
|
|
|
|
|
2023-02-02 15:33:04 +01:00
|
|
|
void startTransition(Mode_t mode, Submode_t submode) override;
|
|
|
|
|
|
|
|
void readEventQueue();
|
|
|
|
void handleEventMessage(EventMessage* eventMessage);
|
|
|
|
void handleBitLockEvent();
|
|
|
|
void handleCarrierLockEvent();
|
|
|
|
void checkTransmitterCountdown();
|
|
|
|
/**
|
|
|
|
* @brief Enables transmitter in default (low) rate mode
|
|
|
|
*/
|
|
|
|
void startRxAndTxDefaultSeq();
|
|
|
|
|
2023-01-27 18:38:36 +01:00
|
|
|
uint8_t datarateCfg = static_cast<uint8_t>(com::Datarate::LOW_RATE_MODULATION_BPSK);
|
2023-02-02 16:00:53 +01:00
|
|
|
// Maximum time after which the transmitter will be turned of. This is a
|
|
|
|
// protection mechanism due prevent the syrlinks from overheating
|
|
|
|
uint32_t transmitterTimeout = 0;
|
2023-02-13 11:28:27 +01:00
|
|
|
|
2023-01-27 18:38:36 +01:00
|
|
|
ParameterHelper paramHelper;
|
2023-02-02 15:33:04 +01:00
|
|
|
|
|
|
|
MessageQueueIF* eventQueue = nullptr;
|
|
|
|
|
|
|
|
bool enableTxWhenCarrierLock = false;
|
|
|
|
|
|
|
|
// Countdown will be started as soon as the transmitter was enabled
|
|
|
|
Countdown transmitterCountdown;
|
2022-04-14 09:54:07 +02:00
|
|
|
};
|
|
|
|
|
2022-02-25 11:58:02 +01:00
|
|
|
#endif /* MISSION_SYSTEM_COMSUBSYSTEM_H_ */
|