Beispiel #1
0
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);
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}