@@ -205,24 +205,32 @@ SimStatus ArduinoCellular::getSimStatus(){
205
205
this ->debugStream ->println (" SIM Status: " + String (simStatus));
206
206
}
207
207
208
- if (modem. getSimStatus () == 0 ) {
208
+ if (simStatus == 0 ) {
209
209
return SimStatus::SIM_ERROR;
210
- } else if (modem. getSimStatus () == 1 ) {
210
+ } else if (simStatus == 1 ) {
211
211
return SimStatus::SIM_READY;
212
- } else if (modem. getSimStatus () == 2 ) {
212
+ } else if (simStatus == 2 ) {
213
213
return SimStatus::SIM_LOCKED;
214
- } else if (modem. getSimStatus () == 3 ) {
214
+ } else if (simStatus == 3 ) {
215
215
return SimStatus::SIM_ANTITHEFT_LOCKED;
216
216
} else {
217
217
return SimStatus::SIM_ERROR;
218
218
}
219
219
}
220
220
221
221
bool 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 ());
224
228
}
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 ;
226
234
}
227
235
228
236
bool ArduinoCellular::awaitNetworkRegistration (){
0 commit comments