FSFW Update #11

Merged
meierj merged 17 commits from mueller/master into eive/develop 2021-08-11 13:13:11 +02:00
12 changed files with 71 additions and 39 deletions

View File

@ -453,9 +453,12 @@ ReturnValue_t UartComIF::flushUartRxBuffer(CookieIF *cookie) {
} }
deviceFile = uartCookie->getDeviceFile(); deviceFile = uartCookie->getDeviceFile();
uartDeviceMapIter = uartDeviceMap.find(deviceFile); uartDeviceMapIter = uartDeviceMap.find(deviceFile);
int fd = uartDeviceMapIter->second.fileDescriptor; if(uartDeviceMapIter != uartDeviceMap.end()) {
tcflush(fd, TCIFLUSH); int fd = uartDeviceMapIter->second.fileDescriptor;
return RETURN_OK; tcflush(fd, TCIFLUSH);
return RETURN_OK;
}
return RETURN_FAILED;
} }
ReturnValue_t UartComIF::flushUartTxBuffer(CookieIF *cookie) { ReturnValue_t UartComIF::flushUartTxBuffer(CookieIF *cookie) {
@ -468,9 +471,12 @@ ReturnValue_t UartComIF::flushUartTxBuffer(CookieIF *cookie) {
} }
deviceFile = uartCookie->getDeviceFile(); deviceFile = uartCookie->getDeviceFile();
uartDeviceMapIter = uartDeviceMap.find(deviceFile); uartDeviceMapIter = uartDeviceMap.find(deviceFile);
int fd = uartDeviceMapIter->second.fileDescriptor; if(uartDeviceMapIter != uartDeviceMap.end()) {
tcflush(fd, TCOFLUSH); int fd = uartDeviceMapIter->second.fileDescriptor;
return RETURN_OK; tcflush(fd, TCOFLUSH);
return RETURN_OK;
}
return RETURN_FAILED;
} }
ReturnValue_t UartComIF::flushUartTxAndRxBuf(CookieIF *cookie) { ReturnValue_t UartComIF::flushUartTxAndRxBuf(CookieIF *cookie) {
@ -483,9 +489,12 @@ ReturnValue_t UartComIF::flushUartTxAndRxBuf(CookieIF *cookie) {
} }
deviceFile = uartCookie->getDeviceFile(); deviceFile = uartCookie->getDeviceFile();
uartDeviceMapIter = uartDeviceMap.find(deviceFile); uartDeviceMapIter = uartDeviceMap.find(deviceFile);
int fd = uartDeviceMapIter->second.fileDescriptor; if(uartDeviceMapIter != uartDeviceMap.end()) {
tcflush(fd, TCIOFLUSH); int fd = uartDeviceMapIter->second.fileDescriptor;
return RETURN_OK; tcflush(fd, TCIOFLUSH);
return RETURN_OK;
}
return RETURN_FAILED;
} }
void UartComIF::setUartMode(struct termios *options, UartCookie &uartCookie) { void UartComIF::setUartMode(struct termios *options, UartCookie &uartCookie) {

View File

@ -1,6 +1,5 @@
#include "fsfw/platform.h" #include "fsfw/platform.h"
#include "fsfw/osal/common/TcpTmTcBridge.h" #include "fsfw/osal/common/TcpTmTcBridge.h"
#include "fsfw/osal/common/tcpipHelpers.h"
#include "fsfw/serviceinterface/ServiceInterface.h" #include "fsfw/serviceinterface/ServiceInterface.h"
#include "fsfw/ipc/MutexGuard.h" #include "fsfw/ipc/MutexGuard.h"
@ -17,8 +16,6 @@
#endif #endif
const std::string TcpTmTcBridge::DEFAULT_SERVER_PORT = tcpip::DEFAULT_TCP_SERVER_PORT;
TcpTmTcBridge::TcpTmTcBridge(object_id_t objectId, object_id_t tcDestination, TcpTmTcBridge::TcpTmTcBridge(object_id_t objectId, object_id_t tcDestination,
object_id_t tmStoreId, object_id_t tcStoreId): object_id_t tmStoreId, object_id_t tcStoreId):
TmTcBridge(objectId, tcDestination, tmStoreId, tcStoreId) { TmTcBridge(objectId, tcDestination, tmStoreId, tcStoreId) {

View File

@ -2,7 +2,7 @@
#define FSFW_OSAL_COMMON_TCPTMTCBRIDGE_H_ #define FSFW_OSAL_COMMON_TCPTMTCBRIDGE_H_
#include "TcpIpBase.h" #include "TcpIpBase.h"
#include "../../tmtcservices/TmTcBridge.h" #include "fsfw/tmtcservices/TmTcBridge.h"
#ifdef _WIN32 #ifdef _WIN32
@ -29,8 +29,6 @@ class TcpTmTcBridge:
public TmTcBridge { public TmTcBridge {
friend class TcpTmTcServer; friend class TcpTmTcServer;
public: public:
// The ports chosen here should not be used by any other process
static const std::string DEFAULT_SERVER_PORT;
/** /**
* Constructor * Constructor

View File

@ -22,14 +22,14 @@
#define FSFW_TCP_RECV_WIRETAPPING_ENABLED 0 #define FSFW_TCP_RECV_WIRETAPPING_ENABLED 0
#endif #endif
const std::string TcpTmTcServer::DEFAULT_TCP_SERVER_PORT = "7303"; const std::string TcpTmTcServer::DEFAULT_SERVER_PORT = tcpip::DEFAULT_SERVER_PORT;
TcpTmTcServer::TcpTmTcServer(object_id_t objectId, object_id_t tmtcTcpBridge, TcpTmTcServer::TcpTmTcServer(object_id_t objectId, object_id_t tmtcTcpBridge,
size_t receptionBufferSize, std::string customTcpServerPort): size_t receptionBufferSize, std::string customTcpServerPort):
SystemObject(objectId), tmtcBridgeId(tmtcTcpBridge), SystemObject(objectId), tmtcBridgeId(tmtcTcpBridge),
tcpPort(customTcpServerPort), receptionBuffer(receptionBufferSize) { tcpPort(customTcpServerPort), receptionBuffer(receptionBufferSize) {
if(tcpPort == "") { if(tcpPort == "") {
tcpPort = DEFAULT_TCP_SERVER_PORT; tcpPort = DEFAULT_SERVER_PORT;
} }
} }
@ -200,6 +200,10 @@ void TcpTmTcServer::setTcpBacklog(uint8_t tcpBacklog) {
this->tcpBacklog = tcpBacklog; this->tcpBacklog = tcpBacklog;
} }
std::string TcpTmTcServer::getTcpPort() const {
return tcpPort;
}
ReturnValue_t TcpTmTcServer::handleTmSending(socket_t connSocket) { ReturnValue_t TcpTmTcServer::handleTmSending(socket_t connSocket) {
// Access to the FIFO is mutex protected because it is filled by the bridge // Access to the FIFO is mutex protected because it is filled by the bridge
MutexGuard(tmtcBridge->mutex, tmtcBridge->timeoutType, tmtcBridge->mutexTimeoutMs); MutexGuard(tmtcBridge->mutex, tmtcBridge->timeoutType, tmtcBridge->mutexTimeoutMs);

View File

@ -3,13 +3,14 @@
#include "TcpIpBase.h" #include "TcpIpBase.h"
#include "../../platform.h" #include "fsfw/platform.h"
#include "../../ipc/messageQueueDefinitions.h" #include "fsfw/osal/common/tcpipHelpers.h"
#include "../../ipc/MessageQueueIF.h" #include "fsfw/ipc/messageQueueDefinitions.h"
#include "../../objectmanager/frameworkObjects.h" #include "fsfw/ipc/MessageQueueIF.h"
#include "../../objectmanager/SystemObject.h" #include "fsfw/objectmanager/frameworkObjects.h"
#include "../../storagemanager/StorageManagerIF.h" #include "fsfw/objectmanager/SystemObject.h"
#include "../../tasks/ExecutableObjectIF.h" #include "fsfw/storagemanager/StorageManagerIF.h"
#include "fsfw/tasks/ExecutableObjectIF.h"
#ifdef PLATFORM_UNIX #ifdef PLATFORM_UNIX
#include <sys/socket.h> #include <sys/socket.h>
@ -41,10 +42,9 @@ class TcpTmTcServer:
public TcpIpBase, public TcpIpBase,
public ExecutableObjectIF { public ExecutableObjectIF {
public: public:
/* The ports chosen here should not be used by any other process. */ static const std::string DEFAULT_SERVER_PORT;
static const std::string DEFAULT_TCP_SERVER_PORT;
static constexpr size_t ETHERNET_MTU_SIZE = 1500; static constexpr size_t ETHERNET_MTU_SIZE = 1500;
/** /**
* TCP Server Constructor * TCP Server Constructor
@ -65,6 +65,8 @@ public:
ReturnValue_t performOperation(uint8_t opCode) override; ReturnValue_t performOperation(uint8_t opCode) override;
ReturnValue_t initializeAfterTaskCreation() override; ReturnValue_t initializeAfterTaskCreation() override;
std::string getTcpPort() const;
protected: protected:
StorageManagerIF* tcStore = nullptr; StorageManagerIF* tcStore = nullptr;
StorageManagerIF* tmStore = nullptr; StorageManagerIF* tmStore = nullptr;

View File

@ -17,7 +17,7 @@
#define FSFW_UDP_SEND_WIRETAPPING_ENABLED 0 #define FSFW_UDP_SEND_WIRETAPPING_ENABLED 0
#endif #endif
const std::string UdpTmTcBridge::DEFAULT_SERVER_PORT = tcpip::DEFAULT_UDP_SERVER_PORT; const std::string UdpTmTcBridge::DEFAULT_SERVER_PORT = tcpip::DEFAULT_SERVER_PORT;
UdpTmTcBridge::UdpTmTcBridge(object_id_t objectId, object_id_t tcDestination, UdpTmTcBridge::UdpTmTcBridge(object_id_t objectId, object_id_t tcDestination,
std::string udpServerPort, object_id_t tmStoreId, object_id_t tcStoreId): std::string udpServerPort, object_id_t tmStoreId, object_id_t tcStoreId):
@ -108,6 +108,10 @@ UdpTmTcBridge::~UdpTmTcBridge() {
} }
} }
std::string UdpTmTcBridge::getUdpPort() const {
return udpServerPort;
}
ReturnValue_t UdpTmTcBridge::sendTm(const uint8_t *data, size_t dataLen) { ReturnValue_t UdpTmTcBridge::sendTm(const uint8_t *data, size_t dataLen) {
int flags = 0; int flags = 0;

View File

@ -2,8 +2,8 @@
#define FSFW_OSAL_COMMON_TMTCUDPBRIDGE_H_ #define FSFW_OSAL_COMMON_TMTCUDPBRIDGE_H_
#include "TcpIpBase.h" #include "TcpIpBase.h"
#include "../../platform.h" #include "fsfw/platform.h"
#include "../../tmtcservices/TmTcBridge.h" #include "fsfw/tmtcservices/TmTcBridge.h"
#ifdef PLATFORM_WIN #ifdef PLATFORM_WIN
#include <ws2tcpip.h> #include <ws2tcpip.h>
@ -44,6 +44,8 @@ public:
void checkAndSetClientAddress(sockaddr& clientAddress); void checkAndSetClientAddress(sockaddr& clientAddress);
std::string getUdpPort() const;
protected: protected:
virtual ReturnValue_t sendTm(const uint8_t * data, size_t dataLen) override; virtual ReturnValue_t sendTm(const uint8_t * data, size_t dataLen) override;

View File

@ -1,7 +1,7 @@
#ifndef FSFW_OSAL_COMMON_TCPIPCOMMON_H_ #ifndef FSFW_OSAL_COMMON_TCPIPCOMMON_H_
#define FSFW_OSAL_COMMON_TCPIPCOMMON_H_ #define FSFW_OSAL_COMMON_TCPIPCOMMON_H_
#include "../../timemanager/clockDefinitions.h" #include "fsfw/timemanager/clockDefinitions.h"
#include <string> #include <string>
#ifdef _WIN32 #ifdef _WIN32
@ -13,8 +13,7 @@
namespace tcpip { namespace tcpip {
const char* const DEFAULT_UDP_SERVER_PORT = "7301"; static constexpr char DEFAULT_SERVER_PORT[] = "7301";
const char* const DEFAULT_TCP_SERVER_PORT = "7303";
enum class Protocol { enum class Protocol {
UDP, UDP,

View File

@ -46,6 +46,7 @@ ReturnValue_t CommandExecutor::execute() {
currentFd = fileno(currentCmdFile); currentFd = fileno(currentCmdFile);
waiter.fd = currentFd; waiter.fd = currentFd;
} }
state = States::PENDING;
return HasReturnvaluesIF::RETURN_OK; return HasReturnvaluesIF::RETURN_OK;
} }

View File

@ -27,6 +27,7 @@ int Timer::setTimer(uint32_t intervalMs) {
timer.it_value.tv_nsec = (intervalMs * 1000000) % (1000000000); timer.it_value.tv_nsec = (intervalMs * 1000000) % (1000000000);
timer.it_interval.tv_sec = 0; timer.it_interval.tv_sec = 0;
timer.it_interval.tv_nsec = 0; timer.it_interval.tv_nsec = 0;
set = true;
return timer_settime(timerId, 0, &timer, NULL); return timer_settime(timerId, 0, &timer, NULL);
} }
@ -43,3 +44,14 @@ int Timer::getTimer(uint32_t* remainingTimeMs){
return status; return status;
} }
bool Timer::isSet() const {
return this->set;
}
void Timer::resetTimer() {
if(not this->set) {
set = false;
}
setTimer(0);
}

View File

@ -38,7 +38,11 @@ public:
*/ */
int getTimer(uint32_t* remainingTimeMs); int getTimer(uint32_t* remainingTimeMs);
bool isSet() const;
void resetTimer();
private: private:
bool set = true;
timer_t timerId; timer_t timerId;
}; };

View File

@ -56,21 +56,21 @@ void fsfwPrint(sif::PrintLevel printType, const char* fmt, va_list arg) {
#endif #endif
if (printType == sif::PrintLevel::INFO_LEVEL) { if (printType == sif::PrintLevel::INFO_LEVEL) {
len += sprintf(bufferPosition + len, "INFO: "); len += sprintf(bufferPosition + len, "INFO");
} }
if(printType == sif::PrintLevel::DEBUG_LEVEL) { if(printType == sif::PrintLevel::DEBUG_LEVEL) {
len += sprintf(bufferPosition + len, "DEBUG: "); len += sprintf(bufferPosition + len, "DEBUG");
} }
if(printType == sif::PrintLevel::WARNING_LEVEL) { if(printType == sif::PrintLevel::WARNING_LEVEL) {
len += sprintf(bufferPosition + len, "WARNING: "); len += sprintf(bufferPosition + len, "WARNING");
} }
if(printType == sif::PrintLevel::ERROR_LEVEL) { if(printType == sif::PrintLevel::ERROR_LEVEL) {
len += sprintf(bufferPosition + len, "ERROR: "); len += sprintf(bufferPosition + len, "ERROR");
} }
#if FSFW_COLORED_OUTPUT == 1 #if FSFW_COLORED_OUTPUT == 1
len += sprintf(bufferPosition, sif::ANSI_COLOR_RESET); len += sprintf(bufferPosition + len, sif::ANSI_COLOR_RESET);
#endif #endif
Clock::TimeOfDay_t now; Clock::TimeOfDay_t now;
@ -78,7 +78,7 @@ void fsfwPrint(sif::PrintLevel printType, const char* fmt, va_list arg) {
/* /*
* Log current time to terminal if desired. * Log current time to terminal if desired.
*/ */
len += sprintf(bufferPosition + len, "| %lu:%02lu:%02lu.%03lu | ", len += sprintf(bufferPosition + len, " | %lu:%02lu:%02lu.%03lu | ",
(unsigned long) now.hour, (unsigned long) now.hour,
(unsigned long) now.minute, (unsigned long) now.minute,
(unsigned long) now.second, (unsigned long) now.second,