38 static uint32 gEventHandlerIndex;
45 pEventHandler_Events = (event_t *)OSA_MemAlloc(
sizeof(event_t));
46 OSA_EventCreate(pEventHandler_Events, kEventAutoClear);
47 OSA_EventClear(pEventHandler_Events,
ALL_EVENTS);
50 OSA_SemaCreate(&sema_ev_access, 1);
53 gEventHandlerIndex = 0;
58 eventHandlerCallbacks[i].
Signal = (1 << i);
60 eventHandlerCallbacks[i].
pCallback = NULL;
61 eventHandlerCallbacks[i].
pUserData = NULL;
68 int32 firstFreeIndex = -1;
71 OSA_SemaWait(&sema_ev_access, OSA_WAIT_FOREVER);
75 if ((eventHandlerCallbacks[i].pCallback == NULL) &&
76 (eventHandlerCallbacks[i].pUserData == NULL))
83 if (firstFreeIndex >= 0)
86 eventHandlerCallbacks[firstFreeIndex].
pCallback = pCallback;
87 eventHandlerCallbacks[firstFreeIndex].
pUserData = pUserData;
91 OSA_SemaPost(&sema_ev_access);
94 return firstFreeIndex;
103 OSA_SemaWait(&sema_ev_access, OSA_WAIT_FOREVER);
108 eventHandlerCallbacks[token].
pCallback = NULL;
109 eventHandlerCallbacks[token].
pUserData = NULL;
117 OSA_SemaPost(&sema_ev_access);
128 OSA_SemaWait(&sema_ev_access, OSA_WAIT_FOREVER);
130 if ((token >= 0) && (token <
MAX_EVENTS) && (eventHandlerCallbacks[token].pCallback != NULL))
132 status = eventHandlerCallbacks[token].
Signal;
140 OSA_SemaPost(&sema_ev_access);
154 OSA_EventWait(pEventHandler_Events,
ALL_EVENTS,
FALSE, OSA_WAIT_FOREVER, &callbacks);
157 OSA_SemaWait(&sema_ev_access, OSA_WAIT_FOREVER);
162 if (callbacks & (1 << cbIndex))
164 if (eventHandlerCallbacks[cbIndex].pCallback != NULL)
166 eventHandlerCallbacks[cbIndex].
pCallback(eventHandlerCallbacks[cbIndex].pUserData);
173 OSA_SemaPost(&sema_ev_access);
int32 isf_EventHandler_RegisterEvent(eventCallback_t *pCallback, void *pUserData)
void EventHandler_task(void)
int32 isf_EventHandler_GetSignal(uint32 token)
semaphore_t sema_ev_access
void( eventCallback_t)(void *)
int32 isf_EventHandler_UnregisterEvent(uint32 token)
event_t * pEventHandler_Events
This is user's event module. Put your event handler code here.
eventCallback_t * pCallback
void isf_EventHandler_Init(void)