Мы отрабатывали любые ситуации так, программа уходила на рестарт каждые 5минут по таймеру. Точнее она так работала, что рестарт и переинициализация модема ей не мешали работать. Поэтому никакие неответы от модема не могли ей помешать работать. Раз в 5 минут программа должна пройти через рестарт. А если не прошла, ей в этом "помогал" строжевой таймер

Схемотехники, как позже выяснилось сделали плохое питание на модем. И во время обмена данными, модем подвисал из за невозможности передачи данных по ВЧ, при этом он сообщал и уровень сигнала, и регистрацию, дозвон, ну короче все, вот только реальной связи не было. В итоге пришли к вышеописанному решению. Модем при рестарте если очень надо, вплоть до выключения питания, все программно.
Еж - птица гордая. Не пнешь - не полетит.