int aos_event_get ( aos_event_t *event, unsigned int flags, unsigned char opt, unsigned int *actl_flags, unsigned int timeout ) { kstat_t ret; if (event == NULL) { return -EINVAL; } if (timeout == AOS_WAIT_FOREVER) { ret = krhino_event_get(event->hdl, flags, opt, actl_flags, RHINO_WAIT_FOREVER); } else { ret = krhino_event_get(event->hdl, flags, opt, actl_flags, MS2TICK(timeout)); } if (ret == RHINO_SUCCESS) { return 0; } ERRNO_MAPPING(ret); }
A_STATUS a_event_clear(A_EVENT *pEvent, A_EVENT_FLAGS flagsToClear) { assert(pEvent); #if 0 A_EVENT_FLAGS actl_flags = flagsToClear; if (pEvent->clearMode == kEventAutoClear) { krhino_event_get(&pEvent->event, flagsToClear, RHINO_OR_CLEAR, &actl_flags, RHINO_NO_WAIT); } else { krhino_event_get(&pEvent->event, flagsToClear, RHINO_OR, &actl_flags, RHINO_NO_WAIT); } #else A_EVENT_FLAGS flag = ~flagsToClear; krhino_event_set(&pEvent->event, flag, RHINO_AND); #endif return A_OK; }
A_STATUS a_event_wait( A_EVENT *pEvent, A_EVENT_FLAGS flagsToWait, boolean waitAll, uint32_t timeout, A_EVENT_FLAGS *setFlags) { assert(pEvent); if (pEvent->clearMode == kEventAutoClear) { if (waitAll) { krhino_event_get(&pEvent->event, flagsToWait, RHINO_AND_CLEAR, setFlags, timeout); } else { krhino_event_get(&pEvent->event, flagsToWait, RHINO_OR_CLEAR, setFlags, timeout); } } else { if (waitAll) { krhino_event_get(&pEvent->event, flagsToWait, RHINO_AND, setFlags, timeout); } else { krhino_event_get(&pEvent->event, flagsToWait, RHINO_OR, setFlags, timeout); } } return A_OK; }