various bugfixes and improvements

This commit is contained in:
2022-07-21 11:34:11 +02:00
parent be35bd53a6
commit d8b6cb39ac
35 changed files with 401 additions and 147 deletions

View File

@ -251,8 +251,18 @@ void CommandingServiceBase::handleRequestQueue() {
result = tcStore->getData(message.getStorageId(), &dataPtr, &dataLen);
if (result != HasReturnvaluesIF::RETURN_OK) {
// TODO: Warning?
continue;
}
result = tcReader.setReadOnlyData(dataPtr, dataLen);
if (result != HasReturnvaluesIF::RETURN_OK) {
// TODO: Warning?
continue;
}
result = tcReader.parseData();
if (result != HasReturnvaluesIF::RETURN_OK) {
// TODO: Warning?
continue;
}
tcReader.setReadOnlyData(dataPtr, dataLen);
if ((tcReader.getSubService() == 0) or
(isValidSubservice(tcReader.getSubService()) != RETURN_OK)) {
@ -260,10 +270,8 @@ void CommandingServiceBase::handleRequestQueue() {
continue;
}
size_t appDataLen = 0;
const uint8_t* appData = tcReader.getUserData(appDataLen);
result =
getMessageQueueAndObject(tcReader.getSubService(), appData, appDataLen, &queue, &objectId);
result = getMessageQueueAndObject(tcReader.getSubService(), tcReader.getUserData(),
tcReader.getUserDataLen(), &queue, &objectId);
if (result != HasReturnvaluesIF::RETURN_OK) {
rejectPacket(tc_verification::START_FAILURE, address, &tcReader, result);
continue;
@ -332,10 +340,9 @@ void CommandingServiceBase::startExecution(store_address_t storeId, PusTcReader*
return;
}
iter->second.subservice = storedPacket->getSubService();
size_t appDataLen = 0;
const uint8_t* appData = storedPacket->getUserData(appDataLen);
result = prepareCommand(&command, iter->second.subservice, appData, appDataLen,
&iter->second.state, iter->second.objectId);
result =
prepareCommand(&command, iter->second.subservice, storedPacket->getUserData(),
storedPacket->getUserDataLen(), &iter->second.state, iter->second.objectId);
ReturnValue_t sendResult = RETURN_OK;
switch (result) {
@ -401,7 +408,16 @@ void CommandingServiceBase::checkAndExecuteFifo(CommandMapIter& iter) {
size_t dataLen = 0;
ReturnValue_t result = tcStore->getData(address, &dataPtr, &dataLen);
if (result == HasReturnvaluesIF::RETURN_OK) {
tcReader.setReadOnlyData(dataPtr, dataLen);
result = tcReader.setReadOnlyData(dataPtr, dataLen);
if (result != HasReturnvaluesIF::RETURN_OK) {
// TODO: Warning?
return;
}
result = tcReader.parseData();
if (result != HasReturnvaluesIF::RETURN_OK) {
// TODO: Warning?
return;
}
startExecution(address, &tcReader, iter);
} else {
// TODO: Warning?