From 4d615aced626a7c2f24c7849022c47fb06fb4f72 Mon Sep 17 00:00:00 2001 From: maidnl Date: Tue, 28 Jan 2025 16:54:30 +0100 Subject: [PATCH] avoid to unlock the Sim if already unlocked --- src/ArduinoCellular.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/ArduinoCellular.cpp b/src/ArduinoCellular.cpp index 1c9c3b6..cf362b6 100644 --- a/src/ArduinoCellular.cpp +++ b/src/ArduinoCellular.cpp @@ -205,13 +205,13 @@ SimStatus ArduinoCellular::getSimStatus(){ this->debugStream->println("SIM Status: " + String(simStatus)); } - if (modem.getSimStatus() == 0) { + if (simStatus == 0) { return SimStatus::SIM_ERROR; - } else if (modem.getSimStatus() == 1) { + } else if (simStatus == 1) { return SimStatus::SIM_READY; - } else if (modem.getSimStatus() == 2) { + } else if (simStatus == 2) { return SimStatus::SIM_LOCKED; - } else if (modem.getSimStatus() == 3) { + } else if (simStatus == 3) { return SimStatus::SIM_ANTITHEFT_LOCKED; } else { return SimStatus::SIM_ERROR; @@ -219,10 +219,18 @@ SimStatus ArduinoCellular::getSimStatus(){ } bool ArduinoCellular::unlockSIM(String pin){ - if(this->debugStream != nullptr){ - this->debugStream->println("Unlocking SIM..."); + int simStatus = modem.getSimStatus(); + if(simStatus == SIM_LOCKED) { + if(this->debugStream != nullptr){ + this->debugStream->println("Unlocking SIM..."); + } + return modem.simUnlock(pin.c_str()); } - return modem.simUnlock(pin.c_str()); + else if(simStatus == SIM_ERROR || simStatus == SIM_ANTITHEFT_LOCKED) { + return false; + } + /* SIM is ready */ + return true; } bool ArduinoCellular::awaitNetworkRegistration(){