WORD GSM_SendDataToSmtp(WORD aSender, WORD aReceiver, WORD aCommand, WORD aDataLength, BYTE *aData)
{
WORD_VAL wvTemp, wvTemp2;
WORD write_index;
WORD k,i, index;
GprsTxBuffControll.Read = Gprs.IndexReadTx;
GprsTxBuffControll.Write = Gprs.IndexWriteTx;
if(CYCLIC_BUFFER_GetFreeSpace( &GprsTxBuffControll, MAX_GPRS_BUFFER ) < (aDataLength + 8)){
//není dostatek místa ve vysílacím bufferu, ukončení funkce
return FALSE;
}
write_index = GprsTxBuffControll.Write;
strcpy(Gsm.CommandData, "***");
strcat((char*)Gsm.CommandData, TableNameDcidSMS[DesElement.IndexDCIDsender].Text);
strcat((char*)Gsm.CommandData, ": ");
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;
}
switch(aCommand){
case BA_GET_PROTOCOL_VERSION:
break;
default:
GSM_CreateSmsAnswer(aCommand, aData, aDataLength, index, Gsm.CommandData);
break;
}
wvTemp.Val = strlen(Gsm.CommandData);
Gsm.CommandData[wvTemp.Val] = 0;
wvTemp.Val++;
CYCLIC_BUFFER_Write( Gsm.CommandData, wvTemp.Val, &GprsTxBuffControll, Gprs.TxBuff, MAX_GPRS_BUFFER );
Gprs.TxBuff[write_index++] = MESSAGE_TYPE_SMTP;
if( write_index >= MAX_GPRS_BUFFER) write_index = 0;
Gprs.TxBuff[write_index++] = wvTemp.byte.HB;
if( write_index >= MAX_GPRS_BUFFER) write_index = 0;
Gprs.TxBuff[write_index] = wvTemp.byte.LB;
Gprs.IndexReadTx = GprsTxBuffControll.Read;
Gprs.IndexWriteTx = GprsTxBuffControll.Write;
ModemGsm.Semaphore.Control.SendSmtp = TRUE;
return ERR_OK;
}