Beispiel #1
0
nOS_Error nOS_SemCreate (nOS_Sem *sem, nOS_SemCounter count, nOS_SemCounter max)
{
    nOS_Error   err;

#if (NOS_CONFIG_SAFE > 0)
    if (sem == NULL) {
        err = NOS_E_INV_OBJ;
    } else if (sem->e.type != NOS_EVENT_INVALID) {
        err = NOS_E_INV_OBJ;
    } else if (count > max) {
        err = NOS_E_INV_VAL;
    } else
#endif
    {
        nOS_EnterCritical();
#if (NOS_CONFIG_SAFE > 0)
        nOS_CreateEvent((nOS_Event*)sem, NOS_EVENT_SEM);
#else
        nOS_CreateEvent((nOS_Event*)sem);
#endif
        sem->count = count;
        sem->max = max;
        nOS_LeaveCritical();
        err = NOS_OK;
    }

    return err;
}
Beispiel #2
0
nOS_Error nOS_FlagCreate (nOS_Flag *flag, nOS_FlagBits flags)
{
    nOS_Error       err;
    nOS_StatusReg   sr;

#if (NOS_CONFIG_SAFE > 0)
    if (flag == NULL) {
        err = NOS_E_INV_OBJ;
    } else
#endif
    {
        nOS_EnterCritical(sr);
#if (NOS_CONFIG_SAFE > 0)
        if (flag->e.type != NOS_EVENT_INVALID) {
            err = NOS_E_INV_OBJ;
        } else
#endif
        {
#if (NOS_CONFIG_SAFE > 0)
            nOS_CreateEvent((nOS_Event*)flag, NOS_EVENT_FLAG);
#else
            nOS_CreateEvent((nOS_Event*)flag);
#endif
            flag->flags = flags;

            err = NOS_OK;
        }
        nOS_LeaveCritical(sr);
    }

    return err;
}
Beispiel #3
0
void nOS_InitTime (void)
{
#if (NOS_CONFIG_TIME_TICKS_PER_SECOND > 1)
    _timePrescaler = 0;
#endif
    _timeCounter = 0;
#if (NOS_CONFIG_TIME_WAIT_ENABLE > 0)
 #if (NOS_CONFIG_SAFE > 0)
    nOS_CreateEvent(&_timeEvent, NOS_EVENT_BASE);
 #else
    nOS_CreateEvent(&_timeEvent);
 #endif
#endif
}
Beispiel #4
0
nOS_Error nOS_QueueCreate (nOS_Queue *queue, void *buffer, uint8_t bsize, nOS_QueueCounter bmax)
{
    nOS_Error       err;
    nOS_StatusReg   sr;

#if (NOS_CONFIG_SAFE > 0)
    if (queue == NULL) {
        err = NOS_E_INV_OBJ;
    } else if (bsize == 0) {
        err = NOS_E_INV_VAL;
    } else if ((buffer != NULL) && (bmax == 0)) {
        err = NOS_E_INV_VAL;
    } else if ((buffer == NULL) && (bmax > 0)) {
        err = NOS_E_INV_VAL;
    } else
#endif
    {
        nOS_EnterCritical(sr);
#if (NOS_CONFIG_SAFE > 0)
        if (queue->e.type != NOS_EVENT_INVALID) {
            err = NOS_E_INV_OBJ;
        } else
#endif
        {
#if (NOS_CONFIG_SAFE > 0)
            nOS_CreateEvent((nOS_Event*)queue, NOS_EVENT_QUEUE);
#else
            nOS_CreateEvent((nOS_Event*)queue);
#endif
            queue->buffer = (uint8_t*)buffer;
            queue->bsize  = bsize;
            queue->bcount = 0;
            queue->bmax   = bmax;
            queue->r      = 0;
            queue->w      = 0;

            err = NOS_OK;
        }
        nOS_LeaveCritical(sr);
    }

    return err;
}