Esempio n. 1
0
TickType Os_SysTickGetElapsedValue(uint32 preValue ) {
	uint32 curr;
	uint32 max;

	curr = ARM_TIMER_VAL;
	max  = ARM_TIMER_LOD;
	return Os_CounterDiff((max - curr),preValue,max);
}
Esempio n. 2
0
/** @req 4.1.2/SWS_Os_00392 */
StatusType GetElapsedValue ( CounterType counter_id, TickRefType val, TickRefType elapsed_val)
{
    StatusType rv = E_OK;
    OsCounterType *cPtr;
    TickType currTick = 0;
    TickType max;

    cPtr = Os_CounterGet(counter_id);

    /** @req SWS_Os_00381 */
    OS_VALIDATE(IsCounterValid(counter_id),E_OS_ID);
    max = Os_CounterGetMaxValue(cPtr);

    /** @req SWS_Os_00391 */
    OS_VALIDATE( *val <= max,E_OS_VALUE );

#if	(OS_APPLICATION_CNT > 1) && (OS_NUM_CORES > 1)
    if (Os_ApplGetCore(cPtr->applOwnerId) != GetCoreID()) {
        StatusType status = Os_NotifyCore(Os_ApplGetCore(cPtr->applOwnerId),
                                          OSServiceId_GetElapsedValue,
                                          counter_id,
                                          (int32_t)val,
                                          (int32_t)elapsed_val);
        return status;
    }
#endif

    GetCounterValue(counter_id,&currTick);

    /** @req OS382 */
    *elapsed_val = Os_CounterDiff(currTick,*val,max);

    /** @req OS460 */
    *val = currTick;

    COUNTER_STD_END;
}