eive-obsw/test/testtasks/MutextestTask.cpp

42 lines
998 B
C++

/*
* MutextestTask.cpp
*
* Created on: 19.07.2018
* Author: mohr
*/
#include <test/testtasks/MutextestTask.h>
#include <fsfw/serviceinterface/ServiceInterfaceStream.h>
MutexIF * MutextestTask::mutex = nullptr;
MutextestTask::MutextestTask(const char *name, object_id_t setObjectId) :
SystemObject(setObjectId), name(name), locked(false) {
if (mutex == NULL) {
mutex = MutexFactory::instance()->createMutex();
}
}
ReturnValue_t MutextestTask::performOperation(uint8_t operationCode) {
if (!locked){
sif::info << name << ": locking..." << std::endl;
ReturnValue_t result = mutex->lockMutex(MutexIF::BLOCKING);
sif::info << name << ": locked with " << (int) result << std::endl;
if (result == HasReturnvaluesIF::RETURN_OK){
locked = true;
}
} else {
sif::info << name << ": releasing" << std::endl;
mutex->unlockMutex();
locked = false;
}
return HasReturnvaluesIF::RETURN_OK;
}
MutextestTask::~MutextestTask() {
// TODO Auto-generated destructor stub
}