WORD GSM_AttachGprs(char * apn, char * login, char * password)
WORD GSM_AttachGprs(char * apn, char * login, char * password) { WORD i; if(ModemGsm.Signal.Control.RcvMessage){ if(GSM_CompareMessage(GSMResponse[mrCONNECT_OK])){ Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; } else if(GSM_CompareMessage(GSMResponse[mrIP])){ Gsm.State = TCP_SET_CONTEXT; ModemGsm.Signal.Control.RcvMessage = FALSE; } else if(GSM_CompareMessage(GSMResponse[mrCONNECT_FAIL])){ Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; } else if(GSM_CompareMessage(GSMResponse[mrPDP])){
Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = FALSE; ModemGsm.Signal.Control.RcvMessage = FALSE; } else if(GSM_CompareMessage(GSMResponse[mrQNTP])){ for(i=0; i<strlen((char*)Gsm.ReceiveData); i++){ if(Gsm.ReceiveData[i] == ':'){ i+=2; break; } } if(Gsm.ReceiveData[(i)] == '0'){ Gsm.State = GET_CCLK; ModemGsm.Signal.Control.RcvMessage = FALSE; } else{ Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = TRUE; ModemGsm.Semaphore.Control.GprsRegister = TRUE; ModemGsm.Signal.Control.RcvMessage = FALSE; return 0; } } else if(GSM_CompareMessage(GSMResponse[mrOK])){ //prikaz bol uspesne vykonany switch(Gsm.ActualCommand){ case mcQIMUX: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_MODE; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIMODE: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_SET_CONTEXT; //TCP_GETIP; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIDNSGIP: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIFGCNT: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_DNS_IP; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIDNSIP: DelayMs(250); ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_SET_APN; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQICSGP: ModemGsm.Signal.Control.CommandOK = TRUE; ModemGsm.Signal.Control.RcvMessage = FALSE; if(InternalRtccFlag.bits.ntp) Gsm.State = TCP_SET_NTP; //TCP_REG_APP; else{ Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = TRUE; ModemGsm.Semaphore.Control.GprsRegister = TRUE; return 0; } break; case mcQISTAT: ModemGsm.Signal.Control.CommandOK = TRUE; ModemGsm.Signal.Control.RcvMessage = FALSE; if(InternalRtccFlag.bits.ntp) Gsm.State = TCP_SET_NTP; else{ Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = TRUE; ModemGsm.Semaphore.Control.GprsRegister = TRUE; return 0; } break; case mcQIACTinit: ModemGsm.Signal.Control.CommandOK = TRUE; ModemGsm.Signal.Control.RcvMessage = FALSE; if(InternalRtccFlag.bits.ntp) Gsm.State = TCP_SET_NTP; else{ Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = TRUE; ModemGsm.Semaphore.Control.GprsRegister = TRUE; return 0; } break; case mcQNTP_S: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; //TCP_SET_RTC_NTP; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIREGAPP:
ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = GPRS_ACTIVATE; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcCCLK:
ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = TRUE; ModemGsm.Semaphore.Control.GprsRegister = TRUE; ModemGsm.Signal.Control.RcvMessage = FALSE; return 0; } } else if(GSM_CompareMessage(GSMResponse[mrERROR])){ //chyba switch(Gsm.ActualCommand){ case mcQICSGP: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = FALSE; ModemGsm.Signal.Control.Process = FALSE; ModemGsm.Signal.Control.RcvMessage = FALSE; return 1; case mcQNTP_S: case mcCCLK: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Semaphore.Control.GprsAttach = TRUE; ModemGsm.Semaphore.Control.GprsRegister = TRUE; ModemGsm.Signal.Control.RcvMessage = FALSE; return 1; case mcQIMUX: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_MODE; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIMODE: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_SET_CONTEXT; //TCP_GETIP; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIDNSGIP: case mcQIFGCNT: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_DNS_IP; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQIDNSIP: DelayMs(250); ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = TCP_SET_APN; ModemGsm.Signal.Control.RcvMessage = FALSE; break; case mcQISTAT:
case mcQIREGAPP: case mcQIACTinit: ModemGsm.Signal.Control.CommandOK = TRUE; Gsm.State = NONE; ModemGsm.Signal.Control.RcvMessage = FALSE; break; } } } switch(Gsm.State){ case TCP_DISABLE_MUX: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQIMUX]); Gsm.ActualCommand = mcQIMUX; ModemGsm.Signal.Control.SendCommand = TRUE; break; case TCP_MODE: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQIMODE]); Gsm.ActualCommand = mcQIMODE; ModemGsm.Signal.Control.SendCommand = TRUE; break; case TCP_DNS_IP: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQIDNSIP]); Gsm.ActualCommand = mcQIDNSIP; ModemGsm.Signal.Control.SendCommand = TRUE; break; case TCP_GETIP: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQIDNSGIP]); Gsm.ActualCommand = mcQIDNSGIP; ModemGsm.Signal.Control.SendCommand = TRUE; break; case TCP_SET_CONTEXT: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQIFGCNT]); Gsm.ActualCommand = mcQIFGCNT; ModemGsm.Signal.Control.SendCommand = TRUE; break; case TCP_SET_APN: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQICSGP]); strcat((char*)Gsm.CommandData, "1,\""); strcat((char*)Gsm.CommandData, TableApnSettingGPRS[Gsm.Operator].APN); if(strlen((const char*)TableApnSettingGPRS[Gsm.Operator].Name) != 0){ strcat((char*)Gsm.CommandData, "\",\""); strcat((char*)Gsm.CommandData, TableApnSettingGPRS[Gsm.Operator].Name); } if(strlen((const char*)TableApnSettingGPRS[Gsm.Operator].Password) != 0){ strcat((char*)Gsm.CommandData, "\",\""); strcat((char*)Gsm.CommandData, TableApnSettingGPRS[Gsm.Operator].Password); } strcat((char*)Gsm.CommandData, "\"\r"); Gsm.ActualCommand = mcQICSGP; ModemGsm.Signal.Control.SendCommand = TRUE; break; case TCP_REG_APP: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQIREGAPP]); Gsm.ActualCommand = mcQIREGAPP; ModemGsm.Signal.Control.SendCommand = TRUE; break; case TCP_SET_NTP: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQNTP_S]); strcat((char*)Gsm.CommandData, "\""); strcat((char*)Gsm.CommandData, TableNtpSettingGPRS[0].NtpServer); strcat((char*)Gsm.CommandData, "\",123\r"); Gsm.ActualCommand = mcQNTP_S; ModemGsm.Signal.Control.SendCommand = TRUE; break; case GPRS_STATUS: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQISTAT]); Gsm.ActualCommand = mcQISTAT; ModemGsm.Signal.Control.SendCommand = TRUE; break; case GPRS_ACTIVATE_INIT: Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcQIACTinit]); Gsm.ActualCommand = mcQIACTinit; ModemGsm.Signal.Control.SendCommand = TRUE; break; case GET_CCLK:
Gsm.State = NONE; strcpy((char*)Gsm.CommandData, GSMCommand[mcCCLK]); Gsm.ActualCommand = mcCCLK; ModemGsm.Signal.Control.SendCommand = TRUE; break; } return 1; }