WORD API_SendPacket(WORD _Sender, WORD _Receiver, WORD _Command, BYTE * _ActualBuff, WORD _DataLength)
{
DWORD_VAL dwvTemp;
BYTE i;
if(ROUTING_Path(_Sender, _Receiver)){
API_Error(Packet.Receiver.Val, ERR_API_SendPacket_RECEIVER_PATH);
return ERR_API_SendPacket_RECEIVER_PATH; // vyhlada index
}
switch(DesElement.TypeCom){
case PHYSICAL_LAYER_THIS: //tento projekt
Packet.Sender.Val = _Sender;
Packet.Receiver.Val = _Receiver;
Packet.Command.Val = _Command;
Packet.DataLength.Val = _DataLength;
for(i=0; i<Packet.DataLength.Val; i++) Packet.bData[i] = _ActualBuff[i];
Packet.ValidateDataReceive = 1;
break;
#if defined(GSM_SMS)
case PHYSICAL_LAYER_GSM_SMS:
if(!ModemGsm.Semaphore.Control.disable_sms){
ModemGsm.Semaphore.Control.disable_sms = FALSE;
if(GSM_SendDataToSms(_Sender, _Receiver, _Command, _DataLength, _ActualBuff)){
return ERR_SendPacket_SEND_DATA;
}
}
break;
#endif
#if defined(GPRS_HTTP)
case PHYSICAL_LAYER_GPRS_HTTP:
if(ModemGsm.Semaphore.Control.enable_web){
if(GSM_SendDataToHttp(_Sender, _Receiver, _Command, _DataLength, _ActualBuff)){
return ERR_SendPacket_SEND_DATA;
}
}
// else return ERR_SendPacket_UNSUPPORTED_PHYSICAL_LAYER;
break;
#endif
#if defined(GPRS_SMTP)
case PHYSICAL_LAYER_GPRS_SMTP:
if(ModemGsm.Semaphore.Control.enable_email){
if(GSM_SendDataToSmtp(_Sender, _Receiver, _Command, _DataLength, _ActualBuff)){
return ERR_SendPacket_SEND_DATA;
}
}
// else return ERR_SendPacket_UNSUPPORTED_PHYSICAL_LAYER;
break;
#endif
#if defined(GSM_CALL)
case PHYSICAL_LAYER_GSM_CALL:
if(!ModemGsm.Semaphore.Control.disable_sms){
ModemGsm.Semaphore.Control.disable_sms = FALSE;
if(GSM_SendDataToCall(_Sender, _Receiver, _Command, _DataLength, _ActualBuff)){
return ERR_SendPacket_SEND_DATA;
}
}
break;
#endif
#if defined(USB_CDC) && defined(UART_5)
case PHYSICAL_LAYER_USB_CDC:
// UartE.TxErrStatus.Bits.EBUFF = FALSE;
#endif
#if defined(RS232)
case PHYSICAL_LAYER_RS232:
#endif
#if defined(RS232) || (defined(USB_CDC) && defined(UART_5))
if(SERIAL_COM_SendDataToCom(_Sender, _Receiver, _Command, _DataLength, _ActualBuff)){
return ERR_SendPacket_SEND_DATA;
}
break;
#endif
default:
return ERR_SendPacket_UNSUPPORTED_PHYSICAL_LAYER;
}
return ERR_OK;
}