mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 11:09:01 +01:00 
			
		
		
		
	Added uxTimerGetReloadMode() API function.
This commit is contained in:
		
							parent
							
								
									c472c5b04f
								
							
						
					
					
						commit
						9456992c1f
					
				@ -124,6 +124,7 @@ TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
BaseType_t MPU_xTimerCreateTimerTask( void ) FREERTOS_SYSTEM_CALL;
 | 
			
		||||
 | 
			
		||||
@ -129,6 +129,7 @@ only for ports that are using the MPU. */
 | 
			
		||||
		#define xTimerPendFunctionCall					MPU_xTimerPendFunctionCall
 | 
			
		||||
		#define pcTimerGetName							MPU_pcTimerGetName
 | 
			
		||||
		#define vTimerSetReloadMode						MPU_vTimerSetReloadMode
 | 
			
		||||
		#define uxTimerGetReloadMode					MPU_uxTimerGetReloadMode
 | 
			
		||||
		#define xTimerGetPeriod							MPU_xTimerGetPeriod
 | 
			
		||||
		#define xTimerGetExpiryTime						MPU_xTimerGetExpiryTime
 | 
			
		||||
		#define xTimerGenericCommand					MPU_xTimerGenericCommand
 | 
			
		||||
 | 
			
		||||
@ -1234,7 +1234,7 @@ const char * pcTimerGetName( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; /*lint
 | 
			
		||||
/**
 | 
			
		||||
 * void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload );
 | 
			
		||||
 *
 | 
			
		||||
 * Updates a timer to be either an autoreload timer, in which case the timer
 | 
			
		||||
 * Updates a timer to be either an auto-reload timer, in which case the timer
 | 
			
		||||
 * automatically resets itself each time it expires, or a one shot timer, in
 | 
			
		||||
 * which case the timer will only expire once unless it is manually restarted.
 | 
			
		||||
 *
 | 
			
		||||
@ -1248,6 +1248,20 @@ const char * pcTimerGetName( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; /*lint
 | 
			
		||||
 */
 | 
			
		||||
void vTimerSetReloadMode( TimerHandle_t xTimer, const UBaseType_t uxAutoReload ) PRIVILEGED_FUNCTION;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* UBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer );
 | 
			
		||||
*
 | 
			
		||||
* Queries a timer to determine if it is an auto-reload timer, in which case the timer
 | 
			
		||||
* automatically resets itself each time it expires, or a one shot timer, in
 | 
			
		||||
* which case the timer will only expire once unless it is manually restarted.
 | 
			
		||||
*
 | 
			
		||||
* @param xTimer The handle of the timer being queried.
 | 
			
		||||
*
 | 
			
		||||
* @return If the timer is an auto-reload timer then pdTRUE is returned, otherwise
 | 
			
		||||
* pdFALSE is returned.
 | 
			
		||||
*/
 | 
			
		||||
UBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * TickType_t xTimerGetPeriod( TimerHandle_t xTimer );
 | 
			
		||||
 *
 | 
			
		||||
 | 
			
		||||
@ -1054,6 +1054,19 @@ BaseType_t xRunningPrivileged = xPortRaisePrivilege();
 | 
			
		||||
#endif
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#if( configUSE_TIMERS == 1 )
 | 
			
		||||
	UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer )
 | 
			
		||||
	{
 | 
			
		||||
	BaseType_t xRunningPrivileged = xPortRaisePrivilege();
 | 
			
		||||
	UBaseType_t uxReturn;
 | 
			
		||||
 | 
			
		||||
		uxReturn = uxTimerGetReloadMode( xTimer );
 | 
			
		||||
		vPortResetPrivilege( xRunningPrivileged );
 | 
			
		||||
		return uxReturn;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#if( configUSE_TIMERS == 1 )
 | 
			
		||||
	const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
@ -3654,6 +3654,7 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
 | 
			
		||||
		if( xIndex < configNUM_THREAD_LOCAL_STORAGE_POINTERS )
 | 
			
		||||
		{
 | 
			
		||||
			pxTCB = prvGetTCBFromHandle( xTaskToSet );
 | 
			
		||||
			configASSERT( pxTCB != NULL );
 | 
			
		||||
			pxTCB->pvThreadLocalStoragePointers[ xIndex ] = pvValue;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -182,7 +182,7 @@ static BaseType_t prvInsertTimerInActiveList( Timer_t * const pxTimer, const Tic
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * An active timer has reached its expire time.  Reload the timer if it is an
 | 
			
		||||
 * auto reload timer, then call its callback.
 | 
			
		||||
 * auto-reload timer, then call its callback.
 | 
			
		||||
 */
 | 
			
		||||
static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ) PRIVILEGED_FUNCTION;
 | 
			
		||||
 | 
			
		||||
@ -292,7 +292,7 @@ BaseType_t xReturn = pdFAIL;
 | 
			
		||||
		if( pxNewTimer != NULL )
 | 
			
		||||
		{
 | 
			
		||||
			/* Status is thus far zero as the timer is not created statically
 | 
			
		||||
			and has not been started.  The autoreload bit may get set in
 | 
			
		||||
			and has not been started.  The auto-reload bit may get set in
 | 
			
		||||
			prvInitialiseNewTimer. */
 | 
			
		||||
			pxNewTimer->ucStatus = 0x00;
 | 
			
		||||
			prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer );
 | 
			
		||||
@ -334,7 +334,7 @@ BaseType_t xReturn = pdFAIL;
 | 
			
		||||
		{
 | 
			
		||||
			/* Timers can be created statically or dynamically so note this
 | 
			
		||||
			timer was created statically in case it is later deleted.  The
 | 
			
		||||
			autoreload bit may get set in prvInitialiseNewTimer(). */
 | 
			
		||||
			auto-reload bit may get set in prvInitialiseNewTimer(). */
 | 
			
		||||
			pxNewTimer->ucStatus = tmrSTATUS_IS_STATICALLY_ALLOCATED;
 | 
			
		||||
 | 
			
		||||
			prvInitialiseNewTimer( pcTimerName, xTimerPeriodInTicks, uxAutoReload, pvTimerID, pxCallbackFunction, pxNewTimer );
 | 
			
		||||
@ -459,6 +459,31 @@ Timer_t * pxTimer =  xTimer;
 | 
			
		||||
}
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
UBaseType_t uxTimerGetReloadMode( TimerHandle_t xTimer )
 | 
			
		||||
{
 | 
			
		||||
Timer_t * pxTimer =  xTimer;
 | 
			
		||||
UBaseType_t uxReturn;
 | 
			
		||||
 | 
			
		||||
	configASSERT( xTimer );
 | 
			
		||||
	taskENTER_CRITICAL();
 | 
			
		||||
	{
 | 
			
		||||
		if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) == 0 )
 | 
			
		||||
		{
 | 
			
		||||
			/* Not an auto-reload timer. */
 | 
			
		||||
			uxReturn = ( UBaseType_t ) pdFALSE;
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			/* Is an auto-reload timer. */
 | 
			
		||||
			uxReturn = ( UBaseType_t ) pdTRUE;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	taskEXIT_CRITICAL();
 | 
			
		||||
 | 
			
		||||
	return uxReturn;
 | 
			
		||||
}
 | 
			
		||||
/*-----------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer )
 | 
			
		||||
{
 | 
			
		||||
Timer_t * pxTimer =  xTimer;
 | 
			
		||||
@ -489,7 +514,7 @@ Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTi
 | 
			
		||||
	( void ) uxListRemove( &( pxTimer->xTimerListItem ) );
 | 
			
		||||
	traceTIMER_EXPIRED( pxTimer );
 | 
			
		||||
 | 
			
		||||
	/* If the timer is an auto reload timer then calculate the next
 | 
			
		||||
	/* If the timer is an auto-reload timer then calculate the next
 | 
			
		||||
	expiry time and re-insert the timer in the list of active timers. */
 | 
			
		||||
	if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user