WORD GSM_SendDataToSmtp(WORD aSender, WORD aReceiver, WORD aCommand, WORD aDataLength, BYTE *aData)
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; }