diff options
Diffstat (limited to 'Documentation/RTOS')
119 files changed, 14668 insertions, 0 deletions
diff --git a/Documentation/RTOS/html/API_Structure.png b/Documentation/RTOS/html/API_Structure.png Binary files differnew file mode 100644 index 0000000..832753b --- /dev/null +++ b/Documentation/RTOS/html/API_Structure.png diff --git a/Documentation/RTOS/html/CMSIS_Logo_Final.png b/Documentation/RTOS/html/CMSIS_Logo_Final.png Binary files differnew file mode 100644 index 0000000..2056b7e --- /dev/null +++ b/Documentation/RTOS/html/CMSIS_Logo_Final.png diff --git a/Documentation/RTOS/html/CMSIS_RTOS_Files.png b/Documentation/RTOS/html/CMSIS_RTOS_Files.png Binary files differnew file mode 100644 index 0000000..136bc6d --- /dev/null +++ b/Documentation/RTOS/html/CMSIS_RTOS_Files.png diff --git a/Documentation/RTOS/html/MailQueue.png b/Documentation/RTOS/html/MailQueue.png Binary files differnew file mode 100644 index 0000000..9e75ff4 --- /dev/null +++ b/Documentation/RTOS/html/MailQueue.png diff --git a/Documentation/RTOS/html/MessageQueue.png b/Documentation/RTOS/html/MessageQueue.png Binary files differnew file mode 100644 index 0000000..712eeac --- /dev/null +++ b/Documentation/RTOS/html/MessageQueue.png diff --git a/Documentation/RTOS/html/Mutex.png b/Documentation/RTOS/html/Mutex.png Binary files differnew file mode 100644 index 0000000..7eec93b --- /dev/null +++ b/Documentation/RTOS/html/Mutex.png diff --git a/Documentation/RTOS/html/Semaphore.png b/Documentation/RTOS/html/Semaphore.png Binary files differnew file mode 100644 index 0000000..f1939c0 --- /dev/null +++ b/Documentation/RTOS/html/Semaphore.png diff --git a/Documentation/RTOS/html/ThreadStatus.png b/Documentation/RTOS/html/ThreadStatus.png Binary files differnew file mode 100644 index 0000000..45a0564 --- /dev/null +++ b/Documentation/RTOS/html/ThreadStatus.png diff --git a/Documentation/RTOS/html/Timer.png b/Documentation/RTOS/html/Timer.png Binary files differnew file mode 100644 index 0000000..63c666b --- /dev/null +++ b/Documentation/RTOS/html/Timer.png diff --git a/Documentation/RTOS/html/TimerValues.png b/Documentation/RTOS/html/TimerValues.png Binary files differnew file mode 100644 index 0000000..08add5d --- /dev/null +++ b/Documentation/RTOS/html/TimerValues.png diff --git a/Documentation/RTOS/html/_function_overview.html b/Documentation/RTOS/html/_function_overview.html new file mode 100644 index 0000000..9f6759e --- /dev/null +++ b/Documentation/RTOS/html/_function_overview.html @@ -0,0 +1,204 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Function Overview</title> +<title>CMSIS-RTOS: Function Overview</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_function_overview.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Function Overview </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The following list provides a brief overview of all CMSIS-RTOS functions. Functions marked with $ are optional. A specific CMSIS-RTOS implementation may not provide all functions, but this is clearly indicated with <b>osFeatureXXXX</b> defines.</p> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html">Kernel Information and Control</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> : Initialize the RTOS kernel.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> : Start the RTOS kernel.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> : Query if the RTOS kernel is running.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a> : Get RTOS kernel system timer counter.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a> : RTOS kernel system timer frequency in Hz.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a> : Convert microseconds value to RTOS kernel system timer value.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html">Thread Management</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> : Start execution of a thread function.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> : Stop execution of a thread function.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> : Pass execution to next ready thread function.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> : Get the thread identifier to reference this thread.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> : Change the execution priority of a thread function.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">osThreadGetPriority</a> : Obtain the current execution priority of a thread function.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html">Generic Wait Functions</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> : Wait for a specified time.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> : Wait for any event of the type Signal, Message, or Mail.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html">Timer Management</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> : Define attributes of the timer callback function.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a> : Start or restart the timer with a time value.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">osTimerStop</a> : Stop the timer.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">osTimerDelete</a> : Delete a timer.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html">Signal Events</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> : Set signal flags of a thread.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a> : Reset signal flags of a thread.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> : Suspend execution until specific signal flags are set.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html">Mutexes</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> : Define and initialize a mutex.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> : Obtain a mutex or Wait until it becomes available.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> : Release a mutex.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> : Delete a mutex.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html">Semaphores</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> : Define and initialize a semaphore.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> : Obtain a semaphore token or Wait until it becomes available.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> : Release a semaphore token.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> : Delete a semaphore.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html">Memory Pool</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> : Define and initialize a fix-size memory pool.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a> : Allocate a memory block.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> : Allocate a memory block and zero-set this block.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a> : Return a memory block to the memory pool.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html">Message Queue</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> : Define and initialize a message queue.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a> : Put a message into a message queue.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a> : Get a message or suspend thread execution until message arrives.</li> +</ul> +</li> +</ul> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html">Mail Queue</a><ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> : Define and initialize a mail queue with fix-size memory blocks.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> : Allocate a memory block.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a> : Allocate a memory block and zero-set this block.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a> : Put a memory block into a mail queue.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a> : Get a mail or suspend thread execution until mail arrives.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a> : Return a memory block to the mail queue.</li> +</ul> +</li> +</ul> +<h1><a class="anchor" id="CMSIS_RTOS_TimeOutValue"></a> +Timout Value</h1> +<p>The timeout value specifies the number of timer ticks until a timeout or time delay elapses. The value is an upper bound and depends on the actual time elapsed since the last timer tick.</p> +<p>For a value of <b>1</b> the system waits until the next timer tick occurs. That means that the actual timeout value can be one timer tick less than the specified timeout value.</p> +<div class="image"> +<img src="TimerValues.png" alt="TimerValues.png"/> +<div class="caption"> +Timer Values</div></div> + <h1><a class="anchor" id="CMSIS_RTOS_ISR_Calls"></a> +Calls from Interrupt Service Routines</h1> +<p>The following CMSIS-RTOS functions can be called from threads and Interrupt Service Routines (ISR):</p> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a></li> +</ul> +<p>Functions that cannot be called from an ISR are verifying the interrupt status and return, in case they are called from an ISR context, the status code <b>osErrorISR</b>. In some implementations, this condition might be caught using the HARD FAULT vector.</p> +<p>Some CMSIS-RTOS implementations support CMSIS-RTOS function calls from multiple ISRs at the same time. If this is impossible, the CMSIS-RTOS rejects calls by nested ISR functions with the status code <b>osErrorISRRecursive</b>. </p> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/_rtos_validation.html b/Documentation/RTOS/html/_rtos_validation.html new file mode 100644 index 0000000..a4b6238 --- /dev/null +++ b/Documentation/RTOS/html/_rtos_validation.html @@ -0,0 +1,132 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>RTOS Validation</title> +<title>CMSIS-RTOS: RTOS Validation</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_rtos_validation.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">RTOS Validation </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>ARM offers a <a href="http://www.keil.com/pack" class="el" target="_blank">Software Pack</a> for the CMSIS-RTOS Validation. The <b>ARM::CMSIS-RTOS_Validation</b> Pack contains the following:</p> +<ul> +<li>Source code of a CMSIS-RTOS Validation Suite along with configuration file.</li> +<li>Documentation of the CMSIS-RTOS Validation Suite.</li> +<li>Example that shows the usage of the CMSIS-RTOS Validation Suite using simulation.</li> +</ul> +<p>The CMSIS-RTOS Validation Suite is currently available in beta release and performs generic validation of various RTOS features. The test cases verify the functional behaviour, test invalid parameters and call management functions from ISR.</p> +<p>The following CMSIS-RTOS features can be tested with the current release:</p> +<ul> +<li>Thread : Create multiple threads, terminate, restart, yield, change priority</li> +<li>Timer : Create periodic and one-shot timers</li> +<li>GenWait : Call generic wait functions (osDelay and osWait)</li> +<li>WaitFunc : Measure wait ticks (delay, mail, message, mutex, semaphore, signal)</li> +</ul> +<p>Moreover the following inter-thread communication functions can be tested:</p> +<ul> +<li>Signal : Verify signal events</li> +<li>Memory Pool : Verify memory allocation</li> +<li>Message Queue : Exchange messages between threads</li> +<li>Mail Queue : Exchange data between threads</li> +<li>Mutex : Synchronize resource access</li> +<li>Semaphore : Access shared resources</li> +</ul> +<p>The RTOS Validation output can be printed to a console, output via ITM printf, or output to a memory buffer.</p> +<h1><a class="anchor" id="test_output"></a> +Sample Test Output</h1> +<pre class="fragment">CMSIS-RTOS Test Suite Oct 21 2015 16:39:16 + +TEST 01: TC_ThreadCreate PASSED +TEST 02: TC_ThreadMultiInstance PASSED +TEST 03: TC_ThreadTerminate PASSED + : + : +TEST 08: TC_ThreadChainedCreate PASSED +TEST 09: TC_ThreadYield NOT EXECUTED +TEST 10: TC_ThreadParam PASSED + : + : +TEST 60: TC_MailFromISRToThread PASSED + +Test Summary: 60 Tests, 59 Executed, 59 Passed, 0 Failed, 0 Warnings. +Test Result: PASSED +</pre> </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/_using_o_s.html b/Documentation/RTOS/html/_using_o_s.html new file mode 100644 index 0000000..7f85ccd --- /dev/null +++ b/Documentation/RTOS/html/_using_o_s.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Using a CMSIS-RTOS Implementation</title> +<title>CMSIS-RTOS: Using a CMSIS-RTOS Implementation</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_using_o_s.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Using a CMSIS-RTOS Implementation </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>A CMSIS-RTOS implementation is typically provided as a library. To add the RTOS functionality to an existing CMSIS-based application, the RTOS library (and typically a configuration file) needs to be added. The available functionality of the RTOS library is defined in the header file <b><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></b> that is specific for each CMSIS-RTOS implementation.</p> +<div class="image"> +<img src="CMSIS_RTOS_Files.png" alt="CMSIS_RTOS_Files.png"/> +<div class="caption"> +CMSIS-RTOS File Structure</div></div> +<p> Depending on the CMSIS-RTOS implementation, execution may start with the <b>main</b> function as the first thread. This has the benefit that an application programmer may use other middleware libraries that create threads internally, but the remaining part of the user application just uses the <b>main</b> thread. Therefore, the usage of the RTOS can be invisible to the application programmer, but libraries can use CMSIS-RTOS features.</p> +<p>Once the files are added to a project, the user can start working with the CMSIS-RTOS functions. A code example is provided below:</p> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span> <span class="comment">// CMSIS-RTOS header file</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> job1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) { <span class="comment">// thread function 'job1'</span></div> +<div class="line"> <span class="keywordflow">while</span> (1) {</div> +<div class="line"> : <span class="comment">// execute some code</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a> (10); <span class="comment">// delay execution for 10 milliseconds</span></div> +<div class="line"> }</div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(job1, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b" title="priority: above normal">osPriorityAboveNormal</a>, 1, 0); <span class="comment">// define job1 as thread function</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> job2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) { <span class="comment">// thread function 'job2'</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(job1),NULL); <span class="comment">// create job1 thread</span></div> +<div class="line"> <span class="keywordflow">while</span> (1) {</div> +<div class="line"> : <span class="comment">// execute some code</span></div> +<div class="line"> }</div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(job2, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 0); <span class="comment">// define job2 as thread function</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> job3 (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) { <span class="comment">// thread function 'job3'</span></div> +<div class="line"> <span class="keywordflow">while</span> (1) {</div> +<div class="line"> : <span class="comment">// execute some code</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a> (20); <span class="comment">// delay execution for 20 milliseconds</span></div> +<div class="line"> }</div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(job3, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 0); <span class="comment">// define job3 as thread function</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) { <span class="comment">// program execution starts here</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e" title="Initialize the RTOS Kernel for creating objects.">osKernelInitialize</a> (); <span class="comment">// initialize RTOS kernel</span></div> +<div class="line"> : <span class="comment">// setup and initialize peripherals</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(job2));</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(job3));</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2" title="Start the RTOS Kernel.">osKernelStart</a> (); <span class="comment">// start kernel with job2 execution</span></div> +<div class="line">}</div> +</div><!-- fragment --> </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/annotated.html b/Documentation/RTOS/html/annotated.html new file mode 100644 index 0000000..bb651f6 --- /dev/null +++ b/Documentation/RTOS/html/annotated.html @@ -0,0 +1,110 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Data Structures</title> +<title>CMSIS-RTOS: Data Structures</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('annotated.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Data Structures</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos__mail_q" target="_self">os_mailQ</a></td><td class="desc"></td></tr> +<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" target="_self">osEvent</a></td><td class="desc">Event structure contains detailed information about an event</td></tr> +<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structos_mail_q_def__t.html" target="_self">osMailQDef_t</a></td><td class="desc">Definition structure for mail queue</td></tr> +<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structos_message_q_def__t.html" target="_self">osMessageQDef_t</a></td><td class="desc">Definition structure for message queue</td></tr> +<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structos_mutex_def__t.html" target="_self">osMutexDef_t</a></td><td class="desc">Mutex Definition structure contains setup information for a mutex</td></tr> +<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structos_pool_def__t.html" target="_self">osPoolDef_t</a></td><td class="desc">Definition structure for memory block allocation</td></tr> +<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structos_semaphore_def__t.html" target="_self">osSemaphoreDef_t</a></td><td class="desc">Semaphore Definition structure contains setup information for a semaphore</td></tr> +<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structos_thread_def__t.html" target="_self">osThreadDef_t</a></td><td class="desc">Thread Definition structure contains startup information of a thread</td></tr> +<tr id="row_8_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structos_timer_def__t.html" target="_self">osTimerDef_t</a></td><td class="desc">Timer Definition structure contains timer parameters</td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/annotated.js b/Documentation/RTOS/html/annotated.js new file mode 100644 index 0000000..c324e28 --- /dev/null +++ b/Documentation/RTOS/html/annotated.js @@ -0,0 +1,10 @@ +var annotated = +[ + [ "osMailQDef_t", "structos_mail_q_def__t.html", "structos_mail_q_def__t" ], + [ "osMessageQDef_t", "structos_message_q_def__t.html", "structos_message_q_def__t" ], + [ "osMutexDef_t", "structos_mutex_def__t.html", "structos_mutex_def__t" ], + [ "osPoolDef_t", "structos_pool_def__t.html", "structos_pool_def__t" ], + [ "osSemaphoreDef_t", "structos_semaphore_def__t.html", "structos_semaphore_def__t" ], + [ "osThreadDef_t", "structos_thread_def__t.html", "structos_thread_def__t" ], + [ "osTimerDef_t", "structos_timer_def__t.html", "structos_timer_def__t" ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/bc_s.png b/Documentation/RTOS/html/bc_s.png Binary files differnew file mode 100644 index 0000000..224b29a --- /dev/null +++ b/Documentation/RTOS/html/bc_s.png diff --git a/Documentation/RTOS/html/bdwn.png b/Documentation/RTOS/html/bdwn.png Binary files differnew file mode 100644 index 0000000..940a0b9 --- /dev/null +++ b/Documentation/RTOS/html/bdwn.png diff --git a/Documentation/RTOS/html/classes.html b/Documentation/RTOS/html/classes.html new file mode 100644 index 0000000..276e4dd --- /dev/null +++ b/Documentation/RTOS/html/classes.html @@ -0,0 +1,106 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Data Structure Index</title> +<title>CMSIS-RTOS: Data Structure Index</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('classes.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Data Structure Index</div> </div> +</div><!--header--> +<div class="contents"> +<div class="qindex"><a class="qindex" href="#letter_O">O</a></div> +<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> +<tr><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  O  </div></td></tr></table> +</td><td valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a>   </td><td valign="top"><a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a>   </td><td valign="top"><a class="el" href="structos_thread_def__t.html">osThreadDef_t</a>   </td></tr> +<tr><td valign="top"><a class="el" href="structos_mail_q_def__t.html">osMailQDef_t</a>   </td><td valign="top"><a class="el" href="structos_pool_def__t.html">osPoolDef_t</a>   </td><td valign="top"><a class="el" href="structos_timer_def__t.html">osTimerDef_t</a>   </td></tr> +<tr><td valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos__mail_q">os_mailQ</a>   </td><td valign="top"><a class="el" href="structos_message_q_def__t.html">osMessageQDef_t</a>   </td><td valign="top"><a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a>   </td><td></td></tr> +<tr><td></td><td></td><td></td><td></td></tr> +</table> +<div class="qindex"><a class="qindex" href="#letter_O">O</a></div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/closed.png b/Documentation/RTOS/html/closed.png Binary files differnew file mode 100644 index 0000000..98cc2c9 --- /dev/null +++ b/Documentation/RTOS/html/closed.png diff --git a/Documentation/RTOS/html/cmsis.css b/Documentation/RTOS/html/cmsis.css new file mode 100644 index 0000000..293d0d0 --- /dev/null +++ b/Documentation/RTOS/html/cmsis.css @@ -0,0 +1,1269 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* CMSIS styles */ + +.style1 { + text-align: center; +} +.style2 { + color: #0000FF; + font-weight: normal; +} +.style3 { + text-align: left; +} +.style4 { + color: #008000; +} +.style5 { + color: #0000FF; +} +.style6 { + color: #000000; + font-style:italic; +} +.mand { + color: #0000FF; +} +.opt { + color: #008000; +} +.cond { + color: #990000; +} + +.choice +{ + background-color:#F7F9D0; +} +.seq +{ + background-color:#C9DECB; +} +.group1 +{ + background-color:#F8F1F1; +} +.group2 +{ + background-color:#DCEDEA; +} + + +ul ul { + list-style-type: disc; +} + +ul ul ul { + list-style-type: disc; +} + +ul.hierarchy { + color: green; +} + +em { + color: #000000; + font-style:italic; +} + + + +/* CMSIS Tables */ +table.cmtab1 { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; + text-align: justify; + width:70%; +} + +th.cmtab1 { + background: #EBEFF6; + font-weight: bold; + height: 28px; +} + +td.cmtab1 { + padding:1px; + text-align: left; +} + +table.cmtable { + border-collapse:collapse; + text-align: justify; +} + +table.cmtable td, table.cmtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.cmtable th { + background-color: #EBEFF6; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +td.MonoTxt { + font-family:"Arial monospaced for SAP"; +} + +td.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.XML-Token +{ + azimuth: 180; + font-style:italic; + color:Maroon; + z-index:20; + +} + +span.h2 +{ + font-size: 120%; + font-weight: bold; +} + + + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3A568E; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4464A5; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9AAED5; + color: #ffffff; + border: 1px double #849CCC; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px; + margin: 4px; + background-color: #FBFCFD; + border: 1px solid #C3CFE6; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; +} + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C3CFE6; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C3CFE6; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EDF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9AAED5; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A2B4D8; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4769AD; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C3CFE6; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4464A5; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4464A5; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A2B4D8; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 0px 6px 0px; + color: #233456; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A7B8DA; + border-left: 1px solid #A7B8DA; + border-right: 1px solid #A7B8DA; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #708CC4; + border-top:1px solid #5072B7; + border-left:1px solid #5072B7; + border-right:1px solid #C3CFE6; + border-bottom:1px solid #C3CFE6; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3A568E; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #293C63; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2B4069; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #EBEFF6; + color: #000000; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A7B8DA; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A7B8DA; + border-bottom: 1px solid #A7B8DA; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A7B8DA; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E7F3; + font-size: 90%; + color: #233456; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A7B8DA; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#889FCE; + border:solid 1px #C1CDE5; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#344D7E; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6583BF; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#344D7E; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C3CFE6; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5072B7; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #8EA4D0; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#314877; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D7DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4464A5; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/Documentation/RTOS/html/cmsis__os_8h.html b/Documentation/RTOS/html/cmsis__os_8h.html new file mode 100644 index 0000000..8ff05bf --- /dev/null +++ b/Documentation/RTOS/html/cmsis__os_8h.html @@ -0,0 +1,689 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>cmsis_os.h File Reference</title> +<title>CMSIS-RTOS: cmsis_os.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cmsis__os_8h.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Data Structures</a> | +<a href="#define-members">Macros</a> | +<a href="#typedef-members">Typedefs</a> | +<a href="#enum-members">Enumerations</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">cmsis_os.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Data Structures</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_thread_def__t.html">osThreadDef_t</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Thread Definition structure contains startup information of a thread. <a href="structos_thread_def__t.html#details">More...</a><br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_timer_def__t.html">osTimerDef_t</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Timer Definition structure contains timer parameters. <a href="structos_timer_def__t.html#details">More...</a><br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Mutex Definition structure contains setup information for a mutex. <a href="structos_mutex_def__t.html#details">More...</a><br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Semaphore Definition structure contains setup information for a semaphore. <a href="structos_semaphore_def__t.html#details">More...</a><br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_pool_def__t.html">osPoolDef_t</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Definition structure for memory block allocation. <a href="structos_pool_def__t.html#details">More...</a><br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_message_q_def__t.html">osMessageQDef_t</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Definition structure for message queue. <a href="structos_message_q_def__t.html#details">More...</a><br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_mail_q_def__t.html">osMailQDef_t</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Definition structure for mail queue. <a href="structos_mail_q_def__t.html#details">More...</a><br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:structos_event"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a></td></tr> +<tr class="memdesc:structos_event"><td class="mdescLeft"> </td><td class="mdescRight">Event structure contains detailed information about an event. <a href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">More...</a><br/></td></tr> +<tr class="separator:structos_event"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga702196bacccbb978620c736b209387f1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga702196bacccbb978620c736b209387f1">osCMSIS</a>   0x10002</td></tr> +<tr class="memdesc:ga702196bacccbb978620c736b209387f1"><td class="mdescLeft"> </td><td class="mdescRight">API version (main [31:16] .sub [15:0]) <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga702196bacccbb978620c736b209387f1"></a><br/></td></tr> +<tr class="separator:ga702196bacccbb978620c736b209387f1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gab78dce646fabec479c5f34bc5175b7de"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gab78dce646fabec479c5f34bc5175b7de">osCMSIS_KERNEL</a>   0x10000</td></tr> +<tr class="memdesc:gab78dce646fabec479c5f34bc5175b7de"><td class="mdescLeft"> </td><td class="mdescRight">RTOS identification and version (main [31:16] .sub [15:0]) <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gab78dce646fabec479c5f34bc5175b7de"></a><br/></td></tr> +<tr class="separator:gab78dce646fabec479c5f34bc5175b7de"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga47cf03658f01cdffca688e9096b58289"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga47cf03658f01cdffca688e9096b58289">osKernelSystemId</a>   "KERNEL V1.00"</td></tr> +<tr class="memdesc:ga47cf03658f01cdffca688e9096b58289"><td class="mdescLeft"> </td><td class="mdescRight">RTOS identification string. <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga47cf03658f01cdffca688e9096b58289"></a><br/></td></tr> +<tr class="separator:ga47cf03658f01cdffca688e9096b58289"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga22f7d235bc9f783933bd5a981fd79696"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a>   1</td></tr> +<tr class="memdesc:ga22f7d235bc9f783933bd5a981fd79696"><td class="mdescLeft"> </td><td class="mdescRight">main thread 1=main can be thread, 0=not available <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696"></a><br/></td></tr> +<tr class="separator:ga22f7d235bc9f783933bd5a981fd79696"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gadd84b683001de327894851b428587caa"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a>   1</td></tr> +<tr class="memdesc:gadd84b683001de327894851b428587caa"><td class="mdescLeft"> </td><td class="mdescRight">Memory Pools: 1=available, 0=not available. <a href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa"></a><br/></td></tr> +<tr class="separator:gadd84b683001de327894851b428587caa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a>   1</td></tr> +<tr class="memdesc:gaceb2e0071ce160d153047f2eac1aca8e"><td class="mdescLeft"> </td><td class="mdescRight">Mail Queues: 1=available, 0=not available. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e"></a><br/></td></tr> +<tr class="separator:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga479a6561f859e3d4818e25708593d203"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga479a6561f859e3d4818e25708593d203">osFeature_MessageQ</a>   1</td></tr> +<tr class="memdesc:ga479a6561f859e3d4818e25708593d203"><td class="mdescLeft"> </td><td class="mdescRight">Message Queues: 1=available, 0=not available. <a href="group___c_m_s_i_s___r_t_o_s___message.html#ga479a6561f859e3d4818e25708593d203"></a><br/></td></tr> +<tr class="separator:ga479a6561f859e3d4818e25708593d203"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga01edde265710d883b6e237d34a6ef4a6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga01edde265710d883b6e237d34a6ef4a6">osFeature_Signals</a>   8</td></tr> +<tr class="memdesc:ga01edde265710d883b6e237d34a6ef4a6"><td class="mdescLeft"> </td><td class="mdescRight">maximum number of Signal Flags available per thread <a href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga01edde265710d883b6e237d34a6ef4a6"></a><br/></td></tr> +<tr class="separator:ga01edde265710d883b6e237d34a6ef4a6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">osFeature_Semaphore</a>   30</td></tr> +<tr class="memdesc:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="mdescLeft"> </td><td class="mdescRight">maximum count for <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> function <a href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a"></a><br/></td></tr> +<tr class="separator:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga6c97d38879ae86491628f6e647639bad"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad">osFeature_Wait</a>   1</td></tr> +<tr class="memdesc:ga6c97d38879ae86491628f6e647639bad"><td class="mdescLeft"> </td><td class="mdescRight">osWait function: 1=available, 0=not available <a href="group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad"></a><br/></td></tr> +<tr class="separator:ga6c97d38879ae86491628f6e647639bad"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gae554ec16c23c5b7d65affade2a351891"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a>   1</td></tr> +<tr class="memdesc:gae554ec16c23c5b7d65affade2a351891"><td class="mdescLeft"> </td><td class="mdescRight">osKernelSysTick functions: 1=available, 0=not available <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891"></a><br/></td></tr> +<tr class="separator:gae554ec16c23c5b7d65affade2a351891"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9eb9a7a797a42e4b55eb171ecc609ddb"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">osWaitForever</a>   0xFFFFFFFF</td></tr> +<tr class="memdesc:a9eb9a7a797a42e4b55eb171ecc609ddb"><td class="mdescLeft"> </td><td class="mdescRight">Timeout value. <a href="#a9eb9a7a797a42e4b55eb171ecc609ddb"></a><br/></td></tr> +<tr class="separator:a9eb9a7a797a42e4b55eb171ecc609ddb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga9e0954d52722673e2031233a2ab99960"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>   100000000</td></tr> +<tr class="memdesc:ga9e0954d52722673e2031233a2ab99960"><td class="mdescLeft"> </td><td class="mdescRight">The RTOS kernel system timer frequency in Hz. <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960"></a><br/></td></tr> +<tr class="separator:ga9e0954d52722673e2031233a2ab99960"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gae12c190af42d7310d8006d64f4ed5a88"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>(microsec)   (((uint64_t)microsec * (<a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>)) / 1000000)</td></tr> +<tr class="memdesc:gae12c190af42d7310d8006d64f4ed5a88"><td class="mdescLeft"> </td><td class="mdescRight">Convert a microseconds value to a RTOS kernel system timer value. <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88"></a><br/></td></tr> +<tr class="separator:gae12c190af42d7310d8006d64f4ed5a88"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaee93d929beb350f16e5cc7fa602e229f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(name, priority, instances, stacksz)</td></tr> +<tr class="memdesc:gaee93d929beb350f16e5cc7fa602e229f"><td class="mdescLeft"> </td><td class="mdescRight">Create a Thread Definition with function, priority, and stack requirements. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f"></a><br/></td></tr> +<tr class="separator:gaee93d929beb350f16e5cc7fa602e229f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(name)   &os_thread_def_##name</td></tr> +<tr class="memdesc:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="mdescLeft"> </td><td class="mdescRight">Access a Thread definition. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453"></a><br/></td></tr> +<tr class="separator:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1c720627e08d1cc1afcad44e799ed492"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492">osTimerDef</a>(name, function)</td></tr> +<tr class="memdesc:ga1c720627e08d1cc1afcad44e799ed492"><td class="mdescLeft"> </td><td class="mdescRight">Define a Timer object. <a href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492"></a><br/></td></tr> +<tr class="separator:ga1c720627e08d1cc1afcad44e799ed492"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1b8d670eaf964b2910fa06885e650678"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678">osTimer</a>(name)   &os_timer_def_##name</td></tr> +<tr class="memdesc:ga1b8d670eaf964b2910fa06885e650678"><td class="mdescLeft"> </td><td class="mdescRight">Access a Timer definition. <a href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678"></a><br/></td></tr> +<tr class="separator:ga1b8d670eaf964b2910fa06885e650678"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga9b522438489d7c402c95332b58bc94f3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a>(name)   const <a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a> os_mutex_def_##name = { 0 }</td></tr> +<tr class="memdesc:ga9b522438489d7c402c95332b58bc94f3"><td class="mdescLeft"> </td><td class="mdescRight">Define a Mutex. <a href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3"></a><br/></td></tr> +<tr class="separator:ga9b522438489d7c402c95332b58bc94f3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>(name)   &os_mutex_def_##name</td></tr> +<tr class="memdesc:ga1122a86faa64b4a0880c76cf68d0c934"><td class="mdescLeft"> </td><td class="mdescRight">Access a Mutex definition. <a href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934"></a><br/></td></tr> +<tr class="separator:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">osSemaphoreDef</a>(name)   const <a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a> os_semaphore_def_##name = { 0 }</td></tr> +<tr class="memdesc:ga9e66fe361749071e5ab87826c43c2f1b"><td class="mdescLeft"> </td><td class="mdescRight">Define a Semaphore object. <a href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b"></a><br/></td></tr> +<tr class="separator:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>(name)   &os_semaphore_def_##name</td></tr> +<tr class="memdesc:ga03761ee8d2c3cd4544e18364ab301dac"><td class="mdescLeft"> </td><td class="mdescRight">Access a Semaphore definition. <a href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac"></a><br/></td></tr> +<tr class="separator:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a>(name, no, type)</td></tr> +<tr class="memdesc:ga87b471d4fe2d5dbd0040708edd52771b"><td class="mdescLeft"> </td><td class="mdescRight">Define a Memory Pool. <a href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b"></a><br/></td></tr> +<tr class="separator:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga5f0b204a82327533d420210125c90697"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>(name)   &os_pool_def_##name</td></tr> +<tr class="memdesc:ga5f0b204a82327533d420210125c90697"><td class="mdescLeft"> </td><td class="mdescRight">Access a Memory Pool definition. <a href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697"></a><br/></td></tr> +<tr class="separator:ga5f0b204a82327533d420210125c90697"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac9a6a6276c12609793e7701afcc82326"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326">osMessageQDef</a>(name, queue_sz, type)</td></tr> +<tr class="memdesc:gac9a6a6276c12609793e7701afcc82326"><td class="mdescLeft"> </td><td class="mdescRight">Create a Message Queue Definition. <a href="group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326"></a><br/></td></tr> +<tr class="separator:gac9a6a6276c12609793e7701afcc82326"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>(name)   &os_messageQ_def_##name</td></tr> +<tr class="memdesc:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="mdescLeft"> </td><td class="mdescRight">Access a Message Queue Definition. <a href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97"></a><br/></td></tr> +<tr class="separator:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga58d712b16c0c6668059f509386d1e55b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b">osMailQDef</a>(name, queue_sz, type)</td></tr> +<tr class="memdesc:ga58d712b16c0c6668059f509386d1e55b"><td class="mdescLeft"> </td><td class="mdescRight">Create a Mail Queue Definition. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b"></a><br/></td></tr> +<tr class="separator:ga58d712b16c0c6668059f509386d1e55b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>(name)   &os_mailQ_def_##name</td></tr> +<tr class="memdesc:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="mdescLeft"> </td><td class="mdescRight">Access a Mail Queue Definition. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2"></a><br/></td></tr> +<tr class="separator:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> +Typedefs</h2></td></tr> +<tr class="memitem:aee631e5ea1b700fc35695cc7bc574cf7"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">os_pthread</a> )(void const *argument)</td></tr> +<tr class="memdesc:aee631e5ea1b700fc35695cc7bc574cf7"><td class="mdescLeft"> </td><td class="mdescRight">Entry point of a thread. <a href="#aee631e5ea1b700fc35695cc7bc574cf7"></a><br/></td></tr> +<tr class="separator:aee631e5ea1b700fc35695cc7bc574cf7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa2d85e49bde9f6951ff3545cd323f065"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">os_ptimer</a> )(void const *argument)</td></tr> +<tr class="memdesc:aa2d85e49bde9f6951ff3545cd323f065"><td class="mdescLeft"> </td><td class="mdescRight">Entry point of a timer call back function. <a href="#aa2d85e49bde9f6951ff3545cd323f065"></a><br/></td></tr> +<tr class="separator:aa2d85e49bde9f6951ff3545cd323f065"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:adfeb153a84a81309e2d958268197617f"><td class="memItemLeft" align="right" valign="top">typedef struct os_thread_cb * </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a></td></tr> +<tr class="memdesc:adfeb153a84a81309e2d958268197617f"><td class="mdescLeft"> </td><td class="mdescRight">Thread ID identifies the thread (pointer to a thread control block). <a href="#adfeb153a84a81309e2d958268197617f"></a><br/></td></tr> +<tr class="separator:adfeb153a84a81309e2d958268197617f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab8530dd4273f1f5382187732e14fcaa7"><td class="memItemLeft" align="right" valign="top">typedef struct os_timer_cb * </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a></td></tr> +<tr class="memdesc:ab8530dd4273f1f5382187732e14fcaa7"><td class="mdescLeft"> </td><td class="mdescRight">Timer ID identifies the timer (pointer to a timer control block). <a href="#ab8530dd4273f1f5382187732e14fcaa7"></a><br/></td></tr> +<tr class="separator:ab8530dd4273f1f5382187732e14fcaa7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3263c1ad9fd79b84f908d65e8da44ac2"><td class="memItemLeft" align="right" valign="top">typedef struct os_mutex_cb * </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a></td></tr> +<tr class="memdesc:a3263c1ad9fd79b84f908d65e8da44ac2"><td class="mdescLeft"> </td><td class="mdescRight">Mutex ID identifies the mutex (pointer to a mutex control block). <a href="#a3263c1ad9fd79b84f908d65e8da44ac2"></a><br/></td></tr> +<tr class="separator:a3263c1ad9fd79b84f908d65e8da44ac2"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa8968896c84094aa973683c84fa06f84"><td class="memItemLeft" align="right" valign="top">typedef struct os_semaphore_cb * </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a></td></tr> +<tr class="memdesc:aa8968896c84094aa973683c84fa06f84"><td class="mdescLeft"> </td><td class="mdescRight">Semaphore ID identifies the semaphore (pointer to a semaphore control block). <a href="#aa8968896c84094aa973683c84fa06f84"></a><br/></td></tr> +<tr class="separator:aa8968896c84094aa973683c84fa06f84"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a08d2e20fd9bbd96220fe068d420f3686"><td class="memItemLeft" align="right" valign="top">typedef struct os_pool_cb * </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a></td></tr> +<tr class="memdesc:a08d2e20fd9bbd96220fe068d420f3686"><td class="mdescLeft"> </td><td class="mdescRight">Pool ID identifies the memory pool (pointer to a memory pool control block). <a href="#a08d2e20fd9bbd96220fe068d420f3686"></a><br/></td></tr> +<tr class="separator:a08d2e20fd9bbd96220fe068d420f3686"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad9ec70c32c6c521970636b521e12d17f"><td class="memItemLeft" align="right" valign="top">typedef struct os_messageQ_cb * </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a></td></tr> +<tr class="memdesc:ad9ec70c32c6c521970636b521e12d17f"><td class="mdescLeft"> </td><td class="mdescRight">Message ID identifies the message queue (pointer to a message queue control block). <a href="#ad9ec70c32c6c521970636b521e12d17f"></a><br/></td></tr> +<tr class="separator:ad9ec70c32c6c521970636b521e12d17f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1dac049fb7725a8af8b26c71cbb373b5"><td class="memItemLeft" align="right" valign="top">typedef struct os_mailQ_cb * </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a></td></tr> +<tr class="memdesc:a1dac049fb7725a8af8b26c71cbb373b5"><td class="mdescLeft"> </td><td class="mdescRight">Mail ID identifies the mail queue (pointer to a mail queue control block). <a href="#a1dac049fb7725a8af8b26c71cbb373b5"></a><br/></td></tr> +<tr class="separator:a1dac049fb7725a8af8b26c71cbb373b5"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:a7f2b42f1983b9107775ec2a1c69a849a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#a7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">osPriorityIdle</a> = -3, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">osPriorityLow</a> = -2, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">osPriorityBelowNormal</a> = -1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">osPriorityAboveNormal</a> = +1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a> = +2, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">osPriorityRealtime</a> = +3, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">osPriorityError</a> = 0x84 +<br/> + }</td></tr> +<tr class="memdesc:a7f2b42f1983b9107775ec2a1c69a849a"><td class="mdescLeft"> </td><td class="mdescRight">Priority used for thread control. <a href="cmsis__os_8h.html#a7f2b42f1983b9107775ec2a1c69a849a">More...</a><br/></td></tr> +<tr class="separator:a7f2b42f1983b9107775ec2a1c69a849a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae2e091fefc4c767117727bd5aba4d99e"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">osStatus</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">osEventSignal</a> = 0x08, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">osEventMessage</a> = 0x10, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">osEventMail</a> = 0x20, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">osEventTimeout</a> = 0x40, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">osErrorParameter</a> = 0x80, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">osErrorResource</a> = 0x81, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">osErrorTimeoutResource</a> = 0xC1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">osErrorISR</a> = 0x82, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">osErrorISRRecursive</a> = 0x83, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">osErrorPriority</a> = 0x84, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">osErrorNoMemory</a> = 0x85, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">osErrorValue</a> = 0x86, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">osErrorOS</a> = 0xFF, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">os_status_reserved</a> = 0x7FFFFFFF +<br/> + }</td></tr> +<tr class="memdesc:ae2e091fefc4c767117727bd5aba4d99e"><td class="mdescLeft"> </td><td class="mdescRight">Status code values returned by CMSIS-RTOS functions. <a href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">More...</a><br/></td></tr> +<tr class="separator:ae2e091fefc4c767117727bd5aba4d99e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:adac860eb9e1b4b0619271e6595ed83d9"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">osTimerOnce</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">osTimerPeriodic</a> = 1 +<br/> + }</td></tr> +<tr class="memdesc:adac860eb9e1b4b0619271e6595ed83d9"><td class="mdescLeft"> </td><td class="mdescRight">Timer type value for the timer definition. <a href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">More...</a><br/></td></tr> +<tr class="separator:adac860eb9e1b4b0619271e6595ed83d9"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ga53d078a801022e202e8115c083ece68e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> (void)</td></tr> +<tr class="memdesc:ga53d078a801022e202e8115c083ece68e"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the RTOS Kernel for creating objects. <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e"></a><br/></td></tr> +<tr class="separator:ga53d078a801022e202e8115c083ece68e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> (void)</td></tr> +<tr class="memdesc:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="mdescLeft"> </td><td class="mdescRight">Start the RTOS Kernel. <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2"></a><br/></td></tr> +<tr class="separator:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga3b571de44cd3094c643247a7397f86b5"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> (void)</td></tr> +<tr class="memdesc:ga3b571de44cd3094c643247a7397f86b5"><td class="mdescLeft"> </td><td class="mdescRight">Check if the RTOS kernel is already started. <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5"></a><br/></td></tr> +<tr class="separator:ga3b571de44cd3094c643247a7397f86b5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gad0262e4688e95d1e9038afd9bcc16001"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a> (void)</td></tr> +<tr class="memdesc:gad0262e4688e95d1e9038afd9bcc16001"><td class="mdescLeft"> </td><td class="mdescRight">Get the RTOS kernel system timer counter. <a href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001"></a><br/></td></tr> +<tr class="separator:gad0262e4688e95d1e9038afd9bcc16001"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac59b5713cb083702dce759c73fd90dff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (const <a class="el" href="structos_thread_def__t.html">osThreadDef_t</a> *thread_def, void *argument)</td></tr> +<tr class="memdesc:gac59b5713cb083702dce759c73fd90dff"><td class="mdescLeft"> </td><td class="mdescRight">Create a thread and add it to Active Threads and set it to state READY. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff"></a><br/></td></tr> +<tr class="separator:gac59b5713cb083702dce759c73fd90dff"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> (void)</td></tr> +<tr class="memdesc:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="mdescLeft"> </td><td class="mdescRight">Return the thread ID of the current running thread. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7"></a><br/></td></tr> +<tr class="separator:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaea135bb90eb853eff39e0800b91bbeab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:gaea135bb90eb853eff39e0800b91bbeab"><td class="mdescLeft"> </td><td class="mdescRight">Terminate execution of a thread and remove it from Active Threads. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab"></a><br/></td></tr> +<tr class="separator:gaea135bb90eb853eff39e0800b91bbeab"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaf13a667493c5d629a90c13e113b99233"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> (void)</td></tr> +<tr class="memdesc:gaf13a667493c5d629a90c13e113b99233"><td class="mdescLeft"> </td><td class="mdescRight">Pass control to next thread that is in state <b>READY</b>. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233"></a><br/></td></tr> +<tr class="separator:gaf13a667493c5d629a90c13e113b99233"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> priority)</td></tr> +<tr class="memdesc:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="mdescLeft"> </td><td class="mdescRight">Change priority of an active thread. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"></a><br/></td></tr> +<tr class="separator:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">osThreadGetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:ga4299d838978bc2aae5e4350754e6a4e9"><td class="mdescLeft"> </td><td class="mdescRight">Get current priority of an active thread. <a href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9"></a><br/></td></tr> +<tr class="separator:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga02e19d5e723bfb06ba9324d625162255"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> (uint32_t millisec)</td></tr> +<tr class="memdesc:ga02e19d5e723bfb06ba9324d625162255"><td class="mdescLeft"> </td><td class="mdescRight">Wait for Timeout (Time Delay). <a href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255"></a><br/></td></tr> +<tr class="separator:ga02e19d5e723bfb06ba9324d625162255"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga8470c8aaedfde524a44e22e5b2328285"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> (uint32_t millisec)</td></tr> +<tr class="memdesc:ga8470c8aaedfde524a44e22e5b2328285"><td class="mdescLeft"> </td><td class="mdescRight">Wait for Signal, Message, Mail, or Timeout. <a href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285"></a><br/></td></tr> +<tr class="separator:ga8470c8aaedfde524a44e22e5b2328285"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> (const <a class="el" href="structos_timer_def__t.html">osTimerDef_t</a> *timer_def, <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> type, void *argument)</td></tr> +<tr class="memdesc:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="mdescLeft"> </td><td class="mdescRight">Create a timer. <a href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6"></a><br/></td></tr> +<tr class="separator:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga27a797a401b068e2644d1125f22a07ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga27a797a401b068e2644d1125f22a07ca"><td class="mdescLeft"> </td><td class="mdescRight">Start or restart a timer. <a href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca"></a><br/></td></tr> +<tr class="separator:ga27a797a401b068e2644d1125f22a07ca"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga58f36b121a812936435cacc6e1e0e091"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">osTimerStop</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id)</td></tr> +<tr class="memdesc:ga58f36b121a812936435cacc6e1e0e091"><td class="mdescLeft"> </td><td class="mdescRight">Stop the timer. <a href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091"></a><br/></td></tr> +<tr class="separator:ga58f36b121a812936435cacc6e1e0e091"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga746b8043d906849bd65e3900fcb483cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">osTimerDelete</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id)</td></tr> +<tr class="memdesc:ga746b8043d906849bd65e3900fcb483cf"><td class="mdescLeft"> </td><td class="mdescRight">Delete a timer that was created by <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>. <a href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf"></a><br/></td></tr> +<tr class="separator:ga746b8043d906849bd65e3900fcb483cf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga3de2730654589d6c3559c4b9e2825553"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr> +<tr class="memdesc:ga3de2730654589d6c3559c4b9e2825553"><td class="mdescLeft"> </td><td class="mdescRight">Set the specified Signal Flags of an active thread. <a href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553"></a><br/></td></tr> +<tr class="separator:ga3de2730654589d6c3559c4b9e2825553"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr> +<tr class="memdesc:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="mdescLeft"> </td><td class="mdescRight">Clear the specified Signal Flags of an active thread. <a href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6"></a><br/></td></tr> +<tr class="separator:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga38860acda96df47da6923348d96fc4c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> (int32_t signals, uint32_t millisec)</td></tr> +<tr class="memdesc:ga38860acda96df47da6923348d96fc4c9"><td class="mdescLeft"> </td><td class="mdescRight">Wait for one or more Signal Flags to become signaled for the current <b>RUNNING</b> thread. <a href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9"></a><br/></td></tr> +<tr class="separator:ga38860acda96df47da6923348d96fc4c9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga5c9de56e717016e39e788064e9a291cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> (const <a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a> *mutex_def)</td></tr> +<tr class="memdesc:ga5c9de56e717016e39e788064e9a291cc"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a Mutex object. <a href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc"></a><br/></td></tr> +<tr class="separator:ga5c9de56e717016e39e788064e9a291cc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="mdescLeft"> </td><td class="mdescRight">Wait until a Mutex becomes available. <a href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13"></a><br/></td></tr> +<tr class="separator:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr> +<tr class="memdesc:ga006e4744d741e8e132c3d5bbc295afe1"><td class="mdescLeft"> </td><td class="mdescRight">Release a Mutex that was obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a>. <a href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1"></a><br/></td></tr> +<tr class="separator:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac27e24135185d51d18f3dabc20910219"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr> +<tr class="memdesc:gac27e24135185d51d18f3dabc20910219"><td class="mdescLeft"> </td><td class="mdescRight">Delete a Mutex that was created by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. <a href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219"></a><br/></td></tr> +<tr class="separator:gac27e24135185d51d18f3dabc20910219"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> (const <a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a> *semaphore_def, int32_t count)</td></tr> +<tr class="memdesc:ga97381e8e55cd47cec390bf57c96d6edb"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a Semaphore object used for managing resources. <a href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb"></a><br/></td></tr> +<tr class="separator:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gacc15b0fc8ce1167fe43da33042e62098"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id, uint32_t millisec)</td></tr> +<tr class="memdesc:gacc15b0fc8ce1167fe43da33042e62098"><td class="mdescLeft"> </td><td class="mdescRight">Wait until a Semaphore token becomes available. <a href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098"></a><br/></td></tr> +<tr class="separator:gacc15b0fc8ce1167fe43da33042e62098"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr> +<tr class="memdesc:gab108914997c49e14d8ff1ae0d1988ca0"><td class="mdescLeft"> </td><td class="mdescRight">Release a Semaphore token. <a href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0"></a><br/></td></tr> +<tr class="separator:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gabae2801ac2c096f6e8c69a264908f595"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr> +<tr class="memdesc:gabae2801ac2c096f6e8c69a264908f595"><td class="mdescLeft"> </td><td class="mdescRight">Delete a Semaphore that was created by <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. <a href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595"></a><br/></td></tr> +<tr class="separator:gabae2801ac2c096f6e8c69a264908f595"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (const <a class="el" href="structos_pool_def__t.html">osPoolDef_t</a> *pool_def)</td></tr> +<tr class="memdesc:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a memory pool. <a href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a"></a><br/></td></tr> +<tr class="separator:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr> +<tr class="memdesc:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a memory pool. <a href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543"></a><br/></td></tr> +<tr class="separator:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr> +<tr class="memdesc:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a memory pool and set memory block to zero. <a href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a"></a><br/></td></tr> +<tr class="separator:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id, void *block)</td></tr> +<tr class="memdesc:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="mdescLeft"> </td><td class="mdescRight">Return an allocated memory block back to a specific memory pool. <a href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54"></a><br/></td></tr> +<tr class="separator:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaf3b9345cf426304d46565152bc26fb78"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> (const <a class="el" href="structos_message_q_def__t.html">osMessageQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:gaf3b9345cf426304d46565152bc26fb78"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a Message Queue. <a href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78"></a><br/></td></tr> +<tr class="separator:gaf3b9345cf426304d46565152bc26fb78"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t info, uint32_t millisec)</td></tr> +<tr class="memdesc:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="mdescLeft"> </td><td class="mdescRight">Put a Message to a Queue. <a href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d"></a><br/></td></tr> +<tr class="separator:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="mdescLeft"> </td><td class="mdescRight">Get a Message or Wait for a Message from a Queue. <a href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae"></a><br/></td></tr> +<tr class="separator:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> (const <a class="el" href="structos_mail_q_def__t.html">osMailQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:gaa177e7fe5820dd70d8c9e46ded131174"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize mail queue. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174"></a><br/></td></tr> +<tr class="separator:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:gadf5ce811bd6a56e617e902a1db6c2194"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a mail. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194"></a><br/></td></tr> +<tr class="separator:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a mail and set memory block to zero. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd"></a><br/></td></tr> +<tr class="separator:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga485ef6f81854ebda8ffbce4832181e02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr> +<tr class="memdesc:ga485ef6f81854ebda8ffbce4832181e02"><td class="mdescLeft"> </td><td class="mdescRight">Put a mail to a queue. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02"></a><br/></td></tr> +<tr class="separator:ga485ef6f81854ebda8ffbce4832181e02"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="mdescLeft"> </td><td class="mdescRight">Get a mail from a queue. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd"></a><br/></td></tr> +<tr class="separator:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr> +<tr class="memdesc:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="mdescLeft"> </td><td class="mdescRight">Free a memory block from a mail. <a href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc"></a><br/></td></tr> +<tr class="separator:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a9eb9a7a797a42e4b55eb171ecc609ddb"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osWaitForever   0xFFFFFFFF</td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osWaitForever</b> shall be consistent in every CMSIS-RTOS. wait forever timeout value </dd></dl> + +</div> +</div> +<h2 class="groupheader">Typedef Documentation</h2> +<a class="anchor" id="aee631e5ea1b700fc35695cc7bc574cf7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef void(* os_pthread)(void const *argument)</td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_pthread</b> shall be consistent in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="aa2d85e49bde9f6951ff3545cd323f065"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef void(* os_ptimer)(void const *argument)</td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_ptimer</b> shall be consistent in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="a1dac049fb7725a8af8b26c71cbb373b5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct os_mailQ_cb* <a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mailQ_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ad9ec70c32c6c521970636b521e12d17f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct os_messageQ_cb* <a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_messageQ_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="a3263c1ad9fd79b84f908d65e8da44ac2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct os_mutex_cb* <a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mutex_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="a08d2e20fd9bbd96220fe068d420f3686"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct os_pool_cb* <a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_pool_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="aa8968896c84094aa973683c84fa06f84"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct os_semaphore_cb* <a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_semaphore_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="adfeb153a84a81309e2d958268197617f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct os_thread_cb* <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_thread_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ab8530dd4273f1f5382187732e14fcaa7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef struct os_timer_cb* <a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_timer_cb</b> is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Enumeration Type Documentation</h2> +<a class="anchor" id="adac860eb9e1b4b0619271e6595ed83d9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_timer_type</b> shall be consistent in every CMSIS-RTOS. </dd></dl> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951"></a>osTimerOnce</em> </td><td> +<p>one-shot timer </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788"></a>osTimerPeriodic</em> </td><td> +<p>repeating timer </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<a class="anchor" id="a7f2b42f1983b9107775ec2a1c69a849a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPriority</b> shall be consistent in every CMSIS-RTOS. </dd></dl> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81"></a>osPriorityIdle</em> </td><td> +<p>priority: idle (lowest) </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4"></a>osPriorityLow</em> </td><td> +<p>priority: low </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6"></a>osPriorityBelowNormal</em> </td><td> +<p>priority: below normal </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1"></a>osPriorityNormal</em> </td><td> +<p>priority: normal (default) </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b"></a>osPriorityAboveNormal</em> </td><td> +<p>priority: above normal </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2"></a>osPriorityHigh</em> </td><td> +<p>priority: high </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af"></a>osPriorityRealtime</em> </td><td> +<p>priority: realtime (highest) </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4"></a>osPriorityError</em> </td><td> +<p>system cannot determine priority or thread has illegal priority </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae2e091fefc4c767117727bd5aba4d99e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osStatus</b> shall be consistent in every CMSIS-RTOS. </dd></dl> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f"></a>osOK</em> </td><td> +<p>function completed; no error or event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518"></a>osEventSignal</em> </td><td> +<p>function completed; signal event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342"></a>osEventMessage</em> </td><td> +<p>function completed; message event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926"></a>osEventMail</em> </td><td> +<p>function completed; mail event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177"></a>osEventTimeout</em> </td><td> +<p>function completed; timeout occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109"></a>osErrorParameter</em> </td><td> +<p>parameter error: a mandatory parameter was missing or specified an incorrect object. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d"></a>osErrorResource</em> </td><td> +<p>resource not available: a specified resource was not available. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467"></a>osErrorTimeoutResource</em> </td><td> +<p>resource not available within given time: a specified resource was not available within the timeout period. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f"></a>osErrorISR</em> </td><td> +<p>not allowed in ISR context: the function cannot be called from interrupt service routines. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65"></a>osErrorISRRecursive</em> </td><td> +<p>function called multiple times from ISR with same object. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f"></a>osErrorPriority</em> </td><td> +<p>system cannot determine priority or thread has illegal priority. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81"></a>osErrorNoMemory</em> </td><td> +<p>system is out of memory: it was impossible to allocate or reserve memory for the operation. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee"></a>osErrorValue</em> </td><td> +<p>value of a parameter is out of range. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc"></a>osErrorOS</em> </td><td> +<p>unspecified RTOS error: run-time error but no other error message fits. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1"></a>os_status_reserved</em> </td><td> +<p>prevent from enum down-size compiler optimization. </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li><li class="navelem"><a class="el" href="dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html">Template</a></li><li class="navelem"><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/cmsis__os_8txt.html b/Documentation/RTOS/html/cmsis__os_8txt.html new file mode 100644 index 0000000..5941e23 --- /dev/null +++ b/Documentation/RTOS/html/cmsis__os_8txt.html @@ -0,0 +1,156 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>cmsis_os.txt File Reference</title> +<title>CMSIS-RTOS: cmsis_os.txt File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cmsis__os_8txt.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<div class="title">cmsis_os.txt File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">osPriorityIdle</a> = -3, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">osPriorityLow</a> = -2, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">osPriorityBelowNormal</a> = -1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">osPriorityAboveNormal</a> = +1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a> = +2, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">osPriorityRealtime</a> = +3, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">osPriorityError</a> = 0x84 +<br/> + }</td></tr> +<tr class="separator:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gadac860eb9e1b4b0619271e6595ed83d9"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">osTimerOnce</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">osTimerPeriodic</a> = 1 +<br/> + }</td></tr> +<tr class="separator:gadac860eb9e1b4b0619271e6595ed83d9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gae2e091fefc4c767117727bd5aba4d99e"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">osEventSignal</a> = 0x08, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">osEventMessage</a> = 0x10, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">osEventMail</a> = 0x20, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">osEventTimeout</a> = 0x40, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">osErrorParameter</a> = 0x80, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">osErrorResource</a> = 0x81, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">osErrorTimeoutResource</a> = 0xC1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">osErrorISR</a> = 0x82, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">osErrorISRRecursive</a> = 0x83, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">osErrorPriority</a> = 0x84, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">osErrorNoMemory</a> = 0x85, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">osErrorValue</a> = 0x86, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">osErrorOS</a> = 0xFF, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">os_status_reserved</a> = 0x7FFFFFFF +<br/> + }</td></tr> +<tr class="separator:gae2e091fefc4c767117727bd5aba4d99e"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="cmsis__os_8txt.html">cmsis_os.txt</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/cmsis_os_h.html b/Documentation/RTOS/html/cmsis_os_h.html new file mode 100644 index 0000000..5e50d38 --- /dev/null +++ b/Documentation/RTOS/html/cmsis_os_h.html @@ -0,0 +1,826 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Header File Template: cmsis_os.h</title> +<title>CMSIS-RTOS: Header File Template: cmsis_os.h</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('cmsis_os_h.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Header File Template: <a class="el" href="cmsis__os_8h.html">cmsis_os.h</a> </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The file <b><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></b> is a template header file for a CMSIS-RTOS compliant Real-Time Operating System (RTOS). Each RTOS that is compliant with CMSIS-RTOS shall provide a specific <b><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></b> header file that represents its implementation.</p> +<p>The file <a class="el" href="cmsis__os_8h.html">cmsis_os.h</a> contains:</p> +<ul> +<li>CMSIS-RTOS API function definitions</li> +<li>struct definitions for parameters and return types</li> +<li>status and priority values used by CMSIS-RTOS API functions</li> +<li>macros for defining threads and other kernel objects</li> +</ul> +<p><b>Name conventions and header file modifications</b></p> +<p>All definitions are prefixed with <b>os</b> to give an unique name space for CMSIS-RTOS functions. Definitions that are prefixed <b>os_</b> are not used in the application code but local to this header file. All definitions and functions that belong to a module are grouped and have a common prefix, i.e. <b>osThread</b>.</p> +<p>Definitions that are marked with <b>CAN BE CHANGED</b> can be adapted towards the needs of the actual CMSIS-RTOS implementation. These definitions can be specific to the underlying RTOS kernel.</p> +<p>Definitions that are marked with <b>MUST REMAIN UNCHANGED</b> cannot be altered. Otherwise the CMSIS-RTOS implementation is no longer compliant to the standard. Note that some functions are optional and need not to be provided by every CMSIS-RTOS implementation.</p> +<p><b>Define and reference object definitions</b></p> +<p>With <b>#define osObjectsExternal</b> objects are defined as external symbols. This allows to create a consistent header file that is used throughout a project as shown below:</p> +<p><em>Header File</em> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include <<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>></span> <span class="comment">// CMSIS RTOS header file</span></div> +<div class="line"></div> +<div class="line"><span class="comment">// Thread definition</span></div> +<div class="line"><span class="keyword">extern</span> <span class="keywordtype">void</span> thread_sample (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument); <span class="comment">// function prototype</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a> (thread_sample, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6" title="priority: below normal">osPriorityBelowNormal</a>, 1, 100);</div> +<div class="line"></div> +<div class="line"><span class="comment">// Pool definition</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a>(MyPool, 10, <span class="keywordtype">long</span>);</div> +</div><!-- fragment --><p>This header file defines all objects when included in a C/C++ source file. When <b>#define osObjectsExternal</b> is present before the header file, the objects are defined as external symbols. A single consistent header file can therefore be used throughout the whole project.</p> +<p><em>Example</em> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "osObjects.h"</span> <span class="comment">// Definition of the CMSIS-RTOS objects</span></div> +</div><!-- fragment --><div class="fragment"><div class="line"><span class="preprocessor">#define osObjectsExternal // Objects will be defined as external symbols</span></div> +<div class="line"><span class="preprocessor">#include "osObjects.h" // Reference to the CMSIS-RTOS objects</span></div> +</div><!-- fragment --><p><b>Header file cmsis_os.h</b></p> +<div class="fragment"><div class="line"><span class="comment">/* ----------------------------------------------------------------------</span></div> +<div class="line"><span class="comment"> * $Date: 5. February 2013</span></div> +<div class="line"><span class="comment"> * $Revision: V1.02</span></div> +<div class="line"><span class="comment"> *</span></div> +<div class="line"><span class="comment"> * Project: CMSIS-RTOS API</span></div> +<div class="line"><span class="comment"> * Title: cmsis_os.h template header file</span></div> +<div class="line"><span class="comment"> *</span></div> +<div class="line"><span class="comment"> * Version 0.02</span></div> +<div class="line"><span class="comment"> * Initial Proposal Phase</span></div> +<div class="line"><span class="comment"> * Version 0.03</span></div> +<div class="line"><span class="comment"> * osKernelStart added, optional feature: main started as thread</span></div> +<div class="line"><span class="comment"> * osSemaphores have standard behavior</span></div> +<div class="line"><span class="comment"> * osTimerCreate does not start the timer, added osTimerStart</span></div> +<div class="line"><span class="comment"> * osThreadPass is renamed to osThreadYield</span></div> +<div class="line"><span class="comment"> * Version 1.01</span></div> +<div class="line"><span class="comment"> * Support for C++ interface</span></div> +<div class="line"><span class="comment"> * - const attribute removed from the osXxxxDef_t typedef's</span></div> +<div class="line"><span class="comment"> * - const attribute added to the osXxxxDef macros</span></div> +<div class="line"><span class="comment"> * Added: osTimerDelete, osMutexDelete, osSemaphoreDelete</span></div> +<div class="line"><span class="comment"> * Added: osKernelInitialize</span></div> +<div class="line"><span class="comment"> * Version 1.02</span></div> +<div class="line"><span class="comment"> * Control functions for short timeouts in microsecond resolution:</span></div> +<div class="line"><span class="comment"> * Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec</span></div> +<div class="line"><span class="comment"> * Removed: osSignalGet </span></div> +<div class="line"><span class="comment"> *----------------------------------------------------------------------------</span></div> +<div class="line"><span class="comment"> *</span></div> +<div class="line"><span class="comment"> * Copyright (c) 2013 ARM LIMITED</span></div> +<div class="line"><span class="comment"> * All rights reserved.</span></div> +<div class="line"><span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div> +<div class="line"><span class="comment"> * modification, are permitted provided that the following conditions are met:</span></div> +<div class="line"><span class="comment"> * - Redistributions of source code must retain the above copyright</span></div> +<div class="line"><span class="comment"> * notice, this list of conditions and the following disclaimer.</span></div> +<div class="line"><span class="comment"> * - Redistributions in binary form must reproduce the above copyright</span></div> +<div class="line"><span class="comment"> * notice, this list of conditions and the following disclaimer in the</span></div> +<div class="line"><span class="comment"> * documentation and/or other materials provided with the distribution.</span></div> +<div class="line"><span class="comment"> * - Neither the name of ARM nor the names of its contributors may be used</span></div> +<div class="line"><span class="comment"> * to endorse or promote products derived from this software without</span></div> +<div class="line"><span class="comment"> * specific prior written permission.</span></div> +<div class="line"><span class="comment"> *</span></div> +<div class="line"><span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"</span></div> +<div class="line"><span class="comment"> * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span></div> +<div class="line"><span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span></div> +<div class="line"><span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE</span></div> +<div class="line"><span class="comment"> * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR</span></div> +<div class="line"><span class="comment"> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF</span></div> +<div class="line"><span class="comment"> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS</span></div> +<div class="line"><span class="comment"> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN</span></div> +<div class="line"><span class="comment"> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span></div> +<div class="line"><span class="comment"> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div> +<div class="line"><span class="comment"> * POSSIBILITY OF SUCH DAMAGE.</span></div> +<div class="line"><span class="comment"> *---------------------------------------------------------------------------*/</span></div> +<div class="line"> </div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#ifndef _CMSIS_OS_H</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define _CMSIS_OS_H</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osCMSIS identifies the CMSIS-RTOS API version.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osCMSIS 0x10002 </span><span class="comment">///< API version (main [31:16] .sub [15:0])</span></div> +<div class="line"><span class="comment"></span> </div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b osCMSIS_KERNEL identifies the underlying RTOS kernel and version number.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osCMSIS_KERNEL 0x10000 </span><span class="comment">///< RTOS identification and version (main [31:16] .sub [15:0])</span></div> +<div class="line"><span class="comment"></span> </div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osKernelSystemId shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osKernelSystemId "KERNEL V1.00" </span><span class="comment">///< RTOS identification string</span></div> +<div class="line"><span class="comment"></span> </div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osFeature_xxx shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osFeature_MainThread 1 </span><span class="comment">///< main thread 1=main can be thread, 0=not available</span></div> +<div class="line"><span class="comment"></span>#define osFeature_Pool 1 <span class="comment">///< Memory Pools: 1=available, 0=not available</span></div> +<div class="line"><span class="comment"></span>#define osFeature_MailQ 1 <span class="comment">///< Mail Queues: 1=available, 0=not available</span></div> +<div class="line"><span class="comment"></span>#define osFeature_MessageQ 1 <span class="comment">///< Message Queues: 1=available, 0=not available</span></div> +<div class="line"><span class="comment"></span>#define osFeature_Signals 8 <span class="comment">///< maximum number of Signal Flags available per thread</span></div> +<div class="line"><span class="comment"></span>#define osFeature_Semaphore 30 <span class="comment">///< maximum count for \ref osSemaphoreCreate function</span></div> +<div class="line"><span class="comment"></span>#define osFeature_Wait 1 <span class="comment">///< osWait function: 1=available, 0=not available</span></div> +<div class="line"><span class="comment"></span>#define osFeature_SysTick 1 <span class="comment">///< osKernelSysTick functions: 1=available, 0=not available</span></div> +<div class="line"><span class="comment"></span> </div> +<div class="line"><span class="preprocessor">#include <stdint.h></span></div> +<div class="line"><span class="preprocessor">#include <stddef.h></span></div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#ifdef __cplusplus</span></div> +<div class="line"><span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span></div> +<div class="line">{</div> +<div class="line"><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Enumeration, structures, defines ====</span></div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Priority used for thread control.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osPriority shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81" title="priority: idle (lowest)">osPriorityIdle</a> = -3, <span class="comment">///< priority: idle (lowest)</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4" title="priority: low">osPriorityLow</a> = -2, <span class="comment">///< priority: low</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6" title="priority: below normal">osPriorityBelowNormal</a> = -1, <span class="comment">///< priority: below normal</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a> = 0, <span class="comment">///< priority: normal (default)</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b" title="priority: above normal">osPriorityAboveNormal</a> = +1, <span class="comment">///< priority: above normal</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2" title="priority: high">osPriorityHigh</a> = +2, <span class="comment">///< priority: high</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af" title="priority: realtime (highest)">osPriorityRealtime</a> = +3, <span class="comment">///< priority: realtime (highest)</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4" title="system cannot determine priority or thread has illegal priority">osPriorityError</a> = 0x84 <span class="comment">///< system cannot determine priority or thread has illegal priority</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Timeout value.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osWaitForever shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osWaitForever 0xFFFFFFFF </span><span class="comment">///< wait forever timeout value</span></div> +<div class="line"><span class="comment"></span> </div> +<div class="line"><span class="comment">/// Status code values returned by CMSIS-RTOS functions.</span></div> +<div class="line"><span class="comment"></span><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osStatus shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a> = 0, <span class="comment">///< function completed; no error or event occurred.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518" title="function completed; signal event occurred.">osEventSignal</a> = 0x08, <span class="comment">///< function completed; signal event occurred.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342" title="function completed; message event occurred.">osEventMessage</a> = 0x10, <span class="comment">///< function completed; message event occurred.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926" title="function completed; mail event occurred.">osEventMail</a> = 0x20, <span class="comment">///< function completed; mail event occurred.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177" title="function completed; timeout occurred.">osEventTimeout</a> = 0x40, <span class="comment">///< function completed; timeout occurred.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109" title="parameter error: a mandatory parameter was missing or specified an incorrect object.">osErrorParameter</a> = 0x80, <span class="comment">///< parameter error: a mandatory parameter was missing or specified an incorrect object.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d" title="resource not available: a specified resource was not available.">osErrorResource</a> = 0x81, <span class="comment">///< resource not available: a specified resource was not available.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467" title="resource not available within given time: a specified resource was not available within the timeout p...">osErrorTimeoutResource</a> = 0xC1, <span class="comment">///< resource not available within given time: a specified resource was not available within the timeout period.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f" title="not allowed in ISR context: the function cannot be called from interrupt service routines.">osErrorISR</a> = 0x82, <span class="comment">///< not allowed in ISR context: the function cannot be called from interrupt service routines.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65" title="function called multiple times from ISR with same object.">osErrorISRRecursive</a> = 0x83, <span class="comment">///< function called multiple times from ISR with same object.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f" title="system cannot determine priority or thread has illegal priority.">osErrorPriority</a> = 0x84, <span class="comment">///< system cannot determine priority or thread has illegal priority.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81" title="system is out of memory: it was impossible to allocate or reserve memory for the operation.">osErrorNoMemory</a> = 0x85, <span class="comment">///< system is out of memory: it was impossible to allocate or reserve memory for the operation.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee" title="value of a parameter is out of range.">osErrorValue</a> = 0x86, <span class="comment">///< value of a parameter is out of range.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc" title="unspecified RTOS error: run-time error but no other error message fits.">osErrorOS</a> = 0xFF, <span class="comment">///< unspecified RTOS error: run-time error but no other error message fits.</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1" title="prevent from enum down-size compiler optimization.">os_status_reserved</a> = 0x7FFFFFFF <span class="comment">///< prevent from enum down-size compiler optimization.</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a>;</div> +<div class="line"> </div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Timer type value for the timer definition.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b os_timer_type shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951" title="one-shot timer">osTimerOnce</a> = 0, <span class="comment">///< one-shot timer</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788" title="repeating timer">osTimerPeriodic</a> = 1 <span class="comment">///< repeating timer</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Entry point of a thread.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b os_pthread shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> void (*<a class="code" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7" title="Entry point of a thread.">os_pthread</a>) (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Entry point of a timer call back function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b os_ptimer shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> void (*<a class="code" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065" title="Entry point of a timer call back function.">os_ptimer</a>) (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument);</div> +<div class="line"> </div> +<div class="line"><span class="comment">// >>> the following data type definitions may shall adapted towards a specific RTOS</span></div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Thread ID identifies the thread (pointer to a thread control block).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_thread_cb is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_thread_cb *<a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Timer ID identifies the timer (pointer to a timer control block).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_timer_cb is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_timer_cb *<a class="code" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7" title="Timer ID identifies the timer (pointer to a timer control block).">osTimerId</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Mutex ID identifies the mutex (pointer to a mutex control block).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_mutex_cb is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_mutex_cb *<a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Semaphore ID identifies the semaphore (pointer to a semaphore control block).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_semaphore_cb is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_semaphore_cb *<a class="code" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84" title="Semaphore ID identifies the semaphore (pointer to a semaphore control block).">osSemaphoreId</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Pool ID identifies the memory pool (pointer to a memory pool control block).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_pool_cb is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_pool_cb *<a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686" title="Pool ID identifies the memory pool (pointer to a memory pool control block).">osPoolId</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Message ID identifies the message queue (pointer to a message queue control block).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_messageQ_cb is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_messageQ_cb *<a class="code" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f" title="Message ID identifies the message queue (pointer to a message queue control block).">osMessageQId</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Mail ID identifies the mail queue (pointer to a mail queue control block).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_mailQ_cb is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_mailQ_cb *<a class="code" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5" title="Mail ID identifies the mail queue (pointer to a mail queue control block).">osMailQId</a>;</div> +<div class="line"> </div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Thread Definition structure contains startup information of a thread.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_thread_def is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_thread_def {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7" title="Entry point of a thread.">os_pthread</a> pthread; <span class="comment">///< start address of thread function</span></div> +<div class="line"><span class="comment"></span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> tpriority; <span class="comment">///< initial thread priority</span></div> +<div class="line"><span class="comment"></span> uint32_t instances; <span class="comment">///< maximum number of instances of that thread function</span></div> +<div class="line"><span class="comment"></span> uint32_t stacksize; <span class="comment">///< stack size requirements in bytes; 0 is default stack size</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="structos_thread_def__t.html" title="Thread Definition structure contains startup information of a thread.">osThreadDef_t</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Timer Definition structure contains timer parameters.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_timer_def is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_timer_def {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065" title="Entry point of a timer call back function.">os_ptimer</a> ptimer; <span class="comment">///< start address of a timer function</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="structos_timer_def__t.html" title="Timer Definition structure contains timer parameters.">osTimerDef_t</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Mutex Definition structure contains setup information for a mutex.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_mutex_def is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_mutex_def {</div> +<div class="line"> uint32_t dummy; <span class="comment">///< dummy value.</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="structos_mutex_def__t.html" title="Mutex Definition structure contains setup information for a mutex.">osMutexDef_t</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Semaphore Definition structure contains setup information for a semaphore.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_semaphore_def is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_semaphore_def {</div> +<div class="line"> uint32_t dummy; <span class="comment">///< dummy value.</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="structos_semaphore_def__t.html" title="Semaphore Definition structure contains setup information for a semaphore.">osSemaphoreDef_t</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Definition structure for memory block allocation.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_pool_def is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_pool_def {</div> +<div class="line"> uint32_t pool_sz; <span class="comment">///< number of items (elements) in the pool</span></div> +<div class="line"><span class="comment"></span> uint32_t item_sz; <span class="comment">///< size of an item</span></div> +<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> *pool; <span class="comment">///< pointer to memory for pool</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="structos_pool_def__t.html" title="Definition structure for memory block allocation.">osPoolDef_t</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Definition structure for message queue.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_messageQ_def is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_messageQ_def {</div> +<div class="line"> uint32_t queue_sz; <span class="comment">///< number of elements in the queue</span></div> +<div class="line"><span class="comment"></span> uint32_t item_sz; <span class="comment">///< size of an item</span></div> +<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> *pool; <span class="comment">///< memory array for messages</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="structos_message_q_def__t.html" title="Definition structure for message queue.">osMessageQDef_t</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Definition structure for mail queue.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: \b os_mailQ_def is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>os_mailQ_def {</div> +<div class="line"> uint32_t queue_sz; <span class="comment">///< number of elements in the queue</span></div> +<div class="line"><span class="comment"></span> uint32_t item_sz; <span class="comment">///< size of an item</span></div> +<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> *pool; <span class="comment">///< memory array for mail</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="structos_mail_q_def__t.html" title="Definition structure for mail queue.">osMailQDef_t</a>;</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Event structure contains detailed information about an event.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b os_event shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment">/// However the struct may be extended at the end.</span></div> +<div class="line"><span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">///< status code: event or error information</span></div> +<div class="line"><span class="comment"></span> <span class="keyword">union </span>{</div> +<div class="line"> uint32_t v; <span class="comment">///< message as 32-bit value</span></div> +<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> *p; <span class="comment">///< message or mail as void pointer</span></div> +<div class="line"><span class="comment"></span> int32_t signals; <span class="comment">///< signal flags</span></div> +<div class="line"><span class="comment"></span> } value; <span class="comment">///< event value</span></div> +<div class="line"><span class="comment"></span> <span class="keyword">union </span>{</div> +<div class="line"> osMailQId mail_id; <span class="comment">///< mail id obtained by \ref osMailCreate</span></div> +<div class="line"><span class="comment"></span> osMessageQId message_id; <span class="comment">///< message id obtained by \ref osMessageCreate</span></div> +<div class="line"><span class="comment"></span> } def; <span class="comment">///< event definition</span></div> +<div class="line"><span class="comment"></span>} <a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a>;</div> +<div class="line"> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Kernel Control Functions ====</span></div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Initialize the RTOS Kernel for creating objects.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osKernelInitialize shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e" title="Initialize the RTOS Kernel for creating objects.">osKernelInitialize</a> (<span class="keywordtype">void</span>);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Start the RTOS Kernel.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osKernelStart shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2" title="Start the RTOS Kernel.">osKernelStart</a> (<span class="keywordtype">void</span>);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Check if the RTOS kernel is already started.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osKernelRunning shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment">/// \return 0 RTOS is not started, 1 RTOS is started.</span></div> +<div class="line"><span class="comment"></span>int32_t <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5" title="Check if the RTOS kernel is already started.">osKernelRunning</a>(<span class="keywordtype">void</span>);</div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#if (defined (osFeature_SysTick) && (osFeature_SysTick != 0)) // System Timer available</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Get the RTOS kernel system timer counter </span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osKernelSysTick shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment">/// \return RTOS kernel system timer as 32-bit value </span></div> +<div class="line"><span class="comment"></span>uint32_t <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001" title="Get the RTOS kernel system timer counter.">osKernelSysTick</a> (<span class="keywordtype">void</span>);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// The RTOS kernel system timer frequency in Hz</span></div> +<div class="line"><span class="comment">/// \note Reflects the system timer setting and is typically defined in a configuration file.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osKernelSysTickFrequency 100000000</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Convert a microseconds value to a RTOS kernel system timer value.</span></div> +<div class="line"><span class="comment">/// \param microsec time value in microseconds.</span></div> +<div class="line"><span class="comment">/// \return time value normalized to the \ref osKernelSysTickFrequency</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"><span class="preprocessor">#endif // System Timer available</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"><span class="comment">// ==== Thread Management ====</span></div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create a Thread Definition with function, priority, and stack requirements.</span></div> +<div class="line"><span class="comment">/// \param name name of the thread function.</span></div> +<div class="line"><span class="comment">/// \param priority initial priority of the thread function.</span></div> +<div class="line"><span class="comment">/// \param instances number of possible thread instances.</span></div> +<div class="line"><span class="comment">/// \param stacksz stack size (in bytes) requirements for the thread function.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameters to \b osThreadDef shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#if defined (osObjectsExternal) // object is external</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osThreadDef(name, priority, instances, stacksz) \</span></div> +<div class="line"><span class="preprocessor">extern const osThreadDef_t os_thread_def_##name</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#else // define the object</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osThreadDef(name, priority, instances, stacksz) \</span></div> +<div class="line"><span class="preprocessor">const osThreadDef_t os_thread_def_##name = \</span></div> +<div class="line"><span class="preprocessor">{ (name), (priority), (instances), (stacksz) }</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Access a Thread definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the thread definition object.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osThread shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osThread(name) \</span></div> +<div class="line"><span class="preprocessor">&os_thread_def_##name</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create a thread and add it to Active Threads and set it to state READY.</span></div> +<div class="line"><span class="comment">/// \param[in] thread_def thread definition referenced with \ref osThread.</span></div> +<div class="line"><span class="comment">/// \param[in] argument pointer that is passed to the thread function as start argument.</span></div> +<div class="line"><span class="comment">/// \return thread ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osThreadCreate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osThreadId <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<span class="keyword">const</span> <a class="code" href="structos_thread_def__t.html" title="Thread Definition structure contains startup information of a thread.">osThreadDef_t</a> *thread_def, <span class="keywordtype">void</span> *argument);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Return the thread ID of the current running thread.</span></div> +<div class="line"><span class="comment">/// \return thread ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osThreadGetId shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osThreadId <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7" title="Return the thread ID of the current running thread.">osThreadGetId</a> (<span class="keywordtype">void</span>);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Terminate execution of a thread and remove it from Active Threads.</span></div> +<div class="line"><span class="comment">/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osThreadTerminate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab" title="Terminate execution of a thread and remove it from Active Threads.">osThreadTerminate</a> (osThreadId thread_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Pass control to next thread that is in state \b READY.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osThreadYield shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233" title="Pass control to next thread that is in state READY.">osThreadYield</a> (<span class="keywordtype">void</span>);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Change priority of an active thread.</span></div> +<div class="line"><span class="comment">/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.</span></div> +<div class="line"><span class="comment">/// \param[in] priority new priority value for the thread function.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osThreadSetPriority shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b" title="Change priority of an active thread.">osThreadSetPriority</a> (osThreadId thread_id, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> priority);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Get current priority of an active thread.</span></div> +<div class="line"><span class="comment">/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.</span></div> +<div class="line"><span class="comment">/// \return current priority value of the thread function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osThreadGetPriority shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9" title="Get current priority of an active thread.">osThreadGetPriority</a> (osThreadId thread_id);</div> +<div class="line"> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Generic Wait Functions ====</span></div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Wait for Timeout (Time Delay).</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a> (uint32_t millisec);</div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#if (defined (osFeature_Wait) && (osFeature_Wait != 0)) // Generic Wait available</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Wait for Signal, Message, Mail, or Timeout.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out</span></div> +<div class="line"><span class="comment">/// \return event that contains signal, message, or mail information or error code.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osWait shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285" title="Wait for Signal, Message, Mail, or Timeout.">osWait</a> (uint32_t millisec);</div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#endif // Generic Wait available</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Timer Management Functions ====</span><span class="comment"></span></div> +<div class="line"><span class="comment">/// Define a Timer object.</span></div> +<div class="line"><span class="comment">/// \param name name of the timer object.</span></div> +<div class="line"><span class="comment">/// \param function name of the timer call back function.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osTimerDef shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#if defined (osObjectsExternal) // object is external</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osTimerDef(name, function) \</span></div> +<div class="line"><span class="preprocessor">extern const osTimerDef_t os_timer_def_##name</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#else // define the object</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osTimerDef(name, function) \</span></div> +<div class="line"><span class="preprocessor">const osTimerDef_t os_timer_def_##name = \</span></div> +<div class="line"><span class="preprocessor">{ (function) }</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Access a Timer definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the timer object.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osTimer shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osTimer(name) \</span></div> +<div class="line"><span class="preprocessor">&os_timer_def_##name</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create a timer.</span></div> +<div class="line"><span class="comment">/// \param[in] timer_def timer object referenced with \ref osTimer.</span></div> +<div class="line"><span class="comment">/// \param[in] type osTimerOnce for one-shot or osTimerPeriodic for periodic behavior.</span></div> +<div class="line"><span class="comment">/// \param[in] argument argument to the timer call back function.</span></div> +<div class="line"><span class="comment">/// \return timer ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osTimerCreate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osTimerId <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a> (<span class="keyword">const</span> <a class="code" href="structos_timer_def__t.html" title="Timer Definition structure contains timer parameters.">osTimerDef_t</a> *timer_def, <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> type, <span class="keywordtype">void</span> *argument);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Start or restart a timer.</span></div> +<div class="line"><span class="comment">/// \param[in] timer_id timer ID obtained by \ref osTimerCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value of the timer.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osTimerStart shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca" title="Start or restart a timer.">osTimerStart</a> (osTimerId timer_id, uint32_t millisec);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Stop the timer.</span></div> +<div class="line"><span class="comment">/// \param[in] timer_id timer ID obtained by \ref osTimerCreate.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osTimerStop shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091" title="Stop the timer.">osTimerStop</a> (osTimerId timer_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Delete a timer that was created by \ref osTimerCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] timer_id timer ID obtained by \ref osTimerCreate.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osTimerDelete shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf" title="Delete a timer that was created by osTimerCreate.">osTimerDelete</a> (osTimerId timer_id);</div> +<div class="line"> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Signal Management ====</span></div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Set the specified Signal Flags of an active thread.</span></div> +<div class="line"><span class="comment">/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.</span></div> +<div class="line"><span class="comment">/// \param[in] signals specifies the signal flags of the thread that should be set.</span></div> +<div class="line"><span class="comment">/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osSignalSet shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>int32_t <a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553" title="Set the specified Signal Flags of an active thread.">osSignalSet</a> (osThreadId thread_id, int32_t signals);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Clear the specified Signal Flags of an active thread.</span></div> +<div class="line"><span class="comment">/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId.</span></div> +<div class="line"><span class="comment">/// \param[in] signals specifies the signal flags of the thread that shall be cleared.</span></div> +<div class="line"><span class="comment">/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osSignalClear shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>int32_t <a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6" title="Clear the specified Signal Flags of an active thread.">osSignalClear</a> (osThreadId thread_id, int32_t signals);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Wait for one or more Signal Flags to become signaled for the current \b RUNNING thread.</span></div> +<div class="line"><span class="comment">/// \param[in] signals wait until all specified signal flags set or 0 for any single signal flag.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.</span></div> +<div class="line"><span class="comment">/// \return event flag information or error code.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osSignalWait shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9" title="Wait for one or more Signal Flags to become signaled for the current RUNNING thread.">osSignalWait</a> (int32_t signals, uint32_t millisec);</div> +<div class="line"> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Mutex Management ====</span></div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Define a Mutex.</span></div> +<div class="line"><span class="comment">/// \param name name of the mutex object.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osMutexDef shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#if defined (osObjectsExternal) // object is external</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osMutexDef(name) \</span></div> +<div class="line"><span class="preprocessor">extern const osMutexDef_t os_mutex_def_##name</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#else // define the object</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osMutexDef(name) \</span></div> +<div class="line"><span class="preprocessor">const osMutexDef_t os_mutex_def_##name = { 0 }</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Access a Mutex definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the mutex object.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osMutex shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osMutex(name) \</span></div> +<div class="line"><span class="preprocessor">&os_mutex_def_##name</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create and Initialize a Mutex object.</span></div> +<div class="line"><span class="comment">/// \param[in] mutex_def mutex definition referenced with \ref osMutex.</span></div> +<div class="line"><span class="comment">/// \return mutex ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMutexCreate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osMutexId <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc" title="Create and Initialize a Mutex object.">osMutexCreate</a> (<span class="keyword">const</span> <a class="code" href="structos_mutex_def__t.html" title="Mutex Definition structure contains setup information for a mutex.">osMutexDef_t</a> *mutex_def);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Wait until a Mutex becomes available.</span></div> +<div class="line"><span class="comment">/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMutexWait shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13" title="Wait until a Mutex becomes available.">osMutexWait</a> (osMutexId mutex_id, uint32_t millisec);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Release a Mutex that was obtained by \ref osMutexWait.</span></div> +<div class="line"><span class="comment">/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMutexRelease shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1" title="Release a Mutex that was obtained by osMutexWait.">osMutexRelease</a> (osMutexId mutex_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Delete a Mutex that was created by \ref osMutexCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMutexDelete shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219" title="Delete a Mutex that was created by osMutexCreate.">osMutexDelete</a> (osMutexId mutex_id);</div> +<div class="line"> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Semaphore Management Functions ====</span></div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0)) // Semaphore available</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Define a Semaphore object.</span></div> +<div class="line"><span class="comment">/// \param name name of the semaphore object.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osSemaphoreDef shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#if defined (osObjectsExternal) // object is external</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osSemaphoreDef(name) \</span></div> +<div class="line"><span class="preprocessor">extern const osSemaphoreDef_t os_semaphore_def_##name</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#else // define the object</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osSemaphoreDef(name) \</span></div> +<div class="line"><span class="preprocessor">const osSemaphoreDef_t os_semaphore_def_##name = { 0 }</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Access a Semaphore definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the semaphore object.</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osSemaphore shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osSemaphore(name) \</span></div> +<div class="line"><span class="preprocessor">&os_semaphore_def_##name</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create and Initialize a Semaphore object used for managing resources.</span></div> +<div class="line"><span class="comment">/// \param[in] semaphore_def semaphore definition referenced with \ref osSemaphore.</span></div> +<div class="line"><span class="comment">/// \param[in] count number of available resources.</span></div> +<div class="line"><span class="comment">/// \return semaphore ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osSemaphoreCreate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osSemaphoreId <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb" title="Create and Initialize a Semaphore object used for managing resources.">osSemaphoreCreate</a> (<span class="keyword">const</span> <a class="code" href="structos_semaphore_def__t.html" title="Semaphore Definition structure contains setup information for a semaphore.">osSemaphoreDef_t</a> *semaphore_def, int32_t count);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Wait until a Semaphore token becomes available.</span></div> +<div class="line"><span class="comment">/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.</span></div> +<div class="line"><span class="comment">/// \return number of available tokens, or -1 in case of incorrect parameters.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osSemaphoreWait shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>int32_t <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098" title="Wait until a Semaphore token becomes available.">osSemaphoreWait</a> (osSemaphoreId semaphore_id, uint32_t millisec);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Release a Semaphore token.</span></div> +<div class="line"><span class="comment">/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osSemaphoreRelease shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0" title="Release a Semaphore token.">osSemaphoreRelease</a> (osSemaphoreId semaphore_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Delete a Semaphore that was created by \ref osSemaphoreCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osSemaphoreDelete shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595" title="Delete a Semaphore that was created by osSemaphoreCreate.">osSemaphoreDelete</a> (osSemaphoreId semaphore_id);</div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#endif // Semaphore available</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Memory Pool Management Functions ====</span></div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#if (defined (osFeature_Pool) && (osFeature_Pool != 0)) // Memory Pool Management available</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// \brief Define a Memory Pool.</span></div> +<div class="line"><span class="comment">/// \param name name of the memory pool.</span></div> +<div class="line"><span class="comment">/// \param no maximum number of blocks (objects) in the memory pool.</span></div> +<div class="line"><span class="comment">/// \param type data type of a single block (object).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osPoolDef shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#if defined (osObjectsExternal) // object is external</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osPoolDef(name, no, type) \</span></div> +<div class="line"><span class="preprocessor">extern const osPoolDef_t os_pool_def_##name</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#else // define the object</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osPoolDef(name, no, type) \</span></div> +<div class="line"><span class="preprocessor">const osPoolDef_t os_pool_def_##name = \</span></div> +<div class="line"><span class="preprocessor">{ (no), sizeof(type), NULL }</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// \brief Access a Memory Pool definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the memory pool</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osPool shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osPool(name) \</span></div> +<div class="line"><span class="preprocessor">&os_pool_def_##name</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create and Initialize a memory pool.</span></div> +<div class="line"><span class="comment">/// \param[in] pool_def memory pool definition referenced with \ref osPool.</span></div> +<div class="line"><span class="comment">/// \return memory pool ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osPoolCreate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osPoolId <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a" title="Create and Initialize a memory pool.">osPoolCreate</a> (<span class="keyword">const</span> <a class="code" href="structos_pool_def__t.html" title="Definition structure for memory block allocation.">osPoolDef_t</a> *pool_def);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Allocate a memory block from a memory pool.</span></div> +<div class="line"><span class="comment">/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate.</span></div> +<div class="line"><span class="comment">/// \return address of the allocated memory block or NULL in case of no memory available.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osPoolAlloc shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keywordtype">void</span> *<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543" title="Allocate a memory block from a memory pool.">osPoolAlloc</a> (osPoolId pool_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Allocate a memory block from a memory pool and set memory block to zero.</span></div> +<div class="line"><span class="comment">/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate.</span></div> +<div class="line"><span class="comment">/// \return address of the allocated memory block or NULL in case of no memory available.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osPoolCAlloc shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keywordtype">void</span> *<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a" title="Allocate a memory block from a memory pool and set memory block to zero.">osPoolCAlloc</a> (osPoolId pool_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Return an allocated memory block back to a specific memory pool.</span></div> +<div class="line"><span class="comment">/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] block address of the allocated memory block that is returned to the memory pool.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osPoolFree shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54" title="Return an allocated memory block back to a specific memory pool.">osPoolFree</a> (osPoolId pool_id, <span class="keywordtype">void</span> *block);</div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#endif // Memory Pool Management available</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Message Queue Management Functions ====</span></div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#if (defined (osFeature_MessageQ) && (osFeature_MessageQ != 0)) // Message Queues available</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// \brief Create a Message Queue Definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the queue.</span></div> +<div class="line"><span class="comment">/// \param queue_sz maximum number of messages in the queue.</span></div> +<div class="line"><span class="comment">/// \param type data type of a single message element (for debugger).</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osMessageQDef shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#if defined (osObjectsExternal) // object is external</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osMessageQDef(name, queue_sz, type) \</span></div> +<div class="line"><span class="preprocessor">extern const osMessageQDef_t os_messageQ_def_##name</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#else // define the object</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osMessageQDef(name, queue_sz, type) \</span></div> +<div class="line"><span class="preprocessor">const osMessageQDef_t os_messageQ_def_##name = \</span></div> +<div class="line"><span class="preprocessor">{ (queue_sz), sizeof (type) }</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// \brief Access a Message Queue Definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the queue</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osMessageQ shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osMessageQ(name) \</span></div> +<div class="line"><span class="preprocessor">&os_messageQ_def_##name</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create and Initialize a Message Queue.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_def queue definition referenced with \ref osMessageQ.</span></div> +<div class="line"><span class="comment">/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL.</span></div> +<div class="line"><span class="comment">/// \return message queue ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMessageCreate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osMessageQId <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78" title="Create and Initialize a Message Queue.">osMessageCreate</a> (<span class="keyword">const</span> <a class="code" href="structos_message_q_def__t.html" title="Definition structure for message queue.">osMessageQDef_t</a> *queue_def, osThreadId thread_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Put a Message to a Queue.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] info message information.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMessagePut shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d" title="Put a Message to a Queue.">osMessagePut</a> (osMessageQId queue_id, uint32_t info, uint32_t millisec);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Get a Message or Wait for a Message from a Queue.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out.</span></div> +<div class="line"><span class="comment">/// \return event information that includes status code.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMessageGet shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae" title="Get a Message or Wait for a Message from a Queue.">osMessageGet</a> (osMessageQId queue_id, uint32_t millisec);</div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#endif // Message Queues available</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"> </div> +<div class="line"><span class="comment">// ==== Mail Queue Management Functions ====</span></div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#if (defined (osFeature_MailQ) && (osFeature_MailQ != 0)) // Mail Queues available</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// \brief Create a Mail Queue Definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the queue</span></div> +<div class="line"><span class="comment">/// \param queue_sz maximum number of messages in queue</span></div> +<div class="line"><span class="comment">/// \param type data type of a single message element</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osMailQDef shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#if defined (osObjectsExternal) // object is external</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osMailQDef(name, queue_sz, type) \</span></div> +<div class="line"><span class="preprocessor">extern const osMailQDef_t os_mailQ_def_##name</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#else // define the object</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define osMailQDef(name, queue_sz, type) \</span></div> +<div class="line"><span class="preprocessor">const osMailQDef_t os_mailQ_def_##name = \</span></div> +<div class="line"><span class="preprocessor">{ (queue_sz), sizeof (type) }</span></div> +<div class="line"><span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// \brief Access a Mail Queue Definition.</span></div> +<div class="line"><span class="comment">/// \param name name of the queue</span></div> +<div class="line"><span class="comment">/// \note CAN BE CHANGED: The parameter to \b osMailQ shall be consistent but the</span></div> +<div class="line"><span class="comment">/// macro body is implementation specific in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="preprocessor">#define osMailQ(name) \</span></div> +<div class="line"><span class="preprocessor">&os_mailQ_def_##name</span></div> +<div class="line"><span class="preprocessor"></span> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Create and Initialize mail queue.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_def reference to the mail queue definition obtain with \ref osMailQ</span></div> +<div class="line"><span class="comment">/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL.</span></div> +<div class="line"><span class="comment">/// \return mail queue ID for reference by other functions or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMailCreate shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span>osMailQId <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174" title="Create and Initialize mail queue.">osMailCreate</a> (<span class="keyword">const</span> <a class="code" href="structos_mail_q_def__t.html" title="Definition structure for mail queue.">osMailQDef_t</a> *queue_def, osThreadId thread_id);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Allocate a memory block from a mail.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out</span></div> +<div class="line"><span class="comment">/// \return pointer to memory block that can be filled with mail or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMailAlloc shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keywordtype">void</span> *<a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194" title="Allocate a memory block from a mail.">osMailAlloc</a> (osMailQId queue_id, uint32_t millisec);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Allocate a memory block from a mail and set memory block to zero.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out</span></div> +<div class="line"><span class="comment">/// \return pointer to memory block that can be filled with mail or NULL in case of error.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMailCAlloc shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><span class="keywordtype">void</span> *<a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd" title="Allocate a memory block from a mail and set memory block to zero.">osMailCAlloc</a> (osMailQId queue_id, uint32_t millisec);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Put a mail to a queue.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] mail memory block previously allocated with \ref osMailAlloc or \ref osMailCAlloc.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMailPut shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02" title="Put a mail to a queue.">osMailPut</a> (osMailQId queue_id, <span class="keywordtype">void</span> *mail);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Get a mail from a queue.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out</span></div> +<div class="line"><span class="comment">/// \return event that contains mail information or error code.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMailGet shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd" title="Get a mail from a queue.">osMailGet</a> (osMailQId queue_id, uint32_t millisec);</div> +<div class="line"> <span class="comment"></span></div> +<div class="line"><span class="comment">/// Free a memory block from a mail.</span></div> +<div class="line"><span class="comment">/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate.</span></div> +<div class="line"><span class="comment">/// \param[in] mail pointer to the memory block that was obtained with \ref osMailGet.</span></div> +<div class="line"><span class="comment">/// \return status code that indicates the execution status of the function.</span></div> +<div class="line"><span class="comment">/// \note MUST REMAIN UNCHANGED: \b osMailFree shall be consistent in every CMSIS-RTOS.</span></div> +<div class="line"><span class="comment"></span><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc" title="Free a memory block from a mail.">osMailFree</a> (osMailQId queue_id, <span class="keywordtype">void</span> *mail);</div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#endif // Mail Queues available</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"> </div> +<div class="line"><span class="preprocessor">#ifdef __cplusplus</span></div> +<div class="line"><span class="preprocessor"></span>}</div> +<div class="line"><span class="preprocessor">#endif</span></div> +<div class="line"><span class="preprocessor"></span> </div> +<div class="line"><span class="preprocessor">#endif // _CMSIS_OS_H</span></div> +</div><!-- fragment --> </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/dir_67baed4ff719a838d401a6dc7774cf41.html b/Documentation/RTOS/html/dir_67baed4ff719a838d401a6dc7774cf41.html new file mode 100644 index 0000000..2b807ff --- /dev/null +++ b/Documentation/RTOS/html/dir_67baed4ff719a838d401a6dc7774cf41.html @@ -0,0 +1,97 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>RTOS Directory Reference</title> +<title>CMSIS-RTOS: RTOS Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('dir_67baed4ff719a838d401a6dc7774cf41.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">RTOS Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a> +Directories</h2></td></tr> +<tr class="memitem:dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html">Template</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html b/Documentation/RTOS/html/dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html new file mode 100644 index 0000000..7130d21 --- /dev/null +++ b/Documentation/RTOS/html/dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html @@ -0,0 +1,97 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Template Directory Reference</title> +<title>CMSIS-RTOS: Template Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Template Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:cmsis__os_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="cmsis__os_8h.html">cmsis_os.h</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_67baed4ff719a838d401a6dc7774cf41.html">RTOS</a></li><li class="navelem"><a class="el" href="dir_9afdeffb8e409a4e0df5c5bf9ab1a7d2.html">Template</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/doxygen.css b/Documentation/RTOS/html/doxygen.css new file mode 100644 index 0000000..2642e8f --- /dev/null +++ b/Documentation/RTOS/html/doxygen.css @@ -0,0 +1,1172 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font: 400 14px/19px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px; + margin: 4px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/Documentation/RTOS/html/doxygen.png b/Documentation/RTOS/html/doxygen.png Binary files differnew file mode 100644 index 0000000..3ff17d8 --- /dev/null +++ b/Documentation/RTOS/html/doxygen.png diff --git a/Documentation/RTOS/html/dynsections.js b/Documentation/RTOS/html/dynsections.js new file mode 100644 index 0000000..116542f --- /dev/null +++ b/Documentation/RTOS/html/dynsections.js @@ -0,0 +1,78 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} +function toggleLevel(level) +{ + $('table.directory tr').each(function(){ + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l<level+1) { + i.attr('src','ftv2folderopen.png'); + a.attr('src','ftv2mnode.png'); + $(this).show(); + } else if (l==level+1) { + i.attr('src','ftv2folderclosed.png'); + a.attr('src','ftv2pnode.png'); + $(this).show(); + } else { + $(this).hide(); + } + }); + updateStripes(); +} +function toggleFolder(id) +{ + var n = $('[id^=row_'+id+']'); + var i = $('[id^=img_'+id+']'); + var a = $('[id^=arr_'+id+']'); + var c = n.slice(1); + if (c.filter(':first').is(':visible')===true) { + i.attr('src','ftv2folderclosed.png'); + a.attr('src','ftv2pnode.png'); + c.hide(); + } else { + i.attr('src','ftv2folderopen.png'); + a.attr('src','ftv2mnode.png'); + c.show(); + } + updateStripes(); +} + +function toggleInherit(id) +{ + var rows = $('tr.inherit.'+id); + var img = $('tr.inherit_header.'+id+' img'); + var src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } +} + diff --git a/Documentation/RTOS/html/files.html b/Documentation/RTOS/html/files.html new file mode 100644 index 0000000..943c0a3 --- /dev/null +++ b/Documentation/RTOS/html/files.html @@ -0,0 +1,95 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>File List</title> +<title>CMSIS-RTOS: File List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('files.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">File List</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="cmsis__os_8h.html" target="_self">cmsis_os.h</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/ftv2blank.png b/Documentation/RTOS/html/ftv2blank.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/Documentation/RTOS/html/ftv2blank.png diff --git a/Documentation/RTOS/html/ftv2cl.png b/Documentation/RTOS/html/ftv2cl.png Binary files differnew file mode 100644 index 0000000..132f657 --- /dev/null +++ b/Documentation/RTOS/html/ftv2cl.png diff --git a/Documentation/RTOS/html/ftv2doc.png b/Documentation/RTOS/html/ftv2doc.png Binary files differnew file mode 100644 index 0000000..17edabf --- /dev/null +++ b/Documentation/RTOS/html/ftv2doc.png diff --git a/Documentation/RTOS/html/ftv2folderclosed.png b/Documentation/RTOS/html/ftv2folderclosed.png Binary files differnew file mode 100644 index 0000000..bb8ab35 --- /dev/null +++ b/Documentation/RTOS/html/ftv2folderclosed.png diff --git a/Documentation/RTOS/html/ftv2folderopen.png b/Documentation/RTOS/html/ftv2folderopen.png Binary files differnew file mode 100644 index 0000000..d6c7f67 --- /dev/null +++ b/Documentation/RTOS/html/ftv2folderopen.png diff --git a/Documentation/RTOS/html/ftv2lastnode.png b/Documentation/RTOS/html/ftv2lastnode.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/Documentation/RTOS/html/ftv2lastnode.png diff --git a/Documentation/RTOS/html/ftv2link.png b/Documentation/RTOS/html/ftv2link.png Binary files differnew file mode 100644 index 0000000..17edabf --- /dev/null +++ b/Documentation/RTOS/html/ftv2link.png diff --git a/Documentation/RTOS/html/ftv2mlastnode.png b/Documentation/RTOS/html/ftv2mlastnode.png Binary files differnew file mode 100644 index 0000000..0b63f6d --- /dev/null +++ b/Documentation/RTOS/html/ftv2mlastnode.png diff --git a/Documentation/RTOS/html/ftv2mnode.png b/Documentation/RTOS/html/ftv2mnode.png Binary files differnew file mode 100644 index 0000000..0b63f6d --- /dev/null +++ b/Documentation/RTOS/html/ftv2mnode.png diff --git a/Documentation/RTOS/html/ftv2mo.png b/Documentation/RTOS/html/ftv2mo.png Binary files differnew file mode 100644 index 0000000..4bfb80f --- /dev/null +++ b/Documentation/RTOS/html/ftv2mo.png diff --git a/Documentation/RTOS/html/ftv2node.png b/Documentation/RTOS/html/ftv2node.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/Documentation/RTOS/html/ftv2node.png diff --git a/Documentation/RTOS/html/ftv2ns.png b/Documentation/RTOS/html/ftv2ns.png Binary files differnew file mode 100644 index 0000000..72e3d71 --- /dev/null +++ b/Documentation/RTOS/html/ftv2ns.png diff --git a/Documentation/RTOS/html/ftv2plastnode.png b/Documentation/RTOS/html/ftv2plastnode.png Binary files differnew file mode 100644 index 0000000..c6ee22f --- /dev/null +++ b/Documentation/RTOS/html/ftv2plastnode.png diff --git a/Documentation/RTOS/html/ftv2pnode.png b/Documentation/RTOS/html/ftv2pnode.png Binary files differnew file mode 100644 index 0000000..c6ee22f --- /dev/null +++ b/Documentation/RTOS/html/ftv2pnode.png diff --git a/Documentation/RTOS/html/ftv2splitbar.png b/Documentation/RTOS/html/ftv2splitbar.png Binary files differnew file mode 100644 index 0000000..fe895f2 --- /dev/null +++ b/Documentation/RTOS/html/ftv2splitbar.png diff --git a/Documentation/RTOS/html/ftv2vertline.png b/Documentation/RTOS/html/ftv2vertline.png Binary files differnew file mode 100644 index 0000000..63c605b --- /dev/null +++ b/Documentation/RTOS/html/ftv2vertline.png diff --git a/Documentation/RTOS/html/functions.html b/Documentation/RTOS/html/functions.html new file mode 100644 index 0000000..489dcb6 --- /dev/null +++ b/Documentation/RTOS/html/functions.html @@ -0,0 +1,161 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Data Fields</title> +<title>CMSIS-RTOS: Data Fields</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li class="current"><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('functions.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> +<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div><ul> +<li>def +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a596b6d55c3321db19239256bbe403df6">osEvent</a> +</li> +<li>dummy +: <a class="el" href="structos_semaphore_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osSemaphoreDef_t</a> +, <a class="el" href="structos_mutex_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osMutexDef_t</a> +</li> +<li>instances +: <a class="el" href="structos_thread_def__t.html#aa4c4115851a098c0b87358ab6c025603">osThreadDef_t</a> +</li> +<li>item_sz +: <a class="el" href="structos_mail_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">osMailQDef_t</a> +, <a class="el" href="structos_message_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">osMessageQDef_t</a> +, <a class="el" href="structos_pool_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">osPoolDef_t</a> +</li> +<li>mail_id +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ac86175a4b1706bee596f3018322df26e">osEvent</a> +</li> +<li>message_id +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#af394cbe21dde7377974e63af38cd87b0">osEvent</a> +</li> +<li>p +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a117104b82864d3b23ec174af6d392709">osEvent</a> +</li> +<li>pool +: <a class="el" href="structos_pool_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">osPoolDef_t</a> +, <a class="el" href="structos_mail_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">osMailQDef_t</a> +, <a class="el" href="structos_message_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">osMessageQDef_t</a> +</li> +<li>pool_sz +: <a class="el" href="structos_pool_def__t.html#ac112e786b2a234e0e45cb5bdbee53763">osPoolDef_t</a> +</li> +<li>pthread +: <a class="el" href="structos_thread_def__t.html#ad3c9624ee214329fb34e71f544a6933e">osThreadDef_t</a> +</li> +<li>ptimer +: <a class="el" href="structos_timer_def__t.html#a15773df83aba93f8e61f3737af5fae47">osTimerDef_t</a> +</li> +<li>queue_sz +: <a class="el" href="structos_message_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMessageQDef_t</a> +, <a class="el" href="structos_mail_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMailQDef_t</a> +</li> +<li>signals +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad0dda1bf7e74f1576261d493fba232b6">osEvent</a> +</li> +<li>stacksize +: <a class="el" href="structos_thread_def__t.html#a950b7f81ad4711959517296e63bc79d1">osThreadDef_t</a> +</li> +<li>status +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3">osEvent</a> +</li> +<li>tpriority +: <a class="el" href="structos_thread_def__t.html#a15da8f23c6fe684b70a73646ada685e7">osThreadDef_t</a> +</li> +<li>v +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a9e0a00edabf3b8a5dafff624fff7bbfc">osEvent</a> +</li> +<li>value +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f">osEvent</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/functions_vars.html b/Documentation/RTOS/html/functions_vars.html new file mode 100644 index 0000000..aaa3ef2 --- /dev/null +++ b/Documentation/RTOS/html/functions_vars.html @@ -0,0 +1,161 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Data Fields - Variables</title> +<title>CMSIS-RTOS: Data Fields - Variables</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li class="current"><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('functions_vars.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>def +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a596b6d55c3321db19239256bbe403df6">osEvent</a> +</li> +<li>dummy +: <a class="el" href="structos_semaphore_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osSemaphoreDef_t</a> +, <a class="el" href="structos_mutex_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">osMutexDef_t</a> +</li> +<li>instances +: <a class="el" href="structos_thread_def__t.html#aa4c4115851a098c0b87358ab6c025603">osThreadDef_t</a> +</li> +<li>item_sz +: <a class="el" href="structos_mail_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">osMailQDef_t</a> +, <a class="el" href="structos_message_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">osMessageQDef_t</a> +, <a class="el" href="structos_pool_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">osPoolDef_t</a> +</li> +<li>mail_id +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ac86175a4b1706bee596f3018322df26e">osEvent</a> +</li> +<li>message_id +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#af394cbe21dde7377974e63af38cd87b0">osEvent</a> +</li> +<li>p +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a117104b82864d3b23ec174af6d392709">osEvent</a> +</li> +<li>pool +: <a class="el" href="structos_pool_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">osPoolDef_t</a> +, <a class="el" href="structos_mail_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">osMailQDef_t</a> +, <a class="el" href="structos_message_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">osMessageQDef_t</a> +</li> +<li>pool_sz +: <a class="el" href="structos_pool_def__t.html#ac112e786b2a234e0e45cb5bdbee53763">osPoolDef_t</a> +</li> +<li>pthread +: <a class="el" href="structos_thread_def__t.html#ad3c9624ee214329fb34e71f544a6933e">osThreadDef_t</a> +</li> +<li>ptimer +: <a class="el" href="structos_timer_def__t.html#a15773df83aba93f8e61f3737af5fae47">osTimerDef_t</a> +</li> +<li>queue_sz +: <a class="el" href="structos_message_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMessageQDef_t</a> +, <a class="el" href="structos_mail_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0">osMailQDef_t</a> +</li> +<li>signals +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad0dda1bf7e74f1576261d493fba232b6">osEvent</a> +</li> +<li>stacksize +: <a class="el" href="structos_thread_def__t.html#a950b7f81ad4711959517296e63bc79d1">osThreadDef_t</a> +</li> +<li>status +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3">osEvent</a> +</li> +<li>tpriority +: <a class="el" href="structos_thread_def__t.html#a15da8f23c6fe684b70a73646ada685e7">osThreadDef_t</a> +</li> +<li>v +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a9e0a00edabf3b8a5dafff624fff7bbfc">osEvent</a> +</li> +<li>value +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f">osEvent</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/globals.html b/Documentation/RTOS/html/globals.html new file mode 100644 index 0000000..484e7b3 --- /dev/null +++ b/Documentation/RTOS/html/globals.html @@ -0,0 +1,423 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Globals</title> +<title>CMSIS-RTOS: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> + <div id="navrow4" class="tabs3"> + <ul class="tablist"> + <li><a href="#index_o"><span>o</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> +<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div> + +<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> +<li>os_pthread +: <a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">cmsis_os.h</a> +</li> +<li>os_ptimer +: <a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">cmsis_os.h</a> +</li> +<li>os_status_reserved +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">cmsis_os.h</a> +</li> +<li>os_timer_type +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">cmsis_os.txt</a> +, <a class="el" href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">cmsis_os.h</a> +</li> +<li>osCMSIS +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga702196bacccbb978620c736b209387f1">cmsis_os.h</a> +</li> +<li>osCMSIS_KERNEL +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gab78dce646fabec479c5f34bc5175b7de">cmsis_os.h</a> +</li> +<li>osDelay() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">cmsis_os.h</a> +</li> +<li>osErrorISR +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">cmsis_os.h</a> +</li> +<li>osErrorISRRecursive +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">cmsis_os.h</a> +</li> +<li>osErrorNoMemory +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">cmsis_os.h</a> +</li> +<li>osErrorOS +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">cmsis_os.h</a> +</li> +<li>osErrorParameter +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">cmsis_os.h</a> +</li> +<li>osErrorPriority +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">cmsis_os.h</a> +</li> +<li>osErrorResource +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">cmsis_os.h</a> +</li> +<li>osErrorTimeoutResource +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">cmsis_os.h</a> +</li> +<li>osErrorValue +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">cmsis_os.h</a> +</li> +<li>osEventMail +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">cmsis_os.h</a> +</li> +<li>osEventMessage +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">cmsis_os.h</a> +</li> +<li>osEventSignal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">cmsis_os.h</a> +</li> +<li>osEventTimeout +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">cmsis_os.h</a> +</li> +<li>osFeature_MailQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">cmsis_os.h</a> +</li> +<li>osFeature_MainThread +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696">cmsis_os.h</a> +</li> +<li>osFeature_MessageQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga479a6561f859e3d4818e25708593d203">cmsis_os.h</a> +</li> +<li>osFeature_Pool +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa">cmsis_os.h</a> +</li> +<li>osFeature_Semaphore +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">cmsis_os.h</a> +</li> +<li>osFeature_Signals +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga01edde265710d883b6e237d34a6ef4a6">cmsis_os.h</a> +</li> +<li>osFeature_SysTick +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891">cmsis_os.h</a> +</li> +<li>osFeature_Wait +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad">cmsis_os.h</a> +</li> +<li>osKernelInitialize() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e">cmsis_os.h</a> +</li> +<li>osKernelRunning() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5">cmsis_os.h</a> +</li> +<li>osKernelStart() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">cmsis_os.h</a> +</li> +<li>osKernelSystemId +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga47cf03658f01cdffca688e9096b58289">cmsis_os.h</a> +</li> +<li>osKernelSysTick() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001">cmsis_os.h</a> +</li> +<li>osKernelSysTickFrequency +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">cmsis_os.h</a> +</li> +<li>osKernelSysTickMicroSec +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">cmsis_os.h</a> +</li> +<li>osMailAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">cmsis_os.h</a> +</li> +<li>osMailCAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">cmsis_os.h</a> +</li> +<li>osMailCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">cmsis_os.h</a> +</li> +<li>osMailFree() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">cmsis_os.h</a> +</li> +<li>osMailGet() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">cmsis_os.h</a> +</li> +<li>osMailPut() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02">cmsis_os.h</a> +</li> +<li>osMailQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">cmsis_os.h</a> +</li> +<li>osMailQDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b">cmsis_os.h</a> +</li> +<li>osMailQId +: <a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">cmsis_os.h</a> +</li> +<li>osMessageCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">cmsis_os.h</a> +</li> +<li>osMessageGet() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">cmsis_os.h</a> +</li> +<li>osMessagePut() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d">cmsis_os.h</a> +</li> +<li>osMessageQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">cmsis_os.h</a> +</li> +<li>osMessageQDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326">cmsis_os.h</a> +</li> +<li>osMessageQId +: <a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">cmsis_os.h</a> +</li> +<li>osMutex +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">cmsis_os.h</a> +</li> +<li>osMutexCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">cmsis_os.h</a> +</li> +<li>osMutexDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3">cmsis_os.h</a> +</li> +<li>osMutexDelete() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219">cmsis_os.h</a> +</li> +<li>osMutexId +: <a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">cmsis_os.h</a> +</li> +<li>osMutexRelease() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">cmsis_os.h</a> +</li> +<li>osMutexWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">cmsis_os.h</a> +</li> +<li>osOK +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">cmsis_os.h</a> +</li> +<li>osPool +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697">cmsis_os.h</a> +</li> +<li>osPoolAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">cmsis_os.h</a> +</li> +<li>osPoolCAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">cmsis_os.h</a> +</li> +<li>osPoolCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">cmsis_os.h</a> +</li> +<li>osPoolDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">cmsis_os.h</a> +</li> +<li>osPoolFree() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">cmsis_os.h</a> +</li> +<li>osPoolId +: <a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">cmsis_os.h</a> +</li> +<li>osPriority +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">cmsis_os.txt</a> +, <a class="el" href="cmsis__os_8h.html#a7f2b42f1983b9107775ec2a1c69a849a">cmsis_os.h</a> +</li> +<li>osPriorityAboveNormal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">cmsis_os.h</a> +</li> +<li>osPriorityBelowNormal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">cmsis_os.h</a> +</li> +<li>osPriorityError +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">cmsis_os.h</a> +</li> +<li>osPriorityHigh +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">cmsis_os.h</a> +</li> +<li>osPriorityIdle +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">cmsis_os.h</a> +</li> +<li>osPriorityLow +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">cmsis_os.h</a> +</li> +<li>osPriorityNormal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">cmsis_os.h</a> +</li> +<li>osPriorityRealtime +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">cmsis_os.h</a> +</li> +<li>osSemaphore +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">cmsis_os.h</a> +</li> +<li>osSemaphoreCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">cmsis_os.h</a> +</li> +<li>osSemaphoreDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">cmsis_os.h</a> +</li> +<li>osSemaphoreDelete() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595">cmsis_os.h</a> +</li> +<li>osSemaphoreId +: <a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">cmsis_os.h</a> +</li> +<li>osSemaphoreRelease() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">cmsis_os.h</a> +</li> +<li>osSemaphoreWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098">cmsis_os.h</a> +</li> +<li>osSignalClear() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">cmsis_os.h</a> +</li> +<li>osSignalSet() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">cmsis_os.h</a> +</li> +<li>osSignalWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">cmsis_os.h</a> +</li> +<li>osStatus +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">cmsis_os.txt</a> +, <a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">cmsis_os.h</a> +</li> +<li>osThread +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">cmsis_os.h</a> +</li> +<li>osThreadCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">cmsis_os.h</a> +</li> +<li>osThreadDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f">cmsis_os.h</a> +</li> +<li>osThreadGetId() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">cmsis_os.h</a> +</li> +<li>osThreadGetPriority() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">cmsis_os.h</a> +</li> +<li>osThreadId +: <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">cmsis_os.h</a> +</li> +<li>osThreadSetPriority() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">cmsis_os.h</a> +</li> +<li>osThreadTerminate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">cmsis_os.h</a> +</li> +<li>osThreadYield() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">cmsis_os.h</a> +</li> +<li>osTimer +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678">cmsis_os.h</a> +</li> +<li>osTimerCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">cmsis_os.h</a> +</li> +<li>osTimerDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492">cmsis_os.h</a> +</li> +<li>osTimerDelete() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">cmsis_os.h</a> +</li> +<li>osTimerId +: <a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">cmsis_os.h</a> +</li> +<li>osTimerOnce +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">cmsis_os.h</a> +</li> +<li>osTimerPeriodic +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">cmsis_os.h</a> +</li> +<li>osTimerStart() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">cmsis_os.h</a> +</li> +<li>osTimerStop() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">cmsis_os.h</a> +</li> +<li>osWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">cmsis_os.h</a> +</li> +<li>osWaitForever +: <a class="el" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">cmsis_os.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/globals_defs.html b/Documentation/RTOS/html/globals_defs.html new file mode 100644 index 0000000..5396235 --- /dev/null +++ b/Documentation/RTOS/html/globals_defs.html @@ -0,0 +1,182 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Globals</title> +<title>CMSIS-RTOS: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_defs.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>osCMSIS +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga702196bacccbb978620c736b209387f1">cmsis_os.h</a> +</li> +<li>osCMSIS_KERNEL +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gab78dce646fabec479c5f34bc5175b7de">cmsis_os.h</a> +</li> +<li>osFeature_MailQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">cmsis_os.h</a> +</li> +<li>osFeature_MainThread +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696">cmsis_os.h</a> +</li> +<li>osFeature_MessageQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga479a6561f859e3d4818e25708593d203">cmsis_os.h</a> +</li> +<li>osFeature_Pool +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa">cmsis_os.h</a> +</li> +<li>osFeature_Semaphore +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">cmsis_os.h</a> +</li> +<li>osFeature_Signals +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga01edde265710d883b6e237d34a6ef4a6">cmsis_os.h</a> +</li> +<li>osFeature_SysTick +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891">cmsis_os.h</a> +</li> +<li>osFeature_Wait +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad">cmsis_os.h</a> +</li> +<li>osKernelSystemId +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga47cf03658f01cdffca688e9096b58289">cmsis_os.h</a> +</li> +<li>osKernelSysTickFrequency +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">cmsis_os.h</a> +</li> +<li>osKernelSysTickMicroSec +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">cmsis_os.h</a> +</li> +<li>osMailQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">cmsis_os.h</a> +</li> +<li>osMailQDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b">cmsis_os.h</a> +</li> +<li>osMessageQ +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">cmsis_os.h</a> +</li> +<li>osMessageQDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326">cmsis_os.h</a> +</li> +<li>osMutex +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">cmsis_os.h</a> +</li> +<li>osMutexDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3">cmsis_os.h</a> +</li> +<li>osPool +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697">cmsis_os.h</a> +</li> +<li>osPoolDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">cmsis_os.h</a> +</li> +<li>osSemaphore +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">cmsis_os.h</a> +</li> +<li>osSemaphoreDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">cmsis_os.h</a> +</li> +<li>osThread +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">cmsis_os.h</a> +</li> +<li>osThreadDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f">cmsis_os.h</a> +</li> +<li>osTimer +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678">cmsis_os.h</a> +</li> +<li>osTimerDef +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492">cmsis_os.h</a> +</li> +<li>osWaitForever +: <a class="el" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb">cmsis_os.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/globals_enum.html b/Documentation/RTOS/html/globals_enum.html new file mode 100644 index 0000000..a07156b --- /dev/null +++ b/Documentation/RTOS/html/globals_enum.html @@ -0,0 +1,110 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Globals</title> +<title>CMSIS-RTOS: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_enum.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>os_timer_type +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">cmsis_os.txt</a> +, <a class="el" href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">cmsis_os.h</a> +</li> +<li>osPriority +: <a class="el" href="cmsis__os_8h.html#a7f2b42f1983b9107775ec2a1c69a849a">cmsis_os.h</a> +, <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">cmsis_os.txt</a> +</li> +<li>osStatus +: <a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">cmsis_os.h</a> +, <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">cmsis_os.txt</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/globals_eval.html b/Documentation/RTOS/html/globals_eval.html new file mode 100644 index 0000000..8b896e2 --- /dev/null +++ b/Documentation/RTOS/html/globals_eval.html @@ -0,0 +1,173 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Globals</title> +<title>CMSIS-RTOS: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_eval.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>os_status_reserved +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">cmsis_os.h</a> +</li> +<li>osErrorISR +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">cmsis_os.h</a> +</li> +<li>osErrorISRRecursive +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">cmsis_os.h</a> +</li> +<li>osErrorNoMemory +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">cmsis_os.h</a> +</li> +<li>osErrorOS +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">cmsis_os.h</a> +</li> +<li>osErrorParameter +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">cmsis_os.h</a> +</li> +<li>osErrorPriority +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">cmsis_os.h</a> +</li> +<li>osErrorResource +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">cmsis_os.h</a> +</li> +<li>osErrorTimeoutResource +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">cmsis_os.h</a> +</li> +<li>osErrorValue +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">cmsis_os.h</a> +</li> +<li>osEventMail +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">cmsis_os.h</a> +</li> +<li>osEventMessage +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">cmsis_os.h</a> +</li> +<li>osEventSignal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">cmsis_os.h</a> +</li> +<li>osEventTimeout +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">cmsis_os.h</a> +</li> +<li>osOK +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">cmsis_os.h</a> +</li> +<li>osPriorityAboveNormal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">cmsis_os.h</a> +</li> +<li>osPriorityBelowNormal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">cmsis_os.h</a> +</li> +<li>osPriorityError +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">cmsis_os.h</a> +</li> +<li>osPriorityHigh +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">cmsis_os.h</a> +</li> +<li>osPriorityIdle +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">cmsis_os.h</a> +</li> +<li>osPriorityLow +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">cmsis_os.h</a> +</li> +<li>osPriorityNormal +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">cmsis_os.h</a> +</li> +<li>osPriorityRealtime +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">cmsis_os.h</a> +</li> +<li>osTimerOnce +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">cmsis_os.h</a> +</li> +<li>osTimerPeriodic +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">cmsis_os.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/globals_func.html b/Documentation/RTOS/html/globals_func.html new file mode 100644 index 0000000..4c7ec3c --- /dev/null +++ b/Documentation/RTOS/html/globals_func.html @@ -0,0 +1,225 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Globals</title> +<title>CMSIS-RTOS: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li class="current"><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> + <div id="navrow4" class="tabs3"> + <ul class="tablist"> + <li><a href="#index_o"><span>o</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_func.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> +  + +<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> +<li>osDelay() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">cmsis_os.h</a> +</li> +<li>osKernelInitialize() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e">cmsis_os.h</a> +</li> +<li>osKernelRunning() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5">cmsis_os.h</a> +</li> +<li>osKernelStart() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">cmsis_os.h</a> +</li> +<li>osKernelSysTick() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001">cmsis_os.h</a> +</li> +<li>osMailAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">cmsis_os.h</a> +</li> +<li>osMailCAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">cmsis_os.h</a> +</li> +<li>osMailCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">cmsis_os.h</a> +</li> +<li>osMailFree() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">cmsis_os.h</a> +</li> +<li>osMailGet() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">cmsis_os.h</a> +</li> +<li>osMailPut() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02">cmsis_os.h</a> +</li> +<li>osMessageCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">cmsis_os.h</a> +</li> +<li>osMessageGet() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">cmsis_os.h</a> +</li> +<li>osMessagePut() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d">cmsis_os.h</a> +</li> +<li>osMutexCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">cmsis_os.h</a> +</li> +<li>osMutexDelete() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219">cmsis_os.h</a> +</li> +<li>osMutexRelease() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">cmsis_os.h</a> +</li> +<li>osMutexWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">cmsis_os.h</a> +</li> +<li>osPoolAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">cmsis_os.h</a> +</li> +<li>osPoolCAlloc() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">cmsis_os.h</a> +</li> +<li>osPoolCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">cmsis_os.h</a> +</li> +<li>osPoolFree() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">cmsis_os.h</a> +</li> +<li>osSemaphoreCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">cmsis_os.h</a> +</li> +<li>osSemaphoreDelete() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595">cmsis_os.h</a> +</li> +<li>osSemaphoreRelease() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">cmsis_os.h</a> +</li> +<li>osSemaphoreWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098">cmsis_os.h</a> +</li> +<li>osSignalClear() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">cmsis_os.h</a> +</li> +<li>osSignalSet() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">cmsis_os.h</a> +</li> +<li>osSignalWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">cmsis_os.h</a> +</li> +<li>osThreadCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">cmsis_os.h</a> +</li> +<li>osThreadGetId() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">cmsis_os.h</a> +</li> +<li>osThreadGetPriority() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">cmsis_os.h</a> +</li> +<li>osThreadSetPriority() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">cmsis_os.h</a> +</li> +<li>osThreadTerminate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">cmsis_os.h</a> +</li> +<li>osThreadYield() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">cmsis_os.h</a> +</li> +<li>osTimerCreate() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">cmsis_os.h</a> +</li> +<li>osTimerDelete() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">cmsis_os.h</a> +</li> +<li>osTimerStart() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">cmsis_os.h</a> +</li> +<li>osTimerStop() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">cmsis_os.h</a> +</li> +<li>osWait() +: <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">cmsis_os.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/globals_type.html b/Documentation/RTOS/html/globals_type.html new file mode 100644 index 0000000..32d4d3d --- /dev/null +++ b/Documentation/RTOS/html/globals_type.html @@ -0,0 +1,125 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Globals</title> +<title>CMSIS-RTOS: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_type.html','');}); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>os_pthread +: <a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">cmsis_os.h</a> +</li> +<li>os_ptimer +: <a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">cmsis_os.h</a> +</li> +<li>osMailQId +: <a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">cmsis_os.h</a> +</li> +<li>osMessageQId +: <a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">cmsis_os.h</a> +</li> +<li>osMutexId +: <a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">cmsis_os.h</a> +</li> +<li>osPoolId +: <a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">cmsis_os.h</a> +</li> +<li>osSemaphoreId +: <a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">cmsis_os.h</a> +</li> +<li>osThreadId +: <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">cmsis_os.h</a> +</li> +<li>osTimerId +: <a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">cmsis_os.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s.html new file mode 100644 index 0000000..fec85f6 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s.html @@ -0,0 +1,122 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>CMSIS-RTOS API</title> +<title>CMSIS-RTOS: CMSIS-RTOS API</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#groups">Content</a> </div> + <div class="headertitle"> +<div class="title">CMSIS-RTOS API</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This section describes the CMSIS-RTOS API. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a> +Content</h2></td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___kernel_ctrl"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html">Kernel Information and Control</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___kernel_ctrl"><td class="mdescLeft"> </td><td class="mdescRight">Provide version/system information and start the RTOS Kernel. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___thread_mgmt"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html">Thread Management</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___thread_mgmt"><td class="mdescLeft"> </td><td class="mdescRight">Define, create, and control thread functions. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___wait"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html">Generic Wait Functions</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___wait"><td class="mdescLeft"> </td><td class="mdescRight">Wait for a time period or unspecified events. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___timer_mgmt"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html">Timer Management</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___timer_mgmt"><td class="mdescLeft"> </td><td class="mdescRight">Create and control timer and timer callback functions. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___inter_thread"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html">Inter-Thread Communication and Resource Sharing</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___inter_thread"><td class="mdescLeft"> </td><td class="mdescRight">Functions for inter-thread communication. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___definitions"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html">Generic Data Types and Definitions</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___definitions"><td class="mdescLeft"> </td><td class="mdescRight">Data Type Definitions used by the CMSIS-RTOS API functions. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___status"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___status"><td class="mdescLeft"> </td><td class="mdescRight">Status and Error Codes returned by CMSIS-RTOS API functions. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>The CMSIS-RTOS is a generic API layer that interfaces to an existing RTOS kernel. </p> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s.js new file mode 100644 index 0000000..3df2489 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s.js @@ -0,0 +1,10 @@ +var group___c_m_s_i_s___r_t_o_s = +[ + [ "Kernel Information and Control", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl" ], + [ "Thread Management", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html", "group___c_m_s_i_s___r_t_o_s___thread_mgmt" ], + [ "Generic Wait Functions", "group___c_m_s_i_s___r_t_o_s___wait.html", "group___c_m_s_i_s___r_t_o_s___wait" ], + [ "Timer Management", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html", "group___c_m_s_i_s___r_t_o_s___timer_mgmt" ], + [ "Inter-Thread Communication and Resource Sharing", "group___c_m_s_i_s___r_t_o_s___inter_thread.html", "group___c_m_s_i_s___r_t_o_s___inter_thread" ], + [ "Generic Data Types and Definitions", "group___c_m_s_i_s___r_t_o_s___definitions.html", "group___c_m_s_i_s___r_t_o_s___definitions" ], + [ "Status and Error Codes", "group___c_m_s_i_s___r_t_o_s___status.html", "group___c_m_s_i_s___r_t_o_s___status" ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___definitions.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___definitions.html new file mode 100644 index 0000000..e62e66b --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___definitions.html @@ -0,0 +1,260 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Generic Data Types and Definitions</title> +<title>CMSIS-RTOS: Generic Data Types and Definitions</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___definitions.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Data Structures</a> </div> + <div class="headertitle"> +<div class="title">Generic Data Types and Definitions</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s.html">CMSIS-RTOS API</a></div></div><!--header--> +<div class="contents"> + +<p>Data Type Definitions used by the CMSIS-RTOS API functions. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Data Structures</h2></td></tr> +<tr class="memitem:structos_event"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a></td></tr> +<tr class="memdesc:structos_event"><td class="mdescLeft"> </td><td class="mdescRight">Event structure contains detailed information about an event. <a href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">More...</a><br/></td></tr> +<tr class="separator:structos_event"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:structos__mail_q"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos__mail_q">os_mailQ</a></td></tr> +<tr class="separator:structos__mail_q"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>The Data Type section lists all data types that are used to exchange information with CMSIS-RTOS functions. </p> +<hr/><h2 class="groupheader">Data Structure Documentation</h2> +<a name="structos_event" id="structos_event"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct osEvent</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_event</b> shall be consistent in every CMSIS-RTOS. However the struct may be extended at the end.</dd></dl> +<p>The <b><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a></b> structure describes the events returned by CMSIS-RTOS functions. </p> +</div><table class="memberdecls"> +<tr><td colspan="2"><h3>Data Fields</h3></td></tr> +<tr class="memitem:ad477a289f1f03ac45407b64268d707d3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3">status</a></td></tr> +<tr class="memdesc:ad477a289f1f03ac45407b64268d707d3"><td class="mdescLeft"> </td><td class="mdescRight">status code: event or error information <a href="#ad477a289f1f03ac45407b64268d707d3"></a><br/></td></tr> +<tr class="separator:ad477a289f1f03ac45407b64268d707d3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0b9f8fd3645f01d8cb09cae82add2d7f"><td class="memItemLeft" >union {</td></tr> +<tr class="memitem:a9e0a00edabf3b8a5dafff624fff7bbfc"><td class="memItemLeft" >   uint32_t   <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a9e0a00edabf3b8a5dafff624fff7bbfc">v</a></td></tr> +<tr class="memdesc:a9e0a00edabf3b8a5dafff624fff7bbfc"><td class="mdescLeft"> </td><td class="mdescRight">message as 32-bit value <a href="#a9e0a00edabf3b8a5dafff624fff7bbfc"></a><br/></td></tr> +<tr class="separator:a9e0a00edabf3b8a5dafff624fff7bbfc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a117104b82864d3b23ec174af6d392709"><td class="memItemLeft" >   void *   <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a117104b82864d3b23ec174af6d392709">p</a></td></tr> +<tr class="memdesc:a117104b82864d3b23ec174af6d392709"><td class="mdescLeft"> </td><td class="mdescRight">message or mail as void pointer <a href="#a117104b82864d3b23ec174af6d392709"></a><br/></td></tr> +<tr class="separator:a117104b82864d3b23ec174af6d392709"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad0dda1bf7e74f1576261d493fba232b6"><td class="memItemLeft" >   int32_t   <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad0dda1bf7e74f1576261d493fba232b6">signals</a></td></tr> +<tr class="memdesc:ad0dda1bf7e74f1576261d493fba232b6"><td class="mdescLeft"> </td><td class="mdescRight">signal flags <a href="#ad0dda1bf7e74f1576261d493fba232b6"></a><br/></td></tr> +<tr class="separator:ad0dda1bf7e74f1576261d493fba232b6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0b9f8fd3645f01d8cb09cae82add2d7f"><td class="memItemLeft" valign="top">} </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f">value</a></td></tr> +<tr class="memdesc:a0b9f8fd3645f01d8cb09cae82add2d7f"><td class="mdescLeft"> </td><td class="mdescRight">event value <a href="#a0b9f8fd3645f01d8cb09cae82add2d7f"></a><br/></td></tr> +<tr class="separator:a0b9f8fd3645f01d8cb09cae82add2d7f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a596b6d55c3321db19239256bbe403df6"><td class="memItemLeft" >union {</td></tr> +<tr class="memitem:ac86175a4b1706bee596f3018322df26e"><td class="memItemLeft" >   <a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a>   <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ac86175a4b1706bee596f3018322df26e">mail_id</a></td></tr> +<tr class="memdesc:ac86175a4b1706bee596f3018322df26e"><td class="mdescLeft"> </td><td class="mdescRight">mail id obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> <a href="#ac86175a4b1706bee596f3018322df26e"></a><br/></td></tr> +<tr class="separator:ac86175a4b1706bee596f3018322df26e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af394cbe21dde7377974e63af38cd87b0"><td class="memItemLeft" >   <a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a>   <a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#af394cbe21dde7377974e63af38cd87b0">message_id</a></td></tr> +<tr class="memdesc:af394cbe21dde7377974e63af38cd87b0"><td class="mdescLeft"> </td><td class="mdescRight">message id obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> <a href="#af394cbe21dde7377974e63af38cd87b0"></a><br/></td></tr> +<tr class="separator:af394cbe21dde7377974e63af38cd87b0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a596b6d55c3321db19239256bbe403df6"><td class="memItemLeft" valign="top">} </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a596b6d55c3321db19239256bbe403df6">def</a></td></tr> +<tr class="memdesc:a596b6d55c3321db19239256bbe403df6"><td class="mdescLeft"> </td><td class="mdescRight">event definition <a href="#a596b6d55c3321db19239256bbe403df6"></a><br/></td></tr> +<tr class="separator:a596b6d55c3321db19239256bbe403df6"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h4 class="groupheader">Field Documentation</h4> +<a class="anchor" id="a596b6d55c3321db19239256bbe403df6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">union { ... } def</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ac86175a4b1706bee596f3018322df26e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> mail_id</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="af394cbe21dde7377974e63af38cd87b0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> message_id</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a117104b82864d3b23ec174af6d392709"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void* p</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ad0dda1bf7e74f1576261d493fba232b6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t signals</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ad477a289f1f03ac45407b64268d707d3"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a9e0a00edabf3b8a5dafff624fff7bbfc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t v</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a0b9f8fd3645f01d8cb09cae82add2d7f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">union { ... } value</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> + +</div> +</div> +<a name="structos__mail_q" id="structos__mail_q"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">struct os_mailQ</td> + </tr> + </table> +</div><div class="memdoc"> +<div class="textblock"><p>The <b><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a></b> structure describes the events returned by CMSIS-RTOS functions. </p> +</div> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___definitions.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___definitions.js new file mode 100644 index 0000000..5eab500 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___definitions.js @@ -0,0 +1,14 @@ +var group___c_m_s_i_s___r_t_o_s___definitions = +[ + [ "osEvent", "group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event", [ + [ "def", "group___c_m_s_i_s___r_t_o_s___definitions.html#a596b6d55c3321db19239256bbe403df6", null ], + [ "mail_id", "group___c_m_s_i_s___r_t_o_s___definitions.html#ac86175a4b1706bee596f3018322df26e", null ], + [ "message_id", "group___c_m_s_i_s___r_t_o_s___definitions.html#af394cbe21dde7377974e63af38cd87b0", null ], + [ "p", "group___c_m_s_i_s___r_t_o_s___definitions.html#a117104b82864d3b23ec174af6d392709", null ], + [ "signals", "group___c_m_s_i_s___r_t_o_s___definitions.html#ad0dda1bf7e74f1576261d493fba232b6", null ], + [ "status", "group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3", null ], + [ "v", "group___c_m_s_i_s___r_t_o_s___definitions.html#a9e0a00edabf3b8a5dafff624fff7bbfc", null ], + [ "value", "group___c_m_s_i_s___r_t_o_s___definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f", null ] + ] ], + [ "os_mailQ", "group___c_m_s_i_s___r_t_o_s___definitions.html#structos__mail_q", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___inter_thread.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___inter_thread.html new file mode 100644 index 0000000..843de70 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___inter_thread.html @@ -0,0 +1,133 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Inter-Thread Communication and Resource Sharing</title> +<title>CMSIS-RTOS: Inter-Thread Communication and Resource Sharing</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___inter_thread.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#groups">Content</a> </div> + <div class="headertitle"> +<div class="title">Inter-Thread Communication and Resource Sharing</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s.html">CMSIS-RTOS API</a></div></div><!--header--> +<div class="contents"> + +<p>Functions for inter-thread communication. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a> +Content</h2></td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___signal_mgmt"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html">Signal Events</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___signal_mgmt"><td class="mdescLeft"> </td><td class="mdescRight">Synchronize threads using signals. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___message"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html">Message Queue</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___message"><td class="mdescLeft"> </td><td class="mdescRight">Exchange messages between threads in a FIFO-like operation. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___pool_mgmt"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html">Memory Pool</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___pool_mgmt"><td class="mdescLeft"> </td><td class="mdescRight">Manage thread-safe fixed-size blocks of dynamic memory. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___mail"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html">Mail Queue</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___mail"><td class="mdescLeft"> </td><td class="mdescRight">Exchange data between threads using a queue of memory blocks. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___mutex_mgmt"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html">Mutexes</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___mutex_mgmt"><td class="mdescLeft"> </td><td class="mdescRight">Synchronize resource access using Mutual Exclusion (Mutex). <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:group___c_m_s_i_s___r_t_o_s___semaphore_mgmt"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html">Semaphores</a></td></tr> +<tr class="memdesc:group___c_m_s_i_s___r_t_o_s___semaphore_mgmt"><td class="mdescLeft"> </td><td class="mdescRight">Access shared resources simultaneously from different threads. <br/></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>In most applications, threads need to <b>communicate</b> <b>with</b> <b>each</b> <b>other</b> or <b>access</b> <b>shared</b> <b>resources</b> together. There are many ways to exchange data between threads, for example using shared data, polling loops and message passing.</p> +<p>Many resources in a microcontroller can be considered as <b>serially-reusable</b>. This means that they can be used repeatedly by different threads, but only by <b>one</b> <b>thread</b> <b>at</b> <b>a</b> <b>time</b> (for example communication peripherals such as <b>UARTs</b>, <b>memory</b>, and <b>files</b> that need to be modified).</p> +<p>The CMSIS-RTOS API provides different means to pass messages between threads to make inter-thread communication more efficient. Also, resource sharing is inherently supported. The following methods are available to the user: </p> +<h2>Inter-Thread Communication</h2> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html">Signal Events</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html">Message Queue</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html">Memory Pool</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html">Mail Queue</a></li> +</ul> +<h2>Resource Sharing</h2> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html">Mutexes</a></li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html">Semaphores</a> </li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___inter_thread.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___inter_thread.js new file mode 100644 index 0000000..12c2295 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___inter_thread.js @@ -0,0 +1,9 @@ +var group___c_m_s_i_s___r_t_o_s___inter_thread = +[ + [ "Signal Events", "group___c_m_s_i_s___r_t_o_s___signal_mgmt.html", "group___c_m_s_i_s___r_t_o_s___signal_mgmt" ], + [ "Message Queue", "group___c_m_s_i_s___r_t_o_s___message.html", "group___c_m_s_i_s___r_t_o_s___message" ], + [ "Memory Pool", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html", "group___c_m_s_i_s___r_t_o_s___pool_mgmt" ], + [ "Mail Queue", "group___c_m_s_i_s___r_t_o_s___mail.html", "group___c_m_s_i_s___r_t_o_s___mail" ], + [ "Mutexes", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt" ], + [ "Semaphores", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt" ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html new file mode 100644 index 0000000..4adc773 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html @@ -0,0 +1,429 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Kernel Information and Control</title> +<title>CMSIS-RTOS: Kernel Information and Control</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Kernel Information and Control</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s.html">CMSIS-RTOS API</a></div></div><!--header--> +<div class="contents"> + +<p>Provide version/system information and start the RTOS Kernel. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga22f7d235bc9f783933bd5a981fd79696"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a>   1</td></tr> +<tr class="memdesc:ga22f7d235bc9f783933bd5a981fd79696"><td class="mdescLeft"> </td><td class="mdescRight">main thread 1=main can be thread, 0=not available <a href="#ga22f7d235bc9f783933bd5a981fd79696"></a><br/></td></tr> +<tr class="separator:ga22f7d235bc9f783933bd5a981fd79696"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gae554ec16c23c5b7d65affade2a351891"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a>   1</td></tr> +<tr class="memdesc:gae554ec16c23c5b7d65affade2a351891"><td class="mdescLeft"> </td><td class="mdescRight">osKernelSysTick functions: 1=available, 0=not available <a href="#gae554ec16c23c5b7d65affade2a351891"></a><br/></td></tr> +<tr class="separator:gae554ec16c23c5b7d65affade2a351891"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga702196bacccbb978620c736b209387f1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga702196bacccbb978620c736b209387f1">osCMSIS</a>   0x10002</td></tr> +<tr class="memdesc:ga702196bacccbb978620c736b209387f1"><td class="mdescLeft"> </td><td class="mdescRight">API version (main [31:16] .sub [15:0]) <a href="#ga702196bacccbb978620c736b209387f1"></a><br/></td></tr> +<tr class="separator:ga702196bacccbb978620c736b209387f1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gab78dce646fabec479c5f34bc5175b7de"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gab78dce646fabec479c5f34bc5175b7de">osCMSIS_KERNEL</a>   0x10000</td></tr> +<tr class="memdesc:gab78dce646fabec479c5f34bc5175b7de"><td class="mdescLeft"> </td><td class="mdescRight">RTOS identification and version (main [31:16] .sub [15:0]) <a href="#gab78dce646fabec479c5f34bc5175b7de"></a><br/></td></tr> +<tr class="separator:gab78dce646fabec479c5f34bc5175b7de"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga47cf03658f01cdffca688e9096b58289"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga47cf03658f01cdffca688e9096b58289">osKernelSystemId</a>   "KERNEL V1.00"</td></tr> +<tr class="memdesc:ga47cf03658f01cdffca688e9096b58289"><td class="mdescLeft"> </td><td class="mdescRight">RTOS identification string. <a href="#ga47cf03658f01cdffca688e9096b58289"></a><br/></td></tr> +<tr class="separator:ga47cf03658f01cdffca688e9096b58289"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga9e0954d52722673e2031233a2ab99960"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>   100000000</td></tr> +<tr class="memdesc:ga9e0954d52722673e2031233a2ab99960"><td class="mdescLeft"> </td><td class="mdescRight">The RTOS kernel system timer frequency in Hz. <a href="#ga9e0954d52722673e2031233a2ab99960"></a><br/></td></tr> +<tr class="separator:ga9e0954d52722673e2031233a2ab99960"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gae12c190af42d7310d8006d64f4ed5a88"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>(microsec)   (((uint64_t)microsec * (<a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>)) / 1000000)</td></tr> +<tr class="memdesc:gae12c190af42d7310d8006d64f4ed5a88"><td class="mdescLeft"> </td><td class="mdescRight">Convert a microseconds value to a RTOS kernel system timer value. <a href="#gae12c190af42d7310d8006d64f4ed5a88"></a><br/></td></tr> +<tr class="separator:gae12c190af42d7310d8006d64f4ed5a88"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ga53d078a801022e202e8115c083ece68e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> (void)</td></tr> +<tr class="memdesc:ga53d078a801022e202e8115c083ece68e"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the RTOS Kernel for creating objects. <a href="#ga53d078a801022e202e8115c083ece68e"></a><br/></td></tr> +<tr class="separator:ga53d078a801022e202e8115c083ece68e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> (void)</td></tr> +<tr class="memdesc:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="mdescLeft"> </td><td class="mdescRight">Start the RTOS Kernel. <a href="#gaab668ffd2ea76bb0a77ab0ab385eaef2"></a><br/></td></tr> +<tr class="separator:gaab668ffd2ea76bb0a77ab0ab385eaef2"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga3b571de44cd3094c643247a7397f86b5"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5">osKernelRunning</a> (void)</td></tr> +<tr class="memdesc:ga3b571de44cd3094c643247a7397f86b5"><td class="mdescLeft"> </td><td class="mdescRight">Check if the RTOS kernel is already started. <a href="#ga3b571de44cd3094c643247a7397f86b5"></a><br/></td></tr> +<tr class="separator:ga3b571de44cd3094c643247a7397f86b5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gad0262e4688e95d1e9038afd9bcc16001"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a> (void)</td></tr> +<tr class="memdesc:gad0262e4688e95d1e9038afd9bcc16001"><td class="mdescLeft"> </td><td class="mdescRight">Get the RTOS kernel system timer counter. <a href="#gad0262e4688e95d1e9038afd9bcc16001"></a><br/></td></tr> +<tr class="separator:gad0262e4688e95d1e9038afd9bcc16001"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>The Kernel Information and Control function group allows to:</p> +<ul> +<li>obtain information about the system and the underlying kernel.</li> +<li>obtain version information about the CMSIS-RTOS API.</li> +<li>initialize of the RTOS kernel for creating objects.</li> +<li>start the RTOS kernel and thread switching.</li> +<li>check the execution status of the RTOS kernel.</li> +</ul> +<p>The function <b>main</b> is a special thread function that may be started at system initialization. In this case it has the initial priority <em>osPriorityNormal</em>.</p> +<p>When reaching <b>main</b>, it is necessary to:</p> +<ol type="1"> +<li>Call <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e" title="Initialize the RTOS Kernel for creating objects.">osKernelInitialize()</a> to initialize the CMSIS-RTOS Kernel</li> +<li>Setup device peripherals and create other RTOS objects using the <b>os*Create</b> functions.</li> +<li>Start the Kernel and begin thread switching by calling <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2" title="Start the RTOS Kernel.">osKernelStart()</a>.</li> +</ol> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e" title="Initialize the RTOS Kernel for creating objects.">osKernelInitialize</a> (); <span class="comment">// initialize CMSIS-RTOS</span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// initialize peripherals here</span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// create 'thread' functions that start executing,</span></div> +<div class="line"> <span class="comment">// example: tid_name = osThreadCreate (osThread(name), NULL);</span></div> +<div class="line"> </div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2" title="Start the RTOS Kernel.">osKernelStart</a> (); <span class="comment">// start thread execution </span></div> +<div class="line">}</div> +</div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="ga702196bacccbb978620c736b209387f1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osCMSIS   0x10002</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Version information of the CMSIS-RTOS API whereby major version is in bits [31:16] and sub version in bits [15:0]. The value 0x10000 represents version 1.00.</p> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osCMSIS</b> identifies the CMSIS-RTOS API version. </dd></dl> + +</div> +</div> +<a class="anchor" id="gab78dce646fabec479c5f34bc5175b7de"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osCMSIS_KERNEL   0x10000</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Identifies the underlying RTOS kernel and version number. The actual name of that define depends on the RTOS Kernel used in the implementation. For example, <b>osCMSIS_FreeRTOS</b> identifies the FreeRTOS kernel and the value indicates the version number of that kernel whereby the major version is in bits [31:16] and sub version in bits [15:0]. The value 0x10000 represents version 1.00.</p> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>osCMSIS_KERNEL</b> identifies the underlying RTOS kernel and version number. </dd></dl> + +</div> +</div> +<a class="anchor" id="ga22f7d235bc9f783933bd5a981fd79696"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_MainThread   1</td> + </tr> + </table> +</div><div class="memdoc"> +<p>A CMSIS-RTOS implementation may support to start thread execution with the function 'main'.</p> +<ul> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a> is 1 the RTOS offers to start with 'main'. The RTOS kernel is in this case already started.</li> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696">osFeature_MainThread</a> is 0 the RTOS requires explicit start with <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a>.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osFeature_xxx</b> shall be consistent in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="gae554ec16c23c5b7d65affade2a351891"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_SysTick   1</td> + </tr> + </table> +</div><div class="memdoc"> +<p>A CMSIS-RTOS implementation may provide access to the RTOS kernel system timer.</p> +<ul> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a> is 1 access to the RTOS kernel system timer is provided with <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>, and <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>.</li> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891">osFeature_SysTick</a> is 0 access to the RTOS kernel system timer is not implemented. </li> +</ul> + +</div> +</div> +<a class="anchor" id="ga47cf03658f01cdffca688e9096b58289"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osKernelSystemId   "KERNEL V1.00"</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Defines a string that identifies the underlying RTOS Kernel and provides version information. The length of that string is limited to 21 bytes. A valid identification string is for example, <b>"FreeRTOS V1.00"</b>.</p> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelSystemId</b> shall be consistent in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ga9e0954d52722673e2031233a2ab99960"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osKernelSysTickFrequency   100000000</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Specifies the frequency of the Kernel SysTick timer in Hz. The value is typically use to scale a time value and is for example used in <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>.</p> +<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001" title="Get the RTOS kernel system timer counter.">osKernelSysTick</a></dd></dl> +<dl class="section note"><dt>Note</dt><dd>Reflects the system timer setting and is typically defined in a configuration file. </dd></dl> + +</div> +</div> +<a class="anchor" id="gae12c190af42d7310d8006d64f4ed5a88"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osKernelSysTickMicroSec</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">microsec</td><td>)</td> + <td>   (((uint64_t)microsec * (<a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>)) / 1000000)</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Allows you to scale a microsecond value to the frequency of the Kernel SysTick timer. This macro is typically used to check for short timeouts in polling loops.</p> +<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001" title="Get the RTOS kernel system timer counter.">osKernelSysTick</a></dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">microsec</td><td>time value in microseconds. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>time value normalized to the <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a> </dd></dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="ga53d078a801022e202e8115c083ece68e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osKernelInitialize </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelInitialize</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Initialize of the RTOS Kernel to allow peripheral setup and creation of other RTOS objects with the functions:</p> +<ul> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> : Create a thread function.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> : Define attributes of the timer callback function.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> : Define and initialize a mutex.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> : Define and initialize a semaphore.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> : Define and initialize a fix-size memory pool.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> : Define and initialize a message queue.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> : Define and initialize a mail queue with fix-size memory blocks.</li> +</ul> +<p>The RTOS kernel does not start thread switching until the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> is called.</p> +<dl class="section note"><dt>Note</dt><dd>In case that the RTOS Kernel starts thread execution with the function <em>main</em> the function osKernelInitialize stops thread switching. This allows you to setup the system to a defined state before thread switching is resumed with <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div> +<div class="line"> <span class="keywordflow">if</span> (!<a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5" title="Check if the RTOS kernel is already started.">osKernelRunning</a> ()) { <span class="comment">// if kernel is not running, initialize the kernel</span></div> +<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e" title="Initialize the RTOS Kernel for creating objects.">osKernelInitialize</a> () != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) { <span class="comment">// check osStatus for other possible valid values</span></div> +<div class="line"> <span class="comment">// exit with an error message</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga3b571de44cd3094c643247a7397f86b5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t osKernelRunning </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelRunning</b> shall be consistent in every CMSIS-RTOS. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd>0 RTOS is not started, 1 RTOS is started.</dd></dl> +<p>Identifies if the RTOS kernel is started. For systems with the option to start the <em>main</em> function as a thread this allows you to identify that the RTOS kernel is already running.</p> +<dl class="section note"><dt>Note</dt><dd><a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) { <span class="comment">// program execution starts here</span></div> +<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5" title="Check if the RTOS kernel is already started.">osKernelRunning</a> ()) { </div> +<div class="line"> : <span class="comment">// main is already a thread function</span></div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="gaab668ffd2ea76bb0a77ab0ab385eaef2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osKernelStart </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelStart</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Start the RTOS Kernel and begin thread switching.</p> +<dl class="section note"><dt>Note</dt><dd>When the CMSIS-RTOS starts thread execution with the function <em>main</em> this function resumes thread switching. The <em>main</em> thread will continue executing after <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a>.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the RTOS kernel has been successfully started.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">int</span> main (<span class="keywordtype">void</span>) {</div> +<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e" title="Initialize the RTOS Kernel for creating objects.">osKernelInitialize</a> () != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) { <span class="comment">// check osStatus for other possible valid values</span></div> +<div class="line"> <span class="comment">// exit with an error message</span></div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (!<a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5" title="Check if the RTOS kernel is already started.">osKernelRunning</a> ()) { <span class="comment">// is the kernel running ?</span></div> +<div class="line"> <span class="keywordflow">if</span> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2" title="Start the RTOS Kernel.">osKernelStart</a> () != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) { <span class="comment">// start the kernel</span></div> +<div class="line"> <span class="comment">// kernel could not be started</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="gad0262e4688e95d1e9038afd9bcc16001"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t osKernelSysTick </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osKernelSysTick</b> shall be consistent in every CMSIS-RTOS. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd>RTOS kernel system timer as 32-bit value</dd></dl> +<p>Get the value of the Kernel SysTick timer for time comparison. The value is a rolling 32-bit counter that is typically composed of the kernel system interrupt timer value and an counter that counts these interrupts.</p> +<p>This function allows the implementation of timeout checks. These are for example required when checking for a busy status in a device or peripheral initialization routine.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"></div> +<div class="line"><span class="keywordtype">void</span> SetupDevice (<span class="keywordtype">void</span>) {</div> +<div class="line"> uint32_t tick;</div> +<div class="line"> </div> +<div class="line"> tick = <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001" title="Get the RTOS kernel system timer counter.">osKernelSysTick</a>(); <span class="comment">// get start value of the Kernel system tick</span></div> +<div class="line"> Device.Setup (); <span class="comment">// initialize a device or peripheral</span></div> +<div class="line"> <span class="keywordflow">do</span> { <span class="comment">// poll device busy status for 100 microseconds</span></div> +<div class="line"> <span class="keywordflow">if</span> (!Device.Busy) <span class="keywordflow">break</span>; <span class="comment">// check if device is correctly initialized</span></div> +<div class="line"> } <span class="keywordflow">while</span> ((<a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001" title="Get the RTOS kernel system timer counter.">osKernelSysTick</a>() - tick) < <a class="code" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88" title="Convert a microseconds value to a RTOS kernel system timer value.">osKernelSysTickMicroSec</a>(100)); </div> +<div class="line"> <span class="keywordflow">if</span> (Device.Busy) { </div> +<div class="line"> ; <span class="comment">// in case device still busy, signal error</span></div> +<div class="line"> }</div> +<div class="line"> <span class="comment">// start interacting with device</span></div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___kernel_ctrl.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___kernel_ctrl.js new file mode 100644 index 0000000..50eddf6 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___kernel_ctrl.js @@ -0,0 +1,14 @@ +var group___c_m_s_i_s___r_t_o_s___kernel_ctrl = +[ + [ "osCMSIS", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga702196bacccbb978620c736b209387f1", null ], + [ "osCMSIS_KERNEL", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gab78dce646fabec479c5f34bc5175b7de", null ], + [ "osFeature_MainThread", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696", null ], + [ "osFeature_SysTick", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891", null ], + [ "osKernelSystemId", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga47cf03658f01cdffca688e9096b58289", null ], + [ "osKernelSysTickFrequency", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960", null ], + [ "osKernelSysTickMicroSec", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88", null ], + [ "osKernelInitialize", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e", null ], + [ "osKernelRunning", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5", null ], + [ "osKernelStart", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2", null ], + [ "osKernelSysTick", "group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mail.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mail.html new file mode 100644 index 0000000..a28161e --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mail.html @@ -0,0 +1,594 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Mail Queue</title> +<title>CMSIS-RTOS: Mail Queue</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___mail.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Mail Queue</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html">Inter-Thread Communication and Resource Sharing</a></div></div><!--header--> +<div class="contents"> + +<p>Exchange data between threads using a queue of memory blocks. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a>   1</td></tr> +<tr class="memdesc:gaceb2e0071ce160d153047f2eac1aca8e"><td class="mdescLeft"> </td><td class="mdescRight">Mail Queues: 1=available, 0=not available. <a href="#gaceb2e0071ce160d153047f2eac1aca8e"></a><br/></td></tr> +<tr class="separator:gaceb2e0071ce160d153047f2eac1aca8e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga58d712b16c0c6668059f509386d1e55b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b">osMailQDef</a>(name, queue_sz, type)</td></tr> +<tr class="memdesc:ga58d712b16c0c6668059f509386d1e55b"><td class="mdescLeft"> </td><td class="mdescRight">Create a Mail Queue Definition. <a href="#ga58d712b16c0c6668059f509386d1e55b"></a><br/></td></tr> +<tr class="separator:ga58d712b16c0c6668059f509386d1e55b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>(name)   &os_mailQ_def_##name</td></tr> +<tr class="memdesc:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="mdescLeft"> </td><td class="mdescRight">Access a Mail Queue Definition. <a href="#gad2deeb66d51ade54e63d8f87ff2ec9d2"></a><br/></td></tr> +<tr class="separator:gad2deeb66d51ade54e63d8f87ff2ec9d2"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> (const <a class="el" href="structos_mail_q_def__t.html">osMailQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:gaa177e7fe5820dd70d8c9e46ded131174"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize mail queue. <a href="#gaa177e7fe5820dd70d8c9e46ded131174"></a><br/></td></tr> +<tr class="separator:gaa177e7fe5820dd70d8c9e46ded131174"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:gadf5ce811bd6a56e617e902a1db6c2194"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a mail. <a href="#gadf5ce811bd6a56e617e902a1db6c2194"></a><br/></td></tr> +<tr class="separator:gadf5ce811bd6a56e617e902a1db6c2194"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a mail and set memory block to zero. <a href="#ga8fde74f6fe5b9e88f75cc5eb8f2124fd"></a><br/></td></tr> +<tr class="separator:ga8fde74f6fe5b9e88f75cc5eb8f2124fd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga485ef6f81854ebda8ffbce4832181e02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02">osMailPut</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr> +<tr class="memdesc:ga485ef6f81854ebda8ffbce4832181e02"><td class="mdescLeft"> </td><td class="mdescRight">Put a mail to a queue. <a href="#ga485ef6f81854ebda8ffbce4832181e02"></a><br/></td></tr> +<tr class="separator:ga485ef6f81854ebda8ffbce4832181e02"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="mdescLeft"> </td><td class="mdescRight">Get a mail from a queue. <a href="#gac6ad7e6e7d6c4a80e60da22c57a42ccd"></a><br/></td></tr> +<tr class="separator:gac6ad7e6e7d6c4a80e60da22c57a42ccd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc">osMailFree</a> (<a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> queue_id, void *mail)</td></tr> +<tr class="memdesc:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="mdescLeft"> </td><td class="mdescRight">Free a memory block from a mail. <a href="#ga27c1060cf21393f96b4fd1ed1c0167cc"></a><br/></td></tr> +<tr class="separator:ga27c1060cf21393f96b4fd1ed1c0167cc"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>A <b>mail</b> <b>queue</b> resembles a <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html">Message Queue</a>, but the data that is being transferred consists of memory blocks that need to be allocated (before putting data in) and freed (after taking data out). The mail queue uses a <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html">Memory Pool</a> to create formatted memory blocks and passes pointers to these blocks in a message queue. This allows the data to stay in an allocated memory block while only a pointer is moved between the separate threads. This is an advantage over <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html">messages</a> that can transfer only a 32-bit value or a pointer. Using the mail queue functions, you can control, send, receive, or wait for mail.</p> +<div class="image"> +<img src="MailQueue.png" alt="MailQueue.png"/> +<div class="caption"> +CMSIS-RTOS Mail Queue</div></div> + <h2>Working with Mail Queues</h2> +<p>Follow these steps to create and use a mail queue:</p> +<ol type="1"> +<li>Declare a data structure that combines a number of elements: <div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div> +<div class="line"> uint32_t length;</div> +<div class="line"> uint32_t width;</div> +<div class="line"> uint32_t height;</div> +<div class="line"> uint32_t weight;</div> +<div class="line">} properties_t;</div> +</div><!-- fragment --></li> +<li>Declare a mail queue made up of these objects: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b" title="Create a Mail Queue Definition.">osMailQDef</a> (object_pool_q, 10, properties_t); <span class="comment">// Declare mail queue</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5" title="Mail ID identifies the mail queue (pointer to a mail queue control block).">osMailQId</a> (object_pool_q_id); <span class="comment">// Mail queue ID</span></div> +</div><!-- fragment --></li> +<li>Then, create the mail pool in a thread: <div class="fragment"><div class="line">object_pool_q_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174" title="Create and Initialize mail queue.">osMailCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2" title="Access a Mail Queue Definition.">osMailQ</a>(object_pool_q), NULL);</div> +</div><!-- fragment --></li> +<li>Allocate the mail queue within a thread and fill it with data: <div class="fragment"><div class="line">properties_t *object_data;</div> +<div class="line">*object_data = (properties_t *) <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194" title="Allocate a memory block from a mail.">osMailAlloc</a>(object_pool_q_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>);</div> +<div class="line"> </div> +<div class="line">object_data->length = 100;</div> +<div class="line">object_data->width = 10;</div> +<div class="line">object_data->height = 23;</div> +<div class="line">object_data->weight = 1000;</div> +</div><!-- fragment --></li> +<li>Pass the pointer to the mail queue to another thread: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02" title="Put a mail to a queue.">osMailPut</a>(object_pool_q_id, object_data);</div> +</div><!-- fragment --></li> +<li>Access the data in another thread: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> <span class="keyword">event</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd" title="Get a mail from a queue.">osMailGet</a>(properties_q_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>);</div> +<div class="line">properties_t *received = (properties_t *)event.value.p; <span class="comment">// ".p" indicates that the message is a pointer</span></div> +<div class="line">my_length(received->length);</div> +</div><!-- fragment --></li> +<li>Once the data has been used, the memory block must be freed so that the memory pool can be reused <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc" title="Free a memory block from a mail.">osMailFree</a>(object_pool_q_id, received);</div> +</div><!-- fragment --> </li> +</ol> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="gaceb2e0071ce160d153047f2eac1aca8e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_MailQ   1</td> + </tr> + </table> +</div><div class="memdoc"> +<p>A CMSIS-RTOS implementation may support mail queues.</p> +<ul> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 1 mail queues are supported.</li> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 0 no mail queues are supported. </li> +</ul> + +</div> +</div> +<a class="anchor" id="gad2deeb66d51ade54e63d8f87ff2ec9d2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osMailQ</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   &os_mailQ_def_##name</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access to the mail queue definition for the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the queue </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMailQ</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ga58d712b16c0c6668059f509386d1e55b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osMailQDef</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">queue_sz, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">type </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Define the attributes of a mail queue that can by the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a> using <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a>.</p> +<dl class="section note"><dt>Note</dt><dd>The parameter <em>thread</em> registers the receiving thread for a mail and is needed for the general <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> function to deliver the mail.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the queue </td></tr> + <tr><td class="paramname">queue_sz</td><td>maximum number of messages in queue </td></tr> + <tr><td class="paramname">type</td><td>data type of a single message element </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMailQDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="gadf5ce811bd6a56e617e902a1db6c2194"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void * osMailAlloc </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> </td> + <td class="paramname"><em>queue_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>pointer to memory block that can be filled with mail or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Allocate a memory block from the mail queue that is filled with the mail information.</p> +<p>The argument <em>queue_id</em> specifies a mail queue identifier that is obtain with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>.</p> +<p>The argument <em>millisec</em> specifies how long the system waits for a mail slot to become available. While the system waits the tread calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a mail slot can be allocated.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd> +<dd> +<a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p>A NULL pointer is returned when no memory slot can be obtained or <em>queue</em> specifies an illegal parameter. </p> + +</div> +</div> +<a class="anchor" id="ga8fde74f6fe5b9e88f75cc5eb8f2124fd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void * osMailCAlloc </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> </td> + <td class="paramname"><em>queue_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>pointer to memory block that can be filled with mail or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailCAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Allocate a memory block from the mail queue that is filled with the mail information. The memory block returned is cleared.</p> +<p>The argument <em>queue_id</em> specifies a mail queue identifier that is obtain with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>.</p> +<p>The argument <em>millisec</em> specifies how long the system waits for a mail slot to become available. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a mail slot can be allocated.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd> +<dd> +<a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p>A NULL pointer is returned when no memory block can be obtained or <em>queue</em> specifies an illegal parameter. </p> + +</div> +</div> +<a class="anchor" id="gaa177e7fe5820dd70d8c9e46ded131174"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> osMailCreate </td> + <td>(</td> + <td class="paramtype">const <a class="el" href="structos_mail_q_def__t.html">osMailQDef_t</a> * </td> + <td class="paramname"><em>queue_def</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td> + <td class="paramname"><em>thread_id</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_def</td><td>reference to the mail queue definition obtain with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2">osMailQ</a> </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID (obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>) or NULL. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>mail queue ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Initialize and create a mail queue.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> tid_thread1; <span class="comment">// ID for thread 1</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> tid_thread2; <span class="comment">// ID for thread 2</span></div> +<div class="line"> </div> +<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="comment">// Mail object structure</span></div> +<div class="line"> <span class="keywordtype">float</span> voltage; <span class="comment">// AD result of measured voltage</span></div> +<div class="line"> <span class="keywordtype">float</span> current; <span class="comment">// AD result of measured current</span></div> +<div class="line"> <span class="keywordtype">int</span> counter; <span class="comment">// A counter value</span></div> +<div class="line">} T_MEAS;</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b" title="Create a Mail Queue Definition.">osMailQDef</a>(mail, 16, T_MEAS); <span class="comment">// Define mail queue</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5" title="Mail ID identifies the mail queue (pointer to a mail queue control block).">osMailQId</a> mail;</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument); <span class="comment">// forward reference</span></div> +<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument);</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(send_thread, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 0); <span class="comment">// thread definitions</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(recv_thread, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 2000);</div> +<div class="line"> </div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// Thread 1: Send thread</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div> +<div class="line"> T_MEAS *mptr;</div> +<div class="line"> </div> +<div class="line"> mptr = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194" title="Allocate a memory block from a mail.">osMailAlloc</a>(mail, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// Allocate memory</span></div> +<div class="line"> mptr->voltage = 223.72; <span class="comment">// Set the mail content</span></div> +<div class="line"> mptr->current = 17.54;</div> +<div class="line"> mptr->counter = 120786;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02" title="Put a mail to a queue.">osMailPut</a>(mail, mptr); <span class="comment">// Send Mail</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a>(100);</div> +<div class="line"> </div> +<div class="line"> mptr = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194" title="Allocate a memory block from a mail.">osMailAlloc</a>(mail, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// Allocate memory</span></div> +<div class="line"> mptr->voltage = 227.23; <span class="comment">// Prepare 2nd mail</span></div> +<div class="line"> mptr->current = 12.41;</div> +<div class="line"> mptr->counter = 170823;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02" title="Put a mail to a queue.">osMailPut</a>(mail, mptr); <span class="comment">// Send Mail</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233" title="Pass control to next thread that is in state READY.">osThreadYield</a>(); <span class="comment">// Cooperative multitasking</span></div> +<div class="line"> <span class="comment">// We are done here, exit this thread</span></div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// Thread 2: Receive thread</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div> +<div class="line"> T_MEAS *rptr;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> evt;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">for</span> (;;) {</div> +<div class="line"> evt = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd" title="Get a mail from a queue.">osMailGet</a>(mail, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// wait for mail</span></div> +<div class="line"> <span class="keywordflow">if</span> (evt.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3" title="status code: event or error information">status</a> == <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926" title="function completed; mail event occurred.">osEventMail</a>) {</div> +<div class="line"> rptr = evt.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f" title="event value">value</a>.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a117104b82864d3b23ec174af6d392709" title="message or mail as void pointer">p</a>;</div> +<div class="line"> printf (<span class="stringliteral">"\nVoltage: %.2f V\n"</span>, rptr->voltage);</div> +<div class="line"> printf (<span class="stringliteral">"Current: %.2f A\n"</span>, rptr->current);</div> +<div class="line"> printf (<span class="stringliteral">"Number of cycles: %d\n"</span>, rptr->counter);</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc" title="Free a memory block from a mail.">osMailFree</a>(mail, rptr); <span class="comment">// free memory allocated for mail</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> StartApplication (<span class="keywordtype">void</span>) {</div> +<div class="line"> mail = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174" title="Create and Initialize mail queue.">osMailCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2" title="Access a Mail Queue Definition.">osMailQ</a>(mail), NULL); <span class="comment">// create mail queue</span></div> +<div class="line"> </div> +<div class="line"> tid_thread1 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(send_thread), NULL);</div> +<div class="line"> tid_thread2 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(recv_thread), NULL);</div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga27c1060cf21393f96b4fd1ed1c0167cc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMailFree </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> </td> + <td class="paramname"><em>queue_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"><em>mail</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">mail</td><td>pointer to the memory block that was obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd">osMailGet</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailFree</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Free the memory block specified by <em>mail</em> and return it to the mail queue.</p> +<dl class="section note"><dt>Note</dt><dd><a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the <em>mail</em> block is released.</li> +<li><em>osErrorValue:</em> <em>mail</em> block does not belong to the mail queue pool.</li> +<li><em>osErrorParameter:</em> the value to the parameter <em>queue_id</em> is incorrect. </li> +</ul> + +</div> +</div> +<a class="anchor" id="gac6ad7e6e7d6c4a80e60da22c57a42ccd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> osMailGet </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> </td> + <td class="paramname"><em>queue_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>event that contains mail information or error code. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailGet</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Suspend the execution of the current <b>RUNNING</b> thread until a mail arrives. When a mail is already in the queue, the function returns instantly with the mail information.</p> +<p>The argument <em>millisec</em> specifies how long the system waits for a mail to arrive. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a mail arrives.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd> +<dd> +<a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> no mail is available in the queue and no timeout was specified</li> +<li><em>osEventTimeout:</em> no mail has arrived during the given timeout period.</li> +<li><em>osEventMail:</em> mail received, <em>value.p</em> contains the pointer to mail content.</li> +<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range. </li> +</ul> + +</div> +</div> +<a class="anchor" id="ga485ef6f81854ebda8ffbce4832181e02"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMailPut </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a1dac049fb7725a8af8b26c71cbb373b5">osMailQId</a> </td> + <td class="paramname"><em>queue_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"><em>mail</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>mail queue ID obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174">osMailCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">mail</td><td>memory block previously allocated with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194">osMailAlloc</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd">osMailCAlloc</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMailPut</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Put the memory block specified with <em>mail</em> into the mail queue specified by <em>queue</em>.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the message is put into the queue.</li> +<li><em>osErrorValue:</em> <em>mail</em> was previously not allocated as memory slot.</li> +<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range. </li> +</ul> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mail.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mail.js new file mode 100644 index 0000000..72ce801 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mail.js @@ -0,0 +1,12 @@ +var group___c_m_s_i_s___r_t_o_s___mail = +[ + [ "osFeature_MailQ", "group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e", null ], + [ "osMailQ", "group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2", null ], + [ "osMailQDef", "group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b", null ], + [ "osMailAlloc", "group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194", null ], + [ "osMailCAlloc", "group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd", null ], + [ "osMailCreate", "group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174", null ], + [ "osMailFree", "group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc", null ], + [ "osMailGet", "group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd", null ], + [ "osMailPut", "group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___message.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___message.html new file mode 100644 index 0000000..336fd47 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___message.html @@ -0,0 +1,451 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Message Queue</title> +<title>CMSIS-RTOS: Message Queue</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___message.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Message Queue</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html">Inter-Thread Communication and Resource Sharing</a></div></div><!--header--> +<div class="contents"> + +<p>Exchange messages between threads in a FIFO-like operation. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga479a6561f859e3d4818e25708593d203"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga479a6561f859e3d4818e25708593d203">osFeature_MessageQ</a>   1</td></tr> +<tr class="memdesc:ga479a6561f859e3d4818e25708593d203"><td class="mdescLeft"> </td><td class="mdescRight">Message Queues: 1=available, 0=not available. <a href="#ga479a6561f859e3d4818e25708593d203"></a><br/></td></tr> +<tr class="separator:ga479a6561f859e3d4818e25708593d203"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac9a6a6276c12609793e7701afcc82326"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326">osMessageQDef</a>(name, queue_sz, type)</td></tr> +<tr class="memdesc:gac9a6a6276c12609793e7701afcc82326"><td class="mdescLeft"> </td><td class="mdescRight">Create a Message Queue Definition. <a href="#gac9a6a6276c12609793e7701afcc82326"></a><br/></td></tr> +<tr class="separator:gac9a6a6276c12609793e7701afcc82326"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>(name)   &os_messageQ_def_##name</td></tr> +<tr class="memdesc:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="mdescLeft"> </td><td class="mdescRight">Access a Message Queue Definition. <a href="#ga2d446a0b4bb90bf05d6f92eedeaabc97"></a><br/></td></tr> +<tr class="separator:ga2d446a0b4bb90bf05d6f92eedeaabc97"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:gaf3b9345cf426304d46565152bc26fb78"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> (const <a class="el" href="structos_message_q_def__t.html">osMessageQDef_t</a> *queue_def, <a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:gaf3b9345cf426304d46565152bc26fb78"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a Message Queue. <a href="#gaf3b9345cf426304d46565152bc26fb78"></a><br/></td></tr> +<tr class="separator:gaf3b9345cf426304d46565152bc26fb78"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d">osMessagePut</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t info, uint32_t millisec)</td></tr> +<tr class="memdesc:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="mdescLeft"> </td><td class="mdescRight">Put a Message to a Queue. <a href="#gac0dcf462fc92de8ffaba6cc004514a6d"></a><br/></td></tr> +<tr class="separator:gac0dcf462fc92de8ffaba6cc004514a6d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae">osMessageGet</a> (<a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> queue_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="mdescLeft"> </td><td class="mdescRight">Get a Message or Wait for a Message from a Queue. <a href="#ga6c6892b8f2296cca6becd57ca2d7e1ae"></a><br/></td></tr> +<tr class="separator:ga6c6892b8f2296cca6becd57ca2d7e1ae"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p><b>Message</b> <b>passing</b> is another basic communication model between threads. In the message passing model, one thread sends data explicitly, while another thread receives it. The operation is more like some kind of I/O rather than a direct access to information to be shared. In CMSIS-RTOS, this mechanism is called s <b>message</b> <b>queue</b>. The data is passed from one thread to another in a FIFO-like operation. Using message queue functions, you can control, send, receive, or wait for messages. The data to be passed can be of integer or pointer type:</p> +<div class="image"> +<img src="MessageQueue.png" alt="MessageQueue.png"/> +<div class="caption"> +CMSIS-RTOS Message Queue</div></div> +<p> Compared to a <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html">Memory Pool</a>, message queues are less efficient in general, but solve a broader range of problems. Sometimes, threads do not have a common address space or the use of shared memory raises problems, such as mutual exclusion.</p> +<h2>Working with Message Queues</h2> +<p>Follow these steps to create and use a message queue:</p> +<ol type="1"> +<li>Setup the message queue: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326" title="Create a Message Queue Definition.">osMessageQDef</a>(message_q, 5, uint32_t); <span class="comment">// Declare a message queue</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f" title="Message ID identifies the message queue (pointer to a message queue control block).">osMessageQId</a> (message_q_id); <span class="comment">// Declare an ID for the message queue</span></div> +</div><!-- fragment --></li> +<li>Then, create the message queue in a thread: <div class="fragment"><div class="line">message_q_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78" title="Create and Initialize a Message Queue.">osMessageCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97" title="Access a Message Queue Definition.">osMessageQ</a>(message_q), NULL);</div> +</div><!-- fragment --></li> +<li>Fill the message queue with data: <div class="fragment"><div class="line">uint32_t data = 512;</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02" title="Put a mail to a queue.">osMailPut</a>(message_q_id, data, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>);</div> +</div><!-- fragment --></li> +<li>From the receiving thread access the data using: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> <span class="keyword">event</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae" title="Get a Message or Wait for a Message from a Queue.">osMessageGet</a>(message_q_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>);</div> +</div><!-- fragment --> </li> +</ol> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="ga479a6561f859e3d4818e25708593d203"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_MessageQ   1</td> + </tr> + </table> +</div><div class="memdoc"> +<p>A CMSIS-RTOS implementation may support message queues.</p> +<ul> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 1 message queues are supported.</li> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e">osFeature_MailQ</a> is 0 no message queues are supported. </li> +</ul> + +</div> +</div> +<a class="anchor" id="ga2d446a0b4bb90bf05d6f92eedeaabc97"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osMessageQ</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   &os_messageQ_def_##name</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access to the message queue definition for the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the queue </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMessageQ</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="gac9a6a6276c12609793e7701afcc82326"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osMessageQDef</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">queue_sz, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">type </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Define the attributes of a message queue created by the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a> using <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>.</p> +<dl class="section note"><dt>Note</dt><dd>The parameter <em>thread</em> registers the receiving thread for a message and is needed for the general <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> function to deliver the message.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the queue. </td></tr> + <tr><td class="paramname">queue_sz</td><td>maximum number of messages in the queue. </td></tr> + <tr><td class="paramname">type</td><td>data type of a single message element (for debugger). </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMessageQDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="gaf3b9345cf426304d46565152bc26fb78"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> osMessageCreate </td> + <td>(</td> + <td class="paramtype">const <a class="el" href="structos_message_q_def__t.html">osMessageQDef_t</a> * </td> + <td class="paramname"><em>queue_def</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td> + <td class="paramname"><em>thread_id</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_def</td><td>queue definition referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97">osMessageQ</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID (obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>) or NULL. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>message queue ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMessageCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Create and initialize a message queue.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> tid_thread1; <span class="comment">// ID for thread 1</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> tid_thread2; <span class="comment">// for thread 2</span></div> +<div class="line"> </div> +<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{ <span class="comment">// Message object structure</span></div> +<div class="line"> <span class="keywordtype">float</span> voltage; <span class="comment">// AD result of measured voltage</span></div> +<div class="line"> <span class="keywordtype">float</span> current; <span class="comment">// AD result of measured current</span></div> +<div class="line"> <span class="keywordtype">int</span> counter; <span class="comment">// A counter value</span></div> +<div class="line">} T_MEAS;</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a>(mpool, 16, T_MEAS); <span class="comment">// Define memory pool</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686" title="Pool ID identifies the memory pool (pointer to a memory pool control block).">osPoolId</a> mpool;</div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326" title="Create a Message Queue Definition.">osMessageQDef</a>(MsgBox, 16, T_MEAS); <span class="comment">// Define message queue</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f" title="Message ID identifies the message queue (pointer to a message queue control block).">osMessageQId</a> MsgBox;</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument); <span class="comment">// forward reference</span></div> +<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument); <span class="comment">// forward reference</span></div> +<div class="line"> <span class="comment">// Thread definitions</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(send_thread, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 0);</div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(recv_thread, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 2000);</div> +<div class="line"> </div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// Thread 1: Send thread</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="keywordtype">void</span> send_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div> +<div class="line"> T_MEAS *mptr;</div> +<div class="line"> </div> +<div class="line"> mptr = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543" title="Allocate a memory block from a memory pool.">osPoolAlloc</a>(mpool); <span class="comment">// Allocate memory for the message</span></div> +<div class="line"> mptr->voltage = 223.72; <span class="comment">// Set the message content</span></div> +<div class="line"> mptr->current = 17.54;</div> +<div class="line"> mptr->counter = 120786;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d" title="Put a Message to a Queue.">osMessagePut</a>(MsgBox, (uint32_t)mptr, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// Send Message</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a>(100);</div> +<div class="line"> </div> +<div class="line"> mptr = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543" title="Allocate a memory block from a memory pool.">osPoolAlloc</a>(mpool); <span class="comment">// Allocate memory for the message</span></div> +<div class="line"> mptr->voltage = 227.23; <span class="comment">// Prepare a 2nd message</span></div> +<div class="line"> mptr->current = 12.41;</div> +<div class="line"> mptr->counter = 170823;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d" title="Put a Message to a Queue.">osMessagePut</a>(MsgBox, (uint32_t)mptr, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// Send Message</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233" title="Pass control to next thread that is in state READY.">osThreadYield</a>(); <span class="comment">// Cooperative multitasking</span></div> +<div class="line"> <span class="comment">// We are done here, exit this thread</span></div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// Thread 2: Receive thread</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="keywordtype">void</span> recv_thread (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div> +<div class="line"> T_MEAS *rptr;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> evt;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">for</span> (;;) {</div> +<div class="line"> evt = <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae" title="Get a Message or Wait for a Message from a Queue.">osMessageGet</a>(MsgBox, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// wait for message</span></div> +<div class="line"> <span class="keywordflow">if</span> (evt.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3" title="status code: event or error information">status</a> == <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342" title="function completed; message event occurred.">osEventMessage</a>) {</div> +<div class="line"> rptr = evt.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f" title="event value">value</a>.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#a117104b82864d3b23ec174af6d392709" title="message or mail as void pointer">p</a>;</div> +<div class="line"> printf (<span class="stringliteral">"\nVoltage: %.2f V\n"</span>, rptr->voltage);</div> +<div class="line"> printf (<span class="stringliteral">"Current: %.2f A\n"</span>, rptr->current);</div> +<div class="line"> printf (<span class="stringliteral">"Number of cycles: %d\n"</span>, rptr->counter);</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54" title="Return an allocated memory block back to a specific memory pool.">osPoolFree</a>(mpool, rptr); <span class="comment">// free memory allocated for message</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> StartApplication (<span class="keywordtype">void</span>) {</div> +<div class="line"> mpool = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a" title="Create and Initialize a memory pool.">osPoolCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697" title="Access a Memory Pool definition.">osPool</a>(mpool)); <span class="comment">// create memory pool</span></div> +<div class="line"> MsgBox = <a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78" title="Create and Initialize a Message Queue.">osMessageCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97" title="Access a Message Queue Definition.">osMessageQ</a>(MsgBox), NULL); <span class="comment">// create msg queue</span></div> +<div class="line"> </div> +<div class="line"> tid_thread1 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(send_thread), NULL);</div> +<div class="line"> tid_thread2 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(recv_thread), NULL);</div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga6c6892b8f2296cca6becd57ca2d7e1ae"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> osMessageGet </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> </td> + <td class="paramname"><em>queue_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>message queue ID obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>event information that includes status code. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMessageGet</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Suspend the execution of the current <b>RUNNING</b> thread until a message arrives. When a message is already in the queue, the function returns instantly with the message information.</p> +<p>The argument <em>millisec</em> specifies how long the system waits for a message to become available. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout value can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a message arrives.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd> +<dd> +<a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> no message is available in the queue and no timeout was specified.</li> +<li><em>osEventTimeout:</em> no message has arrived during the given timeout period.</li> +<li><em>osEventMessage:</em> message received, <em>value.p</em> contains the pointer to message.</li> +<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range. </li> +</ul> + +</div> +</div> +<a class="anchor" id="gac0dcf462fc92de8ffaba6cc004514a6d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMessagePut </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#ad9ec70c32c6c521970636b521e12d17f">osMessageQId</a> </td> + <td class="paramname"><em>queue_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>info</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">queue_id</td><td>message queue ID obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78">osMessageCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">info</td><td>message information. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMessagePut</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Put the message <em>info</em> in a message queue specified by <em>queue_id</em>.</p> +<p>When the message queue is full, the system retries for a specified time with <em>millisec</em>. While the system retries the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a message queue slot becomes available.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>The parameter <em>millisec</em> must be 0 for using this function in an ISR. </dd> +<dd> +<a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the message is put into the queue.</li> +<li><em>osErrorResource:</em> no memory in the queue was available.</li> +<li><em>osErrorTimeoutResource:</em> no memory in the queue was available during the given time limit.</li> +<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range. </li> +</ul> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___message.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___message.js new file mode 100644 index 0000000..38de1fa --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___message.js @@ -0,0 +1,9 @@ +var group___c_m_s_i_s___r_t_o_s___message = +[ + [ "osFeature_MessageQ", "group___c_m_s_i_s___r_t_o_s___message.html#ga479a6561f859e3d4818e25708593d203", null ], + [ "osMessageQ", "group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97", null ], + [ "osMessageQDef", "group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326", null ], + [ "osMessageCreate", "group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78", null ], + [ "osMessageGet", "group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae", null ], + [ "osMessagePut", "group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html new file mode 100644 index 0000000..5cebaa7 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html @@ -0,0 +1,405 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Mutexes</title> +<title>CMSIS-RTOS: Mutexes</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Mutexes</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html">Inter-Thread Communication and Resource Sharing</a></div></div><!--header--> +<div class="contents"> + +<p>Synchronize resource access using Mutual Exclusion (Mutex). +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga9b522438489d7c402c95332b58bc94f3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3">osMutexDef</a>(name)   const <a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a> os_mutex_def_##name = { 0 }</td></tr> +<tr class="memdesc:ga9b522438489d7c402c95332b58bc94f3"><td class="mdescLeft"> </td><td class="mdescRight">Define a Mutex. <a href="#ga9b522438489d7c402c95332b58bc94f3"></a><br/></td></tr> +<tr class="separator:ga9b522438489d7c402c95332b58bc94f3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>(name)   &os_mutex_def_##name</td></tr> +<tr class="memdesc:ga1122a86faa64b4a0880c76cf68d0c934"><td class="mdescLeft"> </td><td class="mdescRight">Access a Mutex definition. <a href="#ga1122a86faa64b4a0880c76cf68d0c934"></a><br/></td></tr> +<tr class="separator:ga1122a86faa64b4a0880c76cf68d0c934"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ga5c9de56e717016e39e788064e9a291cc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a> (const <a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a> *mutex_def)</td></tr> +<tr class="memdesc:ga5c9de56e717016e39e788064e9a291cc"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a Mutex object. <a href="#ga5c9de56e717016e39e788064e9a291cc"></a><br/></td></tr> +<tr class="separator:ga5c9de56e717016e39e788064e9a291cc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="mdescLeft"> </td><td class="mdescRight">Wait until a Mutex becomes available. <a href="#ga5e1752b73f573ee015dbd9ef1edaba13"></a><br/></td></tr> +<tr class="separator:ga5e1752b73f573ee015dbd9ef1edaba13"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr> +<tr class="memdesc:ga006e4744d741e8e132c3d5bbc295afe1"><td class="mdescLeft"> </td><td class="mdescRight">Release a Mutex that was obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a>. <a href="#ga006e4744d741e8e132c3d5bbc295afe1"></a><br/></td></tr> +<tr class="separator:ga006e4744d741e8e132c3d5bbc295afe1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gac27e24135185d51d18f3dabc20910219"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> (<a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> mutex_id)</td></tr> +<tr class="memdesc:gac27e24135185d51d18f3dabc20910219"><td class="mdescLeft"> </td><td class="mdescRight">Delete a Mutex that was created by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. <a href="#gac27e24135185d51d18f3dabc20910219"></a><br/></td></tr> +<tr class="separator:gac27e24135185d51d18f3dabc20910219"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p><b>Mutual exclusion</b> (widely known as <b>Mutex</b>) is used in various operating systems for resource management. Many resources in a microcontroller device can be used repeatedly, but only by one thread at a time (for example communication channels, memory, and files). Mutexes are used to protect access to a shared resource. A mutex is created and then passed between the threads (they can acquire and release the mutex).</p> +<div class="image"> +<img src="Mutex.png" alt="Mutex.png"/> +<div class="caption"> +CMSIS-RTOS Mutex</div></div> +<p> A mutex is a special version of a <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html">semaphore</a>. Like the semaphore, it is a container for tokens. But instead of being able to have multiple tokens, a mutex can only carry one (representing the resource). Thus, a mutex token is binary and bounded. The advantage of a mutex is that it introduces thread ownership. When a thread acquires a mutex and becomes its owner, subsequent mutex acquires from that thread will succeed immediately without any latency. Thus, mutex acquires/releases can be nested.</p> +<dl class="section note"><dt>Note</dt><dd><ul> +<li>Mutex management functions cannot be called from interrupt service routines (ISR), unlike a binary semaphore that can be released from an ISR.</li> +</ul> +</dd></dl> +<h2>Working with Mutexes</h2> +<p>To use mutexes, you need to follow these steps for creating and using them:</p> +<ol type="1"> +<li>Declare the mutex container and initialize the mutex: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3" title="Define a Mutex.">osMutexDef</a> (uart_mutex); <span class="comment">// Declare mutex</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> (uart_mutex_id); <span class="comment">// Mutex ID</span></div> +</div><!-- fragment --></li> +<li>Create the mutex in a thread: <div class="fragment"><div class="line">uart_mutex_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc" title="Create and Initialize a Mutex object.">osMutexCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934" title="Access a Mutex definition.">osMutex</a>(uart_mutex));</div> +</div><!-- fragment --></li> +<li>Acquire the mutex when peripheral access is required: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13" title="Wait until a Mutex becomes available.">osMutexWait</a>(uart_mutex_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>);</div> +</div><!-- fragment --></li> +<li>When finished with the peripheral access, release the mutex: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1" title="Release a Mutex that was obtained by osMutexWait.">osMutexRelease</a>(uart_mutex_id);</div> +</div><!-- fragment --> </li> +</ol> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="ga1122a86faa64b4a0880c76cf68d0c934"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osMutex</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   &os_mutex_def_##name</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access to mutex object for the functions <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the mutex object. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMutex</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ga9b522438489d7c402c95332b58bc94f3"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osMutexDef</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   const <a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a> os_mutex_def_##name = { 0 }</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Define a mutex object that is referenced by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the mutex object. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osMutexDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="ga5c9de56e717016e39e788064e9a291cc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> osMutexCreate </td> + <td>(</td> + <td class="paramtype">const <a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a> * </td> + <td class="paramname"><em>mutex_def</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">mutex_def</td><td>mutex definition referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934">osMutex</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>mutex ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Create and initialize a Mutex object.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3" title="Define a Mutex.">osMutexDef</a> (MutexIsr); <span class="comment">// Mutex name definition</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> CreateMutex (<span class="keywordtype">void</span>) {</div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> mutex_id; </div> +<div class="line"> </div> +<div class="line"> mutex_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc" title="Create and Initialize a Mutex object.">osMutexCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934" title="Access a Mutex definition.">osMutex</a> (MutexIsr));</div> +<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div> +<div class="line"> <span class="comment">// Mutex object created</span></div> +<div class="line"> } </div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="gac27e24135185d51d18f3dabc20910219"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMutexDelete </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> </td> + <td class="paramname"><em>mutex_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">mutex_id</td><td>mutex ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexDelete</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Delete a Mutex object. The function releases internal memory obtained for Mutex handling. After this call the <em>mutex_id</em> is no longer valid and cannot be used. The Mutex may be created again using the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the mutex object has been deleted.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a> cannot be called from interrupt service routines.</li> +<li><em>osErrorResource:</em> all tokens have already been released.</li> +<li><em>osErrorParameter:</em> the parameter <em>mutex_id</em> is incorrect.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3" title="Define a Mutex.">osMutexDef</a> (MutexIsr); <span class="comment">// Mutex name definition </span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> mutex_id; <span class="comment">// Mutex id populated by the function CreateMutex()</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> CreateMutex (<span class="keywordtype">void</span>); <span class="comment">// function prototype that creates the Mutex</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> DeleteMutex (<a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> mutex_id) {</div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219" title="Delete a Mutex that was created by osMutexCreate.">osMutexDelete</a>(mutex_id);</div> +<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// handle failure code</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga006e4744d741e8e132c3d5bbc295afe1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMutexRelease </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> </td> + <td class="paramname"><em>mutex_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">mutex_id</td><td>mutex ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexRelease</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Release a Mutex that was obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a>. Other threads that currently wait for the same mutex will be now put into the state <b>READY</b>.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the mutex has been correctly released.</li> +<li><em>osErrorResource:</em> the mutex was not obtained before.</li> +<li><em>osErrorParameter:</em> the parameter <em>mutex_id</em> is incorrect.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1">osMutexRelease</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3" title="Define a Mutex.">osMutexDef</a> (MutexIsr); <span class="comment">// Mutex name definition </span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> mutex_id; <span class="comment">// Mutex id populated by the function CreateMutex()</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> CreateMutex (<span class="keywordtype">void</span>); <span class="comment">// function prototype that creates the Mutex</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> ReleaseMutex (<a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> mutex_id) {</div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1" title="Release a Mutex that was obtained by osMutexWait.">osMutexRelease</a>(mutex_id);</div> +<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// handle failure code</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga5e1752b73f573ee015dbd9ef1edaba13"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osMutexWait </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2">osMutexId</a> </td> + <td class="paramname"><em>mutex_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">mutex_id</td><td>mutex ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc">osMutexCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osMutexWait</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Wait until a Mutex becomes available. If no other thread has obtained the Mutex, the function instantly returns and blocks the mutex object.</p> +<p>The argument <em>millisec</em> specifies how long the system waits for a mutex. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until the mutex becomes available.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the mutex has been obtain.</li> +<li><em>osErrorTimeoutResource:</em> the mutex could not be obtained in the given time.</li> +<li><em>osErrorResource:</em> the mutex could not be obtained when no timeout was specified.</li> +<li><em>osErrorParameter:</em> the parameter <em>mutex_id</em> is incorrect.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13">osMutexWait</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3" title="Define a Mutex.">osMutexDef</a> (MutexIsr);</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> WaitMutex (<span class="keywordtype">void</span>) {</div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a3263c1ad9fd79b84f908d65e8da44ac2" title="Mutex ID identifies the mutex (pointer to a mutex control block).">osMutexId</a> mutex_id; </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div> +<div class="line"> </div> +<div class="line"> mutex_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc" title="Create and Initialize a Mutex object.">osMutexCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934" title="Access a Mutex definition.">osMutex</a> (MutexIsr));</div> +<div class="line"> <span class="keywordflow">if</span> (mutex_id != NULL) {</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13" title="Wait until a Mutex becomes available.">osMutexWait</a> (mutex_id, 0);</div> +<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// handle failure code</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mutex_mgmt.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mutex_mgmt.js new file mode 100644 index 0000000..1587dca --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___mutex_mgmt.js @@ -0,0 +1,9 @@ +var group___c_m_s_i_s___r_t_o_s___mutex_mgmt = +[ + [ "osMutex", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934", null ], + [ "osMutexDef", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3", null ], + [ "osMutexCreate", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc", null ], + [ "osMutexDelete", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219", null ], + [ "osMutexRelease", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1", null ], + [ "osMutexWait", "group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___pool_mgmt.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___pool_mgmt.html new file mode 100644 index 0000000..7a9d5dd --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___pool_mgmt.html @@ -0,0 +1,456 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Memory Pool</title> +<title>CMSIS-RTOS: Memory Pool</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___pool_mgmt.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Memory Pool</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html">Inter-Thread Communication and Resource Sharing</a></div></div><!--header--> +<div class="contents"> + +<p>Manage thread-safe fixed-size blocks of dynamic memory. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:gadd84b683001de327894851b428587caa"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a>   1</td></tr> +<tr class="memdesc:gadd84b683001de327894851b428587caa"><td class="mdescLeft"> </td><td class="mdescRight">Memory Pools: 1=available, 0=not available. <a href="#gadd84b683001de327894851b428587caa"></a><br/></td></tr> +<tr class="separator:gadd84b683001de327894851b428587caa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b">osPoolDef</a>(name, no, type)</td></tr> +<tr class="memdesc:ga87b471d4fe2d5dbd0040708edd52771b"><td class="mdescLeft"> </td><td class="mdescRight">Define a Memory Pool. <a href="#ga87b471d4fe2d5dbd0040708edd52771b"></a><br/></td></tr> +<tr class="separator:ga87b471d4fe2d5dbd0040708edd52771b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga5f0b204a82327533d420210125c90697"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>(name)   &os_pool_def_##name</td></tr> +<tr class="memdesc:ga5f0b204a82327533d420210125c90697"><td class="mdescLeft"> </td><td class="mdescRight">Access a Memory Pool definition. <a href="#ga5f0b204a82327533d420210125c90697"></a><br/></td></tr> +<tr class="separator:ga5f0b204a82327533d420210125c90697"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a> (const <a class="el" href="structos_pool_def__t.html">osPoolDef_t</a> *pool_def)</td></tr> +<tr class="memdesc:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a memory pool. <a href="#ga34af5c4f4ab38f4138ea7f1f9ece3a1a"></a><br/></td></tr> +<tr class="separator:ga34af5c4f4ab38f4138ea7f1f9ece3a1a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543">osPoolAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr> +<tr class="memdesc:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a memory pool. <a href="#gaa0b2994f1a866c19e0d11e6e0d44f543"></a><br/></td></tr> +<tr class="separator:gaa0b2994f1a866c19e0d11e6e0d44f543"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a">osPoolCAlloc</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id)</td></tr> +<tr class="memdesc:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="mdescLeft"> </td><td class="mdescRight">Allocate a memory block from a memory pool and set memory block to zero. <a href="#ga9f129fcad4730fbd1048ad4fa262f36a"></a><br/></td></tr> +<tr class="separator:ga9f129fcad4730fbd1048ad4fa262f36a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54">osPoolFree</a> (<a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> pool_id, void *block)</td></tr> +<tr class="memdesc:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="mdescLeft"> </td><td class="mdescRight">Return an allocated memory block back to a specific memory pool. <a href="#ga4a861e9c469c9d0daf5721bf174f8e54"></a><br/></td></tr> +<tr class="separator:ga4a861e9c469c9d0daf5721bf174f8e54"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p><b>Memory</b> <b>pools</b> are fixed-size blocks of memory that are thread-safe. They operate much faster than the dynamically allocated heap and do not suffer from fragmentation. Being thread-safe, they can be accessed from threads and ISRs alike.</p> +<p><b>Shared</b> <b>memory</b> is one of the basic models to exchange information between threads. Using memory pools for exchanging data, you can share more complex objects between threads if compared to a <a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html">Message Queue</a>. Memory pool management functions are used to define and manage such fixed-sized memory pools.</p> +<h2>Working with Memory Pools</h2> +<p>Follow these steps to create and use a memory pool:</p> +<ol type="1"> +<li>Declare a data structure that combines a number of elements: <div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div> +<div class="line"> uint32_t length;</div> +<div class="line"> uint32_t width;</div> +<div class="line"> uint32_t height;</div> +<div class="line"> uint32_t weight;</div> +<div class="line">} properties_t;</div> +</div><!-- fragment --></li> +<li>Declare a memory pool of these objects as a block of memory: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a> (object_pool, 10, properties_t); <span class="comment">// Declare memory pool</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686" title="Pool ID identifies the memory pool (pointer to a memory pool control block).">osPoolId</a> (object_pool_id); <span class="comment">// Memory pool ID</span></div> +</div><!-- fragment --></li> +<li>Then, create the memory pool in a thread: <div class="fragment"><div class="line">object_pool_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a" title="Create and Initialize a memory pool.">osPoolCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697" title="Access a Memory Pool definition.">osPool</a>(object_pool));</div> +</div><!-- fragment --></li> +<li>Allocate the pool within a thread and fill it with data: <div class="fragment"><div class="line">properties_t *object_data;</div> +<div class="line">*object_data = (properties_t *) <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543" title="Allocate a memory block from a memory pool.">osPoolAlloc</a>(object_pool_id);</div> +<div class="line"> </div> +<div class="line">object_data->length = 100;</div> +<div class="line">object_data->width = 10;</div> +<div class="line">object_data->height = 23;</div> +<div class="line">object_data->weight = 1000;</div> +</div><!-- fragment --> </li> +</ol> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="gadd84b683001de327894851b428587caa"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_Pool   1</td> + </tr> + </table> +</div><div class="memdoc"> +<p>A CMSIS-RTOS implementation may support fixed-size memory pools.</p> +<ul> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a> is 1 memory pools are supported.</li> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa">osFeature_Pool</a> is 0 no memory pools are supported. </li> +</ul> + +</div> +</div> +<a class="anchor" id="ga5f0b204a82327533d420210125c90697"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osPool</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   &os_pool_def_##name</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access a memory pool for the functions <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the memory pool </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osPool</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ga87b471d4fe2d5dbd0040708edd52771b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osPoolDef</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">no, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">type </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Define a memory pool that is referenced by <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the memory pool. </td></tr> + <tr><td class="paramname">no</td><td>maximum number of blocks (objects) in the memory pool. </td></tr> + <tr><td class="paramname">type</td><td>data type of a single block (object). </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osPoolDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="gaa0b2994f1a866c19e0d11e6e0d44f543"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void * osPoolAlloc </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> </td> + <td class="paramname"><em>pool_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">pool_id</td><td>memory pool ID obtain referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>address of the allocated memory block or NULL in case of no memory available. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Allocate a memory block from the memory pool.</p> +<dl class="section note"><dt>Note</dt><dd><a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div> +<div class="line"> uint8_t Buf[32];</div> +<div class="line"> uint8_t Idx;</div> +<div class="line">} MEM_BLOCK;</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> AlocMemoryPoolBlock (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686" title="Pool ID identifies the memory pool (pointer to a memory pool control block).">osPoolId</a> MemPool_Id;</div> +<div class="line"> MEM_BLOCK *addr;</div> +<div class="line"> </div> +<div class="line"> MemPool_Id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a" title="Create and Initialize a memory pool.">osPoolCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697" title="Access a Memory Pool definition.">osPool</a> (MemPool));</div> +<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div> +<div class="line"> :</div> +<div class="line"> <span class="comment">// allocate a memory block</span></div> +<div class="line"> addr = (MEM_BLOCK *)<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543" title="Allocate a memory block from a memory pool.">osPoolAlloc</a> (MemPool_Id);</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (addr != NULL) {</div> +<div class="line"> <span class="comment">// memory block was allocated</span></div> +<div class="line"> :</div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga9f129fcad4730fbd1048ad4fa262f36a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void * osPoolCAlloc </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> </td> + <td class="paramname"><em>pool_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">pool_id</td><td>memory pool ID obtain referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>address of the allocated memory block or NULL in case of no memory available. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolCAlloc</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Allocate a memory block from the memory pool. The block is initialized to zero.</p> +<dl class="section note"><dt>Note</dt><dd><a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div> +<div class="line"> uint8_t Buf[32];</div> +<div class="line"> uint8_t Idx;</div> +<div class="line">} MEM_BLOCK;</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> CAlocMemoryPoolBlock (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686" title="Pool ID identifies the memory pool (pointer to a memory pool control block).">osPoolId</a> MemPool_Id;</div> +<div class="line"> MEM_BLOCK *addr;</div> +<div class="line"> </div> +<div class="line"> MemPool_Id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a" title="Create and Initialize a memory pool.">osPoolCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697" title="Access a Memory Pool definition.">osPool</a> (MemPool));</div> +<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div> +<div class="line"> :</div> +<div class="line"> <span class="comment">// allocate a memory block</span></div> +<div class="line"> addr = (MEM_BLOCK *)<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a" title="Allocate a memory block from a memory pool and set memory block to zero.">osPoolCAlloc</a> (MemPool_Id);</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (addr != NULL) {</div> +<div class="line"> <span class="comment">// memory block was allocated</span></div> +<div class="line"> :</div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga34af5c4f4ab38f4138ea7f1f9ece3a1a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> osPoolCreate </td> + <td>(</td> + <td class="paramtype">const <a class="el" href="structos_pool_def__t.html">osPoolDef_t</a> * </td> + <td class="paramname"><em>pool_def</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">pool_def</td><td>memory pool definition referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697">osPool</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>memory pool ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Create and initialize a memory pool.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div> +<div class="line"> uint8_t Buf[32];</div> +<div class="line"> uint8_t Idx;</div> +<div class="line">} MEM_BLOCK;</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> CreateMemoryPool (<span class="keywordtype">void</span>) {</div> +<div class="line"><a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686" title="Pool ID identifies the memory pool (pointer to a memory pool control block).">osPoolId</a> MemPool_Id;</div> +<div class="line"> </div> +<div class="line"> MemPool_Id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a" title="Create and Initialize a memory pool.">osPoolCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697" title="Access a Memory Pool definition.">osPool</a> (MemPool));</div> +<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div> +<div class="line"> <span class="comment">// memory pool created</span></div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga4a861e9c469c9d0daf5721bf174f8e54"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osPoolFree </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686">osPoolId</a> </td> + <td class="paramname"><em>pool_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"><em>block</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">pool_id</td><td>memory pool ID obtain referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a">osPoolCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">block</td><td>address of the allocated memory block that is returned to the memory pool. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPoolFree</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Return a memory block to a memory pool.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the memory block is released.</li> +<li><em>osErrorValue:</em> <em>block</em> does not belong to the memory pool.</li> +<li><em>osErrorParameter:</em> a parameter is invalid or outside of a permitted range.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd><a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div> +<div class="line"> uint8_t Buf[32];</div> +<div class="line"> uint8_t Idx;</div> +<div class="line">} MEM_BLOCK;</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b" title="Define a Memory Pool.">osPoolDef</a> (MemPool, 8, MEM_BLOCK);</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> CAlocMemoryPoolBlock (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#a08d2e20fd9bbd96220fe068d420f3686" title="Pool ID identifies the memory pool (pointer to a memory pool control block).">osPoolId</a> MemPool_Id;</div> +<div class="line"> MEM_BLOCK *addr;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div> +<div class="line"> </div> +<div class="line"> MemPool_Id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a" title="Create and Initialize a memory pool.">osPoolCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697" title="Access a Memory Pool definition.">osPool</a> (MemPool));</div> +<div class="line"> <span class="keywordflow">if</span> (MemPool_Id != NULL) {</div> +<div class="line"> addr = (MEM_BLOCK *)<a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a" title="Allocate a memory block from a memory pool and set memory block to zero.">osPoolCAlloc</a> (MemPool_Id);</div> +<div class="line"> <span class="keywordflow">if</span> (addr != NULL) {</div> +<div class="line"> :</div> +<div class="line"> <span class="comment">// return a memory block back to pool</span></div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54" title="Return an allocated memory block back to a specific memory pool.">osPoolFree</a> (MemPool_Id, addr);</div> +<div class="line"> <span class="keywordflow">if</span> (status==<a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// handle status code</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___pool_mgmt.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___pool_mgmt.js new file mode 100644 index 0000000..51d5079 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___pool_mgmt.js @@ -0,0 +1,10 @@ +var group___c_m_s_i_s___r_t_o_s___pool_mgmt = +[ + [ "osFeature_Pool", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa", null ], + [ "osPool", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697", null ], + [ "osPoolDef", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b", null ], + [ "osPoolAlloc", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543", null ], + [ "osPoolCAlloc", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a", null ], + [ "osPoolCreate", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a", null ], + [ "osPoolFree", "group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html new file mode 100644 index 0000000..916e331 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html @@ -0,0 +1,424 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Semaphores</title> +<title>CMSIS-RTOS: Semaphores</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Semaphores</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html">Inter-Thread Communication and Resource Sharing</a></div></div><!--header--> +<div class="contents"> + +<p>Access shared resources simultaneously from different threads. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">osFeature_Semaphore</a>   30</td></tr> +<tr class="memdesc:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="mdescLeft"> </td><td class="mdescRight">maximum count for <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> function <a href="#ga7da4c7bfb340779c9fc7b321f5ab3e3a"></a><br/></td></tr> +<tr class="separator:ga7da4c7bfb340779c9fc7b321f5ab3e3a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b">osSemaphoreDef</a>(name)   const <a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a> os_semaphore_def_##name = { 0 }</td></tr> +<tr class="memdesc:ga9e66fe361749071e5ab87826c43c2f1b"><td class="mdescLeft"> </td><td class="mdescRight">Define a Semaphore object. <a href="#ga9e66fe361749071e5ab87826c43c2f1b"></a><br/></td></tr> +<tr class="separator:ga9e66fe361749071e5ab87826c43c2f1b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>(name)   &os_semaphore_def_##name</td></tr> +<tr class="memdesc:ga03761ee8d2c3cd4544e18364ab301dac"><td class="mdescLeft"> </td><td class="mdescRight">Access a Semaphore definition. <a href="#ga03761ee8d2c3cd4544e18364ab301dac"></a><br/></td></tr> +<tr class="separator:ga03761ee8d2c3cd4544e18364ab301dac"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> (const <a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a> *semaphore_def, int32_t count)</td></tr> +<tr class="memdesc:ga97381e8e55cd47cec390bf57c96d6edb"><td class="mdescLeft"> </td><td class="mdescRight">Create and Initialize a Semaphore object used for managing resources. <a href="#ga97381e8e55cd47cec390bf57c96d6edb"></a><br/></td></tr> +<tr class="separator:ga97381e8e55cd47cec390bf57c96d6edb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gacc15b0fc8ce1167fe43da33042e62098"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id, uint32_t millisec)</td></tr> +<tr class="memdesc:gacc15b0fc8ce1167fe43da33042e62098"><td class="mdescLeft"> </td><td class="mdescRight">Wait until a Semaphore token becomes available. <a href="#gacc15b0fc8ce1167fe43da33042e62098"></a><br/></td></tr> +<tr class="separator:gacc15b0fc8ce1167fe43da33042e62098"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr> +<tr class="memdesc:gab108914997c49e14d8ff1ae0d1988ca0"><td class="mdescLeft"> </td><td class="mdescRight">Release a Semaphore token. <a href="#gab108914997c49e14d8ff1ae0d1988ca0"></a><br/></td></tr> +<tr class="separator:gab108914997c49e14d8ff1ae0d1988ca0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gabae2801ac2c096f6e8c69a264908f595"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> (<a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> semaphore_id)</td></tr> +<tr class="memdesc:gabae2801ac2c096f6e8c69a264908f595"><td class="mdescLeft"> </td><td class="mdescRight">Delete a Semaphore that was created by <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. <a href="#gabae2801ac2c096f6e8c69a264908f595"></a><br/></td></tr> +<tr class="separator:gabae2801ac2c096f6e8c69a264908f595"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>Semaphores are used to manage and protect access to shared resources. Semaphores are very similar to <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html">Mutexes</a>. Whereas a Mutex permits just one thread to access a shared resource at a time, a semaphore can be used to permit a fixed number of threads to access a pool of shared resources. Using semaphores, access to a group of identical peripherals can be managed (for example multiple DMA channels).</p> +<div class="image"> +<img src="Semaphore.png" alt="Semaphore.png"/> +<div class="caption"> +CMSIS-RTOS Semaphore</div></div> +<p> A semaphore object should be initialized to the maximum number of available tokens. This number of available resources is specified as parameter of the <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a> function. Each time a semaphore token is obtained with <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098">osSemaphoreWait</a>, the semaphore count is decremented. When the semaphore count is 0, no semaphore token can be obtained. The thread that tries to obtain the semaphore token needs to wait until the next token is free. Semaphores are released with <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0">osSemaphoreRelease</a> incrementing the semaphore count.</p> +<dl class="section note"><dt>Note</dt><dd>Semaphore tokens can be acquired from threads and released from threads and ISRs.</dd></dl> +<h2>Working with Semaphores</h2> +<p>Follow these steps to create and use a semaphore:</p> +<ol type="1"> +<li>Declare the semaphore container and initialize the semaphore: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b" title="Define a Semaphore object.">osSemaphoreDef</a> (my_semaphore); <span class="comment">// Declare semaphore</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84" title="Semaphore ID identifies the semaphore (pointer to a semaphore control block).">osSemaphoreId</a> (my_semaphore_id); <span class="comment">// Semaphore ID</span></div> +</div><!-- fragment --></li> +<li>Initialize the semaphore container with a number of tokens within a thread: <div class="fragment"><div class="line">my_semaphore_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb" title="Create and Initialize a Semaphore object used for managing resources.">osSemaphoreCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac" title="Access a Semaphore definition.">osSemaphore</a>(my_semaphore), 4); <span class="comment">// Create semaphore with 4 tokens</span></div> +</div><!-- fragment --> <b>Important:</b> semaphore tokens can be created and destroyed as threads run. This means that can initialize a semaphore with zero tokens and then use one thread to add/create tokens to the semaphore while a second thread removes them. In this way you can distinguish between producer and consumer threads.</li> +<li>Acquire a token from the semaphore container: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098" title="Wait until a Semaphore token becomes available.">osSemaphoreWait</a>(my_semaphore_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>);</div> +</div><!-- fragment --></li> +<li>When finished using the semaphore resource, send the token back to the semaphore container: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0" title="Release a Semaphore token.">osSemaphoreRelease</a>(my_semaphore_id);</div> +</div><!-- fragment --></li> +</ol> +<h2>Semaphore Use Cases</h2> +<p>Due to their flexibility, semaphores cover a wide range of synchronizing applications. At the same time, they are perhaps the most challenging RTOS object to understand. The following explains a use case for semaphores, taken from the book <a href="http://www.greenteapress.com/semaphores/" target="_blank">The Little Book Of Semaphores</a> by Allen B. Downey which is available for free download.</p> +<p><b>Non-binary Semaphore (Multiplex)</b></p> +<p>A multiplex limits the number of threads that can access a critical section of code. For example, this could be a function accessing DMA resources which can only support a limited number of calls.</p> +<p>To allow multiple threads to run the function, initialize a semaphore to the maximum number of threads that can be allowed. The number of tokens in the semaphore represents the number of additional threads that may enter. If this number is zero, then the next thread trying to access the function will have to wait until one of the other threads exits and releases its token. When all threads have exited the token number is back to n. Ths following example shows the code for one of the threads that might access the resource:</p> +<div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b" title="Define a Semaphore object.">osSemaphoreDef</a>(multiplex);</div> +<div class="line"><a class="code" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84" title="Semaphore ID identifies the semaphore (pointer to a semaphore control block).">osSemaphoreId</a> (multiplex_id);</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> thread_n (<span class="keywordtype">void</span>)</div> +<div class="line"> {</div> +<div class="line"> multiplex_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb" title="Create and Initialize a Semaphore object used for managing resources.">osSemaphoreCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac" title="Access a Semaphore definition.">osSemaphore</a>(multiplex), 3);</div> +<div class="line"> <span class="keywordflow">while</span>(1)</div> +<div class="line"> {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098" title="Wait until a Semaphore token becomes available.">osSemaphoreWait</a>(multiplex_id, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>);</div> +<div class="line"> <span class="comment">// do something</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0" title="Release a Semaphore token.">osSemaphoreRelease</a>(multiplex_id);</div> +<div class="line"> }</div> +<div class="line"> }</div> +</div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="ga7da4c7bfb340779c9fc7b321f5ab3e3a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_Semaphore   30</td> + </tr> + </table> +</div><div class="memdoc"> +<p>A CMSIS-RTOS implementation may support semaphores. The value <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a">osFeature_Semaphore</a> indicates the maximum index count for a semaphore. </p> + +</div> +</div> +<a class="anchor" id="ga03761ee8d2c3cd4544e18364ab301dac"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osSemaphore</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   &os_semaphore_def_##name</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access to semaphore object for the functions <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the semaphore object. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osSemaphore</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ga9e66fe361749071e5ab87826c43c2f1b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osSemaphoreDef</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   const <a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a> os_semaphore_def_##name = { 0 }</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Define a semaphore object that is referenced by <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the semaphore object. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osSemaphoreDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="ga97381e8e55cd47cec390bf57c96d6edb"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> osSemaphoreCreate </td> + <td>(</td> + <td class="paramtype">const <a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a> * </td> + <td class="paramname"><em>semaphore_def</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>count</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">semaphore_def</td><td>semaphore definition referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac">osSemaphore</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>number of available resources. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>semaphore ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Create and initialize a Semaphore object that is used to manage access to shared resources. The parameter <em>count</em> specifies the number of available resources. The <em>count</em> value 1 creates a binary semaphore.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> tid_thread1; <span class="comment">// ID for thread 1</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> tid_thread2; <span class="comment">// ID for thread 2</span></div> +<div class="line"> </div> +<div class="line"><a class="code" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84" title="Semaphore ID identifies the semaphore (pointer to a semaphore control block).">osSemaphoreId</a> semaphore; <span class="comment">// Semaphore ID</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b" title="Define a Semaphore object.">osSemaphoreDef</a>(semaphore); <span class="comment">// Semaphore definition</span></div> +<div class="line"> </div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// Thread 1 - High Priority - Active every 3ms</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="keywordtype">void</span> thread1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div> +<div class="line"> int32_t value;</div> +<div class="line"></div> +<div class="line"> <span class="keywordflow">while</span> (1) {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a>(3); <span class="comment">// Pass control to other tasks for 3ms</span></div> +<div class="line"> val = <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098" title="Wait until a Semaphore token becomes available.">osSemaphoreWait</a> (semaphore, 1); <span class="comment">// Wait 1ms for the free semaphore</span></div> +<div class="line"> <span class="keywordflow">if</span> (val > 0) {</div> +<div class="line"> <span class="comment">// If there was no time-out the semaphore was acquired</span></div> +<div class="line"> : <span class="comment">// OK, the interface is free now, use it.</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0" title="Release a Semaphore token.">osSemaphoreRelease</a> (semaphore); <span class="comment">// Return a token back to a semaphore</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="comment">// Thread 2 - Normal Priority - looks for a free semaphore and uses</span></div> +<div class="line"><span class="comment">// the resource whenever it is available</span></div> +<div class="line"><span class="comment">//</span></div> +<div class="line"><span class="keywordtype">void</span> thread2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *argument) {</div> +<div class="line"> <span class="keywordflow">while</span> (1) {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098" title="Wait until a Semaphore token becomes available.">osSemaphoreWait</a> (semaphore, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// Wait indefinitely for a free semaphore</span></div> +<div class="line"> <span class="comment">// OK, the interface is free now, use it.</span></div> +<div class="line"> :</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0" title="Release a Semaphore token.">osSemaphoreRelease</a> (semaphore); <span class="comment">// Return a token back to a semaphore.</span></div> +<div class="line"> }</div> +<div class="line">}</div> +<div class="line"> </div> +<div class="line"><span class="comment">// Thread definitions </span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(thread1, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2" title="priority: high">osPriorityHigh</a>, 1, 0);</div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a>(thread2, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 0);</div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> StartApplication (<span class="keywordtype">void</span>) {</div> +<div class="line"> semaphore = <a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb" title="Create and Initialize a Semaphore object used for managing resources.">osSemaphoreCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac" title="Access a Semaphore definition.">osSemaphore</a>(semaphore), 1);</div> +<div class="line"></div> +<div class="line"> tid_thread1 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(thread1), NULL);</div> +<div class="line"> tid_thread2 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(thread2), NULL);</div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="gabae2801ac2c096f6e8c69a264908f595"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osSemaphoreDelete </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> </td> + <td class="paramname"><em>semaphore_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">semaphore_id</td><td>semaphore object referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreDelete</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Delete a Semaphore object. The function releases internal memory obtained for Semaphore handling. After this call the <em>semaphore_id</em> is no longer valid and cannot be used. The Semaphore may be created again using the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the semaphore object has been deleted.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a> cannot be called from interrupt service routines.</li> +<li><em>osErrorResource:</em> the semaphore object could not be deleted.</li> +<li><em>osErrorParameter:</em> the parameter <em>semaphore_id</em> is incorrect.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>. </dd></dl> + +</div> +</div> +<a class="anchor" id="gab108914997c49e14d8ff1ae0d1988ca0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osSemaphoreRelease </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> </td> + <td class="paramname"><em>semaphore_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">semaphore_id</td><td>semaphore object referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreRelease</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Release a Semaphore token. This increments the count of available semaphore tokens.</p> +<dl class="section note"><dt>Note</dt><dd><a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the semaphore has been released.</li> +<li><em>osErrorResource:</em> all tokens have already been released.</li> +<li><em>osErrorParameter:</em> the parameter <em>semaphore_id</em> is incorrect. </li> +</ul> + +</div> +</div> +<a class="anchor" id="gacc15b0fc8ce1167fe43da33042e62098"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t osSemaphoreWait </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#aa8968896c84094aa973683c84fa06f84">osSemaphoreId</a> </td> + <td class="paramname"><em>semaphore_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">semaphore_id</td><td>semaphore object referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb">osSemaphoreCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>number of available tokens, or -1 in case of incorrect parameters. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSemaphoreWait</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Wait until a Semaphore token becomes available. When no Semaphore token is available, the function waits for the time specified with the parameter <em>millisec</em>.</p> +<p>The argument <em>millisec</em> specifies how long the system waits for a Semaphore token to become available. While the system waits the thread that is calling this function is put into the state <b>WAITING</b>. The <em>millisec</em> timeout can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until the Semaphore token becomes available.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<p>The return value indicates the number of available tokens (the semaphore count value). If 0 is returned, then no semaphore was available.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>. </dd></dl> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.js new file mode 100644 index 0000000..cb194a8 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.js @@ -0,0 +1,10 @@ +var group___c_m_s_i_s___r_t_o_s___semaphore_mgmt = +[ + [ "osFeature_Semaphore", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a", null ], + [ "osSemaphore", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac", null ], + [ "osSemaphoreDef", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b", null ], + [ "osSemaphoreCreate", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb", null ], + [ "osSemaphoreDelete", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595", null ], + [ "osSemaphoreRelease", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0", null ], + [ "osSemaphoreWait", "group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___signal_mgmt.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___signal_mgmt.html new file mode 100644 index 0000000..88524b9 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___signal_mgmt.html @@ -0,0 +1,337 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Signal Events</title> +<title>CMSIS-RTOS: Signal Events</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___signal_mgmt.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Signal Events</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html">Inter-Thread Communication and Resource Sharing</a></div></div><!--header--> +<div class="contents"> + +<p>Synchronize threads using signals. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga01edde265710d883b6e237d34a6ef4a6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga01edde265710d883b6e237d34a6ef4a6">osFeature_Signals</a>   8</td></tr> +<tr class="memdesc:ga01edde265710d883b6e237d34a6ef4a6"><td class="mdescLeft"> </td><td class="mdescRight">maximum number of Signal Flags available per thread <a href="#ga01edde265710d883b6e237d34a6ef4a6"></a><br/></td></tr> +<tr class="separator:ga01edde265710d883b6e237d34a6ef4a6"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ga3de2730654589d6c3559c4b9e2825553"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr> +<tr class="memdesc:ga3de2730654589d6c3559c4b9e2825553"><td class="mdescLeft"> </td><td class="mdescRight">Set the specified Signal Flags of an active thread. <a href="#ga3de2730654589d6c3559c4b9e2825553"></a><br/></td></tr> +<tr class="separator:ga3de2730654589d6c3559c4b9e2825553"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, int32_t signals)</td></tr> +<tr class="memdesc:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="mdescLeft"> </td><td class="mdescRight">Clear the specified Signal Flags of an active thread. <a href="#ga87283a6ebc31ce9ed42baf3ea7e4eab6"></a><br/></td></tr> +<tr class="separator:ga87283a6ebc31ce9ed42baf3ea7e4eab6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga38860acda96df47da6923348d96fc4c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> (int32_t signals, uint32_t millisec)</td></tr> +<tr class="memdesc:ga38860acda96df47da6923348d96fc4c9"><td class="mdescLeft"> </td><td class="mdescRight">Wait for one or more Signal Flags to become signaled for the current <b>RUNNING</b> thread. <a href="#ga38860acda96df47da6923348d96fc4c9"></a><br/></td></tr> +<tr class="separator:ga38860acda96df47da6923348d96fc4c9"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>Signals are used to trigger execution states between threads. The signal management functions in CMSIS-RTOS allow you to control or wait for signal flags. Each thread has up to 31 assigned signal flags. The maximum number of signal flags is defined in the <a class="el" href="cmsis__os_8h.html">cmsis_os.h</a> file (<b>#define osFeature_Signals</b>).</p> +<p>A thread</p> +<ul> +<li>can wait for signals to be set (using <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a>). Using this function, it enters the <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ThreadStates">WAITING</a> state. The <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> parameter <em>signals</em> defines the signals that are required to put the thread back into <b>READY</b> state.</li> +<li>may set one or more flags in any other given thread (using <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553">osSignalSet</a>).</li> +<li>may clear its own signals or the signals of other threads (using <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6">osSignalClear</a>).</li> +</ul> +<p>When a thread wakes up and resumes execution, its signal flags are automatically cleared.</p> +<h2>Working with Signals</h2> +<p>Here is a simple example that shows how two thread can communicate with each others using signals:</p> +<div class="image"> +<img src="simple_signal.png" alt="simple_signal.png"/> +<div class="caption"> +Simple signal event communication</div></div> +<p> The following steps are required to use signals:</p> +<ol type="1"> +<li>In the thread (for example thread ID <code>tid_thread1</code>) that is supposed to wait for a signal, call the wait function: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9" title="Wait for one or more Signal Flags to become signaled for the current RUNNING thread.">osSignalWait</a> (0x0001, <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>); <span class="comment">// wait forever for the signal 0x0001</span></div> +</div><!-- fragment --></li> +<li>In another thread (or threads) that are supposed to wake the waiting thread up call: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553" title="Set the specified Signal Flags of an active thread.">osSignalSet</a> (tid_thread1, 0x0001); <span class="comment">// set the signal 0x0001 for thread tid_thread1</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a> (1000); <span class="comment">// wait for 1 second</span></div> +</div><!-- fragment --> </li> +</ol> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="ga01edde265710d883b6e237d34a6ef4a6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_Signals   8</td> + </tr> + </table> +</div><div class="memdoc"> +<p>The CMSIS-RTOS API may support a variable number of signal flags. This define specifies the number of signal flags available per thread. The maximum value is 32 signal flags per thread. </p> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="ga87283a6ebc31ce9ed42baf3ea7e4eab6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t osSignalClear </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td> + <td class="paramname"><em>thread_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>signals</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">signals</td><td>specifies the signal flags of the thread that shall be cleared. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSignalClear</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Clear the signal flags of an active thread.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">void</span> Thread_2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg);</div> +<div class="line"></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a> (Thread_2, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2" title="priority: high">osPriorityHigh</a>, 1, 0);</div> +<div class="line"> </div> +<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> EX_Signal_1 (<span class="keywordtype">void</span>) {</div> +<div class="line"> int32_t signals;</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> thread_id;</div> +<div class="line"> </div> +<div class="line"> thread_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(Thread_2), NULL);</div> +<div class="line"> <span class="keywordflow">if</span> (thread_id == NULL) {</div> +<div class="line"> <span class="comment">// Failed to create a thread.</span></div> +<div class="line"> }</div> +<div class="line"> <span class="keywordflow">else</span> {</div> +<div class="line">f :</div> +<div class="line"> signals = <a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6" title="Clear the specified Signal Flags of an active thread.">osSignalClear</a> (thread_id, 0x01);</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga3de2730654589d6c3559c4b9e2825553"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t osSignalSet </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td> + <td class="paramname"><em>thread_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>signals</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">signals</td><td>specifies the signal flags of the thread that should be set. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSignalSet</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Set the signal flags of an active thread. This function may be used also within interrupt service routines.</p> +<dl class="section note"><dt>Note</dt><dd><a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a> can call this function.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">void</span> Thread_2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg);</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a> (Thread_2, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2" title="priority: high">osPriorityHigh</a>, 1, 0);</div> +<div class="line"> </div> +<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> EX_Signal_1 (<span class="keywordtype">void</span>) {</div> +<div class="line"> int32_t signals;</div> +<div class="line"> uint32_t exec;</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> thread_id;</div> +<div class="line"> </div> +<div class="line"> thread_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(Thread_2), NULL);</div> +<div class="line"> <span class="keywordflow">if</span> (thread_id == NULL) {</div> +<div class="line"> <span class="comment">// Failed to create a thread.</span></div> +<div class="line"> }</div> +<div class="line"> <span class="keywordflow">else</span> {</div> +<div class="line"> signals = <a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553" title="Set the specified Signal Flags of an active thread.">osSignalSet</a> (thread_id, 0x00000005); <span class="comment">// Send signals to the created thread</span></div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga38860acda96df47da6923348d96fc4c9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> osSignalWait </td> + <td>(</td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>signals</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">signals</td><td>wait until all specified signal flags set or 0 for any single signal flag. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>event flag information or error code. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osSignalWait</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Suspend the execution of the current <b>RUNNING</b> thread until all specified signal flags with the parameter <em>signals</em> are set. When the parameter <em>signals</em> is 0 the current <b>RUNNING</b> thread is suspended until any signal is set. When these signal flags are already set, the function returns instantly. Otherwise the thread is put into the state <b>WAITING</b>. Signal flags that are reported as event are automatically cleared.</p> +<p>The argument <em>millisec</em> specifies how long the system waits for the specified signal flags. While the system waits the tread calling this function is put into the state <b>WAITING</b>. The timeout value can have the following values:</p> +<ul> +<li>when <em>millisec</em> is 0, the function returns instantly.</li> +<li>when <em>millisec</em> is set to <b>osWaitForever</b> the function will wait for an infinite time until a specified signal is set.</li> +<li>all other values specify a time in millisecond for a timeout.</li> +</ul> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> no signal received when the timeout value <em>millisec</em> was 0.</li> +<li><em>osEventTimeout:</em> signal not occurred within timeout</li> +<li><em>osEventSignal:</em> signal occurred, <em>value.signals</em> contains the signal flags; these signal flags are cleared.</li> +<li><em>osErrorValue:</em> the value <em>signals</em> is outside of the permitted range.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9">osSignalWait</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">void</span> Thread_2 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg);</div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a> (Thread_2, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2" title="priority: high">osPriorityHigh</a>, 1, 0);</div> +<div class="line"> </div> +<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> EX_Signal_1 (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> thread_id;</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> evt;</div> +<div class="line"> </div> +<div class="line"> thread_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a>(Thread_2), NULL);</div> +<div class="line"> <span class="keywordflow">if</span> (thread_id == NULL) {</div> +<div class="line"> <span class="comment">// Failed to create a thread.</span></div> +<div class="line"> }</div> +<div class="line"> <span class="keywordflow">else</span> {</div> +<div class="line"> :</div> +<div class="line"> <span class="comment">// wait for a signal</span></div> +<div class="line"> evt = <a class="code" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9" title="Wait for one or more Signal Flags to become signaled for the current RUNNING thread.">osSignalWait</a> (0x01, 100);</div> +<div class="line"> <span class="keywordflow">if</span> (evt.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3" title="status code: event or error information">status</a> == <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518" title="function completed; signal event occurred.">osEventSignal</a>) {</div> +<div class="line"> <span class="comment">// handle event status</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___signal_mgmt.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___signal_mgmt.js new file mode 100644 index 0000000..825b993 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___signal_mgmt.js @@ -0,0 +1,7 @@ +var group___c_m_s_i_s___r_t_o_s___signal_mgmt = +[ + [ "osFeature_Signals", "group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga01edde265710d883b6e237d34a6ef4a6", null ], + [ "osSignalClear", "group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6", null ], + [ "osSignalSet", "group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553", null ], + [ "osSignalWait", "group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___status.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___status.html new file mode 100644 index 0000000..1e6fcb4 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___status.html @@ -0,0 +1,198 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Status and Error Codes</title> +<title>CMSIS-RTOS: Status and Error Codes</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___status.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<div class="title">Status and Error Codes</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s.html">CMSIS-RTOS API</a></div></div><!--header--> +<div class="contents"> + +<p>Status and Error Codes returned by CMSIS-RTOS API functions. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:gae2e091fefc4c767117727bd5aba4d99e"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f">osOK</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518">osEventSignal</a> = 0x08, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342">osEventMessage</a> = 0x10, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926">osEventMail</a> = 0x20, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177">osEventTimeout</a> = 0x40, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109">osErrorParameter</a> = 0x80, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d">osErrorResource</a> = 0x81, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467">osErrorTimeoutResource</a> = 0xC1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f">osErrorISR</a> = 0x82, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65">osErrorISRRecursive</a> = 0x83, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f">osErrorPriority</a> = 0x84, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81">osErrorNoMemory</a> = 0x85, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee">osErrorValue</a> = 0x86, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc">osErrorOS</a> = 0xFF, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1">os_status_reserved</a> = 0x7FFFFFFF +<br/> + }</td></tr> +<tr class="separator:gae2e091fefc4c767117727bd5aba4d99e"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>The Status and Error Codes section lists all the return values that the CMSIS-RTOS functions will return. </p> +<h2 class="groupheader">Enumeration Type Documentation</h2> +<a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osStatus</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>The <a class="el" href="cmsis__os_8h.html#ae2e091fefc4c767117727bd5aba4d99e">osStatus</a> enumeration defines the event status and error codes that are returned by the CMSIS-RTOS functions. </p> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f"></a>osOK</em> </td><td> +<p>function completed; no error or event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518"></a>osEventSignal</em> </td><td> +<p>function completed; signal event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342"></a>osEventMessage</em> </td><td> +<p>function completed; message event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926"></a>osEventMail</em> </td><td> +<p>function completed; mail event occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177"></a>osEventTimeout</em> </td><td> +<p>function completed; timeout occurred. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109"></a>osErrorParameter</em> </td><td> +<p>parameter error: a mandatory parameter was missing or specified an incorrect object. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d"></a>osErrorResource</em> </td><td> +<p>resource not available: a specified resource was not available. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467"></a>osErrorTimeoutResource</em> </td><td> +<p>resource not available within given time: a specified resource was not available within the timeout period. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f"></a>osErrorISR</em> </td><td> +<p>not allowed in ISR context: the function cannot be called from interrupt service routines. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65"></a>osErrorISRRecursive</em> </td><td> +<p>function called multiple times from ISR with same object. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f"></a>osErrorPriority</em> </td><td> +<p>system cannot determine priority or thread has illegal priority. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81"></a>osErrorNoMemory</em> </td><td> +<p>system is out of memory: it was impossible to allocate or reserve memory for the operation. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee"></a>osErrorValue</em> </td><td> +<p>value of a parameter is out of range. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc"></a>osErrorOS</em> </td><td> +<p>unspecified RTOS error: run-time error but no other error message fits. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1"></a>os_status_reserved</em> </td><td> +<p>prevent from enum down-size compiler optimization. </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___status.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___status.js new file mode 100644 index 0000000..a890636 --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___status.js @@ -0,0 +1,20 @@ +var group___c_m_s_i_s___r_t_o_s___status = +[ + [ "osStatus", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e", [ + [ "osOK", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f", null ], + [ "osEventSignal", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518", null ], + [ "osEventMessage", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342", null ], + [ "osEventMail", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926", null ], + [ "osEventTimeout", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177", null ], + [ "osErrorParameter", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109", null ], + [ "osErrorResource", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d", null ], + [ "osErrorTimeoutResource", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467", null ], + [ "osErrorISR", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f", null ], + [ "osErrorISRRecursive", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65", null ], + [ "osErrorPriority", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f", null ], + [ "osErrorNoMemory", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81", null ], + [ "osErrorValue", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee", null ], + [ "osErrorOS", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc", null ], + [ "os_status_reserved", "group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1", null ] + ] ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___thread_mgmt.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___thread_mgmt.html new file mode 100644 index 0000000..117ebfb --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___thread_mgmt.html @@ -0,0 +1,580 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Thread Management</title> +<title>CMSIS-RTOS: Thread Management</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___thread_mgmt.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#enum-members">Enumerations</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Thread Management</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s.html">CMSIS-RTOS API</a></div></div><!--header--> +<div class="contents"> + +<p>Define, create, and control thread functions. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:gaee93d929beb350f16e5cc7fa602e229f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a>(name, priority, instances, stacksz)</td></tr> +<tr class="memdesc:gaee93d929beb350f16e5cc7fa602e229f"><td class="mdescLeft"> </td><td class="mdescRight">Create a Thread Definition with function, priority, and stack requirements. <a href="#gaee93d929beb350f16e5cc7fa602e229f"></a><br/></td></tr> +<tr class="separator:gaee93d929beb350f16e5cc7fa602e229f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>(name)   &os_thread_def_##name</td></tr> +<tr class="memdesc:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="mdescLeft"> </td><td class="mdescRight">Access a Thread definition. <a href="#gaf0c7c6b5e09f8be198312144b5c9e453"></a><br/></td></tr> +<tr class="separator:gaf0c7c6b5e09f8be198312144b5c9e453"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81">osPriorityIdle</a> = -3, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4">osPriorityLow</a> = -2, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6">osPriorityBelowNormal</a> = -1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1">osPriorityNormal</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b">osPriorityAboveNormal</a> = +1, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2">osPriorityHigh</a> = +2, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af">osPriorityRealtime</a> = +3, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4">osPriorityError</a> = 0x84 +<br/> + }</td></tr> +<tr class="separator:ga7f2b42f1983b9107775ec2a1c69a849a"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:gac59b5713cb083702dce759c73fd90dff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> (const <a class="el" href="structos_thread_def__t.html">osThreadDef_t</a> *thread_def, void *argument)</td></tr> +<tr class="memdesc:gac59b5713cb083702dce759c73fd90dff"><td class="mdescLeft"> </td><td class="mdescRight">Create a thread and add it to Active Threads and set it to state READY. <a href="#gac59b5713cb083702dce759c73fd90dff"></a><br/></td></tr> +<tr class="separator:gac59b5713cb083702dce759c73fd90dff"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a> (void)</td></tr> +<tr class="memdesc:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="mdescLeft"> </td><td class="mdescRight">Return the thread ID of the current running thread. <a href="#gab1df2a28925862ef8f9cf4e1c995c5a7"></a><br/></td></tr> +<tr class="separator:gab1df2a28925862ef8f9cf4e1c995c5a7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaea135bb90eb853eff39e0800b91bbeab"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:gaea135bb90eb853eff39e0800b91bbeab"><td class="mdescLeft"> </td><td class="mdescRight">Terminate execution of a thread and remove it from Active Threads. <a href="#gaea135bb90eb853eff39e0800b91bbeab"></a><br/></td></tr> +<tr class="separator:gaea135bb90eb853eff39e0800b91bbeab"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id, <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> priority)</td></tr> +<tr class="memdesc:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="mdescLeft"> </td><td class="mdescRight">Change priority of an active thread. <a href="#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"></a><br/></td></tr> +<tr class="separator:ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9">osThreadGetPriority</a> (<a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> thread_id)</td></tr> +<tr class="memdesc:ga4299d838978bc2aae5e4350754e6a4e9"><td class="mdescLeft"> </td><td class="mdescRight">Get current priority of an active thread. <a href="#ga4299d838978bc2aae5e4350754e6a4e9"></a><br/></td></tr> +<tr class="separator:ga4299d838978bc2aae5e4350754e6a4e9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:gaf13a667493c5d629a90c13e113b99233"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> (void)</td></tr> +<tr class="memdesc:gaf13a667493c5d629a90c13e113b99233"><td class="mdescLeft"> </td><td class="mdescRight">Pass control to next thread that is in state <b>READY</b>. <a href="#gaf13a667493c5d629a90c13e113b99233"></a><br/></td></tr> +<tr class="separator:gaf13a667493c5d629a90c13e113b99233"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>The Thread Management function group allows defining, creating, and controlling thread functions in the system. The function <b>main</b> is a special thread function that is started at system initialization and has the initial priority <em>osPriorityNormal</em>.</p> +<p><a class="anchor" id="ThreadStates"></a>Threads can be in the following states:</p> +<ul> +<li><b>RUNNING:</b> The thread that is currently running is in the <b>RUNNING</b> state. Only one thread at a time can be in this state.</li> +<li><b>READY:</b> Threads which are ready to run are in the <b>READY</b> state. Once the <b>RUNNING</b> thread has terminated or is <b>WAITING</b>, the next <b>READY</b> thread with the highest priority becomes the <b>RUNNING</b> thread.</li> +<li><b>WAITING:</b> Threads that are waiting for an event to occur are in the <b>WAITING</b> state.</li> +<li><b>INACTIVE:</b> Threads that are not created or terminated are in the <b>INACTIVE</b> state. These threads typically consume no system resources.</li> +</ul> +<div class="image"> +<img src="ThreadStatus.png" alt="ThreadStatus.png"/> +<div class="caption"> +Thread State and State Transitions</div></div> +<p> A CMSIS-RTOS assumes that threads are scheduled as shown in the figure <b>Thread State and State Transitions</b>. The thread states change as follows:</p> +<ul> +<li>A thread is created using the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>. This puts the thread into the <b>READY</b> or <b>RUNNING</b> state (depending on the thread priority).</li> +<li>CMSIS-RTOS is pre-emptive. The active thread with the highest priority becomes the <b>RUNNING</b> thread provided it does not wait for any event. The initial priority of a thread is defined with the <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f">osThreadDef</a> but may be changed during execution using the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a>.</li> +<li>The <b>RUNNING</b> thread transfers into the <b>WAITING</b> state when it is waiting for an event.</li> +<li>Active threads can be terminated any time using the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a>. Threads can terminate also by just returning from the thread function. Threads that are terminated are in the <b>INACTIVE</b> state and typically do not consume any dynamic memory resources. </li> +</ul> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="gaf0c7c6b5e09f8be198312144b5c9e453"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osThread</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   &os_thread_def_##name</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access to the thread definition for the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the thread definition object. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osThread</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="gaee93d929beb350f16e5cc7fa602e229f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osThreadDef</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">priority, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">instances, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">stacksz </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Define the attributes of a thread functions that can be created by the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> using <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the thread function. </td></tr> + <tr><td class="paramname">priority</td><td>initial priority of the thread function. </td></tr> + <tr><td class="paramname">instances</td><td>number of possible thread instances. </td></tr> + <tr><td class="paramname">stacksz</td><td>stack size (in bytes) requirements for the thread function. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameters to <b>osThreadDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Enumeration Type Documentation</h2> +<a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osPriority</b> shall be consistent in every CMSIS-RTOS. </dd> +<dd> +Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p>The <a class="el" href="cmsis__os_8h.html#a7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> value specifies the priority for a thread. The default thread priority should be <em>osPriorityNormal</em>. If a Thread is active that has a higher priority than the currently executing thread, then a thread switch occurs immediately to execute the new task.</p> +<p>To prevent from a priority inversion, a CMSIS-RTOS complained OS may optionally implement a <b>priority inheritance</b> method. A priority inversion occurs when a high priority thread is waiting for a resource or event that is controlled by a thread with a lower priority. </p> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81"></a>osPriorityIdle</em> </td><td> +<p>priority: idle (lowest) </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4"></a>osPriorityLow</em> </td><td> +<p>priority: low </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6"></a>osPriorityBelowNormal</em> </td><td> +<p>priority: below normal </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1"></a>osPriorityNormal</em> </td><td> +<p>priority: normal (default) </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b"></a>osPriorityAboveNormal</em> </td><td> +<p>priority: above normal </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2"></a>osPriorityHigh</em> </td><td> +<p>priority: high </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af"></a>osPriorityRealtime</em> </td><td> +<p>priority: realtime (highest) </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4"></a>osPriorityError</em> </td><td> +<p>system cannot determine priority or thread has illegal priority </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="gac59b5713cb083702dce759c73fd90dff"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> osThreadCreate </td> + <td>(</td> + <td class="paramtype">const <a class="el" href="structos_thread_def__t.html">osThreadDef_t</a> * </td> + <td class="paramname"><em>thread_def</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"><em>argument</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_def</td><td>thread definition referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453">osThread</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">argument</td><td>pointer that is passed to the thread function as start argument. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>thread ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Start a thread function by adding it to the Active Threads list and set it to state <b>READY</b>. The thread function receives the <em>argument</em> pointer as function argument when the function is started. When the priority of the created thread function is higher than the current <b>RUNNING</b> thread, the created thread function starts instantly and becomes the new <b>RUNNING</b> thread.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// function prototype for Thread_1</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a> (Thread_1, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 0); <span class="comment">// define Thread_1</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> ThreadCreate_example (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> id;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a> (Thread_1), NULL); <span class="comment">// create the thread</span></div> +<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == NULL) { <span class="comment">// handle thread creation</span></div> +<div class="line"> <span class="comment">// Failed to create a thread</span></div> +<div class="line"> }</div> +<div class="line"> :</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab" title="Terminate execution of a thread and remove it from Active Threads.">osThreadTerminate</a> (<span class="keywordtype">id</span>); <span class="comment">// stop the thread</span></div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="gab1df2a28925862ef8f9cf4e1c995c5a7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> osThreadGetId </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section return"><dt>Returns</dt><dd>thread ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadGetId</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Get the thread ID of the current running thread.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="keywordtype">void</span> ThreadGetId_example (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> id; <span class="comment">// id for the currently running thread</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7" title="Return the thread ID of the current running thread.">osThreadGetId</a> ();</div> +<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == NULL) {</div> +<div class="line"> <span class="comment">// Failed to get the id; not in a thread</span></div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga4299d838978bc2aae5e4350754e6a4e9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> osThreadGetPriority </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td> + <td class="paramname"><em>thread_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>current priority value of the thread function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadGetPriority</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Get the priority of an active thread. In case of a failure the value <b>osPriorityError</b> is returned.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> id; <span class="comment">// id for the currently running thread</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> priority; <span class="comment">// thread priority</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7" title="Return the thread ID of the current running thread.">osThreadGetId</a> (); <span class="comment">// Obtain ID of current running thread</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> != NULL) {</div> +<div class="line"> priority = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9" title="Get current priority of an active thread.">osThreadGetPriority</a> (<span class="keywordtype">id</span>);</div> +<div class="line"> }</div> +<div class="line"> <span class="keywordflow">else</span> {</div> +<div class="line"> <span class="comment">// Failed to get the id</span></div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga0dfb90ccf1f6e4b54b9251b12d1cbc8b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osThreadSetPriority </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td> + <td class="paramname"><em>thread_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> </td> + <td class="paramname"><em>priority</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">priority</td><td>new priority value for the thread function. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadSetPriority</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Change the priority of an active thread.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the priority of the specified thread has been successfully changed.</li> +<li><em>osErrorParameter:</em> thread_id is incorrect.</li> +<li><em>osErrorValue:</em> incorrect priority value.</li> +<li><em>osErrorResource:</em> thread_id refers to a thread that is not an active thread.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b">osThreadSetPriority</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> id; <span class="comment">// id for the currently running thread</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> pr; <span class="comment">// thread priority</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// status of the executed function</span></div> +<div class="line"> </div> +<div class="line"> : </div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7" title="Return the thread ID of the current running thread.">osThreadGetId</a> (); <span class="comment">// Obtain ID of current running thread</span></div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span> != NULL) {</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b" title="Change priority of an active thread.">osThreadSetPriority</a> (<span class="keywordtype">id</span>, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6" title="priority: below normal">osPriorityBelowNormal</a>);</div> +<div class="line"> <span class="keywordflow">if</span> (status == <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// Thread priority changed to BelowNormal</span></div> +<div class="line"> }</div> +<div class="line"> <span class="keywordflow">else</span> {</div> +<div class="line"> <span class="comment">// Failed to set the priority</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line"> <span class="keywordflow">else</span> {</div> +<div class="line"> <span class="comment">// Failed to get the id</span></div> +<div class="line"> }</div> +<div class="line"> : </div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="gaea135bb90eb853eff39e0800b91bbeab"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osThreadTerminate </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f">osThreadId</a> </td> + <td class="paramname"><em>thread_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">thread_id</td><td>thread ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff">osThreadCreate</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7">osThreadGetId</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadTerminate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Remove the thread function from the active thread list. If the thread is currently RUNNING the execution will stop.</p> +<dl class="section note"><dt>Note</dt><dd>In case that <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> terminates the currently running task, the function never returns and other threads that are in the READY state are started.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the specified thread has been successfully terminated.</li> +<li><em>osErrorParameter:</em> thread_id is incorrect.</li> +<li><em>osErrorResource:</em> thread_id refers to a thread that is not an active thread.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab">osThreadTerminate</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// function prototype for Thread_1</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f" title="Create a Thread Definition with function, priority, and stack requirements.">osThreadDef</a> (Thread_1, <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1" title="priority: normal (default)">osPriorityNormal</a>, 1, 0); <span class="comment">// define Thread_1</span></div> +<div class="line"></div> +<div class="line"><span class="keywordtype">void</span> ThreadTerminate_example (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status;</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#adfeb153a84a81309e2d958268197617f" title="Thread ID identifies the thread (pointer to a thread control block).">osThreadId</a> id;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff" title="Create a thread and add it to Active Threads and set it to state READY.">osThreadCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453" title="Access a Thread definition.">osThread</a> (Thread_1), NULL); <span class="comment">// create the thread</span></div> +<div class="line"> : </div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab" title="Terminate execution of a thread and remove it from Active Threads.">osThreadTerminate</a> (<span class="keywordtype">id</span>); <span class="comment">// stop the thread</span></div> +<div class="line"> <span class="keywordflow">if</span> (status == <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// Thread was terminated successfully</span></div> +<div class="line"> }</div> +<div class="line"> <span class="keywordflow">else</span> {</div> +<div class="line"> <span class="comment">// Failed to terminate a thread</span></div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="gaf13a667493c5d629a90c13e113b99233"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osThreadYield </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osThreadYield</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Pass control to the next thread that is in state <b>READY</b>. If there is no other thread in the state <b>READY</b>, the current thread continues execution and no thread switching occurs.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the function has been correctly executed.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// status of the executed function</span></div> +<div class="line"> :</div> +<div class="line"> <span class="keywordflow">while</span> (1) {</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233" title="Pass control to next thread that is in state READY.">osThreadYield</a>(); <span class="comment">// </span></div> +<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// thread switch not occurred, not in a thread function</span></div> +<div class="line"> }</div> +<div class="line"> }</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___thread_mgmt.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___thread_mgmt.js new file mode 100644 index 0000000..fa5d5de --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___thread_mgmt.js @@ -0,0 +1,21 @@ +var group___c_m_s_i_s___r_t_o_s___thread_mgmt = +[ + [ "osThread", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453", null ], + [ "osThreadDef", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f", null ], + [ "osPriority", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a", [ + [ "osPriorityIdle", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81", null ], + [ "osPriorityLow", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4", null ], + [ "osPriorityBelowNormal", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6", null ], + [ "osPriorityNormal", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1", null ], + [ "osPriorityAboveNormal", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b", null ], + [ "osPriorityHigh", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2", null ], + [ "osPriorityRealtime", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af", null ], + [ "osPriorityError", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4", null ] + ] ], + [ "osThreadCreate", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff", null ], + [ "osThreadGetId", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7", null ], + [ "osThreadGetPriority", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9", null ], + [ "osThreadSetPriority", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b", null ], + [ "osThreadTerminate", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab", null ], + [ "osThreadYield", "group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___timer_mgmt.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___timer_mgmt.html new file mode 100644 index 0000000..299ac4b --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___timer_mgmt.html @@ -0,0 +1,498 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Timer Management</title> +<title>CMSIS-RTOS: Timer Management</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___timer_mgmt.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#enum-members">Enumerations</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Timer Management</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s.html">CMSIS-RTOS API</a></div></div><!--header--> +<div class="contents"> + +<p>Create and control timer and timer callback functions. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga1c720627e08d1cc1afcad44e799ed492"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492">osTimerDef</a>(name, function)</td></tr> +<tr class="memdesc:ga1c720627e08d1cc1afcad44e799ed492"><td class="mdescLeft"> </td><td class="mdescRight">Define a Timer object. <a href="#ga1c720627e08d1cc1afcad44e799ed492"></a><br/></td></tr> +<tr class="separator:ga1c720627e08d1cc1afcad44e799ed492"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga1b8d670eaf964b2910fa06885e650678"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678">osTimer</a>(name)   &os_timer_def_##name</td></tr> +<tr class="memdesc:ga1b8d670eaf964b2910fa06885e650678"><td class="mdescLeft"> </td><td class="mdescRight">Access a Timer definition. <a href="#ga1b8d670eaf964b2910fa06885e650678"></a><br/></td></tr> +<tr class="separator:ga1b8d670eaf964b2910fa06885e650678"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:gadac860eb9e1b4b0619271e6595ed83d9"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> { <br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951">osTimerOnce</a> = 0, +<br/> +  <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788">osTimerPeriodic</a> = 1 +<br/> + }</td></tr> +<tr class="separator:gadac860eb9e1b4b0619271e6595ed83d9"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> (const <a class="el" href="structos_timer_def__t.html">osTimerDef_t</a> *timer_def, <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> type, void *argument)</td></tr> +<tr class="memdesc:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="mdescLeft"> </td><td class="mdescRight">Create a timer. <a href="#gaedd312bfdca04e0b8162b666e09a1ae6"></a><br/></td></tr> +<tr class="separator:gaedd312bfdca04e0b8162b666e09a1ae6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga27a797a401b068e2644d1125f22a07ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id, uint32_t millisec)</td></tr> +<tr class="memdesc:ga27a797a401b068e2644d1125f22a07ca"><td class="mdescLeft"> </td><td class="mdescRight">Start or restart a timer. <a href="#ga27a797a401b068e2644d1125f22a07ca"></a><br/></td></tr> +<tr class="separator:ga27a797a401b068e2644d1125f22a07ca"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga58f36b121a812936435cacc6e1e0e091"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">osTimerStop</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id)</td></tr> +<tr class="memdesc:ga58f36b121a812936435cacc6e1e0e091"><td class="mdescLeft"> </td><td class="mdescRight">Stop the timer. <a href="#ga58f36b121a812936435cacc6e1e0e091"></a><br/></td></tr> +<tr class="separator:ga58f36b121a812936435cacc6e1e0e091"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga746b8043d906849bd65e3900fcb483cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">osTimerDelete</a> (<a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> timer_id)</td></tr> +<tr class="memdesc:ga746b8043d906849bd65e3900fcb483cf"><td class="mdescLeft"> </td><td class="mdescRight">Delete a timer that was created by <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>. <a href="#ga746b8043d906849bd65e3900fcb483cf"></a><br/></td></tr> +<tr class="separator:ga746b8043d906849bd65e3900fcb483cf"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>In addition to the <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html">Generic Wait Functions</a> CMSIS-RTOS also supports virtual timer objects. These timer objects can trigger the execution of a function (not threads). When a timer expires, a callback function is executed to run associated code with the timer. The timer number is passed as a parameter to the callback function. Each timer can be configured as a one-shot or a periodic timer. A periodic timer repeats its operation until it is <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">deleted</a> or <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">stopped</a>. All timers can be <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">started, restarted</a>, or <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">stopped</a>.</p> +<p>Timers are handled in the thread <b>osTimerThread</b>. Callback functions run under control of this thread and may use other CMSIS-RTOS API calls.</p> +<p>The figure below shows the behavior of a periodic timer. For one-shot timers, the timer stops after execution of the callback function.</p> +<div class="image"> +<img src="Timer.png" alt="Timer.png"/> +<div class="caption"> +Behavior of a Periodic Timer</div></div> + <h2>Working with Timers</h2> +<p>The following steps are required to use a timer:</p> +<ol type="1"> +<li>Define the timers: <div class="fragment"><div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492" title="Define a Timer object.">osTimerDef</a>(one_shot, start_machine); <span class="comment">// when the timer expires, the function start_machine is called</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492" title="Define a Timer object.">osTimerDef</a>(periodic, toggle_power); <span class="comment">// when the timer expires, the function toggle_power is called</span></div> +<div class="line"><a class="code" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7" title="Timer ID identifies the timer (pointer to a timer control block).">osTimerId</a> one_shot_id, periodic_id;</div> +</div><!-- fragment --></li> +<li>Instantiate and start the timers in an RTOS thread: <div class="fragment"><div class="line">one_shot_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678" title="Access a Timer definition.">osTimer</a>(one_shot), <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951" title="one-shot timer">osTimerOnce</a>, (<span class="keywordtype">void</span> *)0); <span class="comment">// creates a one-shot timer;</span></div> +<div class="line"> <span class="comment">// (void*)0 is passed as an argument to the callback function</span></div> +<div class="line">periodic_id = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a>(<a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678" title="Access a Timer definition.">osTimer</a>(periodic), <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788" title="repeating timer">osTimerPeriodic</a>, (<span class="keywordtype">void</span> *)5); <span class="comment">// creates a periodic timer;</span></div> +<div class="line"> <span class="comment">// (void*)5 is passed as an argument to the callback function</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca" title="Start or restart a timer.">osTimerStart</a>(one_shot_id, 500);</div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca" title="Start or restart a timer.">osTimerStart</a>(periodic, 1500);</div> +</div><!-- fragment --> </li> +</ol> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="ga1b8d670eaf964b2910fa06885e650678"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osTimer</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name</td><td>)</td> + <td>   &os_timer_def_##name</td> + </tr> + </table> +</div><div class="memdoc"> +<p>Access to the timer definition for the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the timer object. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osTimer</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<a class="anchor" id="ga1c720627e08d1cc1afcad44e799ed492"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osTimerDef</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">name, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">function </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Define the attributes of a timer.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">name</td><td>name of the timer object. </td></tr> + <tr><td class="paramname">function</td><td>name of the timer call back function. </td></tr> + </table> + </dd> +</dl> +<dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: The parameter to <b>osTimerDef</b> shall be consistent but the macro body is implementation specific in every CMSIS-RTOS. </dd></dl> + +</div> +</div> +<h2 class="groupheader">Enumeration Type Documentation</h2> +<a class="anchor" id="gadac860eb9e1b4b0619271e6595ed83d9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>os_timer_type</b> shall be consistent in every CMSIS-RTOS. The <a class="el" href="cmsis__os_8h.html#adac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> specifies the a repeating (periodic) or one-shot timer for the function <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>. </dd></dl> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951"></a>osTimerOnce</em> </td><td> +<p>one-shot timer </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788"></a>osTimerPeriodic</em> </td><td> +<p>repeating timer </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="gaedd312bfdca04e0b8162b666e09a1ae6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> osTimerCreate </td> + <td>(</td> + <td class="paramtype">const <a class="el" href="structos_timer_def__t.html">osTimerDef_t</a> * </td> + <td class="paramname"><em>timer_def</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9">os_timer_type</a> </td> + <td class="paramname"><em>type</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"><em>argument</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">timer_def</td><td>timer object referenced with <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678">osTimer</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>osTimerOnce for one-shot or osTimerPeriodic for periodic behavior. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">argument</td><td>argument to the timer call back function. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>timer ID for reference by other functions or NULL in case of error. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osTimerCreate</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Create a one-shot or periodic timer and associate it with a callback function argument. The timer is in stopped until it is started with <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a>.</p> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Timer1_Callback (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// prototypes for timer callback function</span></div> +<div class="line"><span class="keywordtype">void</span> Timer2_Callback (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); </div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492" title="Define a Timer object.">osTimerDef</a> (Timer1, Timer1_Callback); <span class="comment">// define timers</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492" title="Define a Timer object.">osTimerDef</a> (Timer2, Timer2_Callback);</div> +<div class="line"> </div> +<div class="line">uint32_t exec1; <span class="comment">// argument for the timer call back function</span></div> +<div class="line">uint32_t exec2; <span class="comment">// argument for the timer call back function</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> TimerCreate_example (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7" title="Timer ID identifies the timer (pointer to a timer control block).">osTimerId</a> id1; <span class="comment">// timer id</span></div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7" title="Timer ID identifies the timer (pointer to a timer control block).">osTimerId</a> id2; <span class="comment">// timer id</span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Create one-shoot timer</span></div> +<div class="line"> exec1 = 1;</div> +<div class="line"> id1 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678" title="Access a Timer definition.">osTimer</a>(Timer1), <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951" title="one-shot timer">osTimerOnce</a>, &exec1);</div> +<div class="line"> <span class="keywordflow">if</span> (id1 != NULL) {</div> +<div class="line"> <span class="comment">// One-shoot timer created</span></div> +<div class="line"> }</div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Create periodic timer</span></div> +<div class="line"> exec2 = 2;</div> +<div class="line"> id2 = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678" title="Access a Timer definition.">osTimer</a>(Timer2), <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788" title="repeating timer">osTimerPeriodic</a>, &exec2);</div> +<div class="line"> <span class="keywordflow">if</span> (id2 != NULL) {</div> +<div class="line"> <span class="comment">// Periodic timer created</span></div> +<div class="line"> }</div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga746b8043d906849bd65e3900fcb483cf"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osTimerDelete </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> </td> + <td class="paramname"><em>timer_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">timer_id</td><td>timer ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osTimerDelete</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Delete the timer object.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the specified timer has been deleted.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">osTimerDelete</a> cannot be called from interrupt service routines.</li> +<li><em>osErrorParameter:</em> <em>timer_id</em> is incorrect.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"></div> +<div class="line"><span class="keywordtype">void</span> Timer_Callback (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// prototype for timer callback function</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492" title="Define a Timer object.">osTimerDef</a> (Timer, Timer_Callback); <span class="comment">// define timer</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> TimerDelete_example (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7" title="Timer ID identifies the timer (pointer to a timer control block).">osTimerId</a> id; <span class="comment">// timer id</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// function return status </span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Create periodic timer</span></div> +<div class="line"> exec = 1;</div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678" title="Access a Timer definition.">osTimer</a>(Timer2), <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788" title="repeating timer">osTimerPeriodic</a>, NULL);</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca" title="Start or restart a timer.">osTimerStart</a> (<span class="keywordtype">id</span>, 1000UL); <span class="comment">// start timer</span></div> +<div class="line"> :</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf" title="Delete a timer that was created by osTimerCreate.">osTimerDelete</a> (<span class="keywordtype">id</span>); <span class="comment">// stop and delete timer</span></div> +<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// Timer could not be deleted</span></div> +<div class="line"> } </div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga27a797a401b068e2644d1125f22a07ca"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osTimerStart </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> </td> + <td class="paramname"><em>timer_id</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">timer_id</td><td>timer ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>. </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">time delay</a> value of the timer. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osTimerStart</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Start or restart the timer.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the specified timer has been started or restarted.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a> cannot be called from interrupt service routines.</li> +<li><em>osErrorParameter:</em> <em>timer_id</em> is incorrect.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Time_Callback (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// timer callback function</span></div> +<div class="line"> <span class="comment">// arg contains &exec</span></div> +<div class="line"> <span class="comment">// called every second after osTimerStart</span></div> +<div class="line">} </div> +<div class="line"> </div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492" title="Define a Timer object.">osTimerDef</a> (Timer, Time_Callback); <span class="comment">// define timer</span></div> +<div class="line">uint32_t exec; <span class="comment">// argument for the timer call back function</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> TimerStart_example (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7" title="Timer ID identifies the timer (pointer to a timer control block).">osTimerId</a> id; <span class="comment">// timer id</span></div> +<div class="line"> uint32_t timerDelay; <span class="comment">// timer value</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// function return status</span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Create periodic timer</span></div> +<div class="line"> exec = 1;</div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678" title="Access a Timer definition.">osTimer</a>(Timer), <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788" title="repeating timer">osTimerPeriodic</a>, &exec);</div> +<div class="line"> <span class="keywordflow">if</span> (<span class="keywordtype">id</span>) {</div> +<div class="line"> timerDelay = 1000;</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca" title="Start or restart a timer.">osTimerStart</a> (<span class="keywordtype">id</span>, timerDelay); <span class="comment">// start timer</span></div> +<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// Timer could not be started</span></div> +<div class="line"> } </div> +<div class="line"> }</div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga58f36b121a812936435cacc6e1e0e091"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osTimerStop </td> + <td>(</td> + <td class="paramtype"><a class="el" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7">osTimerId</a> </td> + <td class="paramname"><em>timer_id</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">timer_id</td><td>timer ID obtained by <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osTimerStop</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Stop the timer.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osOK:</em> the specified timer has been stopped.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091">osTimerStop</a> cannot be called from interrupt service routines.</li> +<li><em>osErrorParameter:</em> <em>timer_id</em> is incorrect.</li> +<li><em>osErrorResource:</em> the timer is not started.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Timer_Callback (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg); <span class="comment">// prototype for timer callback function</span></div> +<div class="line"><a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492" title="Define a Timer object.">osTimerDef</a> (Timer, Timer_Callback); <span class="comment">// define timer</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> TimerStop_example (<span class="keywordtype">void</span>) {</div> +<div class="line"> <a class="code" href="cmsis__os_8h.html#ab8530dd4273f1f5382187732e14fcaa7" title="Timer ID identifies the timer (pointer to a timer control block).">osTimerId</a> id; <span class="comment">// timer id</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// function return status</span></div> +<div class="line"> </div> +<div class="line"> <span class="comment">// Create periodic timer</span></div> +<div class="line"> exec = 1;</div> +<div class="line"> <span class="keywordtype">id</span> = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6" title="Create a timer.">osTimerCreate</a> (<a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678" title="Access a Timer definition.">osTimer</a>(Timer2), <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788" title="repeating timer">osTimerPeriodic</a>, NULL);</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca" title="Start or restart a timer.">osTimerStart</a> (<span class="keywordtype">id</span>, 1000); <span class="comment">// start timer</span></div> +<div class="line"> :</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091" title="Stop the timer.">osTimerStop</a> (<span class="keywordtype">id</span>); <span class="comment">// stop timer</span></div> +<div class="line"> <span class="keywordflow">if</span> (status != <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f" title="function completed; no error or event occurred.">osOK</a>) {</div> +<div class="line"> <span class="comment">// Timer could not be stopped</span></div> +<div class="line"> } </div> +<div class="line"> :</div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca" title="Start or restart a timer.">osTimerStart</a> (<span class="keywordtype">id</span>, 1000); <span class="comment">// start timer again</span></div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___timer_mgmt.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___timer_mgmt.js new file mode 100644 index 0000000..60f1ace --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___timer_mgmt.js @@ -0,0 +1,13 @@ +var group___c_m_s_i_s___r_t_o_s___timer_mgmt = +[ + [ "osTimer", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678", null ], + [ "osTimerDef", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492", null ], + [ "os_timer_type", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9", [ + [ "osTimerOnce", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951", null ], + [ "osTimerPeriodic", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788", null ] + ] ], + [ "osTimerCreate", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6", null ], + [ "osTimerDelete", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf", null ], + [ "osTimerStart", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca", null ], + [ "osTimerStop", "group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___wait.html b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___wait.html new file mode 100644 index 0000000..c0eafec --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___wait.html @@ -0,0 +1,254 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Generic Wait Functions</title> +<title>CMSIS-RTOS: Generic Wait Functions</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('group___c_m_s_i_s___r_t_o_s___wait.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">Generic Wait Functions</div> </div> +<div class="ingroups"><a class="el" href="group___c_m_s_i_s___r_t_o_s.html">CMSIS-RTOS API</a></div></div><!--header--> +<div class="contents"> + +<p>Wait for a time period or unspecified events. +<a href="#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ga6c97d38879ae86491628f6e647639bad"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad">osFeature_Wait</a>   1</td></tr> +<tr class="memdesc:ga6c97d38879ae86491628f6e647639bad"><td class="mdescLeft"> </td><td class="mdescRight">osWait function: 1=available, 0=not available <a href="#ga6c97d38879ae86491628f6e647639bad"></a><br/></td></tr> +<tr class="separator:ga6c97d38879ae86491628f6e647639bad"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ga02e19d5e723bfb06ba9324d625162255"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> (uint32_t millisec)</td></tr> +<tr class="memdesc:ga02e19d5e723bfb06ba9324d625162255"><td class="mdescLeft"> </td><td class="mdescRight">Wait for Timeout (Time Delay). <a href="#ga02e19d5e723bfb06ba9324d625162255"></a><br/></td></tr> +<tr class="separator:ga02e19d5e723bfb06ba9324d625162255"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ga8470c8aaedfde524a44e22e5b2328285"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> (uint32_t millisec)</td></tr> +<tr class="memdesc:ga8470c8aaedfde524a44e22e5b2328285"><td class="mdescLeft"> </td><td class="mdescRight">Wait for Signal, Message, Mail, or Timeout. <a href="#ga8470c8aaedfde524a44e22e5b2328285"></a><br/></td></tr> +<tr class="separator:ga8470c8aaedfde524a44e22e5b2328285"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<p>The Generic Wait function group provides means for a time delay and allow to wait for unspecified events. </p> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="ga6c97d38879ae86491628f6e647639bad"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define osFeature_Wait   1</td> + </tr> + </table> +</div><div class="memdoc"> +<p>A CMSIS-RTOS implementation may support the generic wait function <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a>.</p> +<ul> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad">osFeature_Wait</a> is 1 a generic wait function <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> is available.</li> +<li>When <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad">osFeature_Wait</a> is 0 no generic wait function <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> is available. </li> +</ul> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="ga02e19d5e723bfb06ba9324d625162255"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> osDelay </td> + <td>(</td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">time delay</a> value </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>status code that indicates the execution status of the function.</dd></dl> +<p>Wait for a specified time period in <em>millisec</em>.</p> +<p>The <a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">millisec</a> value specifies the number of timer ticks and is therefore an upper bound. The exact time delay depends on the actual time elapsed since the last timer tick.</p> +<p>For a value of <b>1</b>, the system waits until the next timer tick occurs. That means that the actual time delay may be up to one timer tick less.</p> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osEventTimeout:</em> the time delay is executed.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e">osStatus</a> status; <span class="comment">// capture the return status</span></div> +<div class="line"> uint32_t delayTime; <span class="comment">// delay time in milliseconds</span></div> +<div class="line"> </div> +<div class="line"> delayTime = 1000; <span class="comment">// delay 1 second</span></div> +<div class="line"> :</div> +<div class="line"> status = <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255" title="Wait for Timeout (Time Delay).">osDelay</a> (delayTime); <span class="comment">// suspend thread execution</span></div> +<div class="line"> <span class="comment">// handle error code</span></div> +<div class="line"> : </div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +<a class="anchor" id="ga8470c8aaedfde524a44e22e5b2328285"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event">osEvent</a> osWait </td> + <td>(</td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>millisec</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">millisec</td><td><a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a> or 0 in case of no time-out </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>event that contains signal, message, or mail information or error code. </dd></dl> +<dl class="section note"><dt>Note</dt><dd>MUST REMAIN UNCHANGED: <b>osWait</b> shall be consistent in every CMSIS-RTOS.</dd></dl> +<p>Wait for any event of the type Signal, Message, Mail for a specified time period in <em>millisec</em>. While the system waits, the thread that is calling this function is put into the state <b>WAITING</b>. When <em>millisec</em> is set to <b>osWaitForever</b>, the function will wait for an infinite time until an event occurs.</p> +<p>The osWait function puts a thread into the state <b>WAITING</b> and waits for any of the following events:</p> +<ul> +<li>A <b>signal</b> sent to that thread explicitly</li> +<li>A <b>message</b> from a message object that is registered to that thread</li> +<li>A <b>mail</b> from a mail object that is registered to that thread</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>This function is optional and may not be provided by all CMSIS-RTOS implementations.</dd></dl> +<p><b><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html">Status and Error Codes</a></b><br/> +</p> +<ul> +<li><em>osEventSignal:</em> a signal event occurred and is returned.</li> +<li><em>osEventMessage:</em> a message event occurred and is returned.</li> +<li><em>osEventMail:</em> a mail event occurred and is returned.</li> +<li><em>osEventTimeout:</em> the time delay is executed.</li> +<li><em>osErrorISR:</em> <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> cannot be called from interrupt service routines.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>Cannot be called from <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">Interrupt Service Routines</a>.</dd></dl> +<p><b>Code Example</b> </p> +<div class="fragment"><div class="line"><span class="preprocessor">#include "<a class="code" href="cmsis__os_8h.html">cmsis_os.h</a>"</span></div> +<div class="line"> </div> +<div class="line"><span class="keywordtype">void</span> Thread_1 (<span class="keywordtype">void</span> <span class="keyword">const</span> *arg) { <span class="comment">// Thread function</span></div> +<div class="line"> <a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event" title="Event structure contains detailed information about an event.">osEvent</a> Event; <span class="comment">// capture the event</span></div> +<div class="line"> uint32_t waitTime; <span class="comment">// wait time in milliseconds</span></div> +<div class="line"> </div> +<div class="line"> :</div> +<div class="line"> waitTime = <a class="code" href="cmsis__os_8h.html#a9eb9a7a797a42e4b55eb171ecc609ddb" title="Timeout value.">osWaitForever</a>; <span class="comment">// special "wait" value</span></div> +<div class="line"> Event = <a class="code" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285" title="Wait for Signal, Message, Mail, or Timeout.">osWait</a> (waitTime); <span class="comment">// wait forever and until an event occurred</span></div> +<div class="line"> <span class="keywordflow">switch</span> (Event.<a class="code" href="group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3" title="status code: event or error information">status</a>) {</div> +<div class="line"> <span class="keywordflow">case</span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518" title="function completed; signal event occurred.">osEventSignal</a>: <span class="comment">// Signal arrived</span></div> +<div class="line"> : <span class="comment">// Event.value.signals contains the signal flags</span></div> +<div class="line"> <span class="keywordflow">break</span>;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">case</span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342" title="function completed; message event occurred.">osEventMessage</a>: <span class="comment">// Message arrived</span></div> +<div class="line"> : <span class="comment">// Event.value.p contains the message pointer</span></div> +<div class="line"> : <span class="comment">// Event.def.message_id contains the message Id</span></div> +<div class="line"> <span class="keywordflow">break</span>;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">case</span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926" title="function completed; mail event occurred.">osEventMail</a>: <span class="comment">// Mail arrived</span></div> +<div class="line"> : <span class="comment">// Event.value.p contains the mail pointer</span></div> +<div class="line"> : <span class="comment">// Event.def.mail_id contains the mail Id</span></div> +<div class="line"> <span class="keywordflow">break</span>;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">case</span> <a class="code" href="group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177" title="function completed; timeout occurred.">osEventTimeout</a>: <span class="comment">// Timeout occurred</span></div> +<div class="line"> <span class="keywordflow">break</span>;</div> +<div class="line"> </div> +<div class="line"> <span class="keywordflow">default</span>: <span class="comment">// Error occurred</span></div> +<div class="line"> <span class="keywordflow">break</span>;</div> +<div class="line"> }</div> +<div class="line"> :</div> +<div class="line">}</div> +</div><!-- fragment --> +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___wait.js b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___wait.js new file mode 100644 index 0000000..6694d9f --- /dev/null +++ b/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___wait.js @@ -0,0 +1,6 @@ +var group___c_m_s_i_s___r_t_o_s___wait = +[ + [ "osFeature_Wait", "group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad", null ], + [ "osDelay", "group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255", null ], + [ "osWait", "group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/index.html b/Documentation/RTOS/html/index.html new file mode 100644 index 0000000..e9c7e27 --- /dev/null +++ b/Documentation/RTOS/html/index.html @@ -0,0 +1,148 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Overview</title> +<title>CMSIS-RTOS: Overview</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li class="current"><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('index.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Overview </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><p>The CMSIS-RTOS API is a generic RTOS interface for ARM® Cortex®-M processor-based devices. CMSIS-RTOS provides a standardized API for software components that require RTOS functionality and gives therefore serious benefits to the users and the software industry.</p> +<ul> +<li>CMSIS-RTOS provides basic features that are required in many applications or technologies such as UML or Java (JVM).</li> +<li>The unified feature set of the CMSIS-RTOS API simplifies sharing of software components and reduces learning efforts.</li> +<li>Middleware components that use the CMSIS-RTOS API are RTOS agnostic. CMSIS-RTOS compliant middleware is easier to adapt.</li> +<li>Standard project templates (such as motor control) of the CMSIS-RTOS API may be shipped with freely available CMSIS-RTOS implementations.</li> +</ul> +<dl class="section note"><dt>Note</dt><dd>The CMSIS-RTOS API defines a minimum feature set. Implementations with extended features may be provided by RTOS vendors.</dd></dl> +<div class="image"> +<img src="API_Structure.png" alt="API_Structure.png"/> +<div class="caption"> +CMSIS-RTOS API Structure</div></div> +<p> A typical CMSIS-RTOS API implementation interfaces to an existing real-time Kernel. The CMSIS-RTOS API provides the following attributes and functionalities:</p> +<ul> +<li>Function names, identifiers, and parameters are descriptive and easy to understand. The functions are powerful and flexible which reduces the number of functions exposed to the user.</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html">Thread Management</a> allows you to define, create, and control threads.</li> +<li>Interrupt Service Routines (ISR) can <a class="el" href="_function_overview.html#CMSIS_RTOS_ISR_Calls">call some CMSIS-RTOS functions</a>. When a CMSIS-RTOS function cannot be called from ISR context, it rejects the invocation.</li> +<li>Three different thread event types support communication between multiple threads and/or ISR:<ul> +<li><b>Signal:</b> is a flag that may be used to indicate specific conditions to a thread. Signals can be modified in an ISR or set from other threads.</li> +<li><b>Message:</b> is a 32-bit value that can be sent to a thread or an ISR. Messages are buffered in a queue. The message type and queue size is defined in a descriptor.</li> +<li><b>Mail:</b> is a fixed-size memory block that can be sent to a thread or an ISR. Mails are buffered in a queue and memory allocation is provided. The mail type and queue size is defined in a descriptor.</li> +</ul> +</li> +<li><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html">Mutexes</a> and <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html">Semaphores</a> are incorporated.</li> +<li>CPU time can be schedule with the following functionalities:<ul> +<li>A <em>timeout</em> parameter is incorporated in many CMSIS-RTOS functions to avoid system lockup. When a timeout is specified, the system waits until a resource is available or an event occurs. While waiting, other threads are scheduled.</li> +<li>The <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255">osDelay</a> function puts a thread into the state <b>WAITING</b> for a specified period of time.</li> +<li>The generic <a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285">osWait</a> function waits for events that are assigned to a thread.</li> +<li>The <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a> provides co-operative thread switching and passes execution to another thread of the same priority.</li> +</ul> +</li> +</ul> +<p>The CMSIS-RTOS API is designed to optionally incorporate multi-processor systems and/or access protection via the Cortex-M Memory Protection Unit (MPU).</p> +<p>In some RTOS implementations threads may execute on different processors and <b>Mail</b> and <b>Message</b> queues can therefore reside in shared memory resources.</p> +<p>The CMSIS-RTOS API encourages the software industry to evolve existing RTOS implementations. Kernel objects are defined and accessed using macros. This allows differentiation. RTOS implementations can be different and optimized in various aspects towards the Cortex-M processors. Optional features may be for example</p> +<ul> +<li>Generic <b>wait</b> function; i.e. with support of time intervals.</li> +<li>Support of the Cortex-M Memory Protection Unit (MPU).</li> +<li>Zero-copy mail queue.</li> +<li>Support of multi-processor systems.</li> +<li>Support of a DMA controller.</li> +<li>Deterministic context switching.</li> +<li>Round-robin context switching.</li> +<li>Deadlock avoidance, for example with priority inversion.</li> +<li>Zero interrupt latency by using the Cortex-M3/M4 instructions LDEX and STEX.</li> +</ul> +<hr/> +<h2>CMSIS-RTOS in ARM::CMSIS Pack</h2> +<p>The following files relevant to CMSIS-RTOS are present in the <b>ARM::CMSIS</b> Pack directories: </p> +<table class="doxtable"> +<tr> +<th>File/Folder </th><th>Content </th></tr> +<tr> +<td><b>CMSIS\Documentation\RTOS</b> </td><td>This documentation </td></tr> +<tr> +<td><b>CMSIS\RTOS\Template</b> </td><td><a class="el" href="cmsis_os_h.html">Header File Template: cmsis_os.h</a> </td></tr> +</table> +<hr/> + </div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/jquery.js b/Documentation/RTOS/html/jquery.js new file mode 100644 index 0000000..78ad0bd --- /dev/null +++ b/Documentation/RTOS/html/jquery.js @@ -0,0 +1,77 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test("Â ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function() +{g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d +&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")), +f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c) +{if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); +/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery); +/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery); +/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery); +/* + * jQuery UI Resizable 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p +&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery); +/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this); +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 5/25/2009 + * @author Ariel Flesler + * @version 1.4.2 + * + * http://flesler.blogspot.com/2007/10/jqueryscrollto.html + */ +;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); diff --git a/Documentation/RTOS/html/modules.html b/Documentation/RTOS/html/modules.html new file mode 100644 index 0000000..f358757 --- /dev/null +++ b/Documentation/RTOS/html/modules.html @@ -0,0 +1,108 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Reference</title> +<title>CMSIS-RTOS: Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li class="current"><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('modules.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all modules:</div><div class="directory"> +<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('0_')"/><a class="el" href="group___c_m_s_i_s___r_t_o_s.html" target="_self">CMSIS-RTOS API</a></td><td class="desc">This section describes the CMSIS-RTOS API</td></tr> +<tr id="row_0_0_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html" target="_self">Kernel Information and Control</a></td><td class="desc">Provide version/system information and start the RTOS Kernel</td></tr> +<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html" target="_self">Thread Management</a></td><td class="desc">Define, create, and control thread functions</td></tr> +<tr id="row_0_2_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___wait.html" target="_self">Generic Wait Functions</a></td><td class="desc">Wait for a time period or unspecified events</td></tr> +<tr id="row_0_3_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html" target="_self">Timer Management</a></td><td class="desc">Create and control timer and timer callback functions</td></tr> +<tr id="row_0_4_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img id="arr_0_4_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_4_')"/><a class="el" href="group___c_m_s_i_s___r_t_o_s___inter_thread.html" target="_self">Inter-Thread Communication and Resource Sharing</a></td><td class="desc">Functions for inter-thread communication</td></tr> +<tr id="row_0_4_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___signal_mgmt.html" target="_self">Signal Events</a></td><td class="desc">Synchronize threads using signals</td></tr> +<tr id="row_0_4_1_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___message.html" target="_self">Message Queue</a></td><td class="desc">Exchange messages between threads in a FIFO-like operation</td></tr> +<tr id="row_0_4_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___pool_mgmt.html" target="_self">Memory Pool</a></td><td class="desc">Manage thread-safe fixed-size blocks of dynamic memory</td></tr> +<tr id="row_0_4_3_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___mail.html" target="_self">Mail Queue</a></td><td class="desc">Exchange data between threads using a queue of memory blocks</td></tr> +<tr id="row_0_4_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html" target="_self">Mutexes</a></td><td class="desc">Synchronize resource access using Mutual Exclusion (Mutex)</td></tr> +<tr id="row_0_4_5_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html" target="_self">Semaphores</a></td><td class="desc">Access shared resources simultaneously from different threads</td></tr> +<tr id="row_0_5_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___definitions.html" target="_self">Generic Data Types and Definitions</a></td><td class="desc">Data Type Definitions used by the CMSIS-RTOS API functions</td></tr> +<tr id="row_0_6_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="group___c_m_s_i_s___r_t_o_s___status.html" target="_self">Status and Error Codes</a></td><td class="desc">Status and Error Codes returned by CMSIS-RTOS API functions</td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/modules.js b/Documentation/RTOS/html/modules.js new file mode 100644 index 0000000..909dd3d --- /dev/null +++ b/Documentation/RTOS/html/modules.js @@ -0,0 +1,4 @@ +var modules = +[ + [ "CMSIS-RTOS API", "group___c_m_s_i_s___r_t_o_s.html", "group___c_m_s_i_s___r_t_o_s" ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/nav_f.png b/Documentation/RTOS/html/nav_f.png Binary files differnew file mode 100644 index 0000000..72a58a5 --- /dev/null +++ b/Documentation/RTOS/html/nav_f.png diff --git a/Documentation/RTOS/html/nav_g.png b/Documentation/RTOS/html/nav_g.png Binary files differnew file mode 100644 index 0000000..2093a23 --- /dev/null +++ b/Documentation/RTOS/html/nav_g.png diff --git a/Documentation/RTOS/html/nav_h.png b/Documentation/RTOS/html/nav_h.png Binary files differnew file mode 100644 index 0000000..33389b1 --- /dev/null +++ b/Documentation/RTOS/html/nav_h.png diff --git a/Documentation/RTOS/html/navtree.css b/Documentation/RTOS/html/navtree.css new file mode 100644 index 0000000..8001f82 --- /dev/null +++ b/Documentation/RTOS/html/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 300px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/Documentation/RTOS/html/navtree.js b/Documentation/RTOS/html/navtree.js new file mode 100644 index 0000000..1a0a6a6 --- /dev/null +++ b/Documentation/RTOS/html/navtree.js @@ -0,0 +1,527 @@ +var NAVTREE = +[ + [ "CMSIS-RTOS", "index.html", [ + [ "Overview", "index.html", null ], + [ "Revision History", "rtos_revision_history.html", null ], + [ "Using a CMSIS-RTOS Implementation", "_using_o_s.html", null ], + [ "Function Overview", "_function_overview.html", [ + [ "Timout Value", "_function_overview.html#CMSIS_RTOS_TimeOutValue", null ], + [ "Calls from Interrupt Service Routines", "_function_overview.html#CMSIS_RTOS_ISR_Calls", null ] + ] ], + [ "Header File Template: cmsis_os.h", "cmsis_os_h.html", null ], + [ "RTOS Validation", "_rtos_validation.html", [ + [ "Sample Test Output", "_rtos_validation.html#test_output", null ] + ] ], + [ "Reference", "modules.html", "modules" ], + [ "Data Structures", "annotated.html", "annotated" ], + [ "Data Structure Index", "classes.html", null ], + [ "Data Fields", "functions.html", [ + [ "All", "functions.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"_function_overview.html" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + if (node.parentNode && node.parentNode.parentNode) { + createIndent(o,domNode,node.parentNode,level+1); + } + var imgNode = document.createElement("img"); + imgNode.width = 16; + imgNode.height = 22; + if (level==0 && node.childrenData) { + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2plastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2pnode.png"; + } + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + domNode.appendChild(imgNode); + } + if (level==0) { + if (node.isLast) { + if (node.childrenData) { + imgNode.src = node.relpath+"ftv2plastnode.png"; + } else { + imgNode.src = node.relpath+"ftv2lastnode.png"; + domNode.appendChild(imgNode); + } + } else { + if (node.childrenData) { + imgNode.src = node.relpath+"ftv2pnode.png"; + } else { + imgNode.src = node.relpath+"ftv2node.png"; + domNode.appendChild(imgNode); + } + } + } else { + if (node.isLast) { + imgNode.src = node.relpath+"ftv2blank.png"; + } else { + imgNode.src = node.relpath+"ftv2vertline.png"; + } + } + imgNode.border = "0"; +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath($(location).attr('pathname')); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : '#'; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var pos, anchor = $(aname), docContent = $('#doc-content'); + if (anchor.parent().attr('class')=='memItemLeft') { + pos = anchor.parent().position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + window.location.replace(aname); + }); + } + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var anchor = $($(location).attr('hash')); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+ + window.location.hash.substring(1)+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parents().slice(2).prop('tagName')=='TR') { + glowEffect(anchor.parents('div.memitem'),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath($(location).attr('pathname'))+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).show(); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+1<o.breadcrumbs.length) { + showNode(o,n,index+1,hash); + } else { + if (typeof(n.childrenData)==='string') { + var varName = n.childrenData; + getScript(n.relpath+varName,function(){ + n.childrenData = getData(varName); + node.expanded=false; + showNode(o,node,index,hash); // retry with child node expanded + },true); + } else { + var rootBase = stripPath(o.toroot.replace(/\..+$/, '')); + if (rootBase=="index" || rootBase=="pages") { + expandNode(o, n, true, true); + } + selectAndHighlight(hash,n); + } + } + } + } else { + selectAndHighlight(hash); + } +} + +function getNode(o, po) +{ + po.childrenVisited = true; + var l = po.childrenData.length-1; + for (var i in po.childrenData) { + var nodeData = po.childrenData[i]; + po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], + i==l); + } +} + +function gotoNode(o,subIndex,root,hash,relpath) +{ + var nti = navTreeSubIndices[subIndex][root+hash]; + o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]); + if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index + navTo(o,NAVTREE[0][1],"",relpath); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + if (o.breadcrumbs) { + o.breadcrumbs.unshift(0); // add 0 for root node + showNode(o, o.node, 0, hash); + } +} + +function navTo(o,root,hash,relpath) +{ + var link = cachedLink(); + if (link) { + var parts = link.split('#'); + root = parts[0]; + if (parts.length>1) hash = '#'+parts[1]; + else hash=''; + } + if (root==NAVTREE[0][1]) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + //root=root.replace(/_source\./,'.'); // source link to doc link + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>'); +} + +function showSyncOn(n,relpath) +{ + n.html('<img src="'+relpath+'sync_on.png"/ title="'+SYNCONMSG+'">'); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2($(location).attr('pathname'))+$(location).attr('hash')); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"ftv2pnode.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + navTo(o,toroot,window.location.hash,relpath); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath($(location).attr('pathname'))+':'+ + $(location).attr('hash').substring(1); + a=$('.item a[class$="'+clslink+'"]'); + } + if (a==null || !$(a).parent().parent().hasClass('selected')){ + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + var link=stripPath2($(location).attr('pathname')); + navTo(o,link,$(location).attr('hash'),relpath); + } + }) + + $(window).load(showRoot); +} + diff --git a/Documentation/RTOS/html/navtreeindex0.js b/Documentation/RTOS/html/navtreeindex0.js new file mode 100644 index 0000000..0e8fe7d --- /dev/null +++ b/Documentation/RTOS/html/navtreeindex0.js @@ -0,0 +1,161 @@ +var NAVTREEINDEX0 = +{ +"_function_overview.html":[3], +"_function_overview.html#CMSIS_RTOS_ISR_Calls":[3,1], +"_function_overview.html#CMSIS_RTOS_TimeOutValue":[3,0], +"_rtos_validation.html":[5], +"_rtos_validation.html#test_output":[5,0], +"_using_o_s.html":[2], +"annotated.html":[7], +"classes.html":[8], +"cmsis_os_h.html":[4], +"functions.html":[9,0], +"functions_vars.html":[9,1], +"group___c_m_s_i_s___r_t_o_s.html":[6,0], +"group___c_m_s_i_s___r_t_o_s___definitions.html":[6,0,5], +"group___c_m_s_i_s___r_t_o_s___definitions.html#a0b9f8fd3645f01d8cb09cae82add2d7f":[6,0,5,0,7], +"group___c_m_s_i_s___r_t_o_s___definitions.html#a117104b82864d3b23ec174af6d392709":[6,0,5,0,3], +"group___c_m_s_i_s___r_t_o_s___definitions.html#a596b6d55c3321db19239256bbe403df6":[6,0,5,0,0], +"group___c_m_s_i_s___r_t_o_s___definitions.html#a9e0a00edabf3b8a5dafff624fff7bbfc":[6,0,5,0,6], +"group___c_m_s_i_s___r_t_o_s___definitions.html#ac86175a4b1706bee596f3018322df26e":[6,0,5,0,1], +"group___c_m_s_i_s___r_t_o_s___definitions.html#ad0dda1bf7e74f1576261d493fba232b6":[6,0,5,0,4], +"group___c_m_s_i_s___r_t_o_s___definitions.html#ad477a289f1f03ac45407b64268d707d3":[6,0,5,0,5], +"group___c_m_s_i_s___r_t_o_s___definitions.html#af394cbe21dde7377974e63af38cd87b0":[6,0,5,0,2], +"group___c_m_s_i_s___r_t_o_s___definitions.html#structos__mail_q":[6,0,5,1], +"group___c_m_s_i_s___r_t_o_s___definitions.html#structos_event":[6,0,5,0], +"group___c_m_s_i_s___r_t_o_s___inter_thread.html":[6,0,4], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html":[6,0,0], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga22f7d235bc9f783933bd5a981fd79696":[6,0,0,2], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga3b571de44cd3094c643247a7397f86b5":[6,0,0,8], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga47cf03658f01cdffca688e9096b58289":[6,0,0,4], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e":[6,0,0,7], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga702196bacccbb978620c736b209387f1":[6,0,0,0], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960":[6,0,0,5], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2":[6,0,0,9], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gab78dce646fabec479c5f34bc5175b7de":[6,0,0,1], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001":[6,0,0,10], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88":[6,0,0,6], +"group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae554ec16c23c5b7d65affade2a351891":[6,0,0,3], +"group___c_m_s_i_s___r_t_o_s___mail.html":[6,0,4,3], +"group___c_m_s_i_s___r_t_o_s___mail.html#ga27c1060cf21393f96b4fd1ed1c0167cc":[6,0,4,3,6], +"group___c_m_s_i_s___r_t_o_s___mail.html#ga485ef6f81854ebda8ffbce4832181e02":[6,0,4,3,8], +"group___c_m_s_i_s___r_t_o_s___mail.html#ga58d712b16c0c6668059f509386d1e55b":[6,0,4,3,2], +"group___c_m_s_i_s___r_t_o_s___mail.html#ga8fde74f6fe5b9e88f75cc5eb8f2124fd":[6,0,4,3,4], +"group___c_m_s_i_s___r_t_o_s___mail.html#gaa177e7fe5820dd70d8c9e46ded131174":[6,0,4,3,5], +"group___c_m_s_i_s___r_t_o_s___mail.html#gac6ad7e6e7d6c4a80e60da22c57a42ccd":[6,0,4,3,7], +"group___c_m_s_i_s___r_t_o_s___mail.html#gaceb2e0071ce160d153047f2eac1aca8e":[6,0,4,3,0], +"group___c_m_s_i_s___r_t_o_s___mail.html#gad2deeb66d51ade54e63d8f87ff2ec9d2":[6,0,4,3,1], +"group___c_m_s_i_s___r_t_o_s___mail.html#gadf5ce811bd6a56e617e902a1db6c2194":[6,0,4,3,3], +"group___c_m_s_i_s___r_t_o_s___message.html":[6,0,4,1], +"group___c_m_s_i_s___r_t_o_s___message.html#ga2d446a0b4bb90bf05d6f92eedeaabc97":[6,0,4,1,1], +"group___c_m_s_i_s___r_t_o_s___message.html#ga479a6561f859e3d4818e25708593d203":[6,0,4,1,0], +"group___c_m_s_i_s___r_t_o_s___message.html#ga6c6892b8f2296cca6becd57ca2d7e1ae":[6,0,4,1,4], +"group___c_m_s_i_s___r_t_o_s___message.html#gac0dcf462fc92de8ffaba6cc004514a6d":[6,0,4,1,5], +"group___c_m_s_i_s___r_t_o_s___message.html#gac9a6a6276c12609793e7701afcc82326":[6,0,4,1,2], +"group___c_m_s_i_s___r_t_o_s___message.html#gaf3b9345cf426304d46565152bc26fb78":[6,0,4,1,3], +"group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html":[6,0,4,4], +"group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga006e4744d741e8e132c3d5bbc295afe1":[6,0,4,4,4], +"group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga1122a86faa64b4a0880c76cf68d0c934":[6,0,4,4,0], +"group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5c9de56e717016e39e788064e9a291cc":[6,0,4,4,2], +"group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga5e1752b73f573ee015dbd9ef1edaba13":[6,0,4,4,5], +"group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#ga9b522438489d7c402c95332b58bc94f3":[6,0,4,4,1], +"group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219":[6,0,4,4,3], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html":[6,0,4,2], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga34af5c4f4ab38f4138ea7f1f9ece3a1a":[6,0,4,2,5], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga4a861e9c469c9d0daf5721bf174f8e54":[6,0,4,2,6], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga5f0b204a82327533d420210125c90697":[6,0,4,2,1], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga87b471d4fe2d5dbd0040708edd52771b":[6,0,4,2,2], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#ga9f129fcad4730fbd1048ad4fa262f36a":[6,0,4,2,4], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gaa0b2994f1a866c19e0d11e6e0d44f543":[6,0,4,2,3], +"group___c_m_s_i_s___r_t_o_s___pool_mgmt.html#gadd84b683001de327894851b428587caa":[6,0,4,2,0], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html":[6,0,4,5], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga03761ee8d2c3cd4544e18364ab301dac":[6,0,4,5,1], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga7da4c7bfb340779c9fc7b321f5ab3e3a":[6,0,4,5,0], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga97381e8e55cd47cec390bf57c96d6edb":[6,0,4,5,3], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#ga9e66fe361749071e5ab87826c43c2f1b":[6,0,4,5,2], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gab108914997c49e14d8ff1ae0d1988ca0":[6,0,4,5,5], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595":[6,0,4,5,4], +"group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gacc15b0fc8ce1167fe43da33042e62098":[6,0,4,5,6], +"group___c_m_s_i_s___r_t_o_s___signal_mgmt.html":[6,0,4,0], +"group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga01edde265710d883b6e237d34a6ef4a6":[6,0,4,0,0], +"group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga38860acda96df47da6923348d96fc4c9":[6,0,4,0,3], +"group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga3de2730654589d6c3559c4b9e2825553":[6,0,4,0,2], +"group___c_m_s_i_s___r_t_o_s___signal_mgmt.html#ga87283a6ebc31ce9ed42baf3ea7e4eab6":[6,0,4,0,1], +"group___c_m_s_i_s___r_t_o_s___status.html":[6,0,6], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99e":[6,0,6,0], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea15b12e42b42b53f35fb8a2724ad02926":[6,0,6,0,3], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea21635bdc492d3094fe83027fa4a30e2f":[6,0,6,0,8], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea314d24a49003f09459035db0dd7c9467":[6,0,6,0,7], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea4672c8a0c0f6bb1d7981da4602e8e9ee":[6,0,6,0,12], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5df7e9643aa8a2f5f3a6f6ec59758518":[6,0,6,0,1], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea5fde24ff588ec5ab9cb8314bade26fbc":[6,0,6,0,13], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea78f477732375c0e1fca814e369618177":[6,0,6,0,4], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea8fc5801e8b0482bdf22ad63a77f0155d":[6,0,6,0,6], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ea9e1c9e2550bb4de8969a935acffc968f":[6,0,6,0,0], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eab7dda0ef504817659334cbfd650ae56f":[6,0,6,0,10], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac24adca6a5d072c9f01c32178ba0d109":[6,0,6,0,5], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eac7a77f5fe18a15a357790c36a4aca1b1":[6,0,6,0,14], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99ead604f3673359dd4ac643b16dc5a2c342":[6,0,6,0,2], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf1fac0240218e51eb30a13da2f8aae81":[6,0,6,0,11], +"group___c_m_s_i_s___r_t_o_s___status.html#gae2e091fefc4c767117727bd5aba4d99eaf6552310a817452aedfcd453f2805d65":[6,0,6,0,9], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html":[6,0,1], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga0dfb90ccf1f6e4b54b9251b12d1cbc8b":[6,0,1,6], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga4299d838978bc2aae5e4350754e6a4e9":[6,0,1,5], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a":[6,0,1,2], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa1485dec3702434a1ec3cb74c7a17a4af":[6,0,1,2,6], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa17b36cd9cd38652c2bc6d4803990674b":[6,0,1,2,4], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa193b650117c209b4a203954542bcc3e6":[6,0,1,2,2], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa45a2895ad30c79fb97de18cac7cc19f1":[6,0,1,2,3], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa549e79a43ff4f8b2b31afb613f5caa81":[6,0,1,2,0], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa61cb822239ac8f66dfbdc7291598a3d4":[6,0,1,2,1], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aa914433934143a9ba767e59577c56e6c2":[6,0,1,2,5], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849aae35f5e2f9c64ad346822521b643bdea4":[6,0,1,2,7], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gab1df2a28925862ef8f9cf4e1c995c5a7":[6,0,1,4], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gac59b5713cb083702dce759c73fd90dff":[6,0,1,3], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaea135bb90eb853eff39e0800b91bbeab":[6,0,1,7], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaee93d929beb350f16e5cc7fa602e229f":[6,0,1,1], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf0c7c6b5e09f8be198312144b5c9e453":[6,0,1,0], +"group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233":[6,0,1,8], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html":[6,0,3], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1b8d670eaf964b2910fa06885e650678":[6,0,3,0], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga1c720627e08d1cc1afcad44e799ed492":[6,0,3,1], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca":[6,0,3,5], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga58f36b121a812936435cacc6e1e0e091":[6,0,3,6], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf":[6,0,3,4], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9":[6,0,3,2], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ab9c91f9699162edb09bb7c90c11c8788":[6,0,3,2,1], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gadac860eb9e1b4b0619271e6595ed83d9ad21712f8df5f97069c82dc9eec37b951":[6,0,3,2,0], +"group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6":[6,0,3,3], +"group___c_m_s_i_s___r_t_o_s___wait.html":[6,0,2], +"group___c_m_s_i_s___r_t_o_s___wait.html#ga02e19d5e723bfb06ba9324d625162255":[6,0,2,1], +"group___c_m_s_i_s___r_t_o_s___wait.html#ga6c97d38879ae86491628f6e647639bad":[6,0,2,0], +"group___c_m_s_i_s___r_t_o_s___wait.html#ga8470c8aaedfde524a44e22e5b2328285":[6,0,2,2], +"index.html":[], +"index.html":[0], +"modules.html":[6], +"pages.html":[], +"rtos_revision_history.html":[1], +"structos_mail_q_def__t.html":[7,0], +"structos_mail_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c":[7,0,1], +"structos_mail_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f":[7,0,0], +"structos_mail_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0":[7,0,2], +"structos_message_q_def__t.html":[7,1], +"structos_message_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c":[7,1,1], +"structos_message_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f":[7,1,0], +"structos_message_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0":[7,1,2], +"structos_mutex_def__t.html":[7,2], +"structos_mutex_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca":[7,2,0], +"structos_pool_def__t.html":[7,3], +"structos_pool_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c":[7,3,1], +"structos_pool_def__t.html#a4c2a0c691de3365c00ecd22d8102811f":[7,3,0], +"structos_pool_def__t.html#ac112e786b2a234e0e45cb5bdbee53763":[7,3,2], +"structos_semaphore_def__t.html":[7,4], +"structos_semaphore_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca":[7,4,0], +"structos_thread_def__t.html":[7,5], +"structos_thread_def__t.html#a15da8f23c6fe684b70a73646ada685e7":[7,5,3], +"structos_thread_def__t.html#a950b7f81ad4711959517296e63bc79d1":[7,5,2], +"structos_thread_def__t.html#aa4c4115851a098c0b87358ab6c025603":[7,5,0], +"structos_thread_def__t.html#ad3c9624ee214329fb34e71f544a6933e":[7,5,1], +"structos_timer_def__t.html":[7,6], +"structos_timer_def__t.html#a15773df83aba93f8e61f3737af5fae47":[7,6,0] +}; diff --git a/Documentation/RTOS/html/open.png b/Documentation/RTOS/html/open.png Binary files differnew file mode 100644 index 0000000..30f75c7 --- /dev/null +++ b/Documentation/RTOS/html/open.png diff --git a/Documentation/RTOS/html/pages.html b/Documentation/RTOS/html/pages.html new file mode 100644 index 0000000..262a6ad --- /dev/null +++ b/Documentation/RTOS/html/pages.html @@ -0,0 +1,99 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Usage and Description</title> +<title>CMSIS-RTOS: Usage and Description</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('pages.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Usage and Description</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="rtos_revision_history.html" target="_self">Revision History</a></td><td class="desc"></td></tr> +<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="_using_o_s.html" target="_self">Using a CMSIS-RTOS Implementation</a></td><td class="desc"></td></tr> +<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="_function_overview.html" target="_self">Function Overview</a></td><td class="desc"></td></tr> +<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="cmsis_os_h.html" target="_self">Header File Template: cmsis_os.h</a></td><td class="desc"></td></tr> +<tr id="row_4_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="_rtos_validation.html" target="_self">RTOS Validation</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:44 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/printComponentTabs.js b/Documentation/RTOS/html/printComponentTabs.js new file mode 100644 index 0000000..64d846b --- /dev/null +++ b/Documentation/RTOS/html/printComponentTabs.js @@ -0,0 +1,36 @@ +var strgURL = location.pathname; // path of current component + +// constuctor for the array of objects +function tabElement(id, folderName, tabTxt ) { + this.id = id; // elementID as needed in html; + this.folderName = folderName; // folder name of the component + this.tabTxt = tabTxt; // Text displayed as menu on the web + this.currentListItem = '<li id="' + this.id + '" class="current"> <a href="../..' + this.folderName + 'index.html"><span>' + this.tabTxt + '</span></a></li>'; + this.listItem = '<li id="' + this.id + '"> <a href="../..' + this.folderName + 'index.html"><span>' + this.tabTxt + '</span></a></li>'; +}; + +// array of objects +var arr = []; + +// fill array + arr.push( new tabElement( "GEN", "/General/html/", "General") ); + arr.push( new tabElement( "CORE", "/Core/html/", "Core") ); + arr.push( new tabElement( "DRV", "/Driver/html/", "Driver") ); + arr.push( new tabElement( "DSP", "/DSP/html/", "DSP") ); + arr.push( new tabElement( "RTOS", "/RTOS/html/", "RTOS API") ); + arr.push( new tabElement( "RTX", "/RTX/html/", "RTX") ); + arr.push( new tabElement( "PACK", "/Pack/html/", "Pack") ); + arr.push( new tabElement( "SVD", "/SVD/html/", "SVD") ); + arr.push( new tabElement( "DAP", "/DAP/html/", "DAP") ); + +// write tabs +// called from the header file. +function writeComponentTabs() { + for ( var i=0; i < arr.length; i++ ) { + if (strgURL.search(arr[i].folderName) > 0) { // if this is the current folder + document.write(arr[i].currentListItem); // then print and hightlight the tab + } else { + document.write(arr[i].listItem); // else, print the tab + } + } +}; diff --git a/Documentation/RTOS/html/resize.js b/Documentation/RTOS/html/resize.js new file mode 100644 index 0000000..9fe82ba --- /dev/null +++ b/Documentation/RTOS/html/resize.js @@ -0,0 +1,93 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).width(); + content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.height(); + var footerHeight = footer.height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + }); +} + + diff --git a/Documentation/RTOS/html/rtos_revision_history.html b/Documentation/RTOS/html/rtos_revision_history.html new file mode 100644 index 0000000..e4da280 --- /dev/null +++ b/Documentation/RTOS/html/rtos_revision_history.html @@ -0,0 +1,114 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>Revision History</title> +<title>CMSIS-RTOS: Revision History</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('rtos_revision_history.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">Revision History </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><table class="cmtable" summary="Revision History"> +<tr> +<th>Version </th><th>Description </th></tr> +<tr> +<td>V1.02 - only documentation changes </td><td>Added: Overview of the <a class="el" href="_rtos_validation.html">CMSIS-RTOS Validation</a> Software Pack.<br/> + Clarified: Behaviour of <a class="el" href="_function_overview.html#CMSIS_RTOS_TimeOutValue">Timout Value</a>. </td></tr> +<tr> +<td>V1.02 </td><td>Added: New control functions for short timeouts in microsecond resolution <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gad0262e4688e95d1e9038afd9bcc16001">osKernelSysTick</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga9e0954d52722673e2031233a2ab99960">osKernelSysTickFrequency</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gae12c190af42d7310d8006d64f4ed5a88">osKernelSysTickMicroSec</a>.<br/> + Removed: osSignalGet. </td></tr> +<tr> +<td>V1.01 </td><td>Added capabilities for C++, kernel initialization and object deletion.<br/> + Prepared for C++ class interface. In this context to <em>const</em> attribute has been moved from osXxxxDef_t typedefs to the osXxxxDef macros.<br/> + Added: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga746b8043d906849bd65e3900fcb483cf">osTimerDelete</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___mutex_mgmt.html#gac27e24135185d51d18f3dabc20910219">osMutexDelete</a>, <a class="el" href="group___c_m_s_i_s___r_t_o_s___semaphore_mgmt.html#gabae2801ac2c096f6e8c69a264908f595">osSemaphoreDelete</a>.<br/> + Added: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#ga53d078a801022e202e8115c083ece68e">osKernelInitialize</a> that prepares the Kernel for object creation.<br/> + </td></tr> +<tr> +<td>V1.00 </td><td>First official Release.<br/> + Added: <a class="el" href="group___c_m_s_i_s___r_t_o_s___kernel_ctrl.html#gaab668ffd2ea76bb0a77ab0ab385eaef2">osKernelStart</a>; starting 'main' as a thread is now an optional feature.<br/> + Semaphores have now the standard behavior.<br/> + <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#gaedd312bfdca04e0b8162b666e09a1ae6">osTimerCreate</a> does no longer start the timer. Added: <a class="el" href="group___c_m_s_i_s___r_t_o_s___timer_mgmt.html#ga27a797a401b068e2644d1125f22a07ca">osTimerStart</a> (replaces osTimerRestart).<br/> + Changed: osThreadPass is renamed to <a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#gaf13a667493c5d629a90c13e113b99233">osThreadYield</a>. </td></tr> +<tr> +<td>V0.02 </td><td>Preview Release. </td></tr> +</table> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/simple_signal.png b/Documentation/RTOS/html/simple_signal.png Binary files differnew file mode 100644 index 0000000..a0305e4 --- /dev/null +++ b/Documentation/RTOS/html/simple_signal.png diff --git a/Documentation/RTOS/html/structos_mail_q_def__t.html b/Documentation/RTOS/html/structos_mail_q_def__t.html new file mode 100644 index 0000000..74a2055 --- /dev/null +++ b/Documentation/RTOS/html/structos_mail_q_def__t.html @@ -0,0 +1,155 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>osMailQDef_t Struct Reference</title> +<title>CMSIS-RTOS: osMailQDef_t Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('structos_mail_q_def__t.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">osMailQDef_t Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Definition structure for mail queue. + <a href="structos_mail_q_def__t.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:a8a83a3a8c0aa8057b13807d2a54077e0"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_mail_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0">queue_sz</a></td></tr> +<tr class="memdesc:a8a83a3a8c0aa8057b13807d2a54077e0"><td class="mdescLeft"> </td><td class="mdescRight">number of elements in the queue <a href="#a8a83a3a8c0aa8057b13807d2a54077e0"></a><br/></td></tr> +<tr class="separator:a8a83a3a8c0aa8057b13807d2a54077e0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c2a0c691de3365c00ecd22d8102811f"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_mail_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">item_sz</a></td></tr> +<tr class="memdesc:a4c2a0c691de3365c00ecd22d8102811f"><td class="mdescLeft"> </td><td class="mdescRight">size of an item <a href="#a4c2a0c691de3365c00ecd22d8102811f"></a><br/></td></tr> +<tr class="separator:a4c2a0c691de3365c00ecd22d8102811f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a269c3935f8bc66db70bccdd02cb05e3c"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_mail_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">pool</a></td></tr> +<tr class="memdesc:a269c3935f8bc66db70bccdd02cb05e3c"><td class="mdescLeft"> </td><td class="mdescRight">memory array for mail <a href="#a269c3935f8bc66db70bccdd02cb05e3c"></a><br/></td></tr> +<tr class="separator:a269c3935f8bc66db70bccdd02cb05e3c"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mailQ_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="a4c2a0c691de3365c00ecd22d8102811f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t item_sz</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a269c3935f8bc66db70bccdd02cb05e3c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void* pool</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a8a83a3a8c0aa8057b13807d2a54077e0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t queue_sz</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="structos_mail_q_def__t.html">osMailQDef_t</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/structos_mail_q_def__t.js b/Documentation/RTOS/html/structos_mail_q_def__t.js new file mode 100644 index 0000000..dc34d7b --- /dev/null +++ b/Documentation/RTOS/html/structos_mail_q_def__t.js @@ -0,0 +1,6 @@ +var structos_mail_q_def__t = +[ + [ "item_sz", "structos_mail_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f", null ], + [ "pool", "structos_mail_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c", null ], + [ "queue_sz", "structos_mail_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/structos_message_q_def__t.html b/Documentation/RTOS/html/structos_message_q_def__t.html new file mode 100644 index 0000000..9a6233a --- /dev/null +++ b/Documentation/RTOS/html/structos_message_q_def__t.html @@ -0,0 +1,155 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>osMessageQDef_t Struct Reference</title> +<title>CMSIS-RTOS: osMessageQDef_t Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('structos_message_q_def__t.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">osMessageQDef_t Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Definition structure for message queue. + <a href="structos_message_q_def__t.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:a8a83a3a8c0aa8057b13807d2a54077e0"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_message_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0">queue_sz</a></td></tr> +<tr class="memdesc:a8a83a3a8c0aa8057b13807d2a54077e0"><td class="mdescLeft"> </td><td class="mdescRight">number of elements in the queue <a href="#a8a83a3a8c0aa8057b13807d2a54077e0"></a><br/></td></tr> +<tr class="separator:a8a83a3a8c0aa8057b13807d2a54077e0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c2a0c691de3365c00ecd22d8102811f"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_message_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">item_sz</a></td></tr> +<tr class="memdesc:a4c2a0c691de3365c00ecd22d8102811f"><td class="mdescLeft"> </td><td class="mdescRight">size of an item <a href="#a4c2a0c691de3365c00ecd22d8102811f"></a><br/></td></tr> +<tr class="separator:a4c2a0c691de3365c00ecd22d8102811f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a269c3935f8bc66db70bccdd02cb05e3c"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_message_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">pool</a></td></tr> +<tr class="memdesc:a269c3935f8bc66db70bccdd02cb05e3c"><td class="mdescLeft"> </td><td class="mdescRight">memory array for messages <a href="#a269c3935f8bc66db70bccdd02cb05e3c"></a><br/></td></tr> +<tr class="separator:a269c3935f8bc66db70bccdd02cb05e3c"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_messageQ_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="a4c2a0c691de3365c00ecd22d8102811f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t item_sz</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a269c3935f8bc66db70bccdd02cb05e3c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void* pool</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a8a83a3a8c0aa8057b13807d2a54077e0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t queue_sz</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="structos_message_q_def__t.html">osMessageQDef_t</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/structos_message_q_def__t.js b/Documentation/RTOS/html/structos_message_q_def__t.js new file mode 100644 index 0000000..74afca4 --- /dev/null +++ b/Documentation/RTOS/html/structos_message_q_def__t.js @@ -0,0 +1,6 @@ +var structos_message_q_def__t = +[ + [ "item_sz", "structos_message_q_def__t.html#a4c2a0c691de3365c00ecd22d8102811f", null ], + [ "pool", "structos_message_q_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c", null ], + [ "queue_sz", "structos_message_q_def__t.html#a8a83a3a8c0aa8057b13807d2a54077e0", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/structos_mutex_def__t.html b/Documentation/RTOS/html/structos_mutex_def__t.html new file mode 100644 index 0000000..6bfea98 --- /dev/null +++ b/Documentation/RTOS/html/structos_mutex_def__t.html @@ -0,0 +1,125 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>osMutexDef_t Struct Reference</title> +<title>CMSIS-RTOS: osMutexDef_t Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('structos_mutex_def__t.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">osMutexDef_t Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Mutex Definition structure contains setup information for a mutex. + <a href="structos_mutex_def__t.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:a44b7a3baf02bac7ad707e8f2f5eca1ca"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_mutex_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">dummy</a></td></tr> +<tr class="memdesc:a44b7a3baf02bac7ad707e8f2f5eca1ca"><td class="mdescLeft"> </td><td class="mdescRight">dummy value. <a href="#a44b7a3baf02bac7ad707e8f2f5eca1ca"></a><br/></td></tr> +<tr class="separator:a44b7a3baf02bac7ad707e8f2f5eca1ca"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_mutex_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="a44b7a3baf02bac7ad707e8f2f5eca1ca"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t dummy</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="structos_mutex_def__t.html">osMutexDef_t</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/structos_mutex_def__t.js b/Documentation/RTOS/html/structos_mutex_def__t.js new file mode 100644 index 0000000..61bec26 --- /dev/null +++ b/Documentation/RTOS/html/structos_mutex_def__t.js @@ -0,0 +1,4 @@ +var structos_mutex_def__t = +[ + [ "dummy", "structos_mutex_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/structos_pool_def__t.html b/Documentation/RTOS/html/structos_pool_def__t.html new file mode 100644 index 0000000..027ac34 --- /dev/null +++ b/Documentation/RTOS/html/structos_pool_def__t.html @@ -0,0 +1,155 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>osPoolDef_t Struct Reference</title> +<title>CMSIS-RTOS: osPoolDef_t Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('structos_pool_def__t.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">osPoolDef_t Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Definition structure for memory block allocation. + <a href="structos_pool_def__t.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:ac112e786b2a234e0e45cb5bdbee53763"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_pool_def__t.html#ac112e786b2a234e0e45cb5bdbee53763">pool_sz</a></td></tr> +<tr class="memdesc:ac112e786b2a234e0e45cb5bdbee53763"><td class="mdescLeft"> </td><td class="mdescRight">number of items (elements) in the pool <a href="#ac112e786b2a234e0e45cb5bdbee53763"></a><br/></td></tr> +<tr class="separator:ac112e786b2a234e0e45cb5bdbee53763"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c2a0c691de3365c00ecd22d8102811f"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_pool_def__t.html#a4c2a0c691de3365c00ecd22d8102811f">item_sz</a></td></tr> +<tr class="memdesc:a4c2a0c691de3365c00ecd22d8102811f"><td class="mdescLeft"> </td><td class="mdescRight">size of an item <a href="#a4c2a0c691de3365c00ecd22d8102811f"></a><br/></td></tr> +<tr class="separator:a4c2a0c691de3365c00ecd22d8102811f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a269c3935f8bc66db70bccdd02cb05e3c"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_pool_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c">pool</a></td></tr> +<tr class="memdesc:a269c3935f8bc66db70bccdd02cb05e3c"><td class="mdescLeft"> </td><td class="mdescRight">pointer to memory for pool <a href="#a269c3935f8bc66db70bccdd02cb05e3c"></a><br/></td></tr> +<tr class="separator:a269c3935f8bc66db70bccdd02cb05e3c"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_pool_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="a4c2a0c691de3365c00ecd22d8102811f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t item_sz</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a269c3935f8bc66db70bccdd02cb05e3c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void* pool</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ac112e786b2a234e0e45cb5bdbee53763"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t pool_sz</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="structos_pool_def__t.html">osPoolDef_t</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/structos_pool_def__t.js b/Documentation/RTOS/html/structos_pool_def__t.js new file mode 100644 index 0000000..c5f4af2 --- /dev/null +++ b/Documentation/RTOS/html/structos_pool_def__t.js @@ -0,0 +1,6 @@ +var structos_pool_def__t = +[ + [ "item_sz", "structos_pool_def__t.html#a4c2a0c691de3365c00ecd22d8102811f", null ], + [ "pool", "structos_pool_def__t.html#a269c3935f8bc66db70bccdd02cb05e3c", null ], + [ "pool_sz", "structos_pool_def__t.html#ac112e786b2a234e0e45cb5bdbee53763", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/structos_semaphore_def__t.html b/Documentation/RTOS/html/structos_semaphore_def__t.html new file mode 100644 index 0000000..1587924 --- /dev/null +++ b/Documentation/RTOS/html/structos_semaphore_def__t.html @@ -0,0 +1,125 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>osSemaphoreDef_t Struct Reference</title> +<title>CMSIS-RTOS: osSemaphoreDef_t Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('structos_semaphore_def__t.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">osSemaphoreDef_t Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Semaphore Definition structure contains setup information for a semaphore. + <a href="structos_semaphore_def__t.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:a44b7a3baf02bac7ad707e8f2f5eca1ca"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_semaphore_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca">dummy</a></td></tr> +<tr class="memdesc:a44b7a3baf02bac7ad707e8f2f5eca1ca"><td class="mdescLeft"> </td><td class="mdescRight">dummy value. <a href="#a44b7a3baf02bac7ad707e8f2f5eca1ca"></a><br/></td></tr> +<tr class="separator:a44b7a3baf02bac7ad707e8f2f5eca1ca"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_semaphore_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="a44b7a3baf02bac7ad707e8f2f5eca1ca"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t dummy</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="structos_semaphore_def__t.html">osSemaphoreDef_t</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/structos_semaphore_def__t.js b/Documentation/RTOS/html/structos_semaphore_def__t.js new file mode 100644 index 0000000..9e62fa3 --- /dev/null +++ b/Documentation/RTOS/html/structos_semaphore_def__t.js @@ -0,0 +1,4 @@ +var structos_semaphore_def__t = +[ + [ "dummy", "structos_semaphore_def__t.html#a44b7a3baf02bac7ad707e8f2f5eca1ca", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/structos_thread_def__t.html b/Documentation/RTOS/html/structos_thread_def__t.html new file mode 100644 index 0000000..f5ffa10 --- /dev/null +++ b/Documentation/RTOS/html/structos_thread_def__t.html @@ -0,0 +1,170 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>osThreadDef_t Struct Reference</title> +<title>CMSIS-RTOS: osThreadDef_t Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('structos_thread_def__t.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">osThreadDef_t Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Thread Definition structure contains startup information of a thread. + <a href="structos_thread_def__t.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:ad3c9624ee214329fb34e71f544a6933e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">os_pthread</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_thread_def__t.html#ad3c9624ee214329fb34e71f544a6933e">pthread</a></td></tr> +<tr class="memdesc:ad3c9624ee214329fb34e71f544a6933e"><td class="mdescLeft"> </td><td class="mdescRight">start address of thread function <a href="#ad3c9624ee214329fb34e71f544a6933e"></a><br/></td></tr> +<tr class="separator:ad3c9624ee214329fb34e71f544a6933e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a15da8f23c6fe684b70a73646ada685e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_thread_def__t.html#a15da8f23c6fe684b70a73646ada685e7">tpriority</a></td></tr> +<tr class="memdesc:a15da8f23c6fe684b70a73646ada685e7"><td class="mdescLeft"> </td><td class="mdescRight">initial thread priority <a href="#a15da8f23c6fe684b70a73646ada685e7"></a><br/></td></tr> +<tr class="separator:a15da8f23c6fe684b70a73646ada685e7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa4c4115851a098c0b87358ab6c025603"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_thread_def__t.html#aa4c4115851a098c0b87358ab6c025603">instances</a></td></tr> +<tr class="memdesc:aa4c4115851a098c0b87358ab6c025603"><td class="mdescLeft"> </td><td class="mdescRight">maximum number of instances of that thread function <a href="#aa4c4115851a098c0b87358ab6c025603"></a><br/></td></tr> +<tr class="separator:aa4c4115851a098c0b87358ab6c025603"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a950b7f81ad4711959517296e63bc79d1"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_thread_def__t.html#a950b7f81ad4711959517296e63bc79d1">stacksize</a></td></tr> +<tr class="memdesc:a950b7f81ad4711959517296e63bc79d1"><td class="mdescLeft"> </td><td class="mdescRight">stack size requirements in bytes; 0 is default stack size <a href="#a950b7f81ad4711959517296e63bc79d1"></a><br/></td></tr> +<tr class="separator:a950b7f81ad4711959517296e63bc79d1"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_thread_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="aa4c4115851a098c0b87358ab6c025603"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t instances</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="ad3c9624ee214329fb34e71f544a6933e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#aee631e5ea1b700fc35695cc7bc574cf7">os_pthread</a> pthread</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a950b7f81ad4711959517296e63bc79d1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t stacksize</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a15da8f23c6fe684b70a73646ada685e7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a">osPriority</a> tpriority</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="structos_thread_def__t.html">osThreadDef_t</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/structos_thread_def__t.js b/Documentation/RTOS/html/structos_thread_def__t.js new file mode 100644 index 0000000..33b1207 --- /dev/null +++ b/Documentation/RTOS/html/structos_thread_def__t.js @@ -0,0 +1,7 @@ +var structos_thread_def__t = +[ + [ "instances", "structos_thread_def__t.html#aa4c4115851a098c0b87358ab6c025603", null ], + [ "pthread", "structos_thread_def__t.html#ad3c9624ee214329fb34e71f544a6933e", null ], + [ "stacksize", "structos_thread_def__t.html#a950b7f81ad4711959517296e63bc79d1", null ], + [ "tpriority", "structos_thread_def__t.html#a15da8f23c6fe684b70a73646ada685e7", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/structos_timer_def__t.html b/Documentation/RTOS/html/structos_timer_def__t.html new file mode 100644 index 0000000..521ed3b --- /dev/null +++ b/Documentation/RTOS/html/structos_timer_def__t.html @@ -0,0 +1,125 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>osTimerDef_t Struct Reference</title> +<title>CMSIS-RTOS: osTimerDef_t Struct Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="cmsis.css" rel="stylesheet" type="text/css" /> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<script type="text/javascript" src="printComponentTabs.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="stylsheetf" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 46px;"> + <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">CMSIS-RTOS +  <span id="projectnumber">Version 1.02</span> + </div> + <div id="projectbrief">CMSIS-RTOS API: Generic RTOS interface for Cortex-M processor-based devices.</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<div id="CMSISnav" class="tabs1"> + <ul class="tablist"> + <script type="text/javascript"> + <!-- + writeComponentTabs.call(this); + //--> + </script> + </ul> +</div> +<!-- Generated by Doxygen 1.8.2 --> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Usage and Description</span></a></li> + <li><a href="modules.html"><span>Reference</span></a></li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('structos_timer_def__t.html','');}); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#pub-attribs">Data Fields</a> </div> + <div class="headertitle"> +<div class="title">osTimerDef_t Struct Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p>Timer Definition structure contains timer parameters. + <a href="structos_timer_def__t.html#details">More...</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> +Data Fields</h2></td></tr> +<tr class="memitem:a15773df83aba93f8e61f3737af5fae47"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">os_ptimer</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structos_timer_def__t.html#a15773df83aba93f8e61f3737af5fae47">ptimer</a></td></tr> +<tr class="memdesc:a15773df83aba93f8e61f3737af5fae47"><td class="mdescLeft"> </td><td class="mdescRight">start address of a timer function <a href="#a15773df83aba93f8e61f3737af5fae47"></a><br/></td></tr> +<tr class="separator:a15773df83aba93f8e61f3737af5fae47"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Description</h2> +<div class="textblock"><dl class="section note"><dt>Note</dt><dd>CAN BE CHANGED: <b>os_timer_def</b> is implementation specific in every CMSIS-RTOS. </dd></dl> +</div><h2 class="groupheader">Field Documentation</h2> +<a class="anchor" id="a15773df83aba93f8e61f3737af5fae47"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="cmsis__os_8h.html#aa2d85e49bde9f6951ff3545cd323f065">os_ptimer</a> ptimer</td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="structos_timer_def__t.html">osTimerDef_t</a></li> + <li class="footer">Generated on Tue Oct 27 2015 14:35:43 for CMSIS-RTOS by ARM Ltd. All rights reserved. + <!-- + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 + --> + </li> + </ul> +</div> +</body> +</html> diff --git a/Documentation/RTOS/html/structos_timer_def__t.js b/Documentation/RTOS/html/structos_timer_def__t.js new file mode 100644 index 0000000..bb76347 --- /dev/null +++ b/Documentation/RTOS/html/structos_timer_def__t.js @@ -0,0 +1,4 @@ +var structos_timer_def__t = +[ + [ "ptimer", "structos_timer_def__t.html#a15773df83aba93f8e61f3737af5fae47", null ] +];
\ No newline at end of file diff --git a/Documentation/RTOS/html/sync_off.png b/Documentation/RTOS/html/sync_off.png Binary files differnew file mode 100644 index 0000000..3b443fc --- /dev/null +++ b/Documentation/RTOS/html/sync_off.png diff --git a/Documentation/RTOS/html/sync_on.png b/Documentation/RTOS/html/sync_on.png Binary files differnew file mode 100644 index 0000000..e08320f --- /dev/null +++ b/Documentation/RTOS/html/sync_on.png diff --git a/Documentation/RTOS/html/tab_a.png b/Documentation/RTOS/html/tab_a.png Binary files differnew file mode 100644 index 0000000..3b725c4 --- /dev/null +++ b/Documentation/RTOS/html/tab_a.png diff --git a/Documentation/RTOS/html/tab_b.png b/Documentation/RTOS/html/tab_b.png Binary files differnew file mode 100644 index 0000000..5f6601a --- /dev/null +++ b/Documentation/RTOS/html/tab_b.png diff --git a/Documentation/RTOS/html/tab_h.png b/Documentation/RTOS/html/tab_h.png Binary files differnew file mode 100644 index 0000000..fd5cb70 --- /dev/null +++ b/Documentation/RTOS/html/tab_h.png diff --git a/Documentation/RTOS/html/tab_s.png b/Documentation/RTOS/html/tab_s.png Binary files differnew file mode 100644 index 0000000..ab478c9 --- /dev/null +++ b/Documentation/RTOS/html/tab_s.png diff --git a/Documentation/RTOS/html/tab_topnav.png b/Documentation/RTOS/html/tab_topnav.png Binary files differnew file mode 100644 index 0000000..b257b77 --- /dev/null +++ b/Documentation/RTOS/html/tab_topnav.png diff --git a/Documentation/RTOS/html/tabs.css b/Documentation/RTOS/html/tabs.css new file mode 100644 index 0000000..ffbab50 --- /dev/null +++ b/Documentation/RTOS/html/tabs.css @@ -0,0 +1,71 @@ +.tabs, .tabs1, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 10px; +} + +.tabs1 { + background-image: url('tab_topnav.png'); + font-size: 12px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; + line-height: 24px; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + list-style: none; +} + +.tabs1 .tablist li { + float: left; + display: table-cell; + background-image: url('tab_topnav.png'); + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} |