Add FatFS library to the Webserver project, extend the HTTP server so that it now...
[pub/USBasp.git] / LUFA / Scheduler / Scheduler.h
index 904380c..f71736f 100644 (file)
@@ -1,21 +1,21 @@
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
+  Permission to use, copy, modify, distribute, and sell this \r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in \r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting \r
+  documentation, and that the name of the author not be used in \r
+  advertising or publicity pertaining to distribution of the \r
   software without specific, written prior permission.\r
 \r
   The author disclaim all warranties with regard to this\r
  *  Simple round-robbin cooperative scheduler for use in basic projects where non real-time tasks need\r
  *  to be executed. Each task is executed in sequence, and can be enabled or disabled individually or as a group.\r
  *\r
+ *  \deprecated This module is deprecated and will be removed in a future library release.\r
+ */\r
\r
+/** @defgroup Group_Scheduler Simple Task Scheduler - LUFA/Scheduler/Scheduler.h\r
+ *\r
+ *  \deprecated This module is deprecated and will be removed in a future library release.\r
+ *\r
+ *  \section Sec_Dependencies Module Source Dependencies\r
+ *  The following files must be built with any user project that uses this module:\r
+ *    - LUFA/Scheduler/Scheduler.c\r
+ *\r
+ *  \section Module Description\r
+ *  Simple round-robbin cooperative scheduler for use in basic projects where non real-time tasks need\r
+ *  to be executed. Each task is executed in sequence, and can be enabled or disabled individually or as a group.\r
+ *\r
  *  For a task to yield it must return, thus each task should have persistent data marked with the static attribute.\r
  *\r
  *  Usage Example:\r
@@ -44,8 +59,8 @@
  *      \r
  *      TASK_LIST\r
  *      {\r
- *             { Task: MyTask1, TaskStatus: TASK_RUN, GroupID: 1  },\r
- *             { Task: MyTask2, TaskStatus: TASK_RUN, GroupID: 1  },\r
+ *             { .Task = MyTask1, .TaskStatus = TASK_RUN, .GroupID = 1  },\r
+ *             { .Task = MyTask2, .TaskStatus = TASK_RUN, .GroupID = 1  },\r
  *      }\r
  *\r
  *      int main(void)\r
  *             // Implementation Here\r
  *      }\r
  *  \endcode\r
- */\r
\r
-/** @defgroup Group_Scheduler Simple Task Scheduler - LUFA/Scheduler/Scheduler.h\r
- *\r
- *  Simple round-robbin task scheduler. See Scheduler.h description for more details.\r
  *\r
  *  @{\r
  */\r
                         *  \code\r
                         *      TASK_LIST\r
                         *      {\r
-                        *           { Task: MyTask1, TaskStatus: TASK_RUN, GroupID: 1 },\r
+                        *           { .Task = MyTask1, .TaskStatus = TASK_RUN, .GroupID = 1 },\r
                         *           // More task entries here\r
                         *      }\r
                         *  \endcode\r
                        /** Task status mode constant, for passing to Scheduler_SetTaskMode() or Scheduler_SetGroupTaskMode(). */\r
                        #define TASK_STOP                         false\r
                        \r
-               /* Psuedo-Functions: */\r
+               /* Pseudo-Function Macros: */\r
                        #if defined(__DOXYGEN__)\r
                                /** Starts the scheduler in its infinite loop, executing running tasks. This should be placed at the end\r
                                 *  of the user application's main() function, as it can never return to the calling function.\r
                        /** Resets the delay counter value to the current tick count. This should be called to reset the period\r
                         *  for a delay in a task which is dependant on the current tick value.\r
                         *\r
-                        *  \param DelayCounter  Counter which is storing the starting tick count for a given delay.\r
+                        *  \param[out] DelayCounter  Counter which is storing the starting tick count for a given delay.\r
                         */\r
                        static inline void Scheduler_ResetDelay(SchedulerDelayCounter_t* const DelayCounter)\r
                                                                ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE;\r
                /* Function Prototypes: */\r
                        /** Determines if the given tick delay has elapsed, based on the given .\r
                         *\r
-                        *  \param Delay         The delay to test for, measured in ticks\r
-                        *  \param DelayCounter  The counter which is storing the starting tick value for the delay\r
+                        *  \param[in] Delay         The delay to test for, measured in ticks\r
+                        *  \param[in] DelayCounter  The counter which is storing the starting tick value for the delay\r
                         *\r
                         *  \return Boolean true if the delay has elapsed, false otherwise\r
                         *\r
                        \r
                        /** Sets the task mode for a given task.\r
                         *\r
-                        *  \param Task        Name of the task whose status is to be changed\r
-                        *  \param TaskStatus  New task status for the task (TASK_RUN or TASK_STOP)\r
+                        *  \param[in] Task        Name of the task whose status is to be changed\r
+                        *  \param[in] TaskStatus  New task status for the task (TASK_RUN or TASK_STOP)\r
                         */\r
                        void Scheduler_SetTaskMode(const TaskPtr_t Task, const bool TaskStatus);\r
                        \r
                        /** Sets the task mode for a given task group ID, allowing for an entire group of tasks to have their\r
                         *  statuses changed at once.\r
                         *\r
-                        *  \param GroupID     Value of the task group ID whose status is to be changed\r
-                        *  \param TaskStatus  New task status for tasks in the specified group (TASK_RUN or TASK_STOP)\r
+                        *  \param[in] GroupID     Value of the task group ID whose status is to be changed\r
+                        *  \param[in] TaskStatus  New task status for tasks in the specified group (TASK_RUN or TASK_STOP)\r
                         */\r
                        void Scheduler_SetGroupTaskMode(const uint8_t GroupID, const bool TaskStatus);\r
 \r
                                Scheduler_TotalTasks = TotalTasks;\r
                        }\r
                \r
-                       static inline void Scheduler_GoSchedule(const uint8_t TotalTasks) ATTR_NO_RETURN ATTR_ALWAYS_INLINE;\r
+                       static inline void Scheduler_GoSchedule(const uint8_t TotalTasks) ATTR_NO_RETURN ATTR_ALWAYS_INLINE ATTR_DEPRECATED;\r
                        static inline void Scheduler_GoSchedule(const uint8_t TotalTasks)\r
                        {\r
                                Scheduler_InitScheduler(TotalTasks);\r