From faee071edcfb7a2ea873694691d142d069b3615b Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Thu, 19 Aug 2021 14:34:24 +0200 Subject: [PATCH] bugfixes, more tests --- bsp_q7s/boardtest/Q7STestTask.cpp | 13 ++++++++++++- bsp_q7s/core/CoreController.cpp | 23 +++++++++++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/bsp_q7s/boardtest/Q7STestTask.cpp b/bsp_q7s/boardtest/Q7STestTask.cpp index c254e138..7b2d1748 100644 --- a/bsp_q7s/boardtest/Q7STestTask.cpp +++ b/bsp_q7s/boardtest/Q7STestTask.cpp @@ -144,7 +144,17 @@ ReturnValue_t Q7STestTask::initialize() { void Q7STestTask::testProtHandler() { bool opPerformed = false; - ReturnValue_t result = coreController->checkAndSetBootCopyProtection( + ReturnValue_t result = HasReturnvaluesIF::RETURN_OK; + // If any chips are unlocked, lock them here + result = coreController->checkAndSetBootCopyProtection( + CoreController::Chip::ALL_CHIP, CoreController::Copy::ALL_COPY, true, + opPerformed, true); + if(result != HasReturnvaluesIF::RETURN_OK) { + sif::warning << "Q7STestTask::testProtHandler: Op failed" << std::endl; + } + + // unlock own copy + result = coreController->checkAndSetBootCopyProtection( CoreController::Chip::SELF_CHIP, CoreController::Copy::SELF_COPY, false, opPerformed, true); if(result != HasReturnvaluesIF::RETURN_OK) { @@ -158,6 +168,7 @@ void Q7STestTask::testProtHandler() { utility::handleSystemError(retval, "Q7STestTask::testProtHandler"); } + // lock own copy result = coreController->checkAndSetBootCopyProtection( CoreController::Chip::SELF_CHIP, CoreController::Copy::SELF_COPY, true, opPerformed, true); diff --git a/bsp_q7s/core/CoreController.cpp b/bsp_q7s/core/CoreController.cpp index 89f9d450..3d1adb3b 100644 --- a/bsp_q7s/core/CoreController.cpp +++ b/bsp_q7s/core/CoreController.cpp @@ -908,6 +908,8 @@ ReturnValue_t CoreController::checkAndSetBootCopyProtection(Chip targetChip, Cop bool allCopies = false; bool selfChip = false; bool selfCopy = false; + protOperationPerformed = false; + switch(targetChip) { case(Chip::ALL_CHIP): { allChips = true; @@ -946,6 +948,7 @@ ReturnValue_t CoreController::checkAndSetBootCopyProtection(Chip targetChip, Cop for(uint8_t arrIdx = 0; arrIdx < protArray.size(); arrIdx++) { bool currentProt = protArray[arrIdx]; std::ostringstream oss; + bool performOp = false; if(protect == currentProt) { continue; } @@ -983,34 +986,34 @@ ReturnValue_t CoreController::checkAndSetBootCopyProtection(Chip targetChip, Cop int result = 0; if(allChips and allCopies) { - protOperationPerformed = true; - result = std::system(oss.str().c_str()); + performOp = true; } else if(allChips) { if((selfCopy and CURRENT_COPY == targetCopy) or (currentCopy == targetCopy)) { - protOperationPerformed = true; - result = std::system(oss.str().c_str()); + performOp = true; } } else if(allCopies) { if((selfChip and CURRENT_COPY == targetCopy) or (currentChip == targetChip)) { - protOperationPerformed = true; - result = std::system(oss.str().c_str()); + performOp = true; } } else if(selfChip and (CURRENT_CHIP == targetChip)) { - protOperationPerformed = true; - result = std::system(oss.str().c_str()); + performOp = true; } else if(selfCopy and (CURRENT_COPY == targetCopy)) { - protOperationPerformed = true; - result = std::system(oss.str().c_str()); + performOp = true; } if(result != 0) { utility::handleSystemError(result, "CoreController::checkAndSetBootCopyProtection"); } + if(performOp) { + protOperationPerformed = true; + sif::info << "Executing command: " << oss.str() << std::endl; + result = std::system(oss.str().c_str()); + } } if(protOperationPerformed and updateProtFile) { updateProtInfo();