|
|
|
@ -27,13 +27,13 @@ ReturnValue_t FsfwExampleTask::performOperation(uint8_t operationCode) {
|
|
|
|
|
|
|
|
|
|
// TODO: Move this to new test controller?
|
|
|
|
|
ReturnValue_t result = performMonitoringDemo();
|
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
|
|
|
if (result != returnvalue::OK) {
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (operationCode == OpCodes::SEND_RAND_NUM) {
|
|
|
|
|
result = performSendOperation();
|
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
|
|
|
if (result != returnvalue::OK) {
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -80,14 +80,14 @@ object_id_t FsfwExampleTask::getSender() {
|
|
|
|
|
ReturnValue_t FsfwExampleTask::initialize() {
|
|
|
|
|
// Get the dataset of the sender. Will be cached for later checks.
|
|
|
|
|
object_id_t sender = getSender();
|
|
|
|
|
HasLocalDataPoolIF *senderIF = ObjectManager::instance()->get<HasLocalDataPoolIF>(sender);
|
|
|
|
|
auto *senderIF = ObjectManager::instance()->get<HasLocalDataPoolIF>(sender);
|
|
|
|
|
if (senderIF == nullptr) {
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
|
sif::error << "FsfwDemoTask::initialize: Sender object invalid!" << std::endl;
|
|
|
|
|
#else
|
|
|
|
|
sif::printError("FsfwDemoTask::initialize: Sender object invalid!\n");
|
|
|
|
|
#endif
|
|
|
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
|
|
|
return returnvalue::FAILED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// we need a private copy of the previous dataset.. or we use the shared
|
|
|
|
@ -99,7 +99,7 @@ ReturnValue_t FsfwExampleTask::initialize() {
|
|
|
|
|
#else
|
|
|
|
|
sif::printError("FsfwDemoTask::initialize: Sender dataset invalid!\n");
|
|
|
|
|
#endif
|
|
|
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
|
|
|
return returnvalue::FAILED;
|
|
|
|
|
}
|
|
|
|
|
return poolManager.initialize(commandQueue);
|
|
|
|
|
}
|
|
|
|
@ -122,12 +122,12 @@ ReturnValue_t FsfwExampleTask::initializeLocalDataPool(localpool::DataPool &loca
|
|
|
|
|
LocalDataPoolManager &poolManager) {
|
|
|
|
|
localDataPoolMap.emplace(FsfwDemoSet::PoolIds::VARIABLE, new PoolEntry<uint32_t>({0}));
|
|
|
|
|
localDataPoolMap.emplace(FsfwDemoSet::PoolIds::VARIABLE_LIMIT, new PoolEntry<uint16_t>({0}));
|
|
|
|
|
return HasReturnvaluesIF::RETURN_OK;
|
|
|
|
|
return returnvalue::OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ReturnValue_t FsfwExampleTask::performMonitoringDemo() {
|
|
|
|
|
ReturnValue_t result = demoSet.variableLimit.read(MutexIF::TimeoutType::WAITING, 20);
|
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
|
|
|
if (result != returnvalue::OK) {
|
|
|
|
|
/* Configuration error */
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
|
sif::error << "DummyObject::performOperation: Could not read variableLimit!" << std::endl;
|
|
|
|
@ -144,12 +144,12 @@ ReturnValue_t FsfwExampleTask::performMonitoringDemo() {
|
|
|
|
|
demoSet.variableLimit.commit(20);
|
|
|
|
|
monitor.check();
|
|
|
|
|
}
|
|
|
|
|
return HasReturnvaluesIF::RETURN_OK;
|
|
|
|
|
return returnvalue::OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ReturnValue_t FsfwExampleTask::performSendOperation() {
|
|
|
|
|
object_id_t nextRecipient = getNextRecipient();
|
|
|
|
|
FsfwExampleTask *target = ObjectManager::instance()->get<FsfwExampleTask>(nextRecipient);
|
|
|
|
|
auto *target = ObjectManager::instance()->get<FsfwExampleTask>(nextRecipient);
|
|
|
|
|
if (target == nullptr) {
|
|
|
|
|
/* Configuration error */
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
@ -157,7 +157,7 @@ ReturnValue_t FsfwExampleTask::performSendOperation() {
|
|
|
|
|
#else
|
|
|
|
|
sif::printError("DummyObject::performOperation: Next recipient does not exist!\n");
|
|
|
|
|
#endif
|
|
|
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
|
|
|
return returnvalue::FAILED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32_t randomNumber = rand() % 100;
|
|
|
|
@ -167,7 +167,7 @@ ReturnValue_t FsfwExampleTask::performSendOperation() {
|
|
|
|
|
|
|
|
|
|
/* Send message using own message queue */
|
|
|
|
|
ReturnValue_t result = commandQueue->sendMessage(target->getMessageQueueId(), &message);
|
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK && result != MessageQueueIF::FULL) {
|
|
|
|
|
if (result != returnvalue::OK && result != MessageQueueIF::FULL) {
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
|
sif::error << "FsfwDemoTask::performSendOperation: Send failed with " << result << std::endl;
|
|
|
|
|
#else
|
|
|
|
@ -178,7 +178,7 @@ ReturnValue_t FsfwExampleTask::performSendOperation() {
|
|
|
|
|
/* Send message without via MessageQueueSenderIF */
|
|
|
|
|
result = MessageQueueSenderIF::sendMessage(target->getMessageQueueId(), &message,
|
|
|
|
|
commandQueue->getId());
|
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK && result != MessageQueueIF::FULL) {
|
|
|
|
|
if (result != returnvalue::OK && result != MessageQueueIF::FULL) {
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
|
sif::error << "FsfwDemoTask::performSendOperation: Send failed with " << result << std::endl;
|
|
|
|
|
#else
|
|
|
|
@ -193,11 +193,11 @@ ReturnValue_t FsfwExampleTask::performSendOperation() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ReturnValue_t FsfwExampleTask::performReceiveOperation() {
|
|
|
|
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
|
|
|
|
ReturnValue_t result = returnvalue::OK;
|
|
|
|
|
while (result != MessageQueueIF::EMPTY) {
|
|
|
|
|
CommandMessage receivedMessage;
|
|
|
|
|
result = commandQueue->receiveMessage(&receivedMessage);
|
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK && result != MessageQueueIF::EMPTY) {
|
|
|
|
|
if (result != returnvalue::OK && result != MessageQueueIF::EMPTY) {
|
|
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
|
|
|
|
sif::debug << "Receive failed with " << result << std::endl;
|
|
|
|
|
#endif
|
|
|
|
@ -213,11 +213,11 @@ ReturnValue_t FsfwExampleTask::performReceiveOperation() {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
if (senderSet == nullptr) {
|
|
|
|
|
return HasReturnvaluesIF::RETURN_FAILED;
|
|
|
|
|
return returnvalue::FAILED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result = senderSet->variableRead.read(MutexIF::TimeoutType::WAITING, 20);
|
|
|
|
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
|
|
|
if (result != returnvalue::OK) {
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
if (senderSet->variableRead.value != receivedMessage.getParameter()) {
|
|
|
|
|