esp32-s2_dfu/0.4/group__group__fifo.html

344 lines
21 KiB
HTML

<!-- HTML header for doxygen 1.8.6-->
<!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"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>tinyusb: fifo</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="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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 width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">tinyusb
&#160;<span id="projectnumber">0.4</span>
</div>
</td>
<td align="right">
<a href="https://pledgie.com/campaigns/24694"><img border="0" src="https://pledgie.com/campaigns/24694.png?skin_name=chrome" alt="Click here to lend your support to tinyusb donation and make a donation at pledgie.com"></a>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</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__group__fifo.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></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="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">fifo<div class="ingroups"><a class="el" href="group___group___common.html">Common Files</a></div></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 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structfifo__t.html">fifo_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simple Circular FIFO. <a href="structfifo__t.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</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:ga0095b649f959381927c745a8ef0a609e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>FIFO_DEF</b>(name, ff_depth, type, is_overwritable)</td></tr>
<tr class="separator:ga0095b649f959381927c745a8ef0a609e"><td class="memSeparator" colspan="2">&#160;</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:ga9189952c6b2516777f06cdfcbb45d6b8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#ga9189952c6b2516777f06cdfcbb45d6b8">fifo_write</a> (<a class="el" href="structfifo__t.html">fifo_t</a> *f, void const *p_data)</td></tr>
<tr class="memdesc:ga9189952c6b2516777f06cdfcbb45d6b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write one byte into the RX buffer. <a href="#ga9189952c6b2516777f06cdfcbb45d6b8">More...</a><br/></td></tr>
<tr class="separator:ga9189952c6b2516777f06cdfcbb45d6b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad1b3c074f899149ff9736bf80d869f99"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#gad1b3c074f899149ff9736bf80d869f99">fifo_read</a> (<a class="el" href="structfifo__t.html">fifo_t</a> *f, void *p_buffer)</td></tr>
<tr class="memdesc:gad1b3c074f899149ff9736bf80d869f99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read one byte out of the RX buffer. <a href="#gad1b3c074f899149ff9736bf80d869f99">More...</a><br/></td></tr>
<tr class="separator:gad1b3c074f899149ff9736bf80d869f99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaec337b950afaa3d427e3793b98fe591c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#gaec337b950afaa3d427e3793b98fe591c">fifo_clear</a> (<a class="el" href="structfifo__t.html">fifo_t</a> *f)</td></tr>
<tr class="memdesc:gaec337b950afaa3d427e3793b98fe591c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the fifo read and write pointers and set length to zero. <a href="#gaec337b950afaa3d427e3793b98fe591c">More...</a><br/></td></tr>
<tr class="separator:gaec337b950afaa3d427e3793b98fe591c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadbcf805493fe4575fdcc1090cb4e754f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadbcf805493fe4575fdcc1090cb4e754f"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><b>fifo_is_empty</b> (<a class="el" href="structfifo__t.html">fifo_t</a> *f) <a class="el" href="group___group___func_attr.html#ga477faefde32bfd89d5b5b40d70b1a998">ATTR_PURE</a> <a class="el" href="group___group___i_a_r.html#ga18a61fcb06b815274b12b7f626993ac6">ATTR_ALWAYS_INLINE</a></td></tr>
<tr class="separator:gadbcf805493fe4575fdcc1090cb4e754f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga229a2bd02dad50208050a6d3d4f579b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga229a2bd02dad50208050a6d3d4f579b4"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><b>fifo_is_full</b> (<a class="el" href="structfifo__t.html">fifo_t</a> *f) <a class="el" href="group___group___func_attr.html#ga477faefde32bfd89d5b5b40d70b1a998">ATTR_PURE</a> <a class="el" href="group___group___i_a_r.html#ga18a61fcb06b815274b12b7f626993ac6">ATTR_ALWAYS_INLINE</a></td></tr>
<tr class="separator:ga229a2bd02dad50208050a6d3d4f579b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac24c5ce0bd1c590972e3d417f5654ad2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac24c5ce0bd1c590972e3d417f5654ad2"></a>
static uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>fifo_get_length</b> (<a class="el" href="structfifo__t.html">fifo_t</a> *f) <a class="el" href="group___group___func_attr.html#ga477faefde32bfd89d5b5b40d70b1a998">ATTR_PURE</a> <a class="el" href="group___group___i_a_r.html#ga18a61fcb06b815274b12b7f626993ac6">ATTR_ALWAYS_INLINE</a></td></tr>
<tr class="separator:gac24c5ce0bd1c590972e3d417f5654ad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga209cb9cecab36517780818f791fd4cb1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga209cb9cecab36517780818f791fd4cb1"></a>
uint8_t *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#ga209cb9cecab36517780818f791fd4cb1">buffer</a></td></tr>
<tr class="memdesc:ga209cb9cecab36517780818f791fd4cb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">buffer pointer <br/></td></tr>
<tr class="separator:ga209cb9cecab36517780818f791fd4cb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga826355f44678c1fda92ad8dd8768c741"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga826355f44678c1fda92ad8dd8768c741"></a>
uint16_t const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#ga826355f44678c1fda92ad8dd8768c741">depth</a></td></tr>
<tr class="memdesc:ga826355f44678c1fda92ad8dd8768c741"><td class="mdescLeft">&#160;</td><td class="mdescRight">max items <br/></td></tr>
<tr class="separator:ga826355f44678c1fda92ad8dd8768c741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad20fcdaf91880e1eadac74f44ca810af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad20fcdaf91880e1eadac74f44ca810af"></a>
uint16_t const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#gad20fcdaf91880e1eadac74f44ca810af">item_size</a></td></tr>
<tr class="memdesc:gad20fcdaf91880e1eadac74f44ca810af"><td class="mdescLeft">&#160;</td><td class="mdescRight">size of each item <br/></td></tr>
<tr class="separator:gad20fcdaf91880e1eadac74f44ca810af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacf3bcd17dde685a9fe185401f6158094"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacf3bcd17dde685a9fe185401f6158094"></a>
volatile uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#gacf3bcd17dde685a9fe185401f6158094">count</a></td></tr>
<tr class="memdesc:gacf3bcd17dde685a9fe185401f6158094"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of items in queue <br/></td></tr>
<tr class="separator:gacf3bcd17dde685a9fe185401f6158094"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1183877201abc773ede7d0fd7bff02be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga1183877201abc773ede7d0fd7bff02be"></a>
volatile uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#ga1183877201abc773ede7d0fd7bff02be">wr_idx</a></td></tr>
<tr class="memdesc:ga1183877201abc773ede7d0fd7bff02be"><td class="mdescLeft">&#160;</td><td class="mdescRight">write pointer <br/></td></tr>
<tr class="separator:ga1183877201abc773ede7d0fd7bff02be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga85e6a7b1738f3f627cab6ff605ec0fa6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga85e6a7b1738f3f627cab6ff605ec0fa6"></a>
volatile uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__fifo.html#ga85e6a7b1738f3f627cab6ff605ec0fa6">rd_idx</a></td></tr>
<tr class="memdesc:ga85e6a7b1738f3f627cab6ff605ec0fa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">read pointer <br/></td></tr>
<tr class="separator:ga85e6a7b1738f3f627cab6ff605ec0fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga56addab049476a8289fda1680f505980"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga56addab049476a8289fda1680f505980"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>overwritable</b></td></tr>
<tr class="separator:ga56addab049476a8289fda1680f505980"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga0095b649f959381927c745a8ef0a609e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FIFO_DEF</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">ff_depth, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">type, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">is_overwritable&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="comment">/*, irq_mutex)*/</span> \</div>
<div class="line"> uint8_t name##_buffer[ff_depth*<span class="keyword">sizeof</span>(type)];\</div>
<div class="line"> fifo_t name = {\</div>
<div class="line"> .buffer = name##_buffer,\</div>
<div class="line"> .depth = ff_depth,\</div>
<div class="line"> .item_size = <span class="keyword">sizeof</span>(type),\</div>
<div class="line"> .overwritable = is_overwritable,\</div>
<div class="line"> <span class="comment">/*.irq = irq_mutex*/</span>\</div>
<div class="line"> }</div>
</div><!-- fragment -->
<p>Definition at line <a class="el" href="fifo_8h_source.html#l00067">67</a> of file <a class="el" href="fifo_8h_source.html">fifo.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gaec337b950afaa3d427e3793b98fe591c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fifo_clear </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structfifo__t.html">fifo_t</a> *&#160;</td>
<td class="paramname"><em>f</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear the fifo read and write pointers and set length to zero. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">f</td><td>Pointer to the FIFO buffer to manipulate </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="fifo_8c_source.html#l00138">138</a> of file <a class="el" href="fifo_8c_source.html">fifo.c</a>.</p>
</div>
</div>
<a class="anchor" id="gad1b3c074f899149ff9736bf80d869f99"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool fifo_read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structfifo__t.html">fifo_t</a> *&#160;</td>
<td class="paramname"><em>f</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>p_buffer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read one byte out of the RX buffer. </p>
<p>This function will return the byte located at the array index of the read pointer, and then increment the read pointer index. If the read pointer exceeds the maximum buffer size, it will roll over to zero.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">f</td><td>Pointer to the FIFO buffer to manipulate </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Pointer to the place holder for data read from the buffer</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>TRUE if the queue is not empty </dd></dl>
<p>Definition at line <a class="el" href="fifo_8c_source.html#l00065">65</a> of file <a class="el" href="fifo_8c_source.html">fifo.c</a>.</p>
</div>
</div>
<a class="anchor" id="ga9189952c6b2516777f06cdfcbb45d6b8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool fifo_write </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structfifo__t.html">fifo_t</a> *&#160;</td>
<td class="paramname"><em>f</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void const *&#160;</td>
<td class="paramname"><em>p_data</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Write one byte into the RX buffer. </p>
<p>This function will write one byte into the array index specified by the write pointer and increment the write index. If the write index exceeds the max buffer size, then it will roll over to zero.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">f</td><td>Pointer to the FIFO buffer to manipulate </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>The byte to add to the FIFO</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>TRUE if the data was written to the FIFO (overwrittable FIFO will always return TRUE) </dd></dl>
<p>Definition at line <a class="el" href="fifo_8c_source.html#l00102">102</a> of file <a class="el" href="fifo_8c_source.html">fifo.c</a>.</p>
</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 Thu Apr 17 2014 13:05:29 for tinyusb by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>