@@ -205,24 +205,32 @@ SimStatus ArduinoCellular::getSimStatus(){
205205 this ->debugStream ->println (" SIM Status: " + String (simStatus));
206206 }
207207
208- if (modem. getSimStatus () == 0 ) {
208+ if (simStatus == 0 ) {
209209 return SimStatus::SIM_ERROR;
210- } else if (modem. getSimStatus () == 1 ) {
210+ } else if (simStatus == 1 ) {
211211 return SimStatus::SIM_READY;
212- } else if (modem. getSimStatus () == 2 ) {
212+ } else if (simStatus == 2 ) {
213213 return SimStatus::SIM_LOCKED;
214- } else if (modem. getSimStatus () == 3 ) {
214+ } else if (simStatus == 3 ) {
215215 return SimStatus::SIM_ANTITHEFT_LOCKED;
216216 } else {
217217 return SimStatus::SIM_ERROR;
218218 }
219219}
220220
221221bool ArduinoCellular::unlockSIM (String pin){
222- if (this ->debugStream != nullptr ){
223- this ->debugStream ->println (" Unlocking SIM..." );
222+ int simStatus = modem.getSimStatus ();
223+ if (simStatus == SIM_LOCKED) {
224+ if (this ->debugStream != nullptr ){
225+ this ->debugStream ->println (" Unlocking SIM..." );
226+ }
227+ return modem.simUnlock (pin.c_str ());
224228 }
225- return modem.simUnlock (pin.c_str ());
229+ else if (simStatus == SIM_ERROR || simStatus == SIM_ANTITHEFT_LOCKED) {
230+ return false ;
231+ }
232+ /* SIM is ready */
233+ return true ;
226234}
227235
228236bool ArduinoCellular::awaitNetworkRegistration (){
0 commit comments