WORD API_PutEvent(WORD _Sender, WORD _Msg, BYTE * _Data, WORD _DataLength)

WORD API_PutEvent(WORD _Sender, WORD _Msg, BYTE * _Data, WORD _DataLength)
{
 WORD i;
 WORD w;
#if defined(FIREBOX) || defined(EVENT_EXTERNAL_RAM)
 far EVENT *ps;
#else
 EVENT *ps;
#endif
 REAL_TIME mRtccSw;
//	for(w=0; w<MAX_EVENT_ALL; w++){
//		if(TableEventDataPointer[w].Event.Val == _Msg)	break;
//	}
//	if(w == MAX_EVENT_ALL)	return ERR_OK;	
 EventSocket.write_msg++;
 if(EventSocket.write_msg == MAX_EVENT_BUFF) EventSocket.write_msg = 0;
 ps = &Msg[EventSocket.write_msg];
 if(EventSocket.read_msg != EventSocket.write_msg){
  mRtccSw = API_GetRTCC();
  ps->Event = _Msg;
  ps->time.Time.Days= mRtccSw.Time.Days;
  ps->time.Time.Hour = mRtccSw.Time.Hour;
  ps->time.Time.Minute = mRtccSw.Time.Minute;
  ps->time.Time.Second = mRtccSw.Time.Second;
  ps->time.Time.Thousandth  = mRtccSw.Time.Thousandth;
  ps->Sender = _Sender;
  if(_DataLength >= MAX_EVENT_DATA) return ERR_PutEvent_DATA_LENGTH;
        sprintf(bTemp, "Event occurred write: Sender = %d Msg = %d\r\n", _Sender, _Msg & 0x1fff);
  UART_PutData(PRINT_TEXT, bTemp, strlen(bTemp));
  for(i=0; i<_DataLength; i++){
   ps->bData[i] = _Data[i];
//	        sprintf(bTemp, "Event occurred: Data = %d \r\n",  _Data[i]);
//			UART_PutData(PRINT_TEXT, bTemp, strlen(bTemp));
  }
  ps->DataLength = _DataLength;
  if((_Msg & 0x1fff) != 40)	OsSocket.event.signal.event = TRUE;		//ak nie je error nenastav
  return ERR_OK;
 }
 if(EventSocket.write_msg == 0) 	EventSocket.write_msg = MAX_EVENT_BUFF - 1;
 else EventSocket.write_msg--;
 return ERR_PutEvent_MSGBUFF_FULL;
}