moved address_t typedef to cookieImoved address_t typedef to cookieIFF
This commit is contained in:
parent
163779622f
commit
093fef5d6f
@ -8,6 +8,11 @@
|
|||||||
#define FRAMEWORK_DEVICEHANDLERS_COOKIEIF_H_
|
#define FRAMEWORK_DEVICEHANDLERS_COOKIEIF_H_
|
||||||
#include <framework/devicehandlers/DeviceHandlerIF.h>
|
#include <framework/devicehandlers/DeviceHandlerIF.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Physical address type
|
||||||
|
*/
|
||||||
|
typedef uint32_t address_t;
|
||||||
|
|
||||||
class CookieIF {
|
class CookieIF {
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -365,11 +365,8 @@ ReturnValue_t DeviceHandlerBase::insertInCommandMap(DeviceCommandId_t deviceComm
|
|||||||
info.expectedReplies = 0;
|
info.expectedReplies = 0;
|
||||||
info.isExecuting = false;
|
info.isExecuting = false;
|
||||||
info.sendReplyTo = NO_COMMANDER;
|
info.sendReplyTo = NO_COMMANDER;
|
||||||
std::pair<std::map<DeviceCommandId_t, DeviceCommandInfo>::iterator, bool> returnValue;
|
std::pair<DeviceCommandIter, bool> result = deviceCommandMap.emplace(deviceCommand,info);
|
||||||
returnValue = deviceCommandMap.insert(
|
if (result.second) {
|
||||||
std::pair<DeviceCommandId_t, DeviceCommandInfo>(deviceCommand,
|
|
||||||
info));
|
|
||||||
if (returnValue.second) {
|
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
} else {
|
} else {
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
@ -550,13 +547,17 @@ void DeviceHandlerBase::doSendRead() {
|
|||||||
requestLen = iter->second.replyLen;
|
requestLen = iter->second.replyLen;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
requestLen = 0;
|
requestLen = comCookie->getMaxReplyLen();
|
||||||
}
|
}
|
||||||
|
|
||||||
result = communicationInterface->requestReceiveMessage(comCookie, requestLen);
|
result = communicationInterface->requestReceiveMessage(comCookie, requestLen);
|
||||||
if (result == RETURN_OK) {
|
if (result == RETURN_OK) {
|
||||||
cookieInfo.state = COOKIE_READ_SENT;
|
cookieInfo.state = COOKIE_READ_SENT;
|
||||||
} else {
|
}
|
||||||
|
else if(result == NO_READ_REQUEST) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
triggerEvent(DEVICE_REQUESTING_REPLY_FAILED, result);
|
triggerEvent(DEVICE_REQUESTING_REPLY_FAILED, result);
|
||||||
//We can't inform anyone, because we don't know which command was sent last.
|
//We can't inform anyone, because we don't know which command was sent last.
|
||||||
//So, we need to wait for a timeout.
|
//So, we need to wait for a timeout.
|
||||||
@ -816,9 +817,9 @@ ReturnValue_t DeviceHandlerBase::enableReplyInReplyMap(
|
|||||||
iter = deviceReplyMap.find(command->first);
|
iter = deviceReplyMap.find(command->first);
|
||||||
}
|
}
|
||||||
if (iter != deviceReplyMap.end()) {
|
if (iter != deviceReplyMap.end()) {
|
||||||
DeviceReplyInfo & info = iter->second;
|
DeviceReplyInfo * info = &(iter->second);
|
||||||
info.delayCycles = info.maxDelayCycles;
|
info->delayCycles = info->maxDelayCycles;
|
||||||
info.command = command;
|
info->command = command;
|
||||||
command->second.expectedReplies = expectedReplies;
|
command->second.expectedReplies = expectedReplies;
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
} else {
|
} else {
|
||||||
|
@ -194,6 +194,9 @@ protected:
|
|||||||
* different commands can built returned depending on the submode.
|
* different commands can built returned depending on the submode.
|
||||||
*
|
*
|
||||||
* #rawPacket and #rawPacketLen must be set by this method to the packet to be sent.
|
* #rawPacket and #rawPacketLen must be set by this method to the packet to be sent.
|
||||||
|
* If variable command frequence is required, a counter can be used and
|
||||||
|
* the frequency in the reply map has to be set manually
|
||||||
|
* by calling updateReplyMap().
|
||||||
*
|
*
|
||||||
* @param[out] id the device command id that has been built
|
* @param[out] id the device command id that has been built
|
||||||
* @return
|
* @return
|
||||||
@ -527,6 +530,7 @@ protected:
|
|||||||
MessageQueueId_t sendReplyTo; //!< if this is != NO_COMMANDER, DHB was commanded externally and shall report everything to commander.
|
MessageQueueId_t sendReplyTo; //!< if this is != NO_COMMANDER, DHB was commanded externally and shall report everything to commander.
|
||||||
};
|
};
|
||||||
typedef std::map<DeviceCommandId_t, DeviceCommandInfo> DeviceCommandMap;
|
typedef std::map<DeviceCommandId_t, DeviceCommandInfo> DeviceCommandMap;
|
||||||
|
typedef DeviceCommandMap::iterator DeviceCommandIter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Information about expected replies
|
* @brief Information about expected replies
|
||||||
@ -674,48 +678,6 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual void doTransition(Mode_t modeFrom, Submode_t subModeFrom);
|
virtual void doTransition(Mode_t modeFrom, Submode_t subModeFrom);
|
||||||
|
|
||||||
/**
|
|
||||||
* Is the combination of mode and submode valid?
|
|
||||||
*
|
|
||||||
* @param mode
|
|
||||||
* @param submode
|
|
||||||
* @return
|
|
||||||
* - @c RETURN_OK if valid
|
|
||||||
* - @c RETURN_FAILED if invalid
|
|
||||||
*/
|
|
||||||
virtual ReturnValue_t isModeCombinationValid(Mode_t mode,
|
|
||||||
Submode_t submode);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the Rmap action for the current step.
|
|
||||||
*
|
|
||||||
* The step number can be read from #pstStep.
|
|
||||||
*
|
|
||||||
* @return The Rmap action to execute in this step
|
|
||||||
*/
|
|
||||||
virtual CommunicationAction_t getComAction();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Build the device command to send for raw mode.
|
|
||||||
*
|
|
||||||
* This is only called in @c MODE_RAW. It is for the rare case that in raw mode packets
|
|
||||||
* are to be sent by the handler itself. It is NOT needed for the raw commanding service.
|
|
||||||
* Its only current use is in the STR handler which gets its raw packets from a different
|
|
||||||
* source.
|
|
||||||
* Also it can be used for transitional commands, to get the device ready for @c MODE_RAW
|
|
||||||
*
|
|
||||||
* As it is almost never used, there is a default implementation returning @c NOTHING_TO_SEND.
|
|
||||||
*
|
|
||||||
* #rawPacket and #rawPacketLen must be set by this method to the packet to be sent.
|
|
||||||
*
|
|
||||||
* @param[out] id the device command id built
|
|
||||||
* @return
|
|
||||||
* - @c RETURN_OK when a command is to be sent
|
|
||||||
* - not @c NOTHING_TO_SEND when no command is to be sent
|
|
||||||
*/
|
|
||||||
virtual ReturnValue_t buildChildRawCommand();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is a helper method to facilitate inserting entries in the command map.
|
* This is a helper method to facilitate inserting entries in the command map.
|
||||||
* @param deviceCommand Identifier of the command to add.
|
* @param deviceCommand Identifier of the command to add.
|
||||||
@ -765,6 +727,47 @@ protected:
|
|||||||
*/
|
*/
|
||||||
uint8_t getReplyDelayCycles(DeviceCommandId_t deviceCommand);
|
uint8_t getReplyDelayCycles(DeviceCommandId_t deviceCommand);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the combination of mode and submode valid?
|
||||||
|
*
|
||||||
|
* @param mode
|
||||||
|
* @param submode
|
||||||
|
* @return
|
||||||
|
* - @c RETURN_OK if valid
|
||||||
|
* - @c RETURN_FAILED if invalid
|
||||||
|
*/
|
||||||
|
virtual ReturnValue_t isModeCombinationValid(Mode_t mode,
|
||||||
|
Submode_t submode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Rmap action for the current step.
|
||||||
|
*
|
||||||
|
* The step number can be read from #pstStep.
|
||||||
|
*
|
||||||
|
* @return The Rmap action to execute in this step
|
||||||
|
*/
|
||||||
|
virtual CommunicationAction_t getComAction();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the device command to send for raw mode.
|
||||||
|
*
|
||||||
|
* This is only called in @c MODE_RAW. It is for the rare case that in raw mode packets
|
||||||
|
* are to be sent by the handler itself. It is NOT needed for the raw commanding service.
|
||||||
|
* Its only current use is in the STR handler which gets its raw packets from a different
|
||||||
|
* source.
|
||||||
|
* Also it can be used for transitional commands, to get the device ready for @c MODE_RAW
|
||||||
|
*
|
||||||
|
* As it is almost never used, there is a default implementation returning @c NOTHING_TO_SEND.
|
||||||
|
*
|
||||||
|
* #rawPacket and #rawPacketLen must be set by this method to the packet to be sent.
|
||||||
|
*
|
||||||
|
* @param[out] id the device command id built
|
||||||
|
* @return
|
||||||
|
* - @c RETURN_OK when a command is to be sent
|
||||||
|
* - not @c NOTHING_TO_SEND when no command is to be sent
|
||||||
|
*/
|
||||||
|
virtual ReturnValue_t buildChildRawCommand();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a command reply containing a raw reply.
|
* Construct a command reply containing a raw reply.
|
||||||
*
|
*
|
||||||
|
@ -7,11 +7,6 @@
|
|||||||
#include <framework/modes/HasModesIF.h>
|
#include <framework/modes/HasModesIF.h>
|
||||||
#include <framework/ipc/MessageQueueSenderIF.h>
|
#include <framework/ipc/MessageQueueSenderIF.h>
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Physical address type
|
|
||||||
*/
|
|
||||||
typedef uint32_t address_t;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This is the Interface used to communicate with a device handler.
|
* @brief This is the Interface used to communicate with a device handler.
|
||||||
* @details Includes all expected return values, events and modes.
|
* @details Includes all expected return values, events and modes.
|
||||||
@ -95,6 +90,8 @@ public:
|
|||||||
// Standard codes used in buildCommandFromCommand
|
// Standard codes used in buildCommandFromCommand
|
||||||
static const ReturnValue_t INVALID_COMMAND_PARAMETER = MAKE_RETURN_CODE(0xD0);
|
static const ReturnValue_t INVALID_COMMAND_PARAMETER = MAKE_RETURN_CODE(0xD0);
|
||||||
static const ReturnValue_t INVALID_NUMBER_OR_LENGTH_OF_PARAMETERS = MAKE_RETURN_CODE(0xD1);
|
static const ReturnValue_t INVALID_NUMBER_OR_LENGTH_OF_PARAMETERS = MAKE_RETURN_CODE(0xD1);
|
||||||
|
// Standard codes used in buildNomalDeviceCommand
|
||||||
|
static const ReturnValue_t NO_READ_REQUEST = MAKE_RETURN_CODE(0xD2);
|
||||||
|
|
||||||
// Standard codes used in getSwitches
|
// Standard codes used in getSwitches
|
||||||
static const ReturnValue_t NO_SWITCH = MAKE_RETURN_CODE(0xE1); //!< Return in getSwitches() to specify there are no switches
|
static const ReturnValue_t NO_SWITCH = MAKE_RETURN_CODE(0xE1); //!< Return in getSwitches() to specify there are no switches
|
||||||
|
Loading…
Reference in New Issue
Block a user