#include "fsfw_hal/linux/UnixFileGuard.h" #include #include #include "fsfw/FSFW.h" #include "fsfw/serviceinterface.h" UnixFileGuard::UnixFileGuard(const std::string& device, int& fileDescriptor, int flags, std::string diagnosticPrefix) : fdRef(fileDescriptor) { fileDescriptor = open(device.c_str(), flags); if (fileDescriptor < 0) { #if FSFW_VERBOSE_LEVEL >= 1 #if FSFW_CPP_OSTREAM_ENABLED == 1 sif::warning << diagnosticPrefix << ": Opening device failed with error code " << errno << ": " << strerror(errno) << std::endl; #else sif::printWarning("%s: Opening device failed with error code %d: %s\n", diagnosticPrefix, errno, strerror(errno)); #endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */ #endif /* FSFW_VERBOSE_LEVEL >= 1 */ openStatus = OPEN_FILE_FAILED; } } UnixFileGuard::~UnixFileGuard() { close(fdRef); } ReturnValue_t UnixFileGuard::getOpenResult() const { return openStatus; }