2020-12-14 11:34:54 +01:00
|
|
|
#ifndef FSFW_SUBSYSTEM_MODES_MODEDEFINITIONS_H_
|
|
|
|
#define FSFW_SUBSYSTEM_MODES_MODEDEFINITIONS_H_
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2020-08-13 20:53:35 +02:00
|
|
|
#include "../../modes/HasModesIF.h"
|
|
|
|
#include "../../objectmanager/SystemObjectIF.h"
|
|
|
|
#include "../../serialize/SerialLinkedListAdapter.h"
|
2022-02-02 10:29:30 +01:00
|
|
|
#include "../../serialize/SerializeIF.h"
|
|
|
|
|
|
|
|
class ModeListEntry : public SerializeIF, public LinkedElement<ModeListEntry> {
|
|
|
|
public:
|
|
|
|
ModeListEntry() : LinkedElement<ModeListEntry>(this) {}
|
|
|
|
|
|
|
|
uint32_t value1 = 0;
|
|
|
|
uint32_t value2 = 0;
|
|
|
|
uint8_t value3 = 0;
|
|
|
|
uint8_t value4 = 0;
|
|
|
|
|
|
|
|
virtual ReturnValue_t serialize(uint8_t** buffer, size_t* size, size_t maxSize,
|
|
|
|
Endianness streamEndianness) const {
|
|
|
|
ReturnValue_t result;
|
|
|
|
|
|
|
|
result = SerializeAdapter::serialize(&value1, buffer, size, maxSize, streamEndianness);
|
|
|
|
|
2022-08-15 20:28:16 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-02-02 10:29:30 +01:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
result = SerializeAdapter::serialize(&value2, buffer, size, maxSize, streamEndianness);
|
|
|
|
|
2022-08-15 20:28:16 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-02-02 10:29:30 +01:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
result = SerializeAdapter::serialize(&value3, buffer, size, maxSize, streamEndianness);
|
|
|
|
|
2022-08-15 20:28:16 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-02-02 10:29:30 +01:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
result = SerializeAdapter::serialize(&value4, buffer, size, maxSize, streamEndianness);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual size_t getSerializedSize() const {
|
|
|
|
return sizeof(value1) + sizeof(value2) + sizeof(value3) + sizeof(value4);
|
|
|
|
}
|
|
|
|
|
|
|
|
virtual ReturnValue_t deSerialize(const uint8_t** buffer, size_t* size,
|
|
|
|
Endianness streamEndianness) {
|
|
|
|
ReturnValue_t result;
|
|
|
|
|
|
|
|
result = SerializeAdapter::deSerialize(&value1, buffer, size, streamEndianness);
|
|
|
|
|
2022-08-15 20:28:16 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-02-02 10:29:30 +01:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
result = SerializeAdapter::deSerialize(&value2, buffer, size, streamEndianness);
|
|
|
|
|
2022-08-15 20:28:16 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-02-02 10:29:30 +01:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
result = SerializeAdapter::deSerialize(&value3, buffer, size, streamEndianness);
|
|
|
|
|
2022-08-15 20:28:16 +02:00
|
|
|
if (result != returnvalue::OK) {
|
2022-02-02 10:29:30 +01:00
|
|
|
return result;
|
|
|
|
}
|
|
|
|
result = SerializeAdapter::deSerialize(&value4, buffer, size, streamEndianness);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
// for Sequences
|
|
|
|
Mode_t getTableId() const { return value1; }
|
|
|
|
|
|
|
|
void setTableId(Mode_t tableId) { this->value1 = tableId; }
|
|
|
|
|
|
|
|
uint8_t getWaitSeconds() const { return value2; }
|
|
|
|
|
|
|
|
void setWaitSeconds(uint8_t waitSeconds) { this->value2 = waitSeconds; }
|
|
|
|
|
|
|
|
bool checkSuccess() const { return value3 == 1; }
|
|
|
|
|
|
|
|
void setCheckSuccess(bool checkSuccess) { this->value3 = checkSuccess; }
|
|
|
|
|
|
|
|
// for Tables
|
|
|
|
object_id_t getObject() const { return value1; }
|
2020-12-14 11:34:54 +01:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void setObject(object_id_t object) { this->value1 = object; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
Mode_t getMode() const { return value2; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void setMode(Mode_t mode) { this->value2 = mode; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
Submode_t getSubmode() const { return value3; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void setSubmode(Submode_t submode) { this->value3 = submode; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
bool inheritSubmode() const { return value4 == 1; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void setInheritSubmode(bool inherit) {
|
|
|
|
if (inherit) {
|
|
|
|
value4 = 1;
|
|
|
|
} else {
|
|
|
|
value4 = 0;
|
|
|
|
}
|
|
|
|
}
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
bool operator==(ModeListEntry other) {
|
|
|
|
return ((value1 == other.value1) && (value2 == other.value2) && (value3 == other.value3));
|
|
|
|
}
|
2016-06-15 23:48:41 +02:00
|
|
|
};
|
|
|
|
|
2020-12-14 11:34:54 +01:00
|
|
|
#endif /* FSFW_SUBSYSTEM_MODES_MODEDEFINITIONS_H_ */
|