command message only passed IF now
This commit is contained in:
parent
6b67f46c80
commit
8c03f6a823
@ -1,13 +1,5 @@
|
|||||||
#include <framework/ipc/CommandMessage.h>
|
#include <framework/ipc/CommandMessage.h>
|
||||||
|
#include <cstring>
|
||||||
#include <framework/devicehandlers/DeviceHandlerMessage.h>
|
|
||||||
#include <framework/health/HealthMessage.h>
|
|
||||||
#include <framework/memory/MemoryMessage.h>
|
|
||||||
#include <framework/modes/ModeMessage.h>
|
|
||||||
#include <framework/monitoring/MonitoringMessage.h>
|
|
||||||
#include <framework/subsystem/modes/ModeSequenceMessage.h>
|
|
||||||
#include <framework/tmstorage/TmStoreMessage.h>
|
|
||||||
#include <framework/parameters/ParameterMessage.h>
|
|
||||||
|
|
||||||
CommandMessage::CommandMessage(MessageQueueMessageIF* receiverMessage):
|
CommandMessage::CommandMessage(MessageQueueMessageIF* receiverMessage):
|
||||||
CommandMessageBase(receiverMessage) {
|
CommandMessageBase(receiverMessage) {
|
||||||
@ -50,23 +42,23 @@ CommandMessage::CommandMessage(MessageQueueMessageIF* messageToSet,
|
|||||||
|
|
||||||
uint32_t CommandMessage::getParameter() const {
|
uint32_t CommandMessage::getParameter() const {
|
||||||
uint32_t parameter1;
|
uint32_t parameter1;
|
||||||
memcpy(¶meter1, CommandMessageBase::getData(), sizeof(parameter1));
|
std::memcpy(¶meter1, CommandMessageBase::getData(), sizeof(parameter1));
|
||||||
return parameter1;
|
return parameter1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommandMessage::setParameter(uint32_t parameter1) {
|
void CommandMessage::setParameter(uint32_t parameter1) {
|
||||||
memcpy(CommandMessageBase::getData(), ¶meter1, sizeof(parameter1));
|
std::memcpy(CommandMessageBase::getData(), ¶meter1, sizeof(parameter1));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t CommandMessage::getParameter2() const {
|
uint32_t CommandMessage::getParameter2() const {
|
||||||
uint32_t parameter2;
|
uint32_t parameter2;
|
||||||
memcpy(¶meter2, CommandMessageBase::getData() + sizeof(uint32_t),
|
std::memcpy(¶meter2, CommandMessageBase::getData() + sizeof(uint32_t),
|
||||||
sizeof(parameter2));
|
sizeof(parameter2));
|
||||||
return parameter2;
|
return parameter2;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommandMessage::setParameter2(uint32_t parameter2) {
|
void CommandMessage::setParameter2(uint32_t parameter2) {
|
||||||
memcpy(CommandMessageBase::getData() + sizeof(uint32_t), ¶meter2,
|
std::memcpy(CommandMessageBase::getData() + sizeof(uint32_t), ¶meter2,
|
||||||
sizeof(parameter2));
|
sizeof(parameter2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,60 +76,6 @@ bool CommandMessage::isClearedCommandMessage() {
|
|||||||
|
|
||||||
void CommandMessage::setToUnknownCommand() {
|
void CommandMessage::setToUnknownCommand() {
|
||||||
Command_t initialCommand = getCommand();
|
Command_t initialCommand = getCommand();
|
||||||
clearCommandMessage();
|
this->clear();
|
||||||
setReplyRejected(UNKNOWN_COMMAND, initialCommand);
|
setReplyRejected(UNKNOWN_COMMAND, initialCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommandMessage::setReplyRejected(ReturnValue_t reason,
|
|
||||||
Command_t initialCommand) {
|
|
||||||
setCommand(REPLY_REJECTED);
|
|
||||||
setParameter(reason);
|
|
||||||
setParameter2(initialCommand);
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t CommandMessage::getRejectedReplyReason(
|
|
||||||
Command_t* initialCommand) const {
|
|
||||||
if(initialCommand != nullptr) {
|
|
||||||
*initialCommand = getParameter2();
|
|
||||||
}
|
|
||||||
return getParameter();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CommandMessage::clear() {
|
|
||||||
clearCommandMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CommandMessage::clearCommandMessage() {
|
|
||||||
switch(this->getMessageType()){
|
|
||||||
case messagetypes::MODE_COMMAND:
|
|
||||||
ModeMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::HEALTH_COMMAND:
|
|
||||||
HealthMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::MODE_SEQUENCE:
|
|
||||||
ModeSequenceMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::ACTION:
|
|
||||||
ActionMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::DEVICE_HANDLER_COMMAND:
|
|
||||||
DeviceHandlerMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::MEMORY:
|
|
||||||
MemoryMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::MONITORING:
|
|
||||||
MonitoringMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::TM_STORE:
|
|
||||||
TmStoreMessage::clear(this);
|
|
||||||
break;
|
|
||||||
case messagetypes::PARAMETER:
|
|
||||||
ParameterMessage::clear(this);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
messagetypes::clearMissionMessage(this);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -5,11 +5,6 @@
|
|||||||
#include <framework/ipc/MessageQueueMessage.h>
|
#include <framework/ipc/MessageQueueMessage.h>
|
||||||
#include <framework/ipc/FwMessageTypes.h>
|
#include <framework/ipc/FwMessageTypes.h>
|
||||||
|
|
||||||
namespace messagetypes {
|
|
||||||
// Implemented in config.
|
|
||||||
void clearMissionMessage(CommandMessageIF* message);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Default command message used to pass command messages between tasks.
|
* @brief Default command message used to pass command messages between tasks.
|
||||||
* Primary message type for IPC. Contains sender, 2-byte command ID
|
* Primary message type for IPC. Contains sender, 2-byte command ID
|
||||||
@ -27,17 +22,6 @@ void clearMissionMessage(CommandMessageIF* message);
|
|||||||
*/
|
*/
|
||||||
class CommandMessage: public CommandMessageBase {
|
class CommandMessage: public CommandMessageBase {
|
||||||
public:
|
public:
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::COMMAND_MESSAGE;
|
|
||||||
static const ReturnValue_t UNKNOWN_COMMAND = MAKE_RETURN_CODE(0x01);
|
|
||||||
|
|
||||||
static const uint8_t MESSAGE_ID = messagetypes::COMMAND;
|
|
||||||
//! Used internally, will be ignored
|
|
||||||
static const Command_t CMD_NONE = MAKE_COMMAND_ID( 0 );
|
|
||||||
static const Command_t REPLY_COMMAND_OK = MAKE_COMMAND_ID( 3 );
|
|
||||||
//! Reply indicating that the current command was rejected,
|
|
||||||
//! par1 should contain the error code
|
|
||||||
static const Command_t REPLY_REJECTED = MAKE_COMMAND_ID( 0xD1 );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the size of a message as it is seen by the MessageQueue.
|
* This is the size of a message as it is seen by the MessageQueue.
|
||||||
* 14 of the 24 available MessageQueueMessage bytes are used.
|
* 14 of the 24 available MessageQueueMessage bytes are used.
|
||||||
@ -98,18 +82,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
void setParameter2(uint32_t parameter2);
|
void setParameter2(uint32_t parameter2);
|
||||||
|
|
||||||
void clear() override;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the command to CMD_NONE and try to find the correct class to handle
|
|
||||||
* a more detailed clear.
|
|
||||||
* Also, calls a mission-specific clearMissionMessage function to separate
|
|
||||||
* between framework and mission messages. Not optimal, may be replaced by
|
|
||||||
* totally different auto-delete solution (e.g. smart pointers).
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void clearCommandMessage();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check if a message was cleared
|
* check if a message was cleared
|
||||||
*
|
*
|
||||||
@ -122,11 +94,6 @@ public:
|
|||||||
* Is needed quite often, so we better code it once only.
|
* Is needed quite often, so we better code it once only.
|
||||||
*/
|
*/
|
||||||
void setToUnknownCommand();
|
void setToUnknownCommand();
|
||||||
|
|
||||||
void setReplyRejected(ReturnValue_t reason,
|
|
||||||
Command_t initialCommand = CMD_NONE);
|
|
||||||
ReturnValue_t getRejectedReplyReason(
|
|
||||||
Command_t* initialCommand = nullptr) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include <framework/ipc/CommandMessageBase.h>
|
#include <framework/ipc/CommandMessageBase.h>
|
||||||
|
#include <framework/ipc/CommandMessageCleaner.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
CommandMessageBase::CommandMessageBase(MessageQueueMessageIF *message):
|
CommandMessageBase::CommandMessageBase(MessageQueueMessageIF *message):
|
||||||
@ -57,3 +58,25 @@ size_t CommandMessageBase::getMessageSize() const {
|
|||||||
MessageQueueMessageIF* CommandMessageBase::getInternalMessage() const {
|
MessageQueueMessageIF* CommandMessageBase::getInternalMessage() const {
|
||||||
return internalMessage;
|
return internalMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CommandMessageBase::setReplyRejected(ReturnValue_t reason,
|
||||||
|
Command_t initialCommand) {
|
||||||
|
std::memcpy(getData(), &reason, sizeof(reason));
|
||||||
|
std::memcpy(getData() + sizeof(reason), &initialCommand,
|
||||||
|
sizeof(initialCommand));
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t CommandMessageBase::getReplyRejectedReason(
|
||||||
|
Command_t *initialCommand) const {
|
||||||
|
ReturnValue_t reason = HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
std::memcpy(&reason, getData(), sizeof(reason));
|
||||||
|
if(initialCommand != nullptr) {
|
||||||
|
std::memcpy(initialCommand, getData() + sizeof(reason),
|
||||||
|
sizeof(Command_t));
|
||||||
|
}
|
||||||
|
return reason;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommandMessageBase::clear() {
|
||||||
|
CommandMessageCleaner::clearCommandMessage(this);
|
||||||
|
}
|
||||||
|
@ -22,9 +22,6 @@
|
|||||||
*/
|
*/
|
||||||
class CommandMessageBase: public CommandMessageIF {
|
class CommandMessageBase: public CommandMessageIF {
|
||||||
public:
|
public:
|
||||||
static constexpr size_t HEADER_SIZE = sizeof(MessageQueueId_t) +
|
|
||||||
sizeof(Command_t);
|
|
||||||
|
|
||||||
CommandMessageBase(MessageQueueMessageIF* message);
|
CommandMessageBase(MessageQueueMessageIF* message);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,7 +58,25 @@ public:
|
|||||||
virtual void setMessageSize(size_t messageSize) override;
|
virtual void setMessageSize(size_t messageSize) override;
|
||||||
virtual size_t getMessageSize() const override;
|
virtual size_t getMessageSize() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A command message can be rejected and needs to offer a function
|
||||||
|
* to set a rejected reply
|
||||||
|
* @param reason
|
||||||
|
* @param initialCommand
|
||||||
|
*/
|
||||||
|
void setReplyRejected(ReturnValue_t reason,
|
||||||
|
Command_t initialCommand) override;
|
||||||
|
/**
|
||||||
|
* Corrensonding getter function.
|
||||||
|
* @param initialCommand
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ReturnValue_t getReplyRejectedReason(
|
||||||
|
Command_t* initialCommand = nullptr) const override;
|
||||||
|
|
||||||
virtual MessageQueueMessageIF* getInternalMessage() const override;
|
virtual MessageQueueMessageIF* getInternalMessage() const override;
|
||||||
|
|
||||||
|
virtual void clear() override;
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* @brief Pointer to the message containing the data.
|
* @brief Pointer to the message containing the data.
|
||||||
|
45
ipc/CommandMessageCleaner.cpp
Normal file
45
ipc/CommandMessageCleaner.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include <framework/ipc/CommandMessageCleaner.h>
|
||||||
|
|
||||||
|
#include <framework/devicehandlers/DeviceHandlerMessage.h>
|
||||||
|
#include <framework/health/HealthMessage.h>
|
||||||
|
#include <framework/memory/MemoryMessage.h>
|
||||||
|
#include <framework/modes/ModeMessage.h>
|
||||||
|
#include <framework/monitoring/MonitoringMessage.h>
|
||||||
|
#include <framework/subsystem/modes/ModeSequenceMessage.h>
|
||||||
|
#include <framework/tmstorage/TmStoreMessage.h>
|
||||||
|
#include <framework/parameters/ParameterMessage.h>
|
||||||
|
|
||||||
|
void CommandMessageCleaner::clearCommandMessage(CommandMessageIF* message) {
|
||||||
|
switch(message->getMessageType()){
|
||||||
|
case messagetypes::MODE_COMMAND:
|
||||||
|
ModeMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::HEALTH_COMMAND:
|
||||||
|
HealthMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::MODE_SEQUENCE:
|
||||||
|
ModeSequenceMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::ACTION:
|
||||||
|
ActionMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::DEVICE_HANDLER_COMMAND:
|
||||||
|
DeviceHandlerMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::MEMORY:
|
||||||
|
MemoryMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::MONITORING:
|
||||||
|
MonitoringMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::TM_STORE:
|
||||||
|
TmStoreMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
case messagetypes::PARAMETER:
|
||||||
|
ParameterMessage::clear(dynamic_cast<CommandMessage*>(message));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
messagetypes::clearMissionMessage(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
16
ipc/CommandMessageCleaner.h
Normal file
16
ipc/CommandMessageCleaner.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#ifndef FRAMEWORK_IPC_COMMANDMESSAGECLEANER_H_
|
||||||
|
#define FRAMEWORK_IPC_COMMANDMESSAGECLEANER_H_
|
||||||
|
#include <framework/ipc/CommandMessageIF.h>
|
||||||
|
|
||||||
|
namespace messagetypes {
|
||||||
|
// Implemented in config.
|
||||||
|
void clearMissionMessage(CommandMessageIF* message);
|
||||||
|
}
|
||||||
|
|
||||||
|
class CommandMessageCleaner {
|
||||||
|
public:
|
||||||
|
static void clearCommandMessage(CommandMessageIF* message);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* FRAMEWORK_IPC_COMMANDMESSAGECLEANER_H_ */
|
@ -2,6 +2,9 @@
|
|||||||
#define FRAMEWORK_IPC_COMMANDMESSAGEIF_H_
|
#define FRAMEWORK_IPC_COMMANDMESSAGEIF_H_
|
||||||
|
|
||||||
#include <framework/ipc/MessageQueueMessageIF.h>
|
#include <framework/ipc/MessageQueueMessageIF.h>
|
||||||
|
#include <framework/ipc/FwMessageTypes.h>
|
||||||
|
#include <framework/returnvalues/HasReturnvaluesIF.h>
|
||||||
|
|
||||||
|
|
||||||
#define MAKE_COMMAND_ID( number ) ((MESSAGE_ID << 8) + (number))
|
#define MAKE_COMMAND_ID( number ) ((MESSAGE_ID << 8) + (number))
|
||||||
typedef uint16_t Command_t;
|
typedef uint16_t Command_t;
|
||||||
@ -14,6 +17,20 @@ typedef uint16_t Command_t;
|
|||||||
// we should just leave it like that.
|
// we should just leave it like that.
|
||||||
class CommandMessageIF: public MessageQueueMessageIF {
|
class CommandMessageIF: public MessageQueueMessageIF {
|
||||||
public:
|
public:
|
||||||
|
static constexpr size_t HEADER_SIZE = sizeof(MessageQueueId_t) +
|
||||||
|
sizeof(Command_t);
|
||||||
|
|
||||||
|
static const uint8_t INTERFACE_ID = CLASS_ID::COMMAND_MESSAGE;
|
||||||
|
static const ReturnValue_t UNKNOWN_COMMAND = MAKE_RETURN_CODE(0x01);
|
||||||
|
|
||||||
|
static const uint8_t MESSAGE_ID = messagetypes::COMMAND;
|
||||||
|
//! Used internally, shall be ignored
|
||||||
|
static const Command_t CMD_NONE = MAKE_COMMAND_ID( 0 );
|
||||||
|
static const Command_t REPLY_COMMAND_OK = MAKE_COMMAND_ID( 1 );
|
||||||
|
//! Reply indicating that the current command was rejected,
|
||||||
|
//! par1 should contain the error code
|
||||||
|
static const Command_t REPLY_REJECTED = MAKE_COMMAND_ID( 2 );
|
||||||
|
|
||||||
virtual ~CommandMessageIF() {};
|
virtual ~CommandMessageIF() {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,6 +44,22 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual uint8_t getMessageType() const = 0;
|
virtual uint8_t getMessageType() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A command message can be rejected and needs to offer a function
|
||||||
|
* to set a rejected reply
|
||||||
|
* @param reason
|
||||||
|
* @param initialCommand
|
||||||
|
*/
|
||||||
|
virtual void setReplyRejected(ReturnValue_t reason,
|
||||||
|
Command_t initialCommand) = 0;
|
||||||
|
/**
|
||||||
|
* Corrensonding getter function.
|
||||||
|
* @param initialCommand
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
virtual ReturnValue_t getReplyRejectedReason(
|
||||||
|
Command_t* initialCommand = nullptr) const = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function is used to get a pointer to the internal message, as
|
* This function is used to get a pointer to the internal message, as
|
||||||
* the command message implementations always operate on the memory
|
* the command message implementations always operate on the memory
|
||||||
@ -36,6 +69,7 @@ public:
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
virtual MessageQueueMessageIF* getInternalMessage() const = 0;
|
virtual MessageQueueMessageIF* getInternalMessage() const = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* FRAMEWORK_IPC_COMMANDMESSAGEIF_H_ */
|
#endif /* FRAMEWORK_IPC_COMMANDMESSAGEIF_H_ */
|
||||||
|
@ -119,7 +119,7 @@ void MemoryHelper::completeDump(ReturnValue_t errorCode,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (queueToUse->sendMessage(lastSender, &reply) != RETURN_OK) {
|
if (queueToUse->sendMessage(lastSender, &reply) != RETURN_OK) {
|
||||||
reply.clearCommandMessage();
|
reply.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ void CommandingServiceBase::handleCommandQueue() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CommandingServiceBase::handleCommandMessage(CommandMessage* reply) {
|
void CommandingServiceBase::handleCommandMessage(CommandMessageIF* reply) {
|
||||||
bool isStep = false;
|
bool isStep = false;
|
||||||
MessageQueueMessage message;
|
MessageQueueMessage message;
|
||||||
CommandMessage nextCommand(&message);
|
CommandMessage nextCommand(&message);
|
||||||
@ -119,7 +119,7 @@ void CommandingServiceBase::handleCommandMessage(CommandMessage* reply) {
|
|||||||
* command as failure parameter 1 */
|
* command as failure parameter 1 */
|
||||||
if(reply->getCommand() == CommandMessage::REPLY_REJECTED and
|
if(reply->getCommand() == CommandMessage::REPLY_REJECTED and
|
||||||
result == RETURN_FAILED) {
|
result == RETURN_FAILED) {
|
||||||
result = reply->getRejectedReplyReason(
|
result = reply->getReplyRejectedReason(
|
||||||
reinterpret_cast<Command_t*>(&failureParameter1));
|
reinterpret_cast<Command_t*>(&failureParameter1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,8 +156,8 @@ void CommandingServiceBase::handleCommandMessage(CommandMessage* reply) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CommandingServiceBase::handleReplyHandlerResult(ReturnValue_t result,
|
void CommandingServiceBase::handleReplyHandlerResult(ReturnValue_t result,
|
||||||
CommandMapIter iter, CommandMessage* nextCommand, CommandMessage* reply,
|
CommandMapIter iter, CommandMessageIF* nextCommand,
|
||||||
bool& isStep) {
|
CommandMessageIF* reply, bool& isStep) {
|
||||||
iter->command = nextCommand->getCommand();
|
iter->command = nextCommand->getCommand();
|
||||||
|
|
||||||
// In case a new command is to be sent immediately, this is performed here.
|
// In case a new command is to be sent immediately, this is performed here.
|
||||||
@ -186,14 +186,14 @@ void CommandingServiceBase::handleReplyHandlerResult(ReturnValue_t result,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (isStep) {
|
if (isStep) {
|
||||||
nextCommand->clearCommandMessage();
|
nextCommand->clear();
|
||||||
verificationReporter.sendFailureReport(
|
verificationReporter.sendFailureReport(
|
||||||
TC_VERIFY::PROGRESS_FAILURE, iter->tcInfo.ackFlags,
|
TC_VERIFY::PROGRESS_FAILURE, iter->tcInfo.ackFlags,
|
||||||
iter->tcInfo.tcPacketId,
|
iter->tcInfo.tcPacketId,
|
||||||
iter->tcInfo.tcSequenceControl, sendResult,
|
iter->tcInfo.tcSequenceControl, sendResult,
|
||||||
++iter->step, failureParameter1, failureParameter2);
|
++iter->step, failureParameter1, failureParameter2);
|
||||||
} else {
|
} else {
|
||||||
nextCommand->clearCommandMessage();
|
nextCommand->clear();
|
||||||
verificationReporter.sendFailureReport(
|
verificationReporter.sendFailureReport(
|
||||||
TC_VERIFY::COMPLETION_FAILURE,
|
TC_VERIFY::COMPLETION_FAILURE,
|
||||||
iter->tcInfo.ackFlags, iter->tcInfo.tcPacketId,
|
iter->tcInfo.ackFlags, iter->tcInfo.tcPacketId,
|
||||||
@ -329,7 +329,7 @@ void CommandingServiceBase::startExecution(TcPacketStored *storedPacket,
|
|||||||
storedPacket->getPacketSequenceControl();
|
storedPacket->getPacketSequenceControl();
|
||||||
acceptPacket(TC_VERIFY::START_SUCCESS, storedPacket);
|
acceptPacket(TC_VERIFY::START_SUCCESS, storedPacket);
|
||||||
} else {
|
} else {
|
||||||
command.clearCommandMessage();
|
command.clear();
|
||||||
rejectPacket(TC_VERIFY::START_FAILURE, storedPacket, sendResult);
|
rejectPacket(TC_VERIFY::START_FAILURE, storedPacket, sendResult);
|
||||||
checkAndExecuteFifo(iter);
|
checkAndExecuteFifo(iter);
|
||||||
}
|
}
|
||||||
@ -346,7 +346,7 @@ void CommandingServiceBase::startExecution(TcPacketStored *storedPacket,
|
|||||||
acceptPacket(TC_VERIFY::COMPLETION_SUCCESS, storedPacket);
|
acceptPacket(TC_VERIFY::COMPLETION_SUCCESS, storedPacket);
|
||||||
checkAndExecuteFifo(iter);
|
checkAndExecuteFifo(iter);
|
||||||
} else {
|
} else {
|
||||||
command.clearCommandMessage();
|
command.clear();
|
||||||
rejectPacket(TC_VERIFY::START_FAILURE, storedPacket, sendResult);
|
rejectPacket(TC_VERIFY::START_FAILURE, storedPacket, sendResult);
|
||||||
checkAndExecuteFifo(iter);
|
checkAndExecuteFifo(iter);
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ protected:
|
|||||||
* @param objectId Target object ID
|
* @param objectId Target object ID
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
virtual ReturnValue_t prepareCommand(CommandMessage *message,
|
virtual ReturnValue_t prepareCommand(CommandMessageIF *message,
|
||||||
uint8_t subservice, const uint8_t *tcData, size_t tcDataLen,
|
uint8_t subservice, const uint8_t *tcData, size_t tcDataLen,
|
||||||
uint32_t *state, object_id_t objectId) = 0;
|
uint32_t *state, object_id_t objectId) = 0;
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual ReturnValue_t handleReply(const CommandMessageIF *reply,
|
virtual ReturnValue_t handleReply(const CommandMessageIF *reply,
|
||||||
Command_t previousCommand, uint32_t *state,
|
Command_t previousCommand, uint32_t *state,
|
||||||
CommandMessage *optionalNextCommand, object_id_t objectId,
|
CommandMessageIF *optionalNextCommand, object_id_t objectId,
|
||||||
bool *isStep) = 0;
|
bool *isStep) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -312,9 +312,9 @@ private:
|
|||||||
|
|
||||||
void startExecution(TcPacketStored *storedPacket, CommandMapIter iter);
|
void startExecution(TcPacketStored *storedPacket, CommandMapIter iter);
|
||||||
|
|
||||||
void handleCommandMessage(CommandMessage* reply);
|
void handleCommandMessage(CommandMessageIF* reply);
|
||||||
void handleReplyHandlerResult(ReturnValue_t result, CommandMapIter iter,
|
void handleReplyHandlerResult(ReturnValue_t result, CommandMapIter iter,
|
||||||
CommandMessage* nextCommand,CommandMessage* reply, bool& isStep);
|
CommandMessageIF* nextCommand,CommandMessageIF* reply, bool& isStep);
|
||||||
|
|
||||||
void checkTimeout();
|
void checkTimeout();
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user