|
|
|
@ -91,6 +91,8 @@ ReturnValue_t PlocMpsocHandler::initialize() {
|
|
|
|
|
|
|
|
|
|
void PlocMpsocHandler::performOperationHook() {
|
|
|
|
|
if (commandIsPending and cmdCountdown.hasTimedOut()) {
|
|
|
|
|
sif::warning << "PlocMpsocHandler: Command " << getPendingCommand() << " has timed out"
|
|
|
|
|
<< std::endl;
|
|
|
|
|
commandIsPending = false;
|
|
|
|
|
// TODO: Better returnvalue?
|
|
|
|
|
cmdDoneHandler(false, returnvalue::FAILED);
|
|
|
|
@ -215,7 +217,6 @@ ReturnValue_t PlocMpsocHandler::buildNormalDeviceCommand(DeviceCommandId_t* id)
|
|
|
|
|
if (not commandIsPending and not specialComHelperExecuting) {
|
|
|
|
|
*id = mpsoc::TC_GET_HK_REPORT;
|
|
|
|
|
commandIsPending = true;
|
|
|
|
|
cmdCountdown.resetTimer();
|
|
|
|
|
return buildCommandFromCommand(*id, nullptr, 0);
|
|
|
|
|
}
|
|
|
|
|
return NOTHING_TO_SEND;
|
|
|
|
@ -352,6 +353,11 @@ ReturnValue_t PlocMpsocHandler::scanForReply(const uint8_t* start, size_t remain
|
|
|
|
|
|
|
|
|
|
SpacePacketReader spacePacket;
|
|
|
|
|
spacePacket.setReadOnlyData(start, remainingSize);
|
|
|
|
|
if (DEBUG_MPSOC_COMMUNICATION) {
|
|
|
|
|
sif::debug << "RECV MPSOC packet. APID 0x" << std::hex << std::setw(3) << spacePacket.getApid()
|
|
|
|
|
<< std::dec << " Size " << spacePacket.getFullPacketLen() << " SSC "
|
|
|
|
|
<< spacePacket.getSequenceCount() << std::endl;
|
|
|
|
|
}
|
|
|
|
|
if (spacePacket.isNull()) {
|
|
|
|
|
return returnvalue::FAILED;
|
|
|
|
|
}
|
|
|
|
@ -467,7 +473,7 @@ void PlocMpsocHandler::setNormalDatapoolEntriesInvalid() {
|
|
|
|
|
hkReport.setValidity(false, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint32_t PlocMpsocHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 10000; }
|
|
|
|
|
uint32_t PlocMpsocHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 15000; }
|
|
|
|
|
|
|
|
|
|
ReturnValue_t PlocMpsocHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
|
|
|
|
LocalDataPoolManager& poolManager) {
|
|
|
|
@ -700,6 +706,13 @@ ReturnValue_t PlocMpsocHandler::finishTcPrep(mpsoc::TcBase& tcBase) {
|
|
|
|
|
rawPacket = commandBuffer;
|
|
|
|
|
rawPacketLen = tcBase.getFullPacketLen();
|
|
|
|
|
sequenceCount++;
|
|
|
|
|
|
|
|
|
|
if (DEBUG_MPSOC_COMMUNICATION) {
|
|
|
|
|
sif::debug << "SEND MPSOC packet. APID 0x" << std::hex << std::setw(3) << tcBase.getApid()
|
|
|
|
|
<< " Size " << std::dec << tcBase.getFullPacketLen() << " SSC "
|
|
|
|
|
<< tcBase.getSeqCount() << std::endl;
|
|
|
|
|
}
|
|
|
|
|
cmdCountdown.resetTimer();
|
|
|
|
|
return returnvalue::OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1223,10 +1236,12 @@ void PlocMpsocHandler::dataReceived(ActionId_t actionId, const uint8_t* data, ui
|
|
|
|
|
|
|
|
|
|
void PlocMpsocHandler::completionSuccessfulReceived(ActionId_t actionId) {
|
|
|
|
|
if (actionId == supv::ACK_REPORT) {
|
|
|
|
|
sif::warning
|
|
|
|
|
<< "PlocMpsocHandler::completionSuccessfulReceived: Only received ACK report. Consider "
|
|
|
|
|
"increasing the MPSoC boot timer."
|
|
|
|
|
<< std::endl;
|
|
|
|
|
// I seriously don't know why this happens..
|
|
|
|
|
// sif::warning
|
|
|
|
|
// << "PlocMpsocHandler::completionSuccessfulReceived: Only received ACK report. Consider
|
|
|
|
|
// "
|
|
|
|
|
// "increasing the MPSoC boot timer."
|
|
|
|
|
// << std::endl;
|
|
|
|
|
} else if (actionId != supv::EXE_REPORT) {
|
|
|
|
|
sif::warning << "PlocMpsocHandler::completionSuccessfulReceived: Did not expect the action "
|
|
|
|
|
<< "ID " << actionId << std::endl;
|
|
|
|
@ -1490,7 +1505,7 @@ LocalPoolDataSetBase* PlocMpsocHandler::getDataSetHandle(sid_t sid) {
|
|
|
|
|
|
|
|
|
|
bool PlocMpsocHandler::dontCheckQueue() {
|
|
|
|
|
// The TC and TMs need to be handled strictly sequentially, so while a command is pending,
|
|
|
|
|
// more specifically while replies are still expected, do not check the queue.s
|
|
|
|
|
// more specifically while replies are still expected, do not check the queue.
|
|
|
|
|
return commandIsPending;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|