WORD GSM_SendDataToSms(WORD aSender, WORD aReceiver, WORD aCommand, WORD aDataLength, BYTE *aData)

WORD	GSM_SendDataToSms(WORD aSender, WORD aReceiver, WORD aCommand, WORD aDataLength, BYTE *aData)
{
 WORD	index, k, j;
 char *p;
 float	f;
 WORD_VAL	wvTemp;
 BYTE i,m;

 strcpy((char*)Gsm.CommandData,GSMCommand[mcCMGS]);  Gsm.ActualCommand = mcCMGS;  strcat((char*)Gsm.CommandData, "\"");  strcat((char*)Gsm.CommandData, TableAddressSMS[IndexAddressElement[DesElement.IndexDCIDreceiver][0]].TelNumber);  strcat((char*)Gsm.CommandData, "\"\r");  strcpy((char*)Sms.RxBuff[0].Message, TableNameDcidSMS[DesElement.IndexDCIDsender].Text); // kto hlasi  strcat((char*)Sms.RxBuff[0].Message, ": "); // aka sprava  wvTemp.byte.HB = DCID[0][0];  wvTemp.byte.LB = DCID[0][1];  if(aCommand & ERROR_FLAG){   for(k=0; k<NUM_ANSWERS_EVENTS_SMS; k++){    if(TableAnswerSMS[k].Answer == SA_ERROR) break;   }   if(k == NUM_ANSWERS_EVENTS_SMS) API_Error(wvTemp.Val, ERR_GSM_SendDataToSms_NO_COMMAND);   wvTemp.byte.HB = aData[9];   wvTemp.byte.LB = aData[10];   for(j=0; j<NUM_ERRORS_SMS; j++){    if(wvTemp.Val == TableErrorSMS[j].Error) break;   }   if(j == NUM_ERRORS_SMS) j=0xffff;   if(j != 0xffff) strcat((char*)Sms.RxBuff[0].Message, TableErrorSMS[j].Text); // chyba chybneho SMS prikazu   else{    strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[k].Text); // chyba    p = (char*)Sms.RxBuff[0].Message + strlen((char*)Sms.RxBuff[0].Message);    sprintf( p, " %d ", wvTemp.Val );   }  }  else{   for(index=0; index<NUM_ANSWERS_EVENTS_SMS; index++){    if(TableAnswerSMS[index].Answer == aCommand && (TableAnswerSMS[index].Element == IndexAddressElement[DesElement.IndexDCIDsender][2] ||     TableAnswerSMS[index].Element == ALL_ELEMENTS)) break;   }   wvTemp.byte.HB = DCID[0][0];   wvTemp.byte.LB = DCID[0][1];   if(index == NUM_ANSWERS_EVENTS_SMS){    for(k=0; k<NUM_ANSWERS_EVENTS_SMS; k++){     if(TableAnswerSMS[k].Answer == SA_ERROR) break;    }    if(k == NUM_ANSWERS_EVENTS_SMS) API_Error(wvTemp.Val, ERR_GSM_SendDataToSms_NO_COMMAND);    wvTemp.Val = ERR_GSM_SendSmsToData_NO_ANSWER;    strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[k].Text); // chyba    p = (char*)Sms.RxBuff[0].Message + strlen((char*)Sms.RxBuff[0].Message);    sprintf( p, " %d ", wvTemp.Val );   }   else{    switch(aCommand){     case BA_GET_PROTOCOL_VERSION:      break;     case BA_GET_DESCRIPTION:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);               strncat((char*)Sms.RxBuff[0].Message, aData, aDataLength);      for(j=0; j<strlen((char*)Sms.RxBuff[0].Message); j++){       if(Sms.RxBuff[0].Message[j] == '|') Sms.RxBuff[0].Message[j] = '*';      }      break;     case BA_SET_TIME:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);      break;     case BA_GET_TIME:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);      break;     case BA_SET_ALARM:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);      break;     case BA_GET_ALARM:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);      for(i=1, m=10; i<9; i++, m+=10){                if(aData[m+9] == 1) sprintf((char*)Sms.RxBuff[0].Message + strlen((char*)Sms.RxBuff[0].Message), "%d,%02d:%02d:00*", i, aData[m+4], aData[m+5]);      }      break;     case BA_GET_SIGNAL_QUALITY:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);               p = (char*)Sms.RxBuff[0].Message + strlen((char*)Sms.RxBuff[0].Message);               sprintf(p, "%.1f", (float) ((100 * (WORD)aData[0]) / 32));               strcat(p, "% ");      break;     case BA_EVENTS_ON:     case BA_EVENTS_OFF:     case BA_DISABLE_ALARM:     case BA_SUMMER_WINTER_TIME_ENABLE:     case BA_SUMMER_WINTER_TIME_DISABLE:     case BA_NTP_ENABLE:     case BA_NTP_DISABLE:     case BA_SET_NTP_SERVER:     case BA_SET_TIME_ZONE:     case BA_RESET:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);               break;     case BA_UPDATE_SAVE:     case BA_UPDATE_NO_SAVE:               strcat((char*)Sms.RxBuff[0].Message, TableAnswerSMS[index].Text);      break;     default:      GSM_CreateSmsAnswer(aCommand, aData, aDataLength, index, Sms.RxBuff[0].Message);      break;    }   }  }  index = strlen((char*)Sms.RxBuff[0].Message);  Sms.RxBuff[0].Message[index] = 26; //ctrl+Z; SUB  Sms.RxBuff[0].Message[index+1] = '\0';  ModemGsm.Signal.Control.SendCommand = TRUE;  ModemGsm.Signal.Control.SendSms = TRUE;  ModemGsm.Signal.Control.Process = TRUE;  return ERR_OK; }