Merge remote-tracking branch 'origin/development' into mueller/udp-ai-passive-opt
This commit is contained in:
commit
29cebab790
@ -184,6 +184,7 @@ endif()
|
|||||||
target_include_directories(${LIB_FSFW_NAME} INTERFACE
|
target_include_directories(${LIB_FSFW_NAME} INTERFACE
|
||||||
${CMAKE_SOURCE_DIR}
|
${CMAKE_SOURCE_DIR}
|
||||||
${FSFW_CONFIG_PATH_ABSOLUTE}
|
${FSFW_CONFIG_PATH_ABSOLUTE}
|
||||||
|
${FSFW_ADD_INC_PATHS_ABS}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Includes path required to compile FSFW itself as well
|
# Includes path required to compile FSFW itself as well
|
||||||
|
@ -147,11 +147,6 @@ ReturnValue_t ActionHelper::reportData(MessageQueueId_t reportTo,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
ipcStore->deleteData(storeAddress);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We don't need to report the objectId, as we receive REQUESTED data before the completion
|
/* We don't need to report the objectId, as we receive REQUESTED data before the completion
|
||||||
success message. True aperiodic replies need to be reported with another dedicated message. */
|
success message. True aperiodic replies need to be reported with another dedicated message. */
|
||||||
ActionMessage::setDataReply(&reply, replyId, storeAddress);
|
ActionMessage::setDataReply(&reply, replyId, storeAddress);
|
||||||
|
@ -17,6 +17,9 @@ SharedRingBuffer::SharedRingBuffer(object_id_t objectId, uint8_t *buffer,
|
|||||||
mutex = MutexFactory::instance()->createMutex();
|
mutex = MutexFactory::instance()->createMutex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SharedRingBuffer::~SharedRingBuffer() {
|
||||||
|
MutexFactory::instance()->deleteMutex(mutex);
|
||||||
|
}
|
||||||
|
|
||||||
void SharedRingBuffer::setToUseReceiveSizeFIFO(size_t fifoDepth) {
|
void SharedRingBuffer::setToUseReceiveSizeFIFO(size_t fifoDepth) {
|
||||||
this->fifoDepth = fifoDepth;
|
this->fifoDepth = fifoDepth;
|
||||||
|
@ -26,6 +26,18 @@ public:
|
|||||||
*/
|
*/
|
||||||
SharedRingBuffer(object_id_t objectId, const size_t size,
|
SharedRingBuffer(object_id_t objectId, const size_t size,
|
||||||
bool overwriteOld, size_t maxExcessBytes);
|
bool overwriteOld, size_t maxExcessBytes);
|
||||||
|
/**
|
||||||
|
* This constructor takes an external buffer with the specified size.
|
||||||
|
* @param buffer
|
||||||
|
* @param size
|
||||||
|
* @param overwriteOld
|
||||||
|
* If the ring buffer is overflowing at a write operartion, the oldest data
|
||||||
|
* will be overwritten.
|
||||||
|
*/
|
||||||
|
SharedRingBuffer(object_id_t objectId, uint8_t* buffer, const size_t size,
|
||||||
|
bool overwriteOld, size_t maxExcessBytes);
|
||||||
|
|
||||||
|
virtual~ SharedRingBuffer();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function can be used to add an optional FIFO to the class
|
* @brief This function can be used to add an optional FIFO to the class
|
||||||
@ -37,16 +49,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
void setToUseReceiveSizeFIFO(size_t fifoDepth);
|
void setToUseReceiveSizeFIFO(size_t fifoDepth);
|
||||||
|
|
||||||
/**
|
|
||||||
* This constructor takes an external buffer with the specified size.
|
|
||||||
* @param buffer
|
|
||||||
* @param size
|
|
||||||
* @param overwriteOld
|
|
||||||
* If the ring buffer is overflowing at a write operartion, the oldest data
|
|
||||||
* will be overwritten.
|
|
||||||
*/
|
|
||||||
SharedRingBuffer(object_id_t objectId, uint8_t* buffer, const size_t size,
|
|
||||||
bool overwriteOld, size_t maxExcessBytes);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unless a read-only constant value is read, all operations on the
|
* Unless a read-only constant value is read, all operations on the
|
||||||
|
@ -7,7 +7,7 @@ HkSwitchHelper::HkSwitchHelper(EventReportingProxyIF* eventProxy) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
HkSwitchHelper::~HkSwitchHelper() {
|
HkSwitchHelper::~HkSwitchHelper() {
|
||||||
// TODO Auto-generated destructor stub
|
QueueFactory::instance()->deleteMessageQueue(actionQueue);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t HkSwitchHelper::initialize() {
|
ReturnValue_t HkSwitchHelper::initialize() {
|
||||||
|
@ -909,27 +909,29 @@ void LocalDataPoolManager::printWarningOrError(sif::OutputTypes outputType,
|
|||||||
errorPrint = "Unknown error";
|
errorPrint = "Unknown error";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
object_id_t objectId = 0xffffffff;
|
||||||
|
if(owner != nullptr) {
|
||||||
|
objectId = owner->getObjectId();
|
||||||
|
}
|
||||||
|
|
||||||
if(outputType == sif::OutputTypes::OUT_WARNING) {
|
if(outputType == sif::OutputTypes::OUT_WARNING) {
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::warning << "LocalDataPoolManager::" << functionName
|
sif::warning << "LocalDataPoolManager::" << functionName << ": Object ID 0x" <<
|
||||||
<< ": Object ID 0x" << std::setw(8) << std::setfill('0')
|
std::setw(8) << std::setfill('0') << std::hex << objectId << " | " << errorPrint <<
|
||||||
<< std::hex << owner->getObjectId() << " | " << errorPrint
|
std::dec << std::setfill(' ') << std::endl;
|
||||||
<< std::dec << std::setfill(' ') << std::endl;
|
|
||||||
#else
|
#else
|
||||||
sif::printWarning("LocalDataPoolManager::%s: Object ID 0x%08x | %s\n",
|
sif::printWarning("LocalDataPoolManager::%s: Object ID 0x%08x | %s\n",
|
||||||
functionName, owner->getObjectId(), errorPrint);
|
functionName, objectId, errorPrint);
|
||||||
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
||||||
}
|
}
|
||||||
else if(outputType == sif::OutputTypes::OUT_ERROR) {
|
else if(outputType == sif::OutputTypes::OUT_ERROR) {
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::error << "LocalDataPoolManager::" << functionName
|
sif::error << "LocalDataPoolManager::" << functionName << ": Object ID 0x" <<
|
||||||
<< ": Object ID 0x" << std::setw(8) << std::setfill('0')
|
std::setw(8) << std::setfill('0') << std::hex << objectId << " | " << errorPrint <<
|
||||||
<< std::hex << owner->getObjectId() << " | " << errorPrint
|
std::dec << std::setfill(' ') << std::endl;
|
||||||
<< std::dec << std::setfill(' ') << std::endl;
|
|
||||||
#else
|
#else
|
||||||
sif::printError("LocalDataPoolManager::%s: Object ID 0x%08x | %s\n",
|
sif::printError("LocalDataPoolManager::%s: Object ID 0x%08x | %s\n",
|
||||||
functionName, owner->getObjectId(), errorPrint);
|
functionName, objectId, errorPrint);
|
||||||
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
||||||
}
|
}
|
||||||
#endif /* #if FSFW_VERBOSE_LEVEL >= 1 */
|
#endif /* #if FSFW_VERBOSE_LEVEL >= 1 */
|
||||||
|
@ -1483,7 +1483,7 @@ void DeviceHandlerBase::printWarningOrError(sif::OutputTypes errorType,
|
|||||||
if(errorCode == ObjectManagerIF::CHILD_INIT_FAILED) {
|
if(errorCode == ObjectManagerIF::CHILD_INIT_FAILED) {
|
||||||
errorPrint = "Initialization error";
|
errorPrint = "Initialization error";
|
||||||
}
|
}
|
||||||
if(errorCode == HasReturnvaluesIF::RETURN_FAILED) {
|
else if(errorCode == HasReturnvaluesIF::RETURN_FAILED) {
|
||||||
if(errorType == sif::OutputTypes::OUT_WARNING) {
|
if(errorType == sif::OutputTypes::OUT_WARNING) {
|
||||||
errorPrint = "Generic Warning";
|
errorPrint = "Generic Warning";
|
||||||
}
|
}
|
||||||
@ -1495,6 +1495,9 @@ void DeviceHandlerBase::printWarningOrError(sif::OutputTypes errorType,
|
|||||||
errorPrint = "Unknown error";
|
errorPrint = "Unknown error";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(functionName == nullptr) {
|
||||||
|
functionName = "unknown function";
|
||||||
|
}
|
||||||
|
|
||||||
if(errorType == sif::OutputTypes::OUT_WARNING) {
|
if(errorType == sif::OutputTypes::OUT_WARNING) {
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
@ -1504,7 +1507,7 @@ void DeviceHandlerBase::printWarningOrError(sif::OutputTypes errorType,
|
|||||||
<< std::setfill(' ') << std::endl;
|
<< std::setfill(' ') << std::endl;
|
||||||
#else
|
#else
|
||||||
sif::printWarning("DeviceHandlerBase::%s: Object ID 0x%08x | %s\n",
|
sif::printWarning("DeviceHandlerBase::%s: Object ID 0x%08x | %s\n",
|
||||||
this->getObjectId(), errorPrint);
|
functionName, this->getObjectId(), errorPrint);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if(errorType == sif::OutputTypes::OUT_ERROR) {
|
else if(errorType == sif::OutputTypes::OUT_ERROR) {
|
||||||
@ -1515,7 +1518,7 @@ void DeviceHandlerBase::printWarningOrError(sif::OutputTypes errorType,
|
|||||||
<< std::setfill(' ') << std::endl;
|
<< std::setfill(' ') << std::endl;
|
||||||
#else
|
#else
|
||||||
sif::printError("DeviceHandlerBase::%s: Object ID 0x%08x | %s\n",
|
sif::printError("DeviceHandlerBase::%s: Object ID 0x%08x | %s\n",
|
||||||
this->getObjectId(), errorPrint);
|
functionName, this->getObjectId(), errorPrint);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,6 +109,6 @@ bool EventMessage::isClearedEventMessage() {
|
|||||||
return getEvent() == INVALID_EVENT;
|
return getEvent() == INVALID_EVENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t EventMessage::getMinimumMessageSize() {
|
size_t EventMessage::getMinimumMessageSize() const {
|
||||||
return EVENT_MESSAGE_SIZE;
|
return EVENT_MESSAGE_SIZE;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
static const Event INVALID_EVENT = 0;
|
static const Event INVALID_EVENT = 0;
|
||||||
virtual size_t getMinimumMessageSize();
|
virtual size_t getMinimumMessageSize() const override;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ void arrayprinter::printHex(const uint8_t *data, size_t size,
|
|||||||
#else
|
#else
|
||||||
// General format: 0x01, 0x02, 0x03 so it is number of chars times 6
|
// General format: 0x01, 0x02, 0x03 so it is number of chars times 6
|
||||||
// plus line break plus small safety margin.
|
// plus line break plus small safety margin.
|
||||||
char printBuffer[(size + 1) * 7 + 1];
|
char printBuffer[(size + 1) * 7 + 1] = {};
|
||||||
size_t currentPos = 0;
|
size_t currentPos = 0;
|
||||||
for(size_t i = 0; i < size; i++) {
|
for(size_t i = 0; i < size; i++) {
|
||||||
// To avoid buffer overflows.
|
// To avoid buffer overflows.
|
||||||
@ -94,7 +94,7 @@ void arrayprinter::printDec(const uint8_t *data, size_t size,
|
|||||||
#else
|
#else
|
||||||
// General format: 32, 243, -12 so it is number of chars times 5
|
// General format: 32, 243, -12 so it is number of chars times 5
|
||||||
// plus line break plus small safety margin.
|
// plus line break plus small safety margin.
|
||||||
char printBuffer[(size + 1) * 5 + 1];
|
char printBuffer[(size + 1) * 5 + 1] = {};
|
||||||
size_t currentPos = 0;
|
size_t currentPos = 0;
|
||||||
for(size_t i = 0; i < size; i++) {
|
for(size_t i = 0; i < size; i++) {
|
||||||
// To avoid buffer overflows.
|
// To avoid buffer overflows.
|
||||||
|
@ -68,14 +68,30 @@ void HealthTable::printAll(uint8_t* pointer, size_t maxSize) {
|
|||||||
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
uint16_t count = healthMap.size();
|
uint16_t count = healthMap.size();
|
||||||
SerializeAdapter::serialize(&count,
|
ReturnValue_t result = SerializeAdapter::serialize(&count,
|
||||||
&pointer, &size, maxSize, SerializeIF::Endianness::BIG);
|
&pointer, &size, maxSize, SerializeIF::Endianness::BIG);
|
||||||
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
#if FSFW_VERBOSE_LEVEL >= 1
|
||||||
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
|
sif::warning << "HealthTable::printAll: Serialization of health table failed" << std::endl;
|
||||||
|
#else
|
||||||
|
sif::printWarning("HealthTable::printAll: Serialization of health table failed\n");
|
||||||
|
#endif
|
||||||
|
#endif /* FSFW_VERBOSE_LEVEL >= 1 */
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (const auto& health: healthMap) {
|
for (const auto& health: healthMap) {
|
||||||
SerializeAdapter::serialize(&health.first,
|
result = SerializeAdapter::serialize(&health.first,
|
||||||
&pointer, &size, maxSize, SerializeIF::Endianness::BIG);
|
&pointer, &size, maxSize, SerializeIF::Endianness::BIG);
|
||||||
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
uint8_t healthValue = health.second;
|
uint8_t healthValue = health.second;
|
||||||
SerializeAdapter::serialize(&healthValue, &pointer, &size,
|
result = SerializeAdapter::serialize(&healthValue, &pointer, &size,
|
||||||
maxSize, SerializeIF::Endianness::BIG);
|
maxSize, SerializeIF::Endianness::BIG);
|
||||||
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +102,7 @@ ReturnValue_t HealthTable::iterate(HealthEntry *value, bool reset) {
|
|||||||
mapIterator = healthMap.begin();
|
mapIterator = healthMap.begin();
|
||||||
}
|
}
|
||||||
if (mapIterator == healthMap.end()) {
|
if (mapIterator == healthMap.end()) {
|
||||||
result = HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
*value = *mapIterator;
|
*value = *mapIterator;
|
||||||
mapIterator++;
|
mapIterator++;
|
||||||
|
@ -111,7 +111,7 @@ ReturnValue_t Clock::getDateAndTime(TimeOfDay_t* time) {
|
|||||||
|
|
||||||
ReturnValue_t Clock::convertTimeOfDayToTimeval(const TimeOfDay_t* from,
|
ReturnValue_t Clock::convertTimeOfDayToTimeval(const TimeOfDay_t* from,
|
||||||
timeval* to) {
|
timeval* to) {
|
||||||
struct tm time_tm;
|
struct tm time_tm = {};
|
||||||
|
|
||||||
time_tm.tm_year = from->year - 1900;
|
time_tm.tm_year = from->year - 1900;
|
||||||
time_tm.tm_mon = from->month - 1;
|
time_tm.tm_mon = from->month - 1;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include "../../ipc/MutexFactory.h"
|
#include "../../ipc/MutexFactory.h"
|
||||||
#include "../../osal/host/Mutex.h"
|
#include "../../osal/host/Mutex.h"
|
||||||
#include "../../osal/host/FixedTimeslotTask.h"
|
#include "../../osal/host/FixedTimeslotTask.h"
|
||||||
#include "../../serviceinterface/ServiceInterfaceStream.h"
|
#include "../../serviceinterface/ServiceInterface.h"
|
||||||
#include "../../tasks/ExecutableObjectIF.h"
|
#include "../../tasks/ExecutableObjectIF.h"
|
||||||
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
@ -38,7 +38,6 @@ FixedTimeslotTask::~FixedTimeslotTask(void) {
|
|||||||
if(mainThread.joinable()) {
|
if(mainThread.joinable()) {
|
||||||
mainThread.join();
|
mainThread.join();
|
||||||
}
|
}
|
||||||
delete this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedTimeslotTask::taskEntryPoint(void* argument) {
|
void FixedTimeslotTask::taskEntryPoint(void* argument) {
|
||||||
@ -119,8 +118,11 @@ ReturnValue_t FixedTimeslotTask::addSlot(object_id_t componentId,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::error << "Component " << std::hex << componentId <<
|
sif::error << "Component " << std::hex << "0x" << componentId << "not found, "
|
||||||
" not found, not adding it to pst" << std::endl;
|
"not adding it to PST.." << std::dec << std::endl;
|
||||||
|
#else
|
||||||
|
sif::printError("Component 0x%08x not found, not adding it to PST..\n",
|
||||||
|
static_cast<unsigned int>(componentId));
|
||||||
#endif
|
#endif
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,6 @@ PeriodicTask::~PeriodicTask(void) {
|
|||||||
if(mainThread.joinable()) {
|
if(mainThread.joinable()) {
|
||||||
mainThread.join();
|
mainThread.join();
|
||||||
}
|
}
|
||||||
delete this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeriodicTask::taskEntryPoint(void* argument) {
|
void PeriodicTask::taskEntryPoint(void* argument) {
|
||||||
|
@ -10,6 +10,10 @@ QueueMapManager::QueueMapManager() {
|
|||||||
mapLock = MutexFactory::instance()->createMutex();
|
mapLock = MutexFactory::instance()->createMutex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueueMapManager::~QueueMapManager() {
|
||||||
|
MutexFactory::instance()->deleteMutex(mapLock);
|
||||||
|
}
|
||||||
|
|
||||||
QueueMapManager* QueueMapManager::instance() {
|
QueueMapManager* QueueMapManager::instance() {
|
||||||
if (mqManagerInstance == nullptr){
|
if (mqManagerInstance == nullptr){
|
||||||
mqManagerInstance = new QueueMapManager();
|
mqManagerInstance = new QueueMapManager();
|
||||||
|
@ -36,6 +36,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
//! External instantiation is forbidden.
|
//! External instantiation is forbidden.
|
||||||
QueueMapManager();
|
QueueMapManager();
|
||||||
|
~QueueMapManager();
|
||||||
|
|
||||||
uint32_t queueCounter = 0;
|
uint32_t queueCounter = 0;
|
||||||
MutexIF* mapLock;
|
MutexIF* mapLock;
|
||||||
QueueMap queueMap;
|
QueueMap queueMap;
|
||||||
|
@ -61,8 +61,7 @@ ReturnValue_t CService200ModeCommanding::prepareCommand(
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
ModeMessage::setModeMessage(dynamic_cast<CommandMessage*>(message),
|
ModeMessage::setModeMessage(message, ModeMessage::CMD_MODE_COMMAND, modeCommandPacket.getMode(),
|
||||||
ModeMessage::CMD_MODE_COMMAND, modeCommandPacket.getMode(),
|
|
||||||
modeCommandPacket.getSubmode());
|
modeCommandPacket.getSubmode());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,9 @@ Service1TelecommandVerification::Service1TelecommandVerification(
|
|||||||
tmQueue = QueueFactory::instance()->createMessageQueue(messageQueueDepth);
|
tmQueue = QueueFactory::instance()->createMessageQueue(messageQueueDepth);
|
||||||
}
|
}
|
||||||
|
|
||||||
Service1TelecommandVerification::~Service1TelecommandVerification() {}
|
Service1TelecommandVerification::~Service1TelecommandVerification() {
|
||||||
|
QueueFactory::instance()->deleteMessageQueue(tmQueue);
|
||||||
|
}
|
||||||
|
|
||||||
MessageQueueId_t Service1TelecommandVerification::getVerificationQueue(){
|
MessageQueueId_t Service1TelecommandVerification::getVerificationQueue(){
|
||||||
return tmQueue->getId();
|
return tmQueue->getId();
|
||||||
|
@ -75,9 +75,8 @@ ReturnValue_t Service20ParameterManagement::checkInterfaceAndAcquireMessageQueue
|
|||||||
#else
|
#else
|
||||||
sif::printError("Service20ParameterManagement::checkInterfaceAndAcquire"
|
sif::printError("Service20ParameterManagement::checkInterfaceAndAcquire"
|
||||||
"MessageQueue: Can't access object\n");
|
"MessageQueue: Can't access object\n");
|
||||||
sif::printError("Object ID: 0x%08x\n", objectId);
|
sif::printError("Object ID: 0x%08x\n", *objectId);
|
||||||
sif::printError("Make sure it implements "
|
sif::printError("Make sure it implements ReceivesParameterMessagesIF!\n");
|
||||||
"ReceivesParameterMessagesIF!\n");
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return CommandingServiceBase::INVALID_OBJECT;
|
return CommandingServiceBase::INVALID_OBJECT;
|
||||||
|
@ -15,7 +15,9 @@ Service5EventReporting::Service5EventReporting(object_id_t objectId,
|
|||||||
eventQueue = QueueFactory::instance()->createMessageQueue(messageQueueDepth);
|
eventQueue = QueueFactory::instance()->createMessageQueue(messageQueueDepth);
|
||||||
}
|
}
|
||||||
|
|
||||||
Service5EventReporting::~Service5EventReporting(){}
|
Service5EventReporting::~Service5EventReporting() {
|
||||||
|
QueueFactory::instance()->deleteMessageQueue(eventQueue);
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t Service5EventReporting::performService() {
|
ReturnValue_t Service5EventReporting::performService() {
|
||||||
EventMessage message;
|
EventMessage message;
|
||||||
|
@ -53,12 +53,14 @@ ReturnValue_t Service8FunctionManagement::checkInterfaceAndAcquireMessageQueue(
|
|||||||
ReturnValue_t Service8FunctionManagement::prepareCommand(
|
ReturnValue_t Service8FunctionManagement::prepareCommand(
|
||||||
CommandMessage* message, uint8_t subservice, const uint8_t* tcData,
|
CommandMessage* message, uint8_t subservice, const uint8_t* tcData,
|
||||||
size_t tcDataLen, uint32_t* state, object_id_t objectId) {
|
size_t tcDataLen, uint32_t* state, object_id_t objectId) {
|
||||||
return prepareDirectCommand(dynamic_cast<CommandMessage*>(message),
|
return prepareDirectCommand(message, tcData, tcDataLen);
|
||||||
tcData, tcDataLen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t Service8FunctionManagement::prepareDirectCommand(
|
ReturnValue_t Service8FunctionManagement::prepareDirectCommand(
|
||||||
CommandMessage *message, const uint8_t *tcData, size_t tcDataLen) {
|
CommandMessage *message, const uint8_t *tcData, size_t tcDataLen) {
|
||||||
|
if(message == nullptr) {
|
||||||
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
}
|
||||||
if(tcDataLen < sizeof(object_id_t) + sizeof(ActionId_t)) {
|
if(tcDataLen < sizeof(object_id_t) + sizeof(ActionId_t)) {
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::debug << "Service8FunctionManagement::prepareDirectCommand:"
|
sif::debug << "Service8FunctionManagement::prepareDirectCommand:"
|
||||||
|
@ -43,8 +43,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
DirectCommand(const DirectCommand &command);
|
DirectCommand(const DirectCommand &command);
|
||||||
object_id_t objectId;
|
object_id_t objectId = 0;
|
||||||
ActionId_t actionId;
|
ActionId_t actionId = 0;
|
||||||
uint32_t parametersSize; //!< [EXPORT] : [IGNORE]
|
uint32_t parametersSize; //!< [EXPORT] : [IGNORE]
|
||||||
const uint8_t * parameterBuffer; //!< [EXPORT] : [MAXSIZE] 65535 Bytes
|
const uint8_t * parameterBuffer; //!< [EXPORT] : [MAXSIZE] 65535 Bytes
|
||||||
|
|
||||||
|
@ -16,7 +16,9 @@ TmTcBridge::TmTcBridge(object_id_t objectId, object_id_t tcDestination,
|
|||||||
createMessageQueue(TMTC_RECEPTION_QUEUE_DEPTH);
|
createMessageQueue(TMTC_RECEPTION_QUEUE_DEPTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
TmTcBridge::~TmTcBridge() {}
|
TmTcBridge::~TmTcBridge() {
|
||||||
|
QueueFactory::instance()->deleteMessageQueue(tmTcReceptionQueue);
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t TmTcBridge::setNumberOfSentPacketsPerCycle(
|
ReturnValue_t TmTcBridge::setNumberOfSentPacketsPerCycle(
|
||||||
uint8_t sentPacketsPerCycle) {
|
uint8_t sentPacketsPerCycle) {
|
||||||
|
Loading…
Reference in New Issue
Block a user