BOOL GSM_Init(void)
{
ModemGsm.Semaphore.Control.Connect = FALSE;
if(!ModemGsm.Semaphore.Control.Enable) return TRUE;
ModemGsm.Signal.Control.ModemReady = FALSE;
ModemGsm.Semaphore.Control.Connect = TRUE;
MODEM_Init();
Gsm.State = DISCONNECT;
#if defined(GSM_SMS)
Sms.State = NONE;
#endif
ModemGsm.Signal.Control.Results = FALSE; // oddeluje odpovede od potvrdeni prikazov, ktore prichadzaju z modemu
ModemGsm.Signal.Control.CommandOK = TRUE; // je pripraceny na spracovanie dalsieho prikazu SMS
ModemGsm.Signal.Control.RcvMessage = FALSE; // prisla korektna odpoved, alebo udalost z modemu
ModemGsm.Signal.Control.RegOk = FALSE; // modem je zaregistrovany v sieti a uspesne prislo aj potvrdenie
ModemGsm.Signal.Control.SendCommand = FALSE; // nastavi povolenie posielat prikazy SMS
ModemGsm.Signal.Control.PinSet = FALSE; // PIN bol uspesne zadany
ModemGsm.Signal.Control.Process = TRUE; // blokuje spracovanie SMS, nezacne sa pocas spracovavania posielania SMS posielat ina
ModemGsm.Signal.Control.RcvDelivery = FALSE; // prisla dorucenka
ModemGsm.Signal.Control.TimeSynchro = FALSE;
ModemGsm.Semaphore.Control.watchdog = TRUE;
ModemGsm.Semaphore.Control.PrepareOn = FALSE;
ModemGsm.Semaphore.Control.CpinError = FALSE;
#if defined(GPRS_HTTP) && defined(GSM_GPRS)
ModemGsm.Semaphore.Control.SendHttp = FALSE;
ModemGsm.Semaphore.Control.GprsAttach = FALSE;
ModemGsm.Semaphore.Control.GprsRegister = FALSE;
Gprs.IndexReadTx = 0;
Gprs.IndexWriteTx = 0;
#endif
#if defined(GPRS_SMTP) && defined(GSM_GPRS)
ModemGsm.Semaphore.Control.GprsSmtpConfigure = FALSE;
ModemGsm.Semaphore.Control.SendSmtp = FALSE;
#endif
#if defined(GSM_SMS)
Sms.IndexReadRx = 0;
Sms.IndexReadTx = 0;
Sms.IndexWriteRx = 0;
Sms.IndexWriteTx = 0;
ModemGsm.Signal.Control.SmsProcess = FALSE; // povoli spracovanie prijatej SMS pre jadro
ModemGsm.Signal.Control.RcvSms = FALSE; // nastaveny ked prislo potvrdenie na predchadzajucu SMS a uz sa ma potvrdit sucasna SMS
ModemGsm.Signal.Control.InsertSms = FALSE;
ModemGsm.Signal.Control.RcvAnswerSms = FALSE;
ModemGsm.Signal.Control.SendSms = FALSE; // nastavi povolenie posielat prikazy SMS
#endif
#if defined(GSM_CALL)
ModemGsm.Semaphore.Control.alarm_call = FALSE;
Call.IndexWrite = 0;
Call.IndexRead = 0;
Call.Flag = 0;
#endif
return TRUE;
}