void GSM_TimeSynch(BYTE i)
{
REAL_TIME mRtcc;
BYTE Year, Month, Day, Hour, Minute, Second;
RTCC_TIME_STAMP TStamp;
DWORD dwTemp, dwTemp2;
bTemp[0] = Gsm.ReceiveData[i];
bTemp[1] = Gsm.ReceiveData[i+1];
bTemp[2] = '\0';
Year = (BYTE)atoi(bTemp);
bTemp[0] = Gsm.ReceiveData[i+3];
bTemp[1] = Gsm.ReceiveData[i+4];
bTemp[2] = '\0';
Month = (BYTE)atoi(bTemp);
bTemp[0] = Gsm.ReceiveData[i+6];
bTemp[1] = Gsm.ReceiveData[i+7];
bTemp[2] = '\0';
Day = (BYTE)atoi(bTemp);
bTemp[0] = Gsm.ReceiveData[i+9];
bTemp[1] = Gsm.ReceiveData[i+10];
bTemp[2] = '\0';
Hour = (BYTE)atoi(bTemp);
bTemp[0] = Gsm.ReceiveData[i+12];
bTemp[1] = Gsm.ReceiveData[i+13];
bTemp[2] = '\0';
Minute = (BYTE)atoi(bTemp);
bTemp[0] = Gsm.ReceiveData[i+15];
bTemp[1] = Gsm.ReceiveData[i+16];
bTemp[2] = '\0';
Second = (BYTE)atoi(bTemp);
mRtcc.Date.Year = Year;
mRtcc.Date.Month = Month;
mRtcc.Date.Day = Day;
mRtcc.Time.Hour = Hour;
mRtcc.Time.Minute = Minute;
mRtcc.Time.Second = Second;
TStamp = RTCC_StructToTimeStamp( mRtcc );
dwTemp = TStamp.Date.Val * 24 + (TStamp.Time.Val / 60/60); //hodiny
dwTemp2 = TStamp.Time.Val / 60/60;
dwTemp2 = TStamp.Time.Val - dwTemp2 * 60 * 60;
bTemp[0] = Gsm.ReceiveData[i+18];
bTemp[1] = Gsm.ReceiveData[i+19];
bTemp[2] = '\0';
if(Gsm.ReceiveData[i+17] == '-') dwTemp -= (atoi(bTemp) / 4);
else dwTemp += (atoi(bTemp) / 4);
TStamp.Date.Val = dwTemp/24;
TStamp.Time.Val = 3600 * (dwTemp - TStamp.Date.Val * 24) + dwTemp2; //sec
mRtcc = RTCC_TimeStampToStruct( TStamp );
Year = mRtcc.Date.Year;
Month = mRtcc.Date.Month;
Day = mRtcc.Date.Day;
Hour = mRtcc.Time.Hour;
Minute = mRtcc.Time.Minute;
Second = mRtcc.Time.Second;
API_SetRTCC(Year, Month, Day, Hour, Minute, Second);
ModemGsm.Signal.Control.TimeSynchro = TRUE;
AppFlag.bits.start = TRUE;
OsSocket.TickTask[RTX_MODEM_WATCHDOG] = TickRtccGet();
OsSocket.TickTask[RTX_DISPLAY_SHOW] = TickRtccGet();
OsSocket.TickTask[RTX_DISPLAY_ALARM] = TickRtccGet();
}