WORD GSM_SmsConfigure(void)
{
WORD i;
if(ModemGsm.Signal.Control.RcvMessage){
if(GSM_CompareMessage(GSMResponse[mrOK])){ //prikaz bol uspesne vykonany
switch(Gsm.ActualCommand){
case mcCSMP:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = SET_EVENT_SMS;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
case mcCMGF:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = SET_MEMORY;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
case mcCNMI:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = SMS_ASCII_MODE;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
case mcCPMS:
ModemGsm.Signal.Control.CommandOK = TRUE;
if(!OsSocket.status.semaphore.begin){
Gsm.State = NONE;
ModemGsm.Signal.Control.RcvMessage = FALSE;
return 0;
}
else Gsm.State = DELETE_ALL_MESSAGE;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
case mcCMGDa:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = NONE;
OsSocket.status.semaphore.begin = FALSE;
for(i=0; i<MAX_RECEIVE_SMS; i++) Sms.NumRcvSms[i] = 0;
ModemGsm.Signal.Control.RcvMessage = FALSE;
return 0;
}
}
else if(GSM_CompareMessage(GSMResponse[mrERROR])){ //chyba
switch(Gsm.ActualCommand){
case mcCMGDa:
ModemGsm.Signal.Control.CommandOK = TRUE;
for(i=0; i<MAX_RECEIVE_SMS; i++) Sms.NumRcvSms[i] = 0;
Gsm.State = NONE;
ModemGsm.Signal.Control.RcvMessage = FALSE;
return 0;
case mcCPMS:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = SET_MEMORY;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
case mcCSMP:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = SET_EVENT_SMS;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
case mcCNMI:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = SMS_ASCII_MODE;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
case mcCMGF:
ModemGsm.Signal.Control.CommandOK = TRUE;
Gsm.State = SET_MEMORY;
ModemGsm.Signal.Control.RcvMessage = FALSE;
break;
}
}
}
switch(Gsm.State){ // osetrovanie stavov
case SET_SMS:
strcpy((char*)Gsm.CommandData, GSMCommand[mcCSMP]);
Gsm.ActualCommand = mcCSMP;
ModemGsm.Signal.Control.SendCommand = TRUE;
Gsm.State = NONE;
break;
case SET_EVENT_SMS:
strcpy((char*)Gsm.CommandData, GSMCommand[mcCNMI]);
Gsm.ActualCommand = mcCNMI;
ModemGsm.Signal.Control.SendCommand = TRUE;
Gsm.State = NONE;
break;
case SMS_ASCII_MODE:
strcpy((char*)Gsm.CommandData, GSMCommand[mcCMGF]);
Gsm.ActualCommand = mcCMGF;
ModemGsm.Signal.Control.SendCommand = TRUE;
Gsm.State = NONE;
break;
case SET_MEMORY:
strcpy((char*)Gsm.CommandData, GSMCommand[mcCPMS]);
Gsm.ActualCommand = mcCPMS;
ModemGsm.Signal.Control.SendCommand = TRUE;
Gsm.State = NONE;
break;
case DELETE_ALL_MESSAGE:
strcpy((char*)Gsm.CommandData, GSMCommand[mcCMGDa]);
Gsm.ActualCommand = mcCMGDa;
ModemGsm.Signal.Control.SendCommand = TRUE;
Gsm.State = NONE;
break;
}
return 1;
}