PLOC Handler Update #234
@ -258,80 +258,6 @@ void PlocMPSoCHandler::fillCommandAndReplyMap() {
|
|||||||
this->insertInReplyMap(mpsoc::TM_CAM_CMD_RPT, 2, nullptr, SpacePacket::PACKET_MAX_SIZE);
|
this->insertInReplyMap(mpsoc::TM_CAM_CMD_RPT, 2, nullptr, SpacePacket::PACKET_MAX_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t PlocMPSoCHandler::enableReplyInReplyMap(DeviceCommandMap::iterator command,
|
|
||||||
uint8_t expectedReplies, bool useAlternateId,
|
|
||||||
DeviceCommandId_t alternateReplyID) {
|
|
||||||
ReturnValue_t result = RETURN_OK;
|
|
||||||
|
|
||||||
uint8_t enabledReplies = 0;
|
|
||||||
|
|
||||||
switch (command->first) {
|
|
||||||
case mpsoc::TC_MEM_WRITE:
|
|
||||||
case mpsoc::TC_FLASHDELETE:
|
|
||||||
case mpsoc::TC_REPLAY_START:
|
|
||||||
case mpsoc::TC_REPLAY_STOP:
|
|
||||||
case mpsoc::TC_DOWNLINK_PWR_ON:
|
|
||||||
case mpsoc::TC_DOWNLINK_PWR_OFF:
|
|
||||||
case mpsoc::TC_REPLAY_WRITE_SEQUENCE:
|
|
||||||
case mpsoc::TC_MODE_REPLAY:
|
|
||||||
enabledReplies = 2;
|
|
||||||
break;
|
|
||||||
case mpsoc::TC_MEM_READ: {
|
|
||||||
enabledReplies = 3;
|
|
||||||
result = DeviceHandlerBase::enableReplyInReplyMap(command, enabledReplies, true,
|
|
||||||
mpsoc::TM_MEMORY_READ_REPORT);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::debug << "PlocMPSoCHandler::enableReplyInReplyMap: Reply with id "
|
|
||||||
<< mpsoc::TM_MEMORY_READ_REPORT << " not in replyMap" << std::endl;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case mpsoc::OBSW_RESET_SEQ_COUNT:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sif::debug << "PlocMPSoCHandler::enableReplyInReplyMap: Unknown command id" << std::endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Every command causes at least one acknowledgment and one execution report. Therefore both
|
|
||||||
* replies will be enabled here.
|
|
||||||
*/
|
|
||||||
result =
|
|
||||||
DeviceHandlerBase::enableReplyInReplyMap(command, enabledReplies, true, mpsoc::ACK_REPORT);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::debug << "PlocMPSoCHandler::enableReplyInReplyMap: Reply with id " << mpsoc::ACK_REPORT
|
|
||||||
<< " not in replyMap" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
result =
|
|
||||||
DeviceHandlerBase::enableReplyInReplyMap(command, enabledReplies, true, mpsoc::EXE_REPORT);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::debug << "PlocMPSoCHandler::enableReplyInReplyMap: Reply with id " << mpsoc::EXE_REPORT
|
|
||||||
<< " not in replyMap" << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (command->first) {
|
|
||||||
case mpsoc::TC_REPLAY_WRITE_SEQUENCE: {
|
|
||||||
DeviceReplyIter iter = deviceReplyMap.find(mpsoc::EXE_REPORT);
|
|
||||||
// Overwrite delay cycles because replay write sequence command can required up to
|
|
||||||
// 30 seconds for execution
|
|
||||||
iter->second.delayCycles = mpsoc::TC_WRITE_SEQ_EXECUTION_DELAY;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case mpsoc::TC_DOWNLINK_PWR_ON: {
|
|
||||||
DeviceReplyIter iter = deviceReplyMap.find(mpsoc::EXE_REPORT);
|
|
||||||
//
|
|
||||||
iter->second.delayCycles = mpsoc::TC_DOWNLINK_PWR_ON;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t PlocMPSoCHandler::scanForReply(const uint8_t* start, size_t remainingSize,
|
ReturnValue_t PlocMPSoCHandler::scanForReply(const uint8_t* start, size_t remainingSize,
|
||||||
DeviceCommandId_t* foundId, size_t* foundLen) {
|
DeviceCommandId_t* foundId, size_t* foundLen) {
|
||||||
ReturnValue_t result = RETURN_OK;
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
@ -168,12 +168,12 @@ void PlocMemoryDumper::commandNextMramDump(ActionId_t dumpCommand) {
|
|||||||
tempStartAddress = mram.startAddress;
|
tempStartAddress = mram.startAddress;
|
||||||
tempEndAddress = mram.startAddress + MAX_MRAM_DUMP_SIZE;
|
tempEndAddress = mram.startAddress + MAX_MRAM_DUMP_SIZE;
|
||||||
mram.startAddress += MAX_MRAM_DUMP_SIZE;
|
mram.startAddress += MAX_MRAM_DUMP_SIZE;
|
||||||
mram.lastStartAddress = tempStartAddress;
|
|
||||||
} else {
|
} else {
|
||||||
tempStartAddress = mram.startAddress;
|
tempStartAddress = mram.startAddress;
|
||||||
tempEndAddress = mram.endAddress;
|
tempEndAddress = mram.endAddress;
|
||||||
mram.startAddress = mram.endAddress;
|
mram.startAddress = mram.endAddress;
|
||||||
}
|
}
|
||||||
|
mram.lastStartAddress = tempStartAddress;
|
||||||
|
|
||||||
MemoryParams params(tempStartAddress, tempEndAddress);
|
MemoryParams params(tempStartAddress, tempEndAddress);
|
||||||
|
|
||||||
|
@ -1550,6 +1550,7 @@ ReturnValue_t PlocSupervisorHandler::parseMramPackets(const uint8_t* packet, siz
|
|||||||
*foundLen = remainingSize;
|
*foundLen = remainingSize;
|
||||||
disableAllReplies();
|
disableAllReplies();
|
||||||
bufferTop = 0;
|
bufferTop = 0;
|
||||||
|
sif::info << "PlocSupervisorHandler::parseMramPackets: Can not find MRAM packet in space packet buffer" << std::endl;
|
||||||
return SupvReturnValuesIF::MRAM_PACKET_PARSING_FAILURE;
|
return SupvReturnValuesIF::MRAM_PACKET_PARSING_FAILURE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1634,6 +1635,7 @@ void PlocSupervisorHandler::increaseExpectedMramReplies(DeviceCommandId_t id) {
|
|||||||
ReturnValue_t PlocSupervisorHandler::checkMramPacketApid() {
|
ReturnValue_t PlocSupervisorHandler::checkMramPacketApid() {
|
||||||
uint16_t apid = (spacePacketBuffer[0] << 8 | spacePacketBuffer[1]) & supv::APID_MASK;
|
uint16_t apid = (spacePacketBuffer[0] << 8 | spacePacketBuffer[1]) & supv::APID_MASK;
|
||||||
if (apid != supv::APID_MRAM_DUMP_TM) {
|
if (apid != supv::APID_MRAM_DUMP_TM) {
|
||||||
|
sif::warning << "PlocSupervisorHandler::checkMramPacketApid: 0x" << std::hex << apid << std::endl;
|
||||||
return SupvReturnValuesIF::NO_MRAM_PACKET;
|
return SupvReturnValuesIF::NO_MRAM_PACKET;
|
||||||
}
|
}
|
||||||
return APERIODIC_REPLY;
|
return APERIODIC_REPLY;
|
||||||
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit 0cb9dbefca140a184d899fb525ce0fcf3b0fcd2d
|
Subproject commit ad53f3e9bb526bf030905d24781af57ae6ac5b01
|
Loading…
Reference in New Issue
Block a user