\hypertarget{scheduler_8c}{}\section{os/scheduler.c File Reference} \label{scheduler_8c}\index{os/scheduler.\+c@{os/scheduler.\+c}} {\ttfamily \#include $<$stdlib.\+h$>$}\newline {\ttfamily \#include $<$stdio.\+h$>$}\newline {\ttfamily \#include $<$stdint.\+h$>$}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include \char`\"{}scheduler.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}error.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}heap.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}printf.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}ossettings.\+h\char`\"{}}\newline {\ttfamily \#include \char`\"{}../platform/system\+\_\+timer.\+h\char`\"{}}\newline Include dependency graph for scheduler.\+c\+:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{scheduler_8c__incl} \end{center} \end{figure} \subsection*{Functions} \begin{DoxyCompactItemize} \item uint32\+\_\+t \hyperlink{scheduler_8c_ac59673f226b3291f835a0faf010ad409}{os\+Scheduler\+Get\+SysT} (void) \item uint8\+\_\+t \hyperlink{scheduler_8c_a76739fd1872ff1f867ea41e853131a21}{os\+Task\+Create} (void($\ast$ifnc\+\_\+ptr)(void $\ast$), char $\ast$itask\+\_\+name, void $\ast$iarguments, uint8\+\_\+t ipriority, const \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$o\+Task\+Handle) \item void \hyperlink{scheduler_8c_a790ca9c0d2362305790eb3c4002e3da9}{os\+Task\+Delete} (\hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$iotask) \item void \hyperlink{scheduler_8c_ae1e7565174265c0107749d7cdf486c01}{os\+Task\+Delay} (uint8\+\_\+t idelay) \item void \hyperlink{scheduler_8c_ae4c7af5e41838a9299b00d455fb8f454}{os\+Task\+Delay\+Until} (uint32\+\_\+t iwakeup\+\_\+time, uint8\+\_\+t idelay) \item void \hyperlink{scheduler_8c_ada28e10d8b44223004cab16b201df2d7}{os\+Run\+Scheduler} (void) \item void \hyperlink{scheduler_8c_acd27cd0dcb4e193125968decdd238ff9}{os\+Print\+Task} (uint8\+\_\+t iindex) \item void \hyperlink{scheduler_8c_ad4967a4ccbd9e8901a1d79a9ee3ca79b}{os\+Print\+All\+Tasks} (void) \end{DoxyCompactItemize} \subsection{Function Documentation} \mbox{\Hypertarget{scheduler_8c_ad4967a4ccbd9e8901a1d79a9ee3ca79b}\label{scheduler_8c_ad4967a4ccbd9e8901a1d79a9ee3ca79b}} \index{scheduler.\+c@{scheduler.\+c}!os\+Print\+All\+Tasks@{os\+Print\+All\+Tasks}} \index{os\+Print\+All\+Tasks@{os\+Print\+All\+Tasks}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Print\+All\+Tasks()}{osPrintAllTasks()}} {\footnotesize\ttfamily void os\+Print\+All\+Tasks (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} Print all information about all tasks. \mbox{\Hypertarget{scheduler_8c_acd27cd0dcb4e193125968decdd238ff9}\label{scheduler_8c_acd27cd0dcb4e193125968decdd238ff9}} \index{scheduler.\+c@{scheduler.\+c}!os\+Print\+Task@{os\+Print\+Task}} \index{os\+Print\+Task@{os\+Print\+Task}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Print\+Task()}{osPrintTask()}} {\footnotesize\ttfamily void os\+Print\+Task (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{iindex }\end{DoxyParamCaption})} Print all information about one task. \begin{DoxyParams}{Parameters} {\em iindex} & Index in the T\+CB array. \\ \hline \end{DoxyParams} \mbox{\Hypertarget{scheduler_8c_ada28e10d8b44223004cab16b201df2d7}\label{scheduler_8c_ada28e10d8b44223004cab16b201df2d7}} \index{scheduler.\+c@{scheduler.\+c}!os\+Run\+Scheduler@{os\+Run\+Scheduler}} \index{os\+Run\+Scheduler@{os\+Run\+Scheduler}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Run\+Scheduler()}{osRunScheduler()}} {\footnotesize\ttfamily void os\+Run\+Scheduler (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} System core. Scheduler needs to be executed by a timer interrupt. \mbox{\Hypertarget{scheduler_8c_ac59673f226b3291f835a0faf010ad409}\label{scheduler_8c_ac59673f226b3291f835a0faf010ad409}} \index{scheduler.\+c@{scheduler.\+c}!os\+Scheduler\+Get\+SysT@{os\+Scheduler\+Get\+SysT}} \index{os\+Scheduler\+Get\+SysT@{os\+Scheduler\+Get\+SysT}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Scheduler\+Get\+Sys\+T()}{osSchedulerGetSysT()}} {\footnotesize\ttfamily uint32\+\_\+t os\+Scheduler\+Get\+SysT (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} Get the system time. \begin{DoxyRetVals}{Return values} {\em Gives} & back the number of ticks since system has been initialized. \\ \hline \end{DoxyRetVals} \mbox{\Hypertarget{scheduler_8c_a76739fd1872ff1f867ea41e853131a21}\label{scheduler_8c_a76739fd1872ff1f867ea41e853131a21}} \index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Create@{os\+Task\+Create}} \index{os\+Task\+Create@{os\+Task\+Create}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Task\+Create()}{osTaskCreate()}} {\footnotesize\ttfamily uint8\+\_\+t os\+Task\+Create (\begin{DoxyParamCaption}\item[{void($\ast$)(void $\ast$)}]{ifnc\+\_\+ptr, }\item[{char $\ast$}]{itask\+\_\+name, }\item[{void $\ast$}]{iarguments, }\item[{uint8\+\_\+t}]{ipriority, }\item[{const \hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$}]{o\+Task\+Handle }\end{DoxyParamCaption})} Spawn a task. \begin{DoxyParams}{Parameters} {\em ifnc\+\_\+ptr} & Pointer to the task function. \\ \hline {\em itask\+\_\+name} & Internal task name. \\ \hline {\em iarguments} & Enables passing user-\/defined arguments to the task. \\ \hline {\em ipriority} & A higher value means a higher priority of the task. \\ \hline {\em o\+Task\+Handle} & Pointer to T\+CB. \\ \hline \end{DoxyParams} \begin{DoxyRetVals}{Return values} {\em 1} & (task has been spawned) or 0 (F\+A\+I\+L\+ED) \\ \hline \end{DoxyRetVals} \mbox{\Hypertarget{scheduler_8c_ae1e7565174265c0107749d7cdf486c01}\label{scheduler_8c_ae1e7565174265c0107749d7cdf486c01}} \index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Delay@{os\+Task\+Delay}} \index{os\+Task\+Delay@{os\+Task\+Delay}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Task\+Delay()}{osTaskDelay()}} {\footnotesize\ttfamily void os\+Task\+Delay (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{idelay }\end{DoxyParamCaption})} Delay function. DO N\+OT U\+SE F\+OR P\+E\+R\+I\+O\+D\+IC T\+A\+S\+K\+S! \begin{DoxyParams}{Parameters} {\em idelay} & Delay in system ticks. \\ \hline \end{DoxyParams} \mbox{\Hypertarget{scheduler_8c_ae4c7af5e41838a9299b00d455fb8f454}\label{scheduler_8c_ae4c7af5e41838a9299b00d455fb8f454}} \index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Delay\+Until@{os\+Task\+Delay\+Until}} \index{os\+Task\+Delay\+Until@{os\+Task\+Delay\+Until}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Task\+Delay\+Until()}{osTaskDelayUntil()}} {\footnotesize\ttfamily void os\+Task\+Delay\+Until (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{iwakeup\+\_\+time, }\item[{uint8\+\_\+t}]{idelay }\end{DoxyParamCaption})} Delay until function. DO U\+SE F\+OR P\+E\+R\+I\+O\+D\+IC T\+A\+S\+K\+S! \begin{DoxyParams}{Parameters} {\em iwakeup\+\_\+time} & Time when the task execution started. \\ \hline {\em idelay} & Number of system ticks until the task shall be executed again. \\ \hline \end{DoxyParams} \mbox{\Hypertarget{scheduler_8c_a790ca9c0d2362305790eb3c4002e3da9}\label{scheduler_8c_a790ca9c0d2362305790eb3c4002e3da9}} \index{scheduler.\+c@{scheduler.\+c}!os\+Task\+Delete@{os\+Task\+Delete}} \index{os\+Task\+Delete@{os\+Task\+Delete}!scheduler.\+c@{scheduler.\+c}} \subsubsection{\texorpdfstring{os\+Task\+Delete()}{osTaskDelete()}} {\footnotesize\ttfamily void os\+Task\+Delete (\begin{DoxyParamCaption}\item[{\hyperlink{structos_t_c_b__t}{os\+T\+C\+B\+\_\+t} $\ast$}]{iotask }\end{DoxyParamCaption})} Simply delete task by setting the function pointer to N\+U\+LL. \begin{DoxyParams}{Parameters} {\em iotask} & Pointer to T\+CB. \\ \hline \end{DoxyParams}