MCB1700_Welcome/Doxygen/html/group__cr_q_u_e_u_e___r_e_c...

136 lines
7.5 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: crQUEUE_RECEIVE</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('group__cr_q_u_e_u_e___r_e_c_e_i_v_e.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">crQUEUE_RECEIVE</div> </div>
</div><!--header-->
<div class="contents">
<p>croutine. h </p><pre>
crQUEUE_RECEIVE(
CoRoutineHandle_t xHandle,
QueueHandle_t pxQueue,
void *pvBuffer,
TickType_t xTicksToWait,
BaseType_t *pxResult
)</pre><p>The macro's <a class="el" href="croutine_8h.html#a26af3d36f22a04168eebdf5b08465d6e">crQUEUE_SEND()</a> and <a class="el" href="croutine_8h.html#a586d57fd9a3e2aa5ae66484ed3be36c9">crQUEUE_RECEIVE()</a> are the co-routine equivalent to the <a class="el" href="queue_8h.html#af7eb49d3249351176992950d9185abe9">xQueueSend()</a> and <a class="el" href="queue_8c.html#ad0a166f3b1219a5e37e31f8090d4800d">xQueueReceive()</a> functions used by tasks.</p>
<p>crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas <a class="el" href="queue_8h.html#af7eb49d3249351176992950d9185abe9">xQueueSend()</a> and <a class="el" href="queue_8c.html#ad0a166f3b1219a5e37e31f8090d4800d">xQueueReceive()</a> can only be used from tasks.</p>
<p>crQUEUE_RECEIVE can only be called from the co-routine function itself - not from within a function called by the co-routine function. This is because co-routines do not maintain their own stack.</p>
<p>See the co-routine section of the WEB documentation for information on passing data between tasks and co-routines and between ISR's and co-routines.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">xHandle</td><td>The handle of the calling co-routine. This is the xHandle parameter of the co-routine function.</td></tr>
<tr><td class="paramname">pxQueue</td><td>The handle of the queue from which the data will be received. The handle is obtained as the return value when the queue is created using the xQueueCreate() API function.</td></tr>
<tr><td class="paramname">pvBuffer</td><td>The buffer into which the received item is to be copied. The number of bytes of each queued item is specified when the queue is created. This number of bytes is copied into pvBuffer.</td></tr>
<tr><td class="paramname">xTickToDelay</td><td>The number of ticks that the co-routine should block to wait for data to become available from the queue, should data not be available immediately. The actual amount of time this equates to is defined by configTICK_RATE_HZ (set in <a class="el" href="_free_r_t_o_s_config_8h.html">FreeRTOSConfig.h</a>). The constant portTICK_PERIOD_MS can be used to convert ticks to milliseconds (see the crQUEUE_SEND example).</td></tr>
<tr><td class="paramname">pxResult</td><td>The variable pointed to by pxResult will be set to pdPASS if data was successfully retrieved from the queue, otherwise it will be set to an error code as defined within ProjDefs.h.</td></tr>
</table>
</dd>
</dl>
<p>Example usage: </p><pre>
// A co-routine receives the number of an LED to flash from a queue. It
// blocks on the queue until the number is received.
static void prvCoRoutineFlashWorkTask( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
{
// Variables in co-routines must be declared static if they must maintain value across a blocking call.
static BaseType_t xResult;
static UBaseType_t uxLEDToFlash;</pre><pre> // All co-routines must start with a call to <a class="el" href="croutine_8h.html#a19a57a201a325e8af1207ed68c4aedde">crSTART()</a>.
<a class="el" href="croutine_8h.html#a19a57a201a325e8af1207ed68c4aedde">crSTART( xHandle )</a>;</pre><pre> for( ;; )
{
// Wait for data to become available on the queue.
<a class="el" href="croutine_8h.html#a586d57fd9a3e2aa5ae66484ed3be36c9">crQUEUE_RECEIVE( xHandle, xCoRoutineQueue, &amp;uxLEDToFlash, portMAX_DELAY, &amp;xResult )</a>;</pre><pre> if( xResult == pdPASS )
{
// We received the LED to flash - flash it!
vParTestToggleLED( uxLEDToFlash );
}
}</pre><pre> <a class="el" href="croutine_8h.html#ae6038cc976689b50000475ebfc4e2f23">crEND()</a>;
}</pre> </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 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>