diff --git a/common/gpio/GpioCookie.cpp b/common/gpio/GpioCookie.cpp index a32519f..da765ce 100644 --- a/common/gpio/GpioCookie.cpp +++ b/common/gpio/GpioCookie.cpp @@ -1,5 +1,6 @@ #include "GpioCookie.h" -#include +#include "fsfw/serviceinterface/ServiceInterface.h" + GpioCookie::GpioCookie() { } diff --git a/common/gpio/GpioCookie.h b/common/gpio/GpioCookie.h index 4a865a3..0473fe0 100644 --- a/common/gpio/GpioCookie.h +++ b/common/gpio/GpioCookie.h @@ -1,8 +1,9 @@ -#ifndef LINUX_GPIO_GPIOCOOKIE_H_ -#define LINUX_GPIO_GPIOCOOKIE_H_ +#ifndef COMMON_GPIO_GPIOCOOKIE_H_ +#define COMMON_GPIO_GPIOCOOKIE_H_ #include "GpioIF.h" #include "gpioDefinitions.h" + #include #include @@ -37,4 +38,4 @@ private: GpioMap gpioMap; }; -#endif /* LINUX_GPIO_GPIOCOOKIE_H_ */ +#endif /* COMMON_GPIO_GPIOCOOKIE_H_ */ diff --git a/common/gpio/GpioIF.h b/common/gpio/GpioIF.h index 75feb3c..af73f94 100644 --- a/common/gpio/GpioIF.h +++ b/common/gpio/GpioIF.h @@ -1,5 +1,5 @@ -#ifndef LINUX_GPIO_GPIOIF_H_ -#define LINUX_GPIO_GPIOIF_H_ +#ifndef COMMON_GPIO_GPIOIF_H_ +#define COMMON_GPIO_GPIOIF_H_ #include "gpioDefinitions.h" #include @@ -51,4 +51,4 @@ public: virtual ReturnValue_t readGpio(gpioId_t gpioId, int* gpioState) = 0; }; -#endif /* LINUX_GPIO_GPIOIF_H_ */ +#endif /* COMMON_GPIO_GPIOIF_H_ */ diff --git a/common/gpio/gpioDefinitions.h b/common/gpio/gpioDefinitions.h index 66c0b00..b56a476 100644 --- a/common/gpio/gpioDefinitions.h +++ b/common/gpio/gpioDefinitions.h @@ -1,8 +1,9 @@ -#ifndef LINUX_GPIO_GPIODEFINITIONS_H_ -#define LINUX_GPIO_GPIODEFINITIONS_H_ +#ifndef COMMON_GPIO_GPIODEFINITIONS_H_ +#define COMMON_GPIO_GPIODEFINITIONS_H_ #include #include +#include using gpioId_t = uint16_t; @@ -25,11 +26,14 @@ enum GpioOperation { enum GpioTypes { NONE, - GPIOD_REGULAR, + GPIO_REGULAR, CALLBACK }; static constexpr gpioId_t NO_GPIO = -1; + +using gpio_cb_t = void (*) (gpioId_t gpioId, gpio::GpioOperation gpioOp, int value, void* args); + } /** @@ -66,12 +70,12 @@ public: class GpiodRegular: public GpioBase { public: - GpiodRegular(): GpioBase(gpio::GpioTypes::GPIOD_REGULAR, std::string(), + GpiodRegular(): GpioBase(gpio::GpioTypes::GPIO_REGULAR, std::string(), gpio::Direction::IN, 0) {}; GpiodRegular(std::string chipname_, int lineNum_, std::string consumer_, gpio::Direction direction_, int initValue_): - GpioBase(gpio::GpioTypes::GPIOD_REGULAR, consumer_, direction_, initValue_), + GpioBase(gpio::GpioTypes::GPIO_REGULAR, consumer_, direction_, initValue_), chipname(chipname_), lineNum(lineNum_) {} std::string chipname; int lineNum = 0; @@ -81,18 +85,18 @@ public: class GpioCallback: public GpioBase { public: GpioCallback(std::string consumer, gpio::Direction direction_, int initValue_, - void (* callback) (gpioId_t gpioId, gpio::GpioOperation gpioOp, int value, void* args), - void* callbackArgs): + gpio::gpio_cb_t callback, void* callbackArgs): GpioBase(gpio::GpioTypes::CALLBACK, consumer, direction_, initValue_), callback(callback), callbackArgs(callbackArgs) {} - void (* callback) (gpioId_t gpioId, gpio::GpioOperation gpioOp, - int value, void* args) = nullptr; + gpio::gpio_cb_t callback = nullptr; void* callbackArgs = nullptr; }; -using GpioMap = std::unordered_map; +using GpioMap = std::map; +using GpioUnorderedMap = std::unordered_map; using GpioMapIter = GpioMap::iterator; +using GpioUnorderedMapIter = GpioUnorderedMap::iterator; #endif /* LINUX_GPIO_GPIODEFINITIONS_H_ */ diff --git a/linux/gpio/LinuxLibgpioIF.cpp b/linux/gpio/LinuxLibgpioIF.cpp index 3001b8a..2a645fc 100644 --- a/linux/gpio/LinuxLibgpioIF.cpp +++ b/linux/gpio/LinuxLibgpioIF.cpp @@ -49,7 +49,7 @@ ReturnValue_t LinuxLibgpioIF::configureGpios(GpioMap& mapToAdd) { case(gpio::GpioTypes::NONE): { return GPIO_INVALID_INSTANCE; } - case(gpio::GpioTypes::GPIOD_REGULAR): { + case(gpio::GpioTypes::GPIO_REGULAR): { GpiodRegular* regularGpio = dynamic_cast(gpioConfig.second); if(regularGpio == nullptr) { return GPIO_INVALID_INSTANCE; @@ -145,7 +145,7 @@ ReturnValue_t LinuxLibgpioIF::pullHigh(gpioId_t gpioId) { return UNKNOWN_GPIO_ID; } - if(gpioMapIter->second->gpioType == gpio::GpioTypes::GPIOD_REGULAR) { + if(gpioMapIter->second->gpioType == gpio::GpioTypes::GPIO_REGULAR) { return driveGpio(gpioId, dynamic_cast(gpioMapIter->second), 1); } else { @@ -166,7 +166,7 @@ ReturnValue_t LinuxLibgpioIF::pullLow(gpioId_t gpioId) { return UNKNOWN_GPIO_ID; } - if(gpioMapIter->second->gpioType == gpio::GpioTypes::GPIOD_REGULAR) { + if(gpioMapIter->second->gpioType == gpio::GpioTypes::GPIO_REGULAR) { return driveGpio(gpioId, dynamic_cast(gpioMapIter->second), 0); } else { @@ -203,7 +203,7 @@ ReturnValue_t LinuxLibgpioIF::readGpio(gpioId_t gpioId, int* gpioState) { return UNKNOWN_GPIO_ID; } - if(gpioMapIter->second->gpioType == gpio::GpioTypes::GPIOD_REGULAR) { + if(gpioMapIter->second->gpioType == gpio::GpioTypes::GPIO_REGULAR) { GpiodRegular* regularGpio = dynamic_cast(gpioMapIter->second); if(regularGpio == nullptr) { return GPIO_TYPE_FAILURE; @@ -223,7 +223,7 @@ ReturnValue_t LinuxLibgpioIF::checkForConflicts(GpioMap& mapToAdd){ ReturnValue_t result = HasReturnvaluesIF::RETURN_OK; for(auto& gpioConfig: mapToAdd) { switch(gpioConfig.second->gpioType) { - case(gpio::GpioTypes::GPIOD_REGULAR): { + case(gpio::GpioTypes::GPIO_REGULAR): { auto regularGpio = dynamic_cast(gpioConfig.second); if(regularGpio == nullptr) { return GPIO_TYPE_FAILURE; @@ -261,7 +261,7 @@ ReturnValue_t LinuxLibgpioIF::checkForConflictsRegularGpio(gpioId_t gpioIdToChec /* Cross check with private map */ gpioMapIter = gpioMap.find(gpioIdToCheck); if(gpioMapIter != gpioMap.end()) { - if(gpioMapIter->second->gpioType != gpio::GpioTypes::GPIOD_REGULAR) { + if(gpioMapIter->second->gpioType != gpio::GpioTypes::GPIO_REGULAR) { sif::warning << "LinuxLibgpioIF::checkForConflicts: ID already exists for different " "GPIO type" << gpioIdToCheck << ". Removing duplicate." << std::endl; mapToAdd.erase(gpioIdToCheck); diff --git a/linux/gpio/LinuxLibgpioIF.h b/linux/gpio/LinuxLibgpioIF.h index 7238056..093e95a 100644 --- a/linux/gpio/LinuxLibgpioIF.h +++ b/linux/gpio/LinuxLibgpioIF.h @@ -38,8 +38,8 @@ public: private: /* Holds the information and configuration of all used GPIOs */ - GpioMap gpioMap; - GpioMapIter gpioMapIter; + GpioUnorderedMap gpioMap; + GpioUnorderedMapIter gpioMapIter; /** * @brief This functions drives line of a GPIO specified by the GPIO ID. diff --git a/linux/uart/UartComIF.cpp b/linux/uart/UartComIF.cpp index 126e51d..3f389df 100644 --- a/linux/uart/UartComIF.cpp +++ b/linux/uart/UartComIF.cpp @@ -38,15 +38,15 @@ ReturnValue_t UartComIF::initializeInterface(CookieIF * cookie) { } size_t maxReplyLen = uartCookie->getMaxReplyLen(); UartElements_t uartElements = {fileDescriptor, std::vector(maxReplyLen), 0}; - std::pair status = uartDeviceMap.emplace(deviceFile, uartElements); + auto status = uartDeviceMap.emplace(deviceFile, uartElements); if (status.second == false) { - sif::debug << "UartComIF::initializeInterface: Failed to insert device " << deviceFile - << "to Uart device map" << std::endl; + sif::debug << "UartComIF::initializeInterface: Failed to insert device " << deviceFile + << "to UART device map" << std::endl; return RETURN_FAILED; } } else { - sif::debug << "UartComIF::initializeInterface: Uart device " << deviceFile << "already in " + sif::debug << "UartComIF::initializeInterface: UART device " << deviceFile << " already in " << "use" << std::endl; return RETURN_FAILED; }