projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Pull out common options in the StaticAnalysisTest build test makefile into a seperate...
[pub/USBasp.git]
/
LUFA
/
Scheduler
/
Scheduler.h
diff --git
a/LUFA/Scheduler/Scheduler.h
b/LUFA/Scheduler/Scheduler.h
index
72b8773
..
630fbff
100644
(file)
--- a/
LUFA/Scheduler/Scheduler.h
+++ b/
LUFA/Scheduler/Scheduler.h
@@
-1,13
+1,13
@@
/*
LUFA Library
/*
LUFA Library
- Copyright (C) Dean Camera, 201
1
.
+ Copyright (C) Dean Camera, 201
2
.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 201
1
Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 201
2
Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
@@
-37,7
+37,8
@@
* \deprecated This module is deprecated and will be removed in a future library release.
*/
* \deprecated This module is deprecated and will be removed in a future library release.
*/
-/** @defgroup Group_Scheduler Simple Task Scheduler - LUFA/Scheduler/Scheduler.h
+/** \defgroup Group_Scheduler Simple Task Scheduler - LUFA/Scheduler/Scheduler.h
+ * \brief Simple round-robbin pseudo-task scheduler.
*
* \deprecated This module is deprecated and will be removed in a future library release.
*
*
* \deprecated This module is deprecated and will be removed in a future library release.
*
@@
-105,11
+106,6
@@
#define __SCHEDULER_H__
/* Includes: */
#define __SCHEDULER_H__
/* Includes: */
- #include <stdint.h>
- #include <stdbool.h>
-
- #include <util/atomic.h>
-
#include "../Common/Common.h"
/* Enable C linkage for C++ Compilers: */
#include "../Common/Common.h"
/* Enable C linkage for C++ Compilers: */
@@
-180,7
+176,7
@@
/** Type define for a variable which can hold a tick delay value for the scheduler up to the maximum delay
* possible.
*/
/** Type define for a variable which can hold a tick delay value for the scheduler up to the maximum delay
* possible.
*/
- typedef uint16_t SchedulerDelayCounter_t;
+ typedef uint
_least
16_t SchedulerDelayCounter_t;
/** \brief Scheduler Task List Entry Structure.
*
/** \brief Scheduler Task List Entry Structure.
*
@@
-188,9
+184,9
@@
*/
typedef struct
{
*/
typedef struct
{
- TaskPtr_t Task; /**< Pointer to the task to execute. */
- bool TaskStatus; /**< Status of the task (either TASK_RUN or TASK_STOP). */
- uint
8_t
GroupID; /**< Group ID of the task so that its status can be changed as a group. */
+ TaskPtr_t
Task; /**< Pointer to the task to execute. */
+ bool
TaskStatus; /**< Status of the task (either TASK_RUN or TASK_STOP). */
+ uint
_least8_t
GroupID; /**< Group ID of the task so that its status can be changed as a group. */
} TaskEntry_t;
/* Global Variables: */
} TaskEntry_t;
/* Global Variables: */
@@
-198,14
+194,14
@@
* \ref TaskEntry_t and can be manipulated as desired, although it is preferred that the proper Scheduler
* functions should be used instead of direct manipulation.
*/
* \ref TaskEntry_t and can be manipulated as desired, although it is preferred that the proper Scheduler
* functions should be used instead of direct manipulation.
*/
- exter TaskEntry_t Scheduler_TaskList[];
+ exter
n
TaskEntry_t Scheduler_TaskList[];
/** Contains the total number of tasks in the task list, irrespective of if the task's status is set to
* \ref TASK_RUN or \ref TASK_STOP.
*
/** Contains the total number of tasks in the task list, irrespective of if the task's status is set to
* \ref TASK_RUN or \ref TASK_STOP.
*
- * \
note This value should be treated as read-only, and never altered in user-
code.
+ * \
warning This value should be treated as read-only, and never altered in user-application
code.
*/
*/
- extern volatile uint8_t Scheduler_TotalTasks;
+ extern volatile uint
_least
8_t Scheduler_TotalTasks;
/** Contains the current scheduler tick count, for use with the delay functions. If the delay functions
* are used in the user code, this should be incremented each tick period so that the delays can be
/** Contains the current scheduler tick count, for use with the delay functions. If the delay functions
* are used in the user code, this should be incremented each tick period so that the delays can be
@@
-223,10
+219,12
@@
ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE;
static inline void Scheduler_ResetDelay(SchedulerDelayCounter_t* const DelayCounter)
{
ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE;
static inline void Scheduler_ResetDelay(SchedulerDelayCounter_t* const DelayCounter)
{
- ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
- {
- *DelayCounter = Scheduler_TickCounter;
- }
+ uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();
+ GlobalInterruptDisable();
+
+ *DelayCounter = Scheduler_TickCounter;
+
+ SetGlobalInterruptMask(CurrentGlobalInt);
}
/* Function Prototypes: */
}
/* Function Prototypes: */
@@
-248,7
+246,7
@@
* }
* \endcode
*/
* }
* \endcode
*/
- bool Scheduler_HasDelayElapsed(const uint16_t Delay,
+ bool Scheduler_HasDelayElapsed(const uint
_least
16_t Delay,
SchedulerDelayCounter_t* const DelayCounter)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(2);
SchedulerDelayCounter_t* const DelayCounter)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(2);
@@
-266,24
+264,25
@@
* \param[in] GroupID Value of the task group ID whose status is to be changed.
* \param[in] TaskStatus New task status for tasks in the specified group (\ref TASK_RUN or \ref TASK_STOP).
*/
* \param[in] GroupID Value of the task group ID whose status is to be changed.
* \param[in] TaskStatus New task status for tasks in the specified group (\ref TASK_RUN or \ref TASK_STOP).
*/
- void Scheduler_SetGroupTaskMode(const uint8_t GroupID,
+ void Scheduler_SetGroupTaskMode(const uint
_least
8_t GroupID,
const bool TaskStatus);
/* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__)
/* Macros: */
#define TOTAL_TASKS (sizeof(Scheduler_TaskList) / sizeof(TaskEntry_t))
const bool TaskStatus);
/* Private Interface - For use in library only: */
#if !defined(__DOXYGEN__)
/* Macros: */
#define TOTAL_TASKS (sizeof(Scheduler_TaskList) / sizeof(TaskEntry_t))
- #define MAX_DELAYCTR_COUNT
0xFFFF
+ #define MAX_DELAYCTR_COUNT
UINT_LEAST16_MAX
/* Inline Functions: */
/* Inline Functions: */
- static inline void Scheduler_InitScheduler(const uint8_t TotalTasks) ATTR_ALWAYS_INLINE;
- static inline void Scheduler_InitScheduler(const uint8_t TotalTasks)
+ static inline void Scheduler_InitScheduler(const uint
_least
8_t TotalTasks) ATTR_ALWAYS_INLINE;
+ static inline void Scheduler_InitScheduler(const uint
_least
8_t TotalTasks)
{
Scheduler_TotalTasks = TotalTasks;
}
{
Scheduler_TotalTasks = TotalTasks;
}
- static inline void Scheduler_GoSchedule(const uint8_t TotalTasks) ATTR_NO_RETURN ATTR_ALWAYS_INLINE ATTR_DEPRECATED;
- static inline void Scheduler_GoSchedule(const uint8_t TotalTasks)
+ static inline void Scheduler_GoSchedule(const uint_least8_t TotalTasks)
+ ATTR_NO_RETURN ATTR_ALWAYS_INLINE ATTR_DEPRECATED;
+ static inline void Scheduler_GoSchedule(const uint_least8_t TotalTasks)
{
Scheduler_InitScheduler(TotalTasks);
{
Scheduler_InitScheduler(TotalTasks);