Relative Paths
This commit is contained in:
action
ActionHelper.cppActionHelper.hActionMessage.cppActionMessage.hCommandActionHelper.cppCommandActionHelper.hCommandsActionsIF.hHasActionsIF.hSimpleActionHelper.cppSimpleActionHelper.h
container
ArrayList.hFIFO.hFixedArrayList.hFixedMap.hFixedOrderedMultimap.hHybridIterator.hIndexedRingMemoryArray.hPlacementFactory.hRingBufferBase.hSimpleRingBuffer.cppSimpleRingBuffer.h
controller
coordinates
CoordinateTransformations.cppCoordinateTransformations.hJgm3Model.hSgp4Propagator.cppSgp4Propagator.h
datalinklayer
BCFrame.hCCSDSReturnValuesIF.hClcw.cppClcw.hDataLinkLayer.cppDataLinkLayer.hFarm1StateIF.hFarm1StateLockout.cppFarm1StateLockout.hFarm1StateOpen.cppFarm1StateOpen.hFarm1StateWait.cppFarm1StateWait.hMapPacketExtraction.cppMapPacketExtraction.hMapPacketExtractionIF.hTcTransferFrame.cppTcTransferFrameLocal.cppTcTransferFrameLocal.hVirtualChannelReception.cppVirtualChannelReception.hVirtualChannelReceptionIF.h
datapool
ControllerSet.cppControllerSet.hDataPool.cppDataPool.hDataPoolAdmin.cppDataPoolAdmin.hDataPoolParameterWrapper.cppDataPoolParameterWrapper.hDataSet.cppDataSet.hHkSwitchHelper.cppHkSwitchHelper.hPIDReader.hPIDReaderList.hPoolEntry.cppPoolEntry.hPoolEntryIF.hPoolRawAccess.cppPoolRawAccess.hPoolVarList.hPoolVariable.hPoolVariableIF.hPoolVector.h
devicehandlers
AcceptsDeviceResponsesIF.hAssemblyBase.cppAssemblyBase.hChildHandlerBase.cppChildHandlerBase.hChildHandlerFDIR.cppChildHandlerFDIR.hDeviceCommunicationIF.hDeviceHandlerBase.cppDeviceHandlerBase.hDeviceHandlerFailureIsolation.cppDeviceHandlerFailureIsolation.hDeviceHandlerIF.hDeviceHandlerMessage.cppDeviceHandlerMessage.hDeviceTmReportingWrapper.cppDeviceTmReportingWrapper.hFixedSequenceSlot.cppFixedSequenceSlot.hFixedSlotSequence.cppFixedSlotSequence.hHealthDevice.cppHealthDevice.h
events
Event.cppEvent.hEventManager.cppEventManager.hEventManagerIF.hEventMessage.cppEventMessage.hEventReportingProxyIF.h
eventmatching
fdir
ConfirmsFailuresIF.hEventCorrelation.cppEventCorrelation.hFailureIsolationBase.cppFailureIsolationBase.hFaultCounter.cppFaultCounter.h
globalfunctions
AsciiConverter.cppAsciiConverter.hCRC.cppDleEncoder.cppDleEncoder.hType.cppType.harrayprinter.cpp
matching
math
timevalOperations.cpphealth
HasHealthIF.hHealthHelper.cppHealthHelper.hHealthMessage.cppHealthMessage.hHealthTable.cppHealthTable.hHealthTableIF.hManagesHealthIF.h
internalError
ipc
CommandMessage.cppCommandMessage.hMessageQueueIF.hMessageQueueMessage.cppMessageQueueMessage.hMessageQueueSenderIF.hMutexFactory.hMutexHelper.hMutexIF.hQueueFactory.h
memory
AcceptsMemoryMessagesIF.hHasMemoryIF.hMemoryHelper.cppMemoryHelper.hMemoryMessage.cppMemoryMessage.hMemoryProxyIF.h
modes
monitoring
AbsLimitMonitor.hHasMonitorsIF.hLimitMonitor.hLimitViolationReporter.cppLimitViolationReporter.hMonitorBase.hMonitorReporter.hMonitoringIF.hMonitoringMessage.cppMonitoringMessage.hMonitoringMessageContent.hReceivesMonitoringReportsIF.hTriplexMonitor.hTwoValueLimitMonitor.h
objectmanager
osal
FreeRTOS
Clock.cppFixedTimeslotTask.cppFixedTimeslotTask.hMessageQueue.cppMessageQueue.hMutex.cppMutex.hMutexFactory.cppPeriodicTask.cppPeriodicTask.hQueueFactory.cppTaskFactory.cppTimekeeper.cppTimekeeper.h
InternalErrorCodes.hlinux
Clock.cppFixedTimeslotTask.cppFixedTimeslotTask.hInternalErrorCodes.cppMessageQueue.cppMessageQueue.hMutex.cppMutex.hMutexFactory.cppPeriodicPosixTask.cppPeriodicPosixTask.hPosixThread.cppPosixThread.hQueueFactory.cppTaskFactory.cppTimer.cpp
rtems
parameters
HasParametersIF.hParameterHelper.cppParameterHelper.hParameterMessage.cppParameterMessage.hParameterWrapper.cppParameterWrapper.hReceivesParameterMessagesIF.h
power
Fuse.cppFuse.hPowerComponent.cppPowerComponent.hPowerComponentIF.hPowerSensor.cppPowerSensor.hPowerSwitchIF.hPowerSwitcher.cppPowerSwitcher.h
pus
CService200ModeCommanding.cppCService200ModeCommanding.hService1TelecommandVerification.cppService1TelecommandVerification.hService2DeviceAccess.cppService2DeviceAccess.hService5EventReporting.cppService5EventReporting.hService8FunctionManagement.cppService8FunctionManagement.h
servicepackets
returnvalues
rmap
RMAP.cppRMAP.hRMAPChannelIF.hRMAPCookie.cppRMAPCookie.hRmapDeviceCommunicationIF.cppRmapDeviceCommunicationIF.h
serialize
EndianConverter.hSerialArrayListAdapter.hSerialBufferAdapter.cppSerialBufferAdapter.hSerialFixedArrayListAdapter.hSerialLinkedListAdapter.hSerializeAdapter.hSerializeElement.hSerializeIF.h
serviceinterface
ServiceInterfaceBuffer.cppServiceInterfaceBuffer.hServiceInterfaceStream.cppServiceInterfaceStream.h
storagemanager
subsystem
tasks
tcdistribution
CCSDSDistributor.cppCCSDSDistributor.hCCSDSDistributorIF.hPUSDistributor.cppPUSDistributor.hPUSDistributorIF.hTcDistributor.cppTcDistributor.hTcPacketCheck.cppTcPacketCheck.h
thermal
AbstractTemperatureSensor.cppAbstractTemperatureSensor.hCoreComponent.hHeater.cppHeater.hRedundantHeater.hTemperatureSensor.hThermalComponentIF.hThermalModule.cppThermalModule.hThermalMonitor.cppThermalMonitor.h
timemanager
CCSDSTime.cppCCSDSTime.hClock.hCountdown.cppCountdown.hStopwatch.cppStopwatch.hTimeMessage.cppTimeMessage.hTimeStamperIF.h
tmstorage
tmtcpacket
tmtcservices
AcceptsTelecommandsIF.hAcceptsTelemetryIF.hAcceptsVerifyMessageIF.hCommandingServiceBase.cppCommandingServiceBase.hPusServiceBase.cppPusServiceBase.hPusVerificationReport.cppPusVerificationReport.hSourceSequenceCounter.hTmTcBridge.cppTmTcBridge.hTmTcMessage.cppTmTcMessage.hVerificationReporter.cppVerificationReporter.h
@ -1,119 +1,119 @@
|
||||
#include <framework/pus/CService200ModeCommanding.h>
|
||||
#include <framework/pus/servicepackets/Service200Packets.h>
|
||||
|
||||
#include <framework/modes/HasModesIF.h>
|
||||
#include <framework/serviceinterface/ServiceInterfaceStream.h>
|
||||
#include <framework/serialize/SerialLinkedListAdapter.h>
|
||||
#include <framework/modes/ModeMessage.h>
|
||||
|
||||
CService200ModeCommanding::CService200ModeCommanding(object_id_t objectId,
|
||||
uint16_t apid, uint8_t serviceId):
|
||||
CommandingServiceBase(objectId, apid, serviceId,
|
||||
NUMBER_OF_PARALLEL_COMMANDS,COMMAND_TIMEOUT_SECONDS) {}
|
||||
|
||||
CService200ModeCommanding::~CService200ModeCommanding() {}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::isValidSubservice(uint8_t subservice) {
|
||||
switch(subservice) {
|
||||
case(Subservice::COMMAND_MODE_COMMAND):
|
||||
case(Subservice::COMMAND_MODE_READ):
|
||||
case(Subservice::COMMAND_MODE_ANNCOUNCE):
|
||||
return RETURN_OK;
|
||||
default:
|
||||
return AcceptsTelecommandsIF::INVALID_SUBSERVICE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::getMessageQueueAndObject(
|
||||
uint8_t subservice, const uint8_t *tcData, size_t tcDataLen,
|
||||
MessageQueueId_t *id, object_id_t *objectId) {
|
||||
if(tcDataLen < sizeof(object_id_t)) {
|
||||
return CommandingServiceBase::INVALID_TC;
|
||||
}
|
||||
SerializeAdapter::deSerialize(objectId, &tcData, &tcDataLen,
|
||||
SerializeIF::Endianness::BIG);
|
||||
|
||||
return checkInterfaceAndAcquireMessageQueue(id,objectId);
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::checkInterfaceAndAcquireMessageQueue(
|
||||
MessageQueueId_t* messageQueueToSet, object_id_t* objectId) {
|
||||
HasModesIF * destination = objectManager->get<HasModesIF>(*objectId);
|
||||
if(destination == nullptr) {
|
||||
return CommandingServiceBase::INVALID_OBJECT;
|
||||
|
||||
}
|
||||
|
||||
*messageQueueToSet = destination->getCommandQueue();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareCommand(
|
||||
CommandMessage* message,uint8_t subservice, const uint8_t *tcData,
|
||||
size_t tcDataLen, uint32_t *state, object_id_t objectId) {
|
||||
ModePacket modeCommandPacket;
|
||||
ReturnValue_t result = modeCommandPacket.deSerialize(&tcData,
|
||||
&tcDataLen, SerializeIF::Endianness::BIG);
|
||||
if (result != RETURN_OK) {
|
||||
return result;
|
||||
}
|
||||
|
||||
ModeMessage::setModeMessage(dynamic_cast<CommandMessage*>(message),
|
||||
ModeMessage::CMD_MODE_COMMAND, modeCommandPacket.getMode(),
|
||||
modeCommandPacket.getSubmode());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::handleReply(
|
||||
const CommandMessage* reply, Command_t previousCommand,
|
||||
uint32_t *state, CommandMessage* optionalNextCommand,
|
||||
object_id_t objectId, bool *isStep) {
|
||||
Command_t replyId = reply->getCommand();
|
||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_FAILED;
|
||||
switch(replyId) {
|
||||
case(ModeMessage::REPLY_MODE_REPLY): {
|
||||
result = prepareModeReply(reply, objectId);
|
||||
break;
|
||||
}
|
||||
case(ModeMessage::REPLY_WRONG_MODE_REPLY): {
|
||||
result = prepareWrongModeReply(reply, objectId);
|
||||
break;
|
||||
}
|
||||
case(ModeMessage::REPLY_CANT_REACH_MODE): {
|
||||
result = prepareCantReachModeReply(reply, objectId);
|
||||
break;
|
||||
}
|
||||
case(ModeMessage::REPLY_MODE_INFO):
|
||||
result = INVALID_REPLY;
|
||||
break;
|
||||
default:
|
||||
result = RETURN_FAILED;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareModeReply(
|
||||
const CommandMessage *reply, object_id_t objectId) {
|
||||
ModePacket modeReplyPacket(objectId,
|
||||
ModeMessage::getMode(reply),
|
||||
ModeMessage::getSubmode(reply));
|
||||
return sendTmPacket(Subservice::REPLY_MODE_REPLY, &modeReplyPacket);
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareWrongModeReply(
|
||||
const CommandMessage *reply, object_id_t objectId) {
|
||||
ModePacket wrongModeReply(objectId, ModeMessage::getMode(reply),
|
||||
ModeMessage::getSubmode(reply));
|
||||
return sendTmPacket(Subservice::REPLY_WRONG_MODE_REPLY, &wrongModeReply);
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareCantReachModeReply(
|
||||
const CommandMessage *reply, object_id_t objectId) {
|
||||
CantReachModePacket cantReachModePacket(objectId,
|
||||
ModeMessage::getCantReachModeReason(reply));
|
||||
return sendTmPacket(Subservice::REPLY_CANT_REACH_MODE,
|
||||
&cantReachModePacket);
|
||||
}
|
||||
#include "CService200ModeCommanding.h"
|
||||
#include "servicepackets/Service200Packets.h"
|
||||
|
||||
#include "../modes/HasModesIF.h"
|
||||
#include "../serviceinterface/ServiceInterfaceStream.h"
|
||||
#include "../serialize/SerialLinkedListAdapter.h"
|
||||
#include "../modes/ModeMessage.h"
|
||||
|
||||
CService200ModeCommanding::CService200ModeCommanding(object_id_t objectId,
|
||||
uint16_t apid, uint8_t serviceId):
|
||||
CommandingServiceBase(objectId, apid, serviceId,
|
||||
NUMBER_OF_PARALLEL_COMMANDS,COMMAND_TIMEOUT_SECONDS) {}
|
||||
|
||||
CService200ModeCommanding::~CService200ModeCommanding() {}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::isValidSubservice(uint8_t subservice) {
|
||||
switch(subservice) {
|
||||
case(Subservice::COMMAND_MODE_COMMAND):
|
||||
case(Subservice::COMMAND_MODE_READ):
|
||||
case(Subservice::COMMAND_MODE_ANNCOUNCE):
|
||||
return RETURN_OK;
|
||||
default:
|
||||
return AcceptsTelecommandsIF::INVALID_SUBSERVICE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::getMessageQueueAndObject(
|
||||
uint8_t subservice, const uint8_t *tcData, size_t tcDataLen,
|
||||
MessageQueueId_t *id, object_id_t *objectId) {
|
||||
if(tcDataLen < sizeof(object_id_t)) {
|
||||
return CommandingServiceBase::INVALID_TC;
|
||||
}
|
||||
SerializeAdapter::deSerialize(objectId, &tcData, &tcDataLen,
|
||||
SerializeIF::Endianness::BIG);
|
||||
|
||||
return checkInterfaceAndAcquireMessageQueue(id,objectId);
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::checkInterfaceAndAcquireMessageQueue(
|
||||
MessageQueueId_t* messageQueueToSet, object_id_t* objectId) {
|
||||
HasModesIF * destination = objectManager->get<HasModesIF>(*objectId);
|
||||
if(destination == nullptr) {
|
||||
return CommandingServiceBase::INVALID_OBJECT;
|
||||
|
||||
}
|
||||
|
||||
*messageQueueToSet = destination->getCommandQueue();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareCommand(
|
||||
CommandMessage* message,uint8_t subservice, const uint8_t *tcData,
|
||||
size_t tcDataLen, uint32_t *state, object_id_t objectId) {
|
||||
ModePacket modeCommandPacket;
|
||||
ReturnValue_t result = modeCommandPacket.deSerialize(&tcData,
|
||||
&tcDataLen, SerializeIF::Endianness::BIG);
|
||||
if (result != RETURN_OK) {
|
||||
return result;
|
||||
}
|
||||
|
||||
ModeMessage::setModeMessage(dynamic_cast<CommandMessage*>(message),
|
||||
ModeMessage::CMD_MODE_COMMAND, modeCommandPacket.getMode(),
|
||||
modeCommandPacket.getSubmode());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::handleReply(
|
||||
const CommandMessage* reply, Command_t previousCommand,
|
||||
uint32_t *state, CommandMessage* optionalNextCommand,
|
||||
object_id_t objectId, bool *isStep) {
|
||||
Command_t replyId = reply->getCommand();
|
||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_FAILED;
|
||||
switch(replyId) {
|
||||
case(ModeMessage::REPLY_MODE_REPLY): {
|
||||
result = prepareModeReply(reply, objectId);
|
||||
break;
|
||||
}
|
||||
case(ModeMessage::REPLY_WRONG_MODE_REPLY): {
|
||||
result = prepareWrongModeReply(reply, objectId);
|
||||
break;
|
||||
}
|
||||
case(ModeMessage::REPLY_CANT_REACH_MODE): {
|
||||
result = prepareCantReachModeReply(reply, objectId);
|
||||
break;
|
||||
}
|
||||
case(ModeMessage::REPLY_MODE_INFO):
|
||||
result = INVALID_REPLY;
|
||||
break;
|
||||
default:
|
||||
result = RETURN_FAILED;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareModeReply(
|
||||
const CommandMessage *reply, object_id_t objectId) {
|
||||
ModePacket modeReplyPacket(objectId,
|
||||
ModeMessage::getMode(reply),
|
||||
ModeMessage::getSubmode(reply));
|
||||
return sendTmPacket(Subservice::REPLY_MODE_REPLY, &modeReplyPacket);
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareWrongModeReply(
|
||||
const CommandMessage *reply, object_id_t objectId) {
|
||||
ModePacket wrongModeReply(objectId, ModeMessage::getMode(reply),
|
||||
ModeMessage::getSubmode(reply));
|
||||
return sendTmPacket(Subservice::REPLY_WRONG_MODE_REPLY, &wrongModeReply);
|
||||
}
|
||||
|
||||
ReturnValue_t CService200ModeCommanding::prepareCantReachModeReply(
|
||||
const CommandMessage *reply, object_id_t objectId) {
|
||||
CantReachModePacket cantReachModePacket(objectId,
|
||||
ModeMessage::getCantReachModeReason(reply));
|
||||
return sendTmPacket(Subservice::REPLY_CANT_REACH_MODE,
|
||||
&cantReachModePacket);
|
||||
}
|
||||
|
Reference in New Issue
Block a user