MCB1700_Welcome/Doxygen/html/croutine_8h_source.html

285 lines
43 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Labor04: croutine.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" 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: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Labor04
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></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">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('croutine_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">croutine.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="croutine_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * FreeRTOS Kernel V10.0.0</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person obtaining a copy of</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * this software and associated documentation files (the &quot;Software&quot;), to deal in</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * the Software without restriction, including without limitation the rights to</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * the Software, and to permit persons to whom the Software is furnished to do so,</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * subject to the following conditions:</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be included in all</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * copies or substantial portions of the Software. If you wish to use our Amazon</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * FreeRTOS name, please do so in a fair use way that does not cause confusion.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * http://www.FreeRTOS.org</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * http://aws.amazon.com/freertos</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * 1 tab == 4 spaces!</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifndef CO_ROUTINE_H</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#define CO_ROUTINE_H</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#ifndef INC_FREERTOS_H</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#error &quot;include FreeRTOS.h must appear in source files before include croutine.h&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="list_8h.html">list.h</a>&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">/* Used to hide the implementation of the co-routine control block. The</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">control block structure however has to be included in the header due to</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">the macro implementation of the co-routine functionality. */</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="croutine_8h.html#a33b9d058688c92258155b5756d9936dd"> 45</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">void</span> * <a class="code" href="croutine_8h.html#a33b9d058688c92258155b5756d9936dd">CoRoutineHandle_t</a>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">/* Defines the prototype to which co-routine functions must conform. */</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="croutine_8h.html#a397a7505718dd366d8411ce324c49758"> 48</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="croutine_8h.html#a397a7505718dd366d8411ce324c49758">crCOROUTINE_CODE</a>)( <a class="code" href="croutine_8h.html#a33b9d058688c92258155b5756d9936dd">CoRoutineHandle_t</a>, <a class="code" href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a> );</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structcor_co_routine_control_block.html"> 50</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcor_co_routine_control_block.html">corCoRoutineControlBlock</a></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structcor_co_routine_control_block.html#aa842d81ed7b4c345cf52cde20c5b22e5"> 52</a></span>&#160; <a class="code" href="croutine_8h.html#a397a7505718dd366d8411ce324c49758">crCOROUTINE_CODE</a> <a class="code" href="structcor_co_routine_control_block.html#aa842d81ed7b4c345cf52cde20c5b22e5">pxCoRoutineFunction</a>;</div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structcor_co_routine_control_block.html#ad91115e6e382ba8961310c4559abc7d2"> 53</a></span>&#160; <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a> <a class="code" href="structcor_co_routine_control_block.html#ad91115e6e382ba8961310c4559abc7d2">xGenericListItem</a>; <span class="comment">/*&lt; List item used to place the CRCB in ready and blocked queues. */</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structcor_co_routine_control_block.html#a139605d93d834601f34be927ecba3a15"> 54</a></span>&#160; <a class="code" href="structx_l_i_s_t___i_t_e_m.html">ListItem_t</a> <a class="code" href="structcor_co_routine_control_block.html#a139605d93d834601f34be927ecba3a15">xEventListItem</a>; <span class="comment">/*&lt; List item used to place the CRCB in event lists. */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="structcor_co_routine_control_block.html#a0befed3dd0fe55b4314158f4814f50ae"> 55</a></span>&#160; <a class="code" href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a> <a class="code" href="structcor_co_routine_control_block.html#a0befed3dd0fe55b4314158f4814f50ae">uxPriority</a>; <span class="comment">/*&lt; The priority of the co-routine in relation to other co-routines. */</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="structcor_co_routine_control_block.html#a0a9f1b8d3c0676d256f119fdc5fddfb5"> 56</a></span>&#160; <a class="code" href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a> <a class="code" href="structcor_co_routine_control_block.html#a0a9f1b8d3c0676d256f119fdc5fddfb5">uxIndex</a>; <span class="comment">/*&lt; Used to distinguish between co-routines when multiple co-routines use the same co-routine function. */</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structcor_co_routine_control_block.html#a40a191332ff98e1969a821b870f59531"> 57</a></span>&#160; uint16_t <a class="code" href="structcor_co_routine_control_block.html#a40a191332ff98e1969a821b870f59531">uxState</a>; <span class="comment">/*&lt; Used internally by the co-routine implementation. */</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="croutine_8h.html#a1c15f304ffe02d0777ae2509b3658e6f"> 58</a></span>&#160;} <a class="code" href="croutine_8h.html#a1c15f304ffe02d0777ae2509b3658e6f">CRCB_t</a>; <span class="comment">/* Co-routine control block. Note must be identical in size down to uxPriority with TCB_t. */</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="croutine_8h.html#ae0e03637a3d2c134e9b52006f353d8c0"> 132</a></span>&#160;<a class="code" href="portmacro_8h.html#a46fb21e00ae0729d7515c0fbf2269796">BaseType_t</a> <a class="code" href="croutine_8h.html#ae0e03637a3d2c134e9b52006f353d8c0">xCoRoutineCreate</a>( <a class="code" href="croutine_8h.html#a397a7505718dd366d8411ce324c49758">crCOROUTINE_CODE</a> pxCoRoutineCode, <a class="code" href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a> uxPriority, <a class="code" href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a> uxIndex );</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="croutine_8h.html#a5333c649a2c063006ca3cd7a3b5b9240"> 174</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="croutine_8h.html#a5333c649a2c063006ca3cd7a3b5b9240">vCoRoutineSchedule</a>( <span class="keywordtype">void</span> );</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; </div>
<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="croutine_8h.html#a19a57a201a325e8af1207ed68c4aedde"> 205</a></span>&#160;<span class="preprocessor">#define crSTART( pxCRCB ) switch( ( ( CRCB_t * )( pxCRCB ) )-&gt;uxState ) { case 0:</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="croutine_8h.html#ae6038cc976689b50000475ebfc4e2f23"> 236</a></span>&#160;<span class="preprocessor">#define crEND() }</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * These macros are intended for internal use by the co-routine implementation</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> * only. The macros should not be used directly by application writers.</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="croutine_8h.html#aa8ec8c0192674b896b04df1f82d679f7"> 242</a></span>&#160;<span class="preprocessor">#define crSET_STATE0( xHandle ) ( ( CRCB_t * )( xHandle ) )-&gt;uxState = (__LINE__ * 2); return; case (__LINE__ * 2):</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="croutine_8h.html#a345ffc731dc40152bfb1162453ecc1f7"> 243</a></span>&#160;<span class="preprocessor">#define crSET_STATE1( xHandle ) ( ( CRCB_t * )( xHandle ) )-&gt;uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1):</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="croutine_8h.html#a05a06feb11028f2d1d440ea335f562ba"> 291</a></span>&#160;<span class="preprocessor">#define crDELAY( xHandle, xTicksToDelay ) \</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor"> if( ( xTicksToDelay ) &gt; 0 ) \</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="preprocessor"> vCoRoutineAddToDelayedList( ( xTicksToDelay ), NULL ); \</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="preprocessor"> crSET_STATE0( ( xHandle ) );</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; </div>
<div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="croutine_8h.html#a26af3d36f22a04168eebdf5b08465d6e"> 381</a></span>&#160;<span class="preprocessor">#define crQUEUE_SEND( xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult ) \</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor">{ \</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor"> *( pxResult ) = xQueueCRSend( ( pxQueue) , ( pvItemToQueue) , ( xTicksToWait ) ); \</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"> if( *( pxResult ) == errQUEUE_BLOCKED ) \</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor"> crSET_STATE0( ( xHandle ) ); \</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="preprocessor"> *pxResult = xQueueCRSend( ( pxQueue ), ( pvItemToQueue ), 0 ); \</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor"> if( *pxResult == errQUEUE_YIELD ) \</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor"> crSET_STATE1( ( xHandle ) ); \</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="preprocessor"> *pxResult = pdPASS; \</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor">}</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; </div>
<div class="line"><a name="l00473"></a><span class="lineno"><a class="line" href="croutine_8h.html#a586d57fd9a3e2aa5ae66484ed3be36c9"> 473</a></span>&#160;<span class="preprocessor">#define crQUEUE_RECEIVE( xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult ) \</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="preprocessor">{ \</span></div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor"> *( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), ( xTicksToWait ) ); \</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor"> if( *( pxResult ) == errQUEUE_BLOCKED ) \</span></div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor"> crSET_STATE0( ( xHandle ) ); \</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor"> *( pxResult ) = xQueueCRReceive( ( pxQueue) , ( pvBuffer ), 0 ); \</span></div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="preprocessor"> if( *( pxResult ) == errQUEUE_YIELD ) \</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="preprocessor"> crSET_STATE1( ( xHandle ) ); \</span></div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="preprocessor"> *( pxResult ) = pdPASS; \</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="preprocessor">}</span></div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; </div>
<div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="croutine_8h.html#ac8eb0a81c5cf69de7e4edd73ce44a3be"> 582</a></span>&#160;<span class="preprocessor">#define crQUEUE_SEND_FROM_ISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken ) xQueueCRSendFromISR( ( pxQueue ), ( pvItemToQueue ), ( xCoRoutinePreviouslyWoken ) )</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; </div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; </div>
<div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="croutine_8h.html#a9c0fa977ca69adbddb4811affa2a71f7"> 695</a></span>&#160;<span class="preprocessor">#define crQUEUE_RECEIVE_FROM_ISR( pxQueue, pvBuffer, pxCoRoutineWoken ) xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) )</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; </div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="comment"> * This function is intended for internal use by the co-routine macros only.</span></div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="comment"> * The macro nature of the co-routine implementation requires that the</span></div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="comment"> * prototype appears here. The function should not be used by application</span></div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="comment"> * writers.</span></div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"> * Removes the current co-routine from its ready list and places it in the</span></div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="comment"> * appropriate delayed list.</span></div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00706"></a><span class="lineno"><a class="line" href="croutine_8h.html#a6b5b1c5857d38b79c96636754208e32d"> 706</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="croutine_8h.html#a6b5b1c5857d38b79c96636754208e32d">vCoRoutineAddToDelayedList</a>( <a class="code" href="portmacro_8h.html#aa69c48c6e902ce54f70886e6573c92a9">TickType_t</a> xTicksToDelay, <a class="code" href="structx_l_i_s_t.html">List_t</a> *pxEventList );</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; </div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="comment"> * This function is intended for internal use by the queue implementation only.</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="comment"> * The function should not be used by application writers.</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="comment"> * Removes the highest priority co-routine from the event list and places it in</span></div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="comment"> * the pending ready list.</span></div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"><a class="line" href="croutine_8h.html#af2a96db518b18f5a7e1cd2fdf3c82873"> 715</a></span>&#160;<a class="code" href="portmacro_8h.html#a46fb21e00ae0729d7515c0fbf2269796">BaseType_t</a> <a class="code" href="croutine_8h.html#af2a96db518b18f5a7e1cd2fdf3c82873">xCoRoutineRemoveFromEventList</a>( <span class="keyword">const</span> <a class="code" href="structx_l_i_s_t.html">List_t</a> *pxEventList );</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; </div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;}</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; </div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CO_ROUTINE_H */</span><span class="preprocessor"></span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="alist_8h_html_acc01a08e534b54fe438847ef02e5060a"><div class="ttname"><a href="list_8h.html#acc01a08e534b54fe438847ef02e5060a">listSET_LIST_ITEM_OWNER</a></div><div class="ttdeci">#define listSET_LIST_ITEM_OWNER(pxListItem, pxOwner)</div><div class="ttdef"><b>Definition:</b> list.h:180</div></div>
<div class="ttc" id="acroutine_8h_html"><div class="ttname"><a href="croutine_8h.html">croutine.h</a></div></div>
<div class="ttc" id="atask_8h_html"><div class="ttname"><a href="task_8h.html">task.h</a></div></div>
<div class="ttc" id="astructx_l_i_s_t_html"><div class="ttname"><a href="structx_l_i_s_t.html">xLIST</a></div><div class="ttdef"><b>Definition:</b> list.h:165</div></div>
<div class="ttc" id="acroutine_8h_html_a33b9d058688c92258155b5756d9936dd"><div class="ttname"><a href="croutine_8h.html#a33b9d058688c92258155b5756d9936dd">CoRoutineHandle_t</a></div><div class="ttdeci">void * CoRoutineHandle_t</div><div class="ttdef"><b>Definition:</b> croutine.h:45</div></div>
<div class="ttc" id="alist_8c_html_aa0831d347bba16bfbe524f4faa790b9d"><div class="ttname"><a href="list_8c.html#aa0831d347bba16bfbe524f4faa790b9d">vListInitialise</a></div><div class="ttdeci">void vListInitialise(List_t *const pxList)</div><div class="ttdef"><b>Definition:</b> list.c:38</div></div>
<div class="ttc" id="astructcor_co_routine_control_block_html_a40a191332ff98e1969a821b870f59531"><div class="ttname"><a href="structcor_co_routine_control_block.html#a40a191332ff98e1969a821b870f59531">corCoRoutineControlBlock::uxState</a></div><div class="ttdeci">uint16_t uxState</div><div class="ttdef"><b>Definition:</b> croutine.h:57</div></div>
<div class="ttc" id="a_free_r_t_o_s_config_8h_html_ae8f3fd645e6e78dfeb8a6e874af6195a"><div class="ttname"><a href="_free_r_t_o_s_config_8h.html#ae8f3fd645e6e78dfeb8a6e874af6195a">configMAX_CO_ROUTINE_PRIORITIES</a></div><div class="ttdeci">#define configMAX_CO_ROUTINE_PRIORITIES</div><div class="ttdef"><b>Definition:</b> FreeRTOSConfig.h:21</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html">xLIST_ITEM</a></div><div class="ttdef"><b>Definition:</b> list.h:141</div></div>
<div class="ttc" id="aprojdefs_8h_html_a0b024e12cbca6f5018f5f1a43818b03d"><div class="ttname"><a href="projdefs_8h.html#a0b024e12cbca6f5018f5f1a43818b03d">errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY</a></div><div class="ttdeci">#define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY</div><div class="ttdef"><b>Definition:</b> projdefs.h:54</div></div>
<div class="ttc" id="acroutine_8h_html_a6b5b1c5857d38b79c96636754208e32d"><div class="ttname"><a href="croutine_8h.html#a6b5b1c5857d38b79c96636754208e32d">vCoRoutineAddToDelayedList</a></div><div class="ttdeci">void vCoRoutineAddToDelayedList(TickType_t xTicksToDelay, List_t *pxEventList)</div></div>
<div class="ttc" id="alist_8c_html_a274fdced76bbdd9d8a4c4840ded2920c"><div class="ttname"><a href="list_8c.html#a274fdced76bbdd9d8a4c4840ded2920c">uxListRemove</a></div><div class="ttdeci">UBaseType_t uxListRemove(ListItem_t *const pxItemToRemove)</div><div class="ttdef"><b>Definition:</b> list.c:171</div></div>
<div class="ttc" id="alist_8h_html_a715561302af8cb5b74416b23ce4e999d"><div class="ttname"><a href="list_8h.html#a715561302af8cb5b74416b23ce4e999d">listGET_OWNER_OF_HEAD_ENTRY</a></div><div class="ttdeci">#define listGET_OWNER_OF_HEAD_ENTRY(pxList)</div><div class="ttdef"><b>Definition:</b> list.h:307</div></div>
<div class="ttc" id="aprojdefs_8h_html_a07848d3078849bd32353c69d30a479b3"><div class="ttname"><a href="projdefs_8h.html#a07848d3078849bd32353c69d30a479b3">pdPASS</a></div><div class="ttdeci">#define pdPASS</div><div class="ttdef"><b>Definition:</b> projdefs.h:48</div></div>
<div class="ttc" id="aportmacro_8h_html_aa69c48c6e902ce54f70886e6573c92a9"><div class="ttname"><a href="portmacro_8h.html#aa69c48c6e902ce54f70886e6573c92a9">TickType_t</a></div><div class="ttdeci">uint32_t TickType_t</div><div class="ttdef"><b>Definition:</b> portmacro.h:64</div></div>
<div class="ttc" id="astructx_l_i_s_t___i_t_e_m_html_a0a7b95bc338d7d9df18e10607893d103"><div class="ttname"><a href="structx_l_i_s_t___i_t_e_m.html#a0a7b95bc338d7d9df18e10607893d103">xLIST_ITEM::pvContainer</a></div><div class="ttdeci">void *configLIST_VOLATILE pvContainer</div><div class="ttdef"><b>Definition:</b> list.h:147</div></div>
<div class="ttc" id="acroutine_8h_html_ae0e03637a3d2c134e9b52006f353d8c0"><div class="ttname"><a href="croutine_8h.html#ae0e03637a3d2c134e9b52006f353d8c0">xCoRoutineCreate</a></div><div class="ttdeci">BaseType_t xCoRoutineCreate(crCOROUTINE_CODE pxCoRoutineCode, UBaseType_t uxPriority, UBaseType_t uxIndex)</div></div>
<div class="ttc" id="astructcor_co_routine_control_block_html"><div class="ttname"><a href="structcor_co_routine_control_block.html">corCoRoutineControlBlock</a></div><div class="ttdef"><b>Definition:</b> croutine.h:51</div></div>
<div class="ttc" id="alist_8h_html_aa50d09950abc602741d7ebe8387f4e1a"><div class="ttname"><a href="list_8h.html#aa50d09950abc602741d7ebe8387f4e1a">listGET_LIST_ITEM_VALUE</a></div><div class="ttdeci">#define listGET_LIST_ITEM_VALUE(pxListItem)</div><div class="ttdef"><b>Definition:</b> list.h:208</div></div>
<div class="ttc" id="alist_8h_html_a83e95e61652f032fdc26aa622f5e2610"><div class="ttname"><a href="list_8h.html#a83e95e61652f032fdc26aa622f5e2610">listSET_LIST_ITEM_VALUE</a></div><div class="ttdeci">#define listSET_LIST_ITEM_VALUE(pxListItem, xValue)</div><div class="ttdef"><b>Definition:</b> list.h:198</div></div>
<div class="ttc" id="astructcor_co_routine_control_block_html_a0a9f1b8d3c0676d256f119fdc5fddfb5"><div class="ttname"><a href="structcor_co_routine_control_block.html#a0a9f1b8d3c0676d256f119fdc5fddfb5">corCoRoutineControlBlock::uxIndex</a></div><div class="ttdeci">UBaseType_t uxIndex</div><div class="ttdef"><b>Definition:</b> croutine.h:56</div></div>
<div class="ttc" id="astructcor_co_routine_control_block_html_a139605d93d834601f34be927ecba3a15"><div class="ttname"><a href="structcor_co_routine_control_block.html#a139605d93d834601f34be927ecba3a15">corCoRoutineControlBlock::xEventListItem</a></div><div class="ttdeci">ListItem_t xEventListItem</div><div class="ttdef"><b>Definition:</b> croutine.h:54</div></div>
<div class="ttc" id="aprojdefs_8h_html_aa56260e937e7e203026707e5ba944273"><div class="ttname"><a href="projdefs_8h.html#aa56260e937e7e203026707e5ba944273">pdFALSE</a></div><div class="ttdeci">#define pdFALSE</div><div class="ttdef"><b>Definition:</b> projdefs.h:45</div></div>
<div class="ttc" id="alist_8c_html_a3240bc0f43fcf755be02bfc6de7dc6ef"><div class="ttname"><a href="list_8c.html#a3240bc0f43fcf755be02bfc6de7dc6ef">vListInsertEnd</a></div><div class="ttdeci">void vListInsertEnd(List_t *const pxList, ListItem_t *const pxNewListItem)</div><div class="ttdef"><b>Definition:</b> list.c:75</div></div>
<div class="ttc" id="aportmacro_8h_html_a646f89d4298e4f5afd522202b11cb2e6"><div class="ttname"><a href="portmacro_8h.html#a646f89d4298e4f5afd522202b11cb2e6">UBaseType_t</a></div><div class="ttdeci">unsigned long UBaseType_t</div><div class="ttdef"><b>Definition:</b> portmacro.h:58</div></div>
<div class="ttc" id="aportmacro_8h_html_a6e3d10ee1a0734a647ca192523c2cfc1"><div class="ttname"><a href="portmacro_8h.html#a6e3d10ee1a0734a647ca192523c2cfc1">portDISABLE_INTERRUPTS</a></div><div class="ttdeci">#define portDISABLE_INTERRUPTS()</div><div class="ttdef"><b>Definition:</b> portmacro.h:105</div></div>
<div class="ttc" id="alist_8h_html_aaba6eb05d67ebc8026bea29193eca28f"><div class="ttname"><a href="list_8h.html#aaba6eb05d67ebc8026bea29193eca28f">listLIST_IS_EMPTY</a></div><div class="ttdeci">#define listLIST_IS_EMPTY(pxList)</div><div class="ttdef"><b>Definition:</b> list.h:250</div></div>
<div class="ttc" id="alist_8c_html_a28faa70d3ec4b4f39e53b0fc52d62ecf"><div class="ttname"><a href="list_8c.html#a28faa70d3ec4b4f39e53b0fc52d62ecf">vListInsert</a></div><div class="ttdeci">void vListInsert(List_t *const pxList, ListItem_t *const pxNewListItem)</div><div class="ttdef"><b>Definition:</b> list.c:104</div></div>
<div class="ttc" id="a_free_r_t_o_s_8h_html"><div class="ttname"><a href="_free_r_t_o_s_8h.html">FreeRTOS.h</a></div></div>
<div class="ttc" id="astructcor_co_routine_control_block_html_ad91115e6e382ba8961310c4559abc7d2"><div class="ttname"><a href="structcor_co_routine_control_block.html#ad91115e6e382ba8961310c4559abc7d2">corCoRoutineControlBlock::xGenericListItem</a></div><div class="ttdeci">ListItem_t xGenericListItem</div><div class="ttdef"><b>Definition:</b> croutine.h:53</div></div>
<div class="ttc" id="aportmacro_8h_html_abc47e85a6befbb47961ad5ee7aa57173"><div class="ttname"><a href="portmacro_8h.html#abc47e85a6befbb47961ad5ee7aa57173">portENABLE_INTERRUPTS</a></div><div class="ttdeci">#define portENABLE_INTERRUPTS()</div><div class="ttdef"><b>Definition:</b> portmacro.h:106</div></div>
<div class="ttc" id="astructcor_co_routine_control_block_html_a0befed3dd0fe55b4314158f4814f50ae"><div class="ttname"><a href="structcor_co_routine_control_block.html#a0befed3dd0fe55b4314158f4814f50ae">corCoRoutineControlBlock::uxPriority</a></div><div class="ttdeci">UBaseType_t uxPriority</div><div class="ttdef"><b>Definition:</b> croutine.h:55</div></div>
<div class="ttc" id="astructcor_co_routine_control_block_html_aa842d81ed7b4c345cf52cde20c5b22e5"><div class="ttname"><a href="structcor_co_routine_control_block.html#aa842d81ed7b4c345cf52cde20c5b22e5">corCoRoutineControlBlock::pxCoRoutineFunction</a></div><div class="ttdeci">crCOROUTINE_CODE pxCoRoutineFunction</div><div class="ttdef"><b>Definition:</b> croutine.h:52</div></div>
<div class="ttc" id="aportmacro_8h_html_a46fb21e00ae0729d7515c0fbf2269796"><div class="ttname"><a href="portmacro_8h.html#a46fb21e00ae0729d7515c0fbf2269796">BaseType_t</a></div><div class="ttdeci">long BaseType_t</div><div class="ttdef"><b>Definition:</b> portmacro.h:57</div></div>
<div class="ttc" id="aprojdefs_8h_html_af268cf937960eb029256bd9c4d949fbe"><div class="ttname"><a href="projdefs_8h.html#af268cf937960eb029256bd9c4d949fbe">pdTRUE</a></div><div class="ttdeci">#define pdTRUE</div><div class="ttdef"><b>Definition:</b> projdefs.h:46</div></div>
<div class="ttc" id="atask_8h_html_a753ecfe23e7386066ecccad5d16422f7"><div class="ttname"><a href="task_8h.html#a753ecfe23e7386066ecccad5d16422f7">xTaskGetTickCount</a></div><div class="ttdeci">TickType_t xTaskGetTickCount(void) PRIVILEGED_FUNCTION</div><div class="ttdef"><b>Definition:</b> tasks.c:2214</div></div>
<div class="ttc" id="acroutine_8h_html_a5333c649a2c063006ca3cd7a3b5b9240"><div class="ttname"><a href="croutine_8h.html#a5333c649a2c063006ca3cd7a3b5b9240">vCoRoutineSchedule</a></div><div class="ttdeci">void vCoRoutineSchedule(void)</div></div>
<div class="ttc" id="alist_8h_html_a275d9855e9b71652e2b8f6e2ed62aadd"><div class="ttname"><a href="list_8h.html#a275d9855e9b71652e2b8f6e2ed62aadd">listGET_OWNER_OF_NEXT_ENTRY</a></div><div class="ttdeci">#define listGET_OWNER_OF_NEXT_ENTRY(pxTCB, pxList)</div><div class="ttdef"><b>Definition:</b> list.h:277</div></div>
<div class="ttc" id="acroutine_8h_html_a397a7505718dd366d8411ce324c49758"><div class="ttname"><a href="croutine_8h.html#a397a7505718dd366d8411ce324c49758">crCOROUTINE_CODE</a></div><div class="ttdeci">void(* crCOROUTINE_CODE)(CoRoutineHandle_t, UBaseType_t)</div><div class="ttdef"><b>Definition:</b> croutine.h:48</div></div>
<div class="ttc" id="acroutine_8h_html_a1c15f304ffe02d0777ae2509b3658e6f"><div class="ttname"><a href="croutine_8h.html#a1c15f304ffe02d0777ae2509b3658e6f">CRCB_t</a></div><div class="ttdeci">struct corCoRoutineControlBlock CRCB_t</div></div>
<div class="ttc" id="acroutine_8h_html_af2a96db518b18f5a7e1cd2fdf3c82873"><div class="ttname"><a href="croutine_8h.html#af2a96db518b18f5a7e1cd2fdf3c82873">xCoRoutineRemoveFromEventList</a></div><div class="ttdeci">BaseType_t xCoRoutineRemoveFromEventList(const List_t *pxEventList)</div></div>
<div class="ttc" id="alist_8h_html"><div class="ttname"><a href="list_8h.html">list.h</a></div></div>
<div class="ttc" id="alist_8c_html_a43e37223a86f5d0688ac4470d3106e87"><div class="ttname"><a href="list_8c.html#a43e37223a86f5d0688ac4470d3106e87">vListInitialiseItem</a></div><div class="ttdeci">void vListInitialiseItem(ListItem_t *const pxItem)</div><div class="ttdef"><b>Definition:</b> list.c:63</div></div>
<div class="ttc" id="aheap__1_8c_html_a0379669d07d76cc81e3028123113b271"><div class="ttname"><a href="heap__1_8c.html#a0379669d07d76cc81e3028123113b271">pvPortMalloc</a></div><div class="ttdeci">void * pvPortMalloc(size_t xWantedSize)</div><div class="ttdef"><b>Definition:</b> heap_1.c:71</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="croutine_8h.html">croutine.h</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>