if(SostTransmitGSM==30)
{//проверяем регистрацию AT+CREG?
if(SostGetAT==GetATSostReady && TimerTON(&TimZadGSM))
{//отправка команды AT+CREG
#if OTLADKA!=0
putstrfifo0("Сеанс связи. Проверка регистрации в сети. Попытка ");
PutDecuFifo0(ChZapros);putstrfifo0("\r\n");
#endif
putstrfifo2("AT+CREG?\r");
StartGetATKomand();
}
if(SostGetAT==GetATSostBusy)
{//выполнение команды
Get2ATKomand(stroka1,stroka2,TimoutModemCREG);
}
if(SostGetAT==GetATSostError)
{//ошибка
ChZapros++;
if(ChZapros>=KolvoPovtorCREG)
{//ошибка модема
#if OTLADKA!=0
putstrfifo0("Сеанс связи. Нет ответа на AT+CREG\r\n");
#endif
SostTransmitGSM=250;
GlobalD.FlagiErrorGSM|=(1<<NoResponsCREG);
}
SostGetAT=GetATSostReady;
}
if(SostGetAT==GetATSostComplit)
{//команда выполнена
SostGetAT=GetATSostReady;
#if OTLADKA!=0
putstrfifo0("Сеанс связи. Ответ на AT+CREG <");
PutStrFifoM0(stroka1);putstrfifo0(">\r\n");
putstrfifo0("Сеанс связи. Ответ на AT+CREG <");
PutStrFifoM0(stroka2);putstrfifo0(">\r\n");
#endif
if(SravStrok(stroka1,strCREG,20))
{
#if OTLADKA!=0
putstrfifo0("Сеанс связи. Ответ на AT+CREG. Ништяк!\r\n");
#endif
SostTransmitGSM=40;
TimerTONStart(&TimZadGSM,TimoutModemCGATT);
ChZapros=0;//счетчик повторов
}
else
{
#if OTLADKA!=0
putstrfifo0("Сеанс связи. Ответ на AT+CREG. Косяк!\r\n");
#endif
TimerTONStart(&TimZadGSM,TimoutModemCREG);
ChZapros++;// счетчик запросов
if(ChZapros>=KolvoPovtorCREG)
{
SostTransmitGSM=250;
GlobalD.FlagiErrorGSM|=(1<<NoResponsCREG);//Установить флаг ошибки
}
}
}
}