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