Merge remote-tracking branch 'origin/develop' into refactor_tm_handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
commit
939d7fd98e
@ -31,6 +31,8 @@ will consitute of a breaking change warranting a new major release:
|
|||||||
- Service 5 now handles 40 events per cycle instead of 15
|
- Service 5 now handles 40 events per cycle instead of 15
|
||||||
- Remove periodic SD card check. The file system is not mounted read-only anymore when using an
|
- Remove periodic SD card check. The file system is not mounted read-only anymore when using an
|
||||||
ext4 filesystem
|
ext4 filesystem
|
||||||
|
- ACS CTRL transition to DETUBMLE is now done in CTRL internally. No
|
||||||
|
system level handling necessary anymore.
|
||||||
- More fixes and improvements for SD card handling. Extend SD card setup in core controller to
|
- More fixes and improvements for SD card handling. Extend SD card setup in core controller to
|
||||||
create full initial state for SD card manager are core controller as early as possible, turn
|
create full initial state for SD card manager are core controller as early as possible, turn
|
||||||
execution of setup file update blocking. This might solve the issue with the SD card manager
|
execution of setup file update blocking. This might solve the issue with the SD card manager
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 276 translations.
|
* @brief Auto-generated event translation file. Contains 276 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2023-03-10 19:05:58
|
* Generated on: 2023-03-10 19:14:19
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 169 translations.
|
* Contains 169 translations.
|
||||||
* Generated on: 2023-03-10 19:05:58
|
* Generated on: 2023-03-10 19:14:19
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 276 translations.
|
* @brief Auto-generated event translation file. Contains 276 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2023-03-10 19:05:58
|
* Generated on: 2023-03-10 19:14:19
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 173 translations.
|
* Contains 173 translations.
|
||||||
* Generated on: 2023-03-10 19:05:58
|
* Generated on: 2023-03-10 19:14:19
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 276 translations.
|
* @brief Auto-generated event translation file. Contains 276 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2023-03-10 19:05:58
|
* Generated on: 2023-03-10 19:14:19
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 173 translations.
|
* Contains 173 translations.
|
||||||
* Generated on: 2023-03-10 19:05:58
|
* Generated on: 2023-03-10 19:14:19
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
|
@ -198,6 +198,7 @@ void AcsController::performSafe() {
|
|||||||
detumbleCounter = 0;
|
detumbleCounter = 0;
|
||||||
// Triggers detumble mode transition in subsystem
|
// Triggers detumble mode transition in subsystem
|
||||||
triggerEvent(acs::SAFE_RATE_VIOLATION);
|
triggerEvent(acs::SAFE_RATE_VIOLATION);
|
||||||
|
startTransition(mode, acs::SafeSubmode::DETUMBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateCtrlValData(errAng);
|
updateCtrlValData(errAng);
|
||||||
@ -245,6 +246,7 @@ void AcsController::performDetumble() {
|
|||||||
detumbleCounter = 0;
|
detumbleCounter = 0;
|
||||||
// Triggers safe mode transition in subsystem
|
// Triggers safe mode transition in subsystem
|
||||||
triggerEvent(acs::SAFE_RATE_RECOVERY);
|
triggerEvent(acs::SAFE_RATE_RECOVERY);
|
||||||
|
startTransition(mode, acs::SafeSubmode::DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
disableCtrlValData();
|
disableCtrlValData();
|
||||||
|
@ -8,81 +8,7 @@
|
|||||||
|
|
||||||
AcsSubsystem::AcsSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
AcsSubsystem::AcsSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
||||||
uint32_t maxNumberOfTables)
|
uint32_t maxNumberOfTables)
|
||||||
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {
|
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {}
|
||||||
auto mqArgs = MqArgs(getObjectId(), static_cast<void*>(this));
|
|
||||||
eventQueue =
|
|
||||||
QueueFactory::instance()->createMessageQueue(10, EventMessage::EVENT_MESSAGE_SIZE, &mqArgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t AcsSubsystem::initialize() {
|
|
||||||
EventManagerIF* manager = ObjectManager::instance()->get<EventManagerIF>(objects::EVENT_MANAGER);
|
|
||||||
if (manager == nullptr) {
|
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
||||||
sif::error << "AcsSubsystem::initialize: Invalid event manager" << std::endl;
|
|
||||||
#endif
|
|
||||||
return ObjectManagerIF::CHILD_INIT_FAILED;
|
|
||||||
}
|
|
||||||
ReturnValue_t result = manager->registerListener(eventQueue->getId());
|
|
||||||
if (result != returnvalue::OK) {
|
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
||||||
sif::warning << "AcsSubsystem::registerListener: Failed to register as "
|
|
||||||
"listener"
|
|
||||||
<< std::endl;
|
|
||||||
#endif
|
|
||||||
return ObjectManagerIF::CHILD_INIT_FAILED;
|
|
||||||
;
|
|
||||||
}
|
|
||||||
result =
|
|
||||||
manager->subscribeToEvent(eventQueue->getId(), event::getEventId(acs::SAFE_RATE_VIOLATION));
|
|
||||||
if (result != returnvalue::OK) {
|
|
||||||
sif::error << "AcsSubsystem: Subscribing for acs::SAFE_RATE_VIOLATION failed" << std::endl;
|
|
||||||
}
|
|
||||||
result =
|
|
||||||
manager->subscribeToEvent(eventQueue->getId(), event::getEventId(acs::SAFE_RATE_RECOVERY));
|
|
||||||
if (result != returnvalue::OK) {
|
|
||||||
sif::error << "AcsSubsystem: Subscribing for acs::SAFE_RATE_RECOVERY failed" << std::endl;
|
|
||||||
}
|
|
||||||
return Subsystem::initialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AcsSubsystem::performChildOperation() {
|
|
||||||
// sif::debug << "ACS system thread running" << std::endl;
|
|
||||||
handleEventMessages();
|
|
||||||
return Subsystem::performChildOperation();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AcsSubsystem::handleEventMessages() {
|
|
||||||
EventMessage event;
|
|
||||||
for (ReturnValue_t result = eventQueue->receiveMessage(&event); result == returnvalue::OK;
|
|
||||||
result = eventQueue->receiveMessage(&event)) {
|
|
||||||
ReturnValue_t status;
|
|
||||||
switch (event.getMessageId()) {
|
|
||||||
case EventMessage::EVENT_MESSAGE:
|
|
||||||
if (event.getEvent() == acs::SAFE_RATE_VIOLATION) {
|
|
||||||
CommandMessage msg;
|
|
||||||
ModeMessage::setCmdModeMessage(msg, acs::AcsMode::SAFE, acs::SafeSubmode::DETUMBLE);
|
|
||||||
status = commandQueue->sendMessage(commandQueue->getId(), &msg);
|
|
||||||
if (result != returnvalue::OK) {
|
|
||||||
sif::error << "AcsSubsystem: sending DETUMBLE mode cmd to self has failed" << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (event.getEvent() == acs::SAFE_RATE_RECOVERY) {
|
|
||||||
CommandMessage msg;
|
|
||||||
ModeMessage::setCmdModeMessage(msg, acs::AcsMode::SAFE, acs::SafeSubmode::DEFAULT);
|
|
||||||
status = commandQueue->sendMessage(commandQueue->getId(), &msg);
|
|
||||||
if (status != returnvalue::OK) {
|
|
||||||
sif::error << "AcsSubsystem: sending SAFE mode cmd to self has failed" << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sif::debug << "AcsSubsystem::performChildOperation: Did not subscribe "
|
|
||||||
"to this event message"
|
|
||||||
<< std::endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AcsSubsystem::announceMode(bool recursive) {
|
void AcsSubsystem::announceMode(bool recursive) {
|
||||||
const char* modeStr = acs::getModeStr(static_cast<acs::AcsMode>(mode));
|
const char* modeStr = acs::getModeStr(static_cast<acs::AcsMode>(mode));
|
||||||
|
@ -8,13 +8,7 @@ class AcsSubsystem : public Subsystem {
|
|||||||
AcsSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables);
|
AcsSubsystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ReturnValue_t initialize() override;
|
|
||||||
void performChildOperation() override;
|
|
||||||
void announceMode(bool recursive) override;
|
void announceMode(bool recursive) override;
|
||||||
|
|
||||||
void handleEventMessages();
|
|
||||||
|
|
||||||
MessageQueueIF* eventQueue = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_SYSTEM_ACSSUBSYSTEM_H_ */
|
#endif /* MISSION_SYSTEM_ACSSUBSYSTEM_H_ */
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
#include "EiveSystem.h"
|
#include "EiveSystem.h"
|
||||||
|
|
||||||
|
#include <eive/objects.h>
|
||||||
|
#include <fsfw/events/EventManager.h>
|
||||||
|
#include <fsfw/ipc/QueueFactory.h>
|
||||||
#include <mission/acsDefs.h>
|
#include <mission/acsDefs.h>
|
||||||
|
|
||||||
EiveSystem::EiveSystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
EiveSystem::EiveSystem(object_id_t setObjectId, uint32_t maxNumberOfSequences,
|
||||||
uint32_t maxNumberOfTables)
|
uint32_t maxNumberOfTables)
|
||||||
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {}
|
: Subsystem(setObjectId, maxNumberOfSequences, maxNumberOfTables) {
|
||||||
|
auto mqArgs = MqArgs(getObjectId(), static_cast<void*>(this));
|
||||||
|
eventQueue =
|
||||||
|
QueueFactory::instance()->createMessageQueue(10, EventMessage::EVENT_MESSAGE_SIZE, &mqArgs);
|
||||||
|
}
|
||||||
|
|
||||||
void EiveSystem::announceMode(bool recursive) {
|
void EiveSystem::announceMode(bool recursive) {
|
||||||
const char* modeStr = "UNKNOWN";
|
const char* modeStr = "UNKNOWN";
|
||||||
@ -37,3 +44,44 @@ void EiveSystem::announceMode(bool recursive) {
|
|||||||
sif::info << "EIVE system is now in " << modeStr << " mode" << std::endl;
|
sif::info << "EIVE system is now in " << modeStr << " mode" << std::endl;
|
||||||
return Subsystem::announceMode(recursive);
|
return Subsystem::announceMode(recursive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EiveSystem::performChildOperation() {
|
||||||
|
handleEventMessages();
|
||||||
|
return Subsystem::performChildOperation();
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t EiveSystem::initialize() {
|
||||||
|
EventManagerIF* manager = ObjectManager::instance()->get<EventManagerIF>(objects::EVENT_MANAGER);
|
||||||
|
if (manager == nullptr) {
|
||||||
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
|
sif::error << "AcsSubsystem::initialize: Invalid event manager" << std::endl;
|
||||||
|
#endif
|
||||||
|
return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||||
|
}
|
||||||
|
ReturnValue_t result = manager->registerListener(eventQueue->getId());
|
||||||
|
if (result != returnvalue::OK) {
|
||||||
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
|
sif::warning << "AcsSubsystem::registerListener: Failed to register as "
|
||||||
|
"listener"
|
||||||
|
<< std::endl;
|
||||||
|
#endif
|
||||||
|
return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||||
|
}
|
||||||
|
return Subsystem::initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void EiveSystem::handleEventMessages() {
|
||||||
|
EventMessage event;
|
||||||
|
for (ReturnValue_t result = eventQueue->receiveMessage(&event); result == returnvalue::OK;
|
||||||
|
result = eventQueue->receiveMessage(&event)) {
|
||||||
|
switch (event.getMessageId()) {
|
||||||
|
case EventMessage::EVENT_MESSAGE:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
sif::debug << "AcsSubsystem::performChildOperation: Did not subscribe "
|
||||||
|
"to this event message"
|
||||||
|
<< std::endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -8,7 +8,12 @@ class EiveSystem : public Subsystem {
|
|||||||
EiveSystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables);
|
EiveSystem(object_id_t setObjectId, uint32_t maxNumberOfSequences, uint32_t maxNumberOfTables);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
ReturnValue_t initialize() override;
|
||||||
|
void performChildOperation() override;
|
||||||
void announceMode(bool recursive) override;
|
void announceMode(bool recursive) override;
|
||||||
|
void handleEventMessages();
|
||||||
|
|
||||||
|
MessageQueueIF* eventQueue = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_SYSTEM_EIVESYSTEM_H_ */
|
#endif /* MISSION_SYSTEM_EIVESYSTEM_H_ */
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include <fsfw/ipc/QueueFactory.h>
|
#include <fsfw/ipc/QueueFactory.h>
|
||||||
|
|
||||||
EventManagerMock::EventManagerMock() : EventManager(objects::EVENT_MANAGER) {}
|
EventManagerMock::EventManagerMock() : EventManager(objects::EVENT_MANAGER, 80) {}
|
||||||
|
|
||||||
ReturnValue_t EventManagerMock::performOperation(uint8_t opCode) {
|
ReturnValue_t EventManagerMock::performOperation(uint8_t opCode) {
|
||||||
ReturnValue_t result = returnvalue::OK;
|
ReturnValue_t result = returnvalue::OK;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user