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