#include "PtmeAxiConfig.h" #include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw_hal/linux/uio/UioMapper.h" PtmeAxiConfig::PtmeAxiConfig(object_id_t objectId, std::string configAxiUio, int mapNum) : SystemObject(objectId), configAxiUio(configAxiUio), mapNum(mapNum) { mutex = MutexFactory::instance()->createMutex(); if (mutex == nullptr) { sif::warning << "Failed to create mutex" << std::endl; } } PtmeAxiConfig::~PtmeAxiConfig() {} ReturnValue_t PtmeAxiConfig::initialize() { ReturnValue_t result = HasReturnvaluesIF::RETURN_OK; UioMapper uioMapper(configAxiUio, mapNum); result = uioMapper.getMappedAdress(&baseAddress, UioMapper::Permissions::READ_WRITE); if (result != HasReturnvaluesIF::RETURN_OK) { return result; } return HasReturnvaluesIF::RETURN_OK; } ReturnValue_t PtmeAxiConfig::writeCaduRateReg(uint8_t rateVal) { ReturnValue_t result = HasReturnvaluesIF::RETURN_OK; result = mutex->lockMutex(timeoutType, mutexTimeout); if (result != HasReturnvaluesIF::RETURN_OK) { sif::warning << "PtmeAxiConfig::writeCaduRateReg: Failed to lock mutex" << std::endl; return HasReturnvaluesIF::RETURN_FAILED; } *(baseAddress + CADU_BITRATE_REG) = static_cast(rateVal); result = mutex->unlockMutex(); if (result != HasReturnvaluesIF::RETURN_OK) { sif::warning << "PtmeAxiConfig::writeCaduRateReg: Failed to unlock mutex" << std::endl; return HasReturnvaluesIF::RETURN_FAILED; } return HasReturnvaluesIF::RETURN_OK; }