Hello,
I am using the GSMShield on a custom pcb. This works perfectly when I was developing the code, one of the tests is how the code responds when the GSM signal is lost. Another test is how the board responds with poor GSM signal. This is where a problem occurs.
When the GSM signal is lost I reboot the board. When the board starts with a poor/no signal the gsm.begin() function hangs. (I previously had problems with the power supply but I solved these).
After some digging arround in the code I found in GSM2SoftSerial::recv() a call to mgr->manageMsg(thisHead, cb.getTail()); when the buffer is full, line feed or space.
In GSM3ShieldV1ModemCore::manageMsg I find the implementation which specifies that is we are not debugging we are going to manage the message in the interrupt.
When we manage the response GSM3ShieldV1AccessProvider::manageResponse is called which calls GSM3ShieldV1AccessProvider::ModemConfigurationContinue which will send a new request.
Since this chain happens during an interrupt the normal code will not run untill a good GSM signal is detected. This looks like gsm.begin() hangs.
Can somebody confirm this behaviour? Is there a good work around?
thanks