WORD API_SendPacket(WORD _Sender, WORD _Receiver, WORD _Command, BYTE * _ActualBuff, WORD _DataLength)

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;
}