| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- //
- // Created by macheng on 2018/5/2.
- //
- #include "event.h"
- event_data_t dw_event_g;
- int peekEvent(const event_queue* evtQueue)
- {
- return evtQueue->stEvents[evtQueue->dwEvtPeek].type; //return the type of event that is in front of the queue
- }
- void saveEvent(event_queue* evtQueue, event_data_t newEvent, uint8_t eType)
- {
- evtQueue->stSavedEvent = newEvent;
- evtQueue->stSavedEvent.type = eType;
- }
- event_data_t getSavedEvent(event_queue* evtQueue)
- {
- return evtQueue->stSavedEvent;
- }
- void putEvent(event_queue* evtQueue, event_data_t newEvent, uint8_t eType)
- {
- //newevent.eventtime = portGetTickCnt();
- newEvent.gotIt = 0 ; //newevent.eventtimeclr = 0;
- //copy event
- evtQueue->stEvents[evtQueue->dwEvtIdxIn] = newEvent;
- //set type - this makes it a new event (making sure the event data is copied before event is set as new)
- //to make sure that the get event function does not get an incomplete event
- evtQueue->stEvents[evtQueue->dwEvtIdxIn].type = eType;
- evtQueue->dwEvtIdxIn++;
- if(MAX_EVENT_NUMBER == evtQueue->dwEvtIdxIn)
- {
- evtQueue->dwEvtIdxIn = 0;
- }
- }
- event_data_t* getEvent(event_queue* evtQueue, int x)
- {
- int indexOut = evtQueue->dwEvtIdxOut;
- if (0 == evtQueue->stEvents[indexOut].type) //exit with "no event"
- {
- dw_event_g.type = 0;
- dw_event_g.typeSave = 0;
- return &dw_event_g;
- }
- //copy the event
- dw_event_g.typeSave = evtQueue->stEvents[indexOut].typeSave ;
- dw_event_g.typePend = evtQueue->stEvents[indexOut].typePend ;
- dw_event_g.rxLength = evtQueue->stEvents[indexOut].rxLength ;
- dw_event_g.timeStamp = evtQueue->stEvents[indexOut].timeStamp ;
- dw_event_g.timeStamp32l = evtQueue->stEvents[indexOut].timeStamp32l ;
- dw_event_g.timeStamp32h = evtQueue->stEvents[indexOut].timeStamp32h ;
- dw_event_g.uTimeStamp = evtQueue->stEvents[indexOut].uTimeStamp ;
- //dw_event_g.eventtime = instance_data[instance].dwevent[indexOut].eventtime ;
- //dw_event_g.eventtimeclr = instance_data[instance].dwevent[indexOut].eventtimeclr ;
- //dw_event_g.gotit = instance_data[instance].dwevent[indexOut].gotit ;
- memcpy(&dw_event_g.msgUnion, &(evtQueue->stEvents[indexOut].msgUnion), sizeof(evtQueue->stEvents[indexOut].msgUnion));
- dw_event_g.type = evtQueue->stEvents[indexOut].type ;
- evtQueue->stEvents[indexOut].gotIt = x;
- //instance_data[instance].dwevent[indexOut].eventtimeclr = portGetTickCnt();
- evtQueue->stEvents[indexOut].type = 0; //clear the event
- evtQueue->dwEvtIdxOut++;
- if(MAX_EVENT_NUMBER == evtQueue->dwEvtIdxOut) //wrap the counter
- {
- evtQueue->dwEvtIdxOut = 0;
- }
- evtQueue->dwEvtPeek = evtQueue->dwEvtIdxOut; //set the new peek value
- //if(dw_event.type) printf("get %d - in %d out %d @ %d\n", dw_event.type, instance_data[instance].dweventCntIn, instance_data[instance].dweventCntOut, ptime);
- //eventOutcount++;
- return &dw_event_g;
- }
- void clearEvents(event_queue* evtQueue)
- {
- int i = 0;
- for(i=0; i<MAX_EVENT_NUMBER; i++)
- {
- memset(&(evtQueue->stEvents[i]), 0, sizeof(event_data_t));
- }
- evtQueue->dwEvtIdxIn = 0;
- evtQueue->dwEvtIdxOut = 0;
- evtQueue->dwEvtPeek = 0;
- }
|