start fixing dev handler ack handling
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
@ -60,11 +60,6 @@ ReturnValue_t PlocSupervisorHandler::initialize() {
|
||||
sif::warning << "PlocSupervisorHandler::initialize: Invalid supervisor helper" << std::endl;
|
||||
return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||
}
|
||||
// result = supvHelper->setComIF(uartComIf);
|
||||
// if (result != returnvalue::OK) {
|
||||
// return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||
// }
|
||||
// supvHelper->setComCookie(comCookie);
|
||||
|
||||
result = eventSubscription();
|
||||
if (result != returnvalue::OK) {
|
||||
@ -928,25 +923,22 @@ ReturnValue_t PlocSupervisorHandler::handleAckReport(const uint8_t* data) {
|
||||
using namespace supv;
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
|
||||
tmReader.setData(data, SIZE_ACK_REPORT);
|
||||
if(tmReader.checkCrc() != returnvalue::OK) {
|
||||
sif::error << "PlocSupervisorHandler::handleAckReport: CRC failure" << std::endl;
|
||||
nextReplyId = supv::NONE;
|
||||
replyRawReplyIfnotWiretapped(data, supv::SIZE_ACK_REPORT);
|
||||
triggerEvent(SUPV_CRC_FAILURE_EVENT);
|
||||
sendFailureReport(supv::ACK_REPORT, result::CRC_FAILURE);
|
||||
disableAllReplies();
|
||||
return returnvalue::OK;
|
||||
}
|
||||
AcknowledgmentReport ack(tmReader);
|
||||
result = ack.parse();
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
// TODO: Fix
|
||||
|
||||
// AcknowledgmentReport ack(data, SIZE_ACK_REPORT);
|
||||
// result = ack.checkSize();
|
||||
// if (result != returnvalue::OK) {
|
||||
// return result;
|
||||
// }
|
||||
//
|
||||
// result = ack.checkCrc();
|
||||
// if (result != returnvalue::OK) {
|
||||
// sif::error << "PlocSupervisorHandler::handleAckReport: CRC failure" << std::endl;
|
||||
// nextReplyId = supv::NONE;
|
||||
// replyRawReplyIfnotWiretapped(data, supv::SIZE_ACK_REPORT);
|
||||
// triggerEvent(SUPV_CRC_FAILURE_EVENT);
|
||||
// sendFailureReport(supv::ACK_REPORT, SupvReturnValuesIF::CRC_FAILURE);
|
||||
// disableAllReplies();
|
||||
// return returnvalue::OK;
|
||||
// }
|
||||
//
|
||||
// result = ack.checkApid();
|
||||
//
|
||||
// switch (result) {
|
||||
|
@ -159,17 +159,6 @@ bool PlocSupvHelper::handleUartReception() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// ReturnValue_t PlocSupvHelper::setComIF(UartComIF* uartComIF_) {
|
||||
// if (uartComIF_ == nullptr) {
|
||||
// sif::warning << "PlocSupvHelper::initialize: Provided invalid uart com if" << std::endl;
|
||||
// return returnvalue::FAILED;
|
||||
// }
|
||||
// //uartComIF = uartComIF_;
|
||||
// return returnvalue::OK;
|
||||
// }
|
||||
|
||||
// void PlocSupvHelper::setComCookie(CookieIF* comCookie_) { comCookie = comCookie_; }
|
||||
|
||||
ReturnValue_t PlocSupvHelper::startUpdate(std::string file, uint8_t memoryId,
|
||||
uint32_t startAddress) {
|
||||
supv::UpdateParams params;
|
||||
@ -432,8 +421,7 @@ ReturnValue_t PlocSupvHelper::writeUpdatePackets() {
|
||||
update.bytesWritten);
|
||||
return result;
|
||||
}
|
||||
// TODO: Fix
|
||||
// result = handlePacketTransmission(packet);
|
||||
result = encodeAndSendPacket(packet.getFullPacket(), packet.getFullPacketLen());
|
||||
if (result != returnvalue::OK) {
|
||||
triggerEvent(WRITE_MEMORY_FAILED, buildProgParams1(progPercent, update.sequenceCount),
|
||||
update.bytesWritten);
|
||||
@ -728,12 +716,7 @@ ReturnValue_t PlocSupvHelper::calcImageCrc() {
|
||||
|
||||
ReturnValue_t PlocSupvHelper::handleCheckMemoryCommand() {
|
||||
ReturnValue_t result = returnvalue::OK;
|
||||
// TODO: Fix
|
||||
resetSpParams();
|
||||
// Will hold status report for later processing
|
||||
// std::array<uint8_t, 32> statusReportBuf{};
|
||||
// supv::UpdateStatusReport updateStatusReport(tmBuf.data(), tmBuf.size());
|
||||
// Verification of update write procedure
|
||||
supv::CheckMemory packet(spParams);
|
||||
result = packet.buildPacket(update.memoryId, update.startAddress, update.fullFileSize);
|
||||
if (result != returnvalue::OK) {
|
||||
@ -766,8 +749,7 @@ ReturnValue_t PlocSupvHelper::handleCheckMemoryCommand() {
|
||||
} else if (retval == -1) {
|
||||
return returnvalue::FAILED;
|
||||
}
|
||||
} else if (not checkReplyReceived) {
|
||||
// if (serviceId == )
|
||||
} else if (checkReplyReceived) {
|
||||
retval = handleExeAckReception(packet, serviceId, packetLen);
|
||||
if (retval == 1) {
|
||||
break;
|
||||
@ -775,6 +757,26 @@ ReturnValue_t PlocSupvHelper::handleCheckMemoryCommand() {
|
||||
return returnvalue::FAILED;
|
||||
}
|
||||
}
|
||||
} else if (tmReader.getApid() == Apid::MEM_MAN) {
|
||||
if (ackReceived) {
|
||||
supv::UpdateStatusReport report(tmReader);
|
||||
result = report.parse();
|
||||
if (result != returnvalue::OK) {
|
||||
return result;
|
||||
}
|
||||
if (update.crcShouldBeChecked) {
|
||||
result = report.verifyCrc(update.crc);
|
||||
if (result != returnvalue::OK) {
|
||||
sif::warning
|
||||
<< "PlocSupvHelper::handleCheckMemoryCommand: CRC failure. Expected CRC 0x"
|
||||
<< std::setfill('0') << std::hex << std::setw(4)
|
||||
<< static_cast<uint16_t>(update.crc) << " but received CRC 0x" << std::setw(4)
|
||||
<< report.getCrc() << std::dec << std::endl;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
checkReplyReceived = true;
|
||||
}
|
||||
} else {
|
||||
pushIpcData(decodedBuf.data(), packetLen);
|
||||
decodedRingBuf.deleteData(packetLen);
|
||||
|
@ -277,17 +277,6 @@ class PlocSupvHelper : public DeviceCommunicationIF,
|
||||
int handleAckReception(supv::TcBase& tc, uint8_t serviceId, size_t packetLen);
|
||||
int handleExeAckReception(supv::TcBase& tc, uint8_t serviceId, size_t packetLen);
|
||||
|
||||
// ReturnValue_t sendCommand(ploc::SpTcBase& packet);
|
||||
/**
|
||||
* @brief Function which reads form the communication interface
|
||||
*
|
||||
* @param data Pointer to buffer where read data will be written to
|
||||
* @param raedBytes Actual number of bytes read
|
||||
* @param requestBytes Number of bytes to read
|
||||
*/
|
||||
// ReturnValue_t receive(uint8_t* data, size_t* readBytes, size_t requestBytes);
|
||||
ReturnValue_t handleAck();
|
||||
ReturnValue_t handleExe(uint32_t timeout = 1000);
|
||||
/**
|
||||
* @brief Handles reading of TM packets from the communication interface
|
||||
*
|
||||
|
Reference in New Issue
Block a user