mm-iot-sdk/framework/doc/html/group__MMPKT.html
Morse Micro 4f4eb7fc7a Morse Micro MM-IoT-SDK release 2.9.7
This commit introduces version 2.9.7 of the Morse Micro MM-IoT-SDK
for ARM microcontroller base platforms.
2025-10-04 02:04:28 +10:00

1371 lines
70 KiB
HTML

<!-- HTML header for doxygen 1.8.17-->
<!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.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Morse Micro IoT SDK: Morse Micro Packet Buffer (mmpkt) API</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" />
<link href="style.css" rel="stylesheet" type="text/css"/>
<link rel="shortcut icon" href="favicon.svg" />
</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="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Morse Micro IoT SDK
&#160;<span id="projectnumber">2.9.7</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('group__MMPKT.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="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">Morse Micro Packet Buffer (mmpkt) API</div></div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p >This API provides support for buffers tailored towards packets. </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionmmpkt__metadata__ptr.html">mmpkt_metadata_ptr</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Union of pointer types for mmpkt metadata. <a href="unionmmpkt__metadata__ptr.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmmpkt.html">mmpkt</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Core mmpkt data structure. <a href="structmmpkt.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmmpkt__ops.html">mmpkt_ops</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Operations data structure for mmpkt. <a href="structmmpkt__ops.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmmpkt__list.html">mmpkt_list</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure that can be used as the head of a linked list of mmpkts that counts its length. <a href="structmmpkt__list.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 id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga695315db4f1a49abe1178b6869356265"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga695315db4f1a49abe1178b6869356265">MM_FAST_ROUND_UP</a>(x, m)&#160;&#160;&#160;((((x)-1) | ((m)-1)) + 1)</td></tr>
<tr class="memdesc:ga695315db4f1a49abe1178b6869356265"><td class="mdescLeft">&#160;</td><td class="mdescRight">Round <code>x</code> up to the next multiple of <code>m</code> (where <code>m</code> is a power of 2). <a href="group__MMPKT.html#ga695315db4f1a49abe1178b6869356265">More...</a><br /></td></tr>
<tr class="separator:ga695315db4f1a49abe1178b6869356265"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga27dc641ce6c6a35a803df01be953d6d6"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga27dc641ce6c6a35a803df01be953d6d6">mmpkt_init</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>, uint8_t *<a class="el" href="sslclient_8c.html#abdc8ea8147d82c962a7d88863ee32ee0">buf</a>, uint32_t buf_len, uint32_t data_start_offset, const struct <a class="el" href="structmmpkt__ops.html">mmpkt_ops</a> *ops)</td></tr>
<tr class="memdesc:ga27dc641ce6c6a35a803df01be953d6d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize an mmpkt header with the given values. <a href="group__MMPKT.html#ga27dc641ce6c6a35a803df01be953d6d6">More...</a><br /></td></tr>
<tr class="separator:ga27dc641ce6c6a35a803df01be953d6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1683aaa780a62c81a52861c9796d6e21"><td class="memItemLeft" align="right" valign="top">static struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga1683aaa780a62c81a52861c9796d6e21">mmpkt_init_buf</a> (uint8_t *<a class="el" href="sslclient_8c.html#abdc8ea8147d82c962a7d88863ee32ee0">buf</a>, uint32_t buf_len, uint32_t space_at_start, uint32_t space_at_end, uint32_t metadata_size, const struct <a class="el" href="structmmpkt__ops.html">mmpkt_ops</a> *ops)</td></tr>
<tr class="memdesc:ga1683aaa780a62c81a52861c9796d6e21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize an mmpkt in a single buffer using the given values. <a href="group__MMPKT.html#ga1683aaa780a62c81a52861c9796d6e21">More...</a><br /></td></tr>
<tr class="separator:ga1683aaa780a62c81a52861c9796d6e21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga05c0e63a58984eaa8e676ec1d5430dc3"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga05c0e63a58984eaa8e676ec1d5430dc3">mmpkt_alloc_on_heap</a> (uint32_t space_at_start, uint32_t space_at_end, uint32_t metadata_size)</td></tr>
<tr class="memdesc:ga05c0e63a58984eaa8e676ec1d5430dc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a new mmpkt on the heap (using <a class="el" href="group__MMOSAL__MEMMGMT.html#ga1da4459b12043d73361b6d798501e72d">mmosal_malloc()</a>). <a href="group__MMPKT.html#ga05c0e63a58984eaa8e676ec1d5430dc3">More...</a><br /></td></tr>
<tr class="separator:ga05c0e63a58984eaa8e676ec1d5430dc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2523fbfac5ac7b4104bb1c14e179650b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga2523fbfac5ac7b4104bb1c14e179650b">mmpkt_release</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>)</td></tr>
<tr class="memdesc:ga2523fbfac5ac7b4104bb1c14e179650b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release a reference to the given mmpkt. <a href="group__MMPKT.html#ga2523fbfac5ac7b4104bb1c14e179650b">More...</a><br /></td></tr>
<tr class="separator:ga2523fbfac5ac7b4104bb1c14e179650b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab7207f5fa460c4a79b908adc8a382835"><td class="memItemLeft" align="right" valign="top">static struct mmpktview *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#gab7207f5fa460c4a79b908adc8a382835">mmpkt_open</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>)</td></tr>
<tr class="memdesc:gab7207f5fa460c4a79b908adc8a382835"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a view of the given mmpkt. <a href="group__MMPKT.html#gab7207f5fa460c4a79b908adc8a382835">More...</a><br /></td></tr>
<tr class="separator:gab7207f5fa460c4a79b908adc8a382835"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga24979cd9edbc47d48ea9561ea9ec0288"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga24979cd9edbc47d48ea9561ea9ec0288">mmpkt_close</a> (struct mmpktview **view)</td></tr>
<tr class="memdesc:ga24979cd9edbc47d48ea9561ea9ec0288"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close the given view. <a href="group__MMPKT.html#ga24979cd9edbc47d48ea9561ea9ec0288">More...</a><br /></td></tr>
<tr class="separator:ga24979cd9edbc47d48ea9561ea9ec0288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1bebd6f96fa54f70e0fdb2967d88d446"><td class="memItemLeft" align="right" valign="top">static struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga1bebd6f96fa54f70e0fdb2967d88d446">mmpkt_from_view</a> (struct mmpktview *view)</td></tr>
<tr class="memdesc:ga1bebd6f96fa54f70e0fdb2967d88d446"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the underlying mmpkt from an opened view. <a href="group__MMPKT.html#ga1bebd6f96fa54f70e0fdb2967d88d446">More...</a><br /></td></tr>
<tr class="separator:ga1bebd6f96fa54f70e0fdb2967d88d446"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac5dd72295ffe3eedb8b6dd370285fb8b"><td class="memItemLeft" align="right" valign="top">static uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#gac5dd72295ffe3eedb8b6dd370285fb8b">mmpkt_get_data_start</a> (struct mmpktview *view)</td></tr>
<tr class="memdesc:gac5dd72295ffe3eedb8b6dd370285fb8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a pointer to the start of the data in the mmpkt. <a href="group__MMPKT.html#gac5dd72295ffe3eedb8b6dd370285fb8b">More...</a><br /></td></tr>
<tr class="separator:gac5dd72295ffe3eedb8b6dd370285fb8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga72bdbf55a809fe4ed55a543532929be0"><td class="memItemLeft" align="right" valign="top">static uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga72bdbf55a809fe4ed55a543532929be0">mmpkt_get_data_end</a> (struct mmpktview *view)</td></tr>
<tr class="memdesc:ga72bdbf55a809fe4ed55a543532929be0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a pointer to the end of the data in the mmpkt. <a href="group__MMPKT.html#ga72bdbf55a809fe4ed55a543532929be0">More...</a><br /></td></tr>
<tr class="separator:ga72bdbf55a809fe4ed55a543532929be0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga59a080c847f9e180ac29535d4e62da24"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga59a080c847f9e180ac29535d4e62da24">mmpkt_peek_data_length</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>)</td></tr>
<tr class="memdesc:ga59a080c847f9e180ac29535d4e62da24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Peek the length of the data currently from an unopened mmpkt. <a href="group__MMPKT.html#ga59a080c847f9e180ac29535d4e62da24">More...</a><br /></td></tr>
<tr class="separator:ga59a080c847f9e180ac29535d4e62da24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga962e898a0a13d4f7052472a8bf1cf56d"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga962e898a0a13d4f7052472a8bf1cf56d">mmpkt_get_data_length</a> (struct mmpktview *view)</td></tr>
<tr class="memdesc:ga962e898a0a13d4f7052472a8bf1cf56d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the length of the data currently in the mmpkt. <a href="group__MMPKT.html#ga962e898a0a13d4f7052472a8bf1cf56d">More...</a><br /></td></tr>
<tr class="separator:ga962e898a0a13d4f7052472a8bf1cf56d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga54528342c387cc8274c3a86f5a788774"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga54528342c387cc8274c3a86f5a788774">mmpkt_available_space_at_start</a> (struct mmpktview *view)</td></tr>
<tr class="memdesc:ga54528342c387cc8274c3a86f5a788774"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the amount of space available for prepending to the data in the buffer. <a href="group__MMPKT.html#ga54528342c387cc8274c3a86f5a788774">More...</a><br /></td></tr>
<tr class="separator:ga54528342c387cc8274c3a86f5a788774"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9cc23f1cf0586292a3df766ffe3569ce"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga9cc23f1cf0586292a3df766ffe3569ce">mmpkt_available_space_at_end</a> (struct mmpktview *view)</td></tr>
<tr class="memdesc:ga9cc23f1cf0586292a3df766ffe3569ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the amount of space available for appending to the data in the buffer. <a href="group__MMPKT.html#ga9cc23f1cf0586292a3df766ffe3569ce">More...</a><br /></td></tr>
<tr class="separator:ga9cc23f1cf0586292a3df766ffe3569ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7bf092fdc2a3069ad312b0a5ab0a70b4"><td class="memItemLeft" align="right" valign="top">static uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga7bf092fdc2a3069ad312b0a5ab0a70b4">mmpkt_prepend</a> (struct mmpktview *view, uint32_t len)</td></tr>
<tr class="memdesc:ga7bf092fdc2a3069ad312b0a5ab0a70b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserves space immediately before the data currently in the given mmpkt and returns a pointer to this space. <a href="group__MMPKT.html#ga7bf092fdc2a3069ad312b0a5ab0a70b4">More...</a><br /></td></tr>
<tr class="separator:ga7bf092fdc2a3069ad312b0a5ab0a70b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f9b6d169bcbdb36a1b82d87209b58cd"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga9f9b6d169bcbdb36a1b82d87209b58cd">mmpkt_prepend_data</a> (struct mmpktview *view, const uint8_t *data, uint32_t len)</td></tr>
<tr class="memdesc:ga9f9b6d169bcbdb36a1b82d87209b58cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepends the given data to the data already in the mmpkt. <a href="group__MMPKT.html#ga9f9b6d169bcbdb36a1b82d87209b58cd">More...</a><br /></td></tr>
<tr class="separator:ga9f9b6d169bcbdb36a1b82d87209b58cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab864161ae5cc4e40f4c9d61831538c3b"><td class="memItemLeft" align="right" valign="top">static uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#gab864161ae5cc4e40f4c9d61831538c3b">mmpkt_append</a> (struct mmpktview *view, uint32_t len)</td></tr>
<tr class="memdesc:gab864161ae5cc4e40f4c9d61831538c3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserves space immediately after the data currently in the given mmpkt and returns a pointer to this space. <a href="group__MMPKT.html#gab864161ae5cc4e40f4c9d61831538c3b">More...</a><br /></td></tr>
<tr class="separator:gab864161ae5cc4e40f4c9d61831538c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga107042fcf64419dbfe0ecbbb57837250"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga107042fcf64419dbfe0ecbbb57837250">mmpkt_append_data</a> (struct mmpktview *view, const uint8_t *data, uint32_t len)</td></tr>
<tr class="memdesc:ga107042fcf64419dbfe0ecbbb57837250"><td class="mdescLeft">&#160;</td><td class="mdescRight">Appends the given data to the data already in the mmpkt. <a href="group__MMPKT.html#ga107042fcf64419dbfe0ecbbb57837250">More...</a><br /></td></tr>
<tr class="separator:ga107042fcf64419dbfe0ecbbb57837250"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga39f3da203ad9ef916c8995c4ea904e05"><td class="memItemLeft" align="right" valign="top">static union <a class="el" href="unionmmpkt__metadata__ptr.html">mmpkt_metadata_ptr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga39f3da203ad9ef916c8995c4ea904e05">mmpkt_get_metadata</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>)</td></tr>
<tr class="memdesc:ga39f3da203ad9ef916c8995c4ea904e05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve a reference to the metadata associated with the given mmpkt. <a href="group__MMPKT.html#ga39f3da203ad9ef916c8995c4ea904e05">More...</a><br /></td></tr>
<tr class="separator:ga39f3da203ad9ef916c8995c4ea904e05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga52da3c2453402d5635e6e20d8ebcbf87"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga52da3c2453402d5635e6e20d8ebcbf87">mmpkt_adjust_start_offset</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>, int32_t delta)</td></tr>
<tr class="memdesc:ga52da3c2453402d5635e6e20d8ebcbf87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adjust the start offset of an mmpkt. <a href="group__MMPKT.html#ga52da3c2453402d5635e6e20d8ebcbf87">More...</a><br /></td></tr>
<tr class="separator:ga52da3c2453402d5635e6e20d8ebcbf87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacda18b62ce4c62c53d51a3f330dc5869"><td class="memItemLeft" align="right" valign="top">static uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#gacda18b62ce4c62c53d51a3f330dc5869">mmpkt_remove_from_start</a> (struct mmpktview *view, uint32_t len)</td></tr>
<tr class="memdesc:gacda18b62ce4c62c53d51a3f330dc5869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove data from the start of the mmpkt. <a href="group__MMPKT.html#gacda18b62ce4c62c53d51a3f330dc5869">More...</a><br /></td></tr>
<tr class="separator:gacda18b62ce4c62c53d51a3f330dc5869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa3c059790e8a73f90795cfb2e3729cdd"><td class="memItemLeft" align="right" valign="top">static uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#gaa3c059790e8a73f90795cfb2e3729cdd">mmpkt_remove_from_end</a> (struct mmpktview *view, uint32_t len)</td></tr>
<tr class="memdesc:gaa3c059790e8a73f90795cfb2e3729cdd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove data from the end of the mmpkt. <a href="group__MMPKT.html#gaa3c059790e8a73f90795cfb2e3729cdd">More...</a><br /></td></tr>
<tr class="separator:gaa3c059790e8a73f90795cfb2e3729cdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8f76aca81d14dd42f20422f92db9fc44"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga8f76aca81d14dd42f20422f92db9fc44">mmpkt_truncate</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>, uint32_t len)</td></tr>
<tr class="memdesc:ga8f76aca81d14dd42f20422f92db9fc44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Truncate the mmpkt data to the given length. <a href="group__MMPKT.html#ga8f76aca81d14dd42f20422f92db9fc44">More...</a><br /></td></tr>
<tr class="separator:ga8f76aca81d14dd42f20422f92db9fc44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a734b65be7add65bfee1399bec7628d"><td class="memItemLeft" align="right" valign="top">static struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#ga4a734b65be7add65bfee1399bec7628d">mmpkt_get_next</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>)</td></tr>
<tr class="memdesc:ga4a734b65be7add65bfee1399bec7628d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <code>next</code> pointer embedded in the mmpkt. <a href="group__MMPKT.html#ga4a734b65be7add65bfee1399bec7628d">More...</a><br /></td></tr>
<tr class="separator:ga4a734b65be7add65bfee1399bec7628d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadb79b8452e3aecc37363e9273954309b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#gadb79b8452e3aecc37363e9273954309b">mmpkt_set_next</a> (struct <a class="el" href="structmmpkt.html">mmpkt</a> *<a class="el" href="structmmpkt.html">mmpkt</a>, struct <a class="el" href="structmmpkt.html">mmpkt</a> *next)</td></tr>
<tr class="memdesc:gadb79b8452e3aecc37363e9273954309b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the <code>next</code> pointer embedded in the mmpkt. <a href="group__MMPKT.html#gadb79b8452e3aecc37363e9273954309b">More...</a><br /></td></tr>
<tr class="separator:gadb79b8452e3aecc37363e9273954309b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac7e03a7fff2f56c53363a13974ec64d8"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__MMPKT.html#gac7e03a7fff2f56c53363a13974ec64d8">mmpkt_contains_ptr</a> (struct mmpktview *view, const void *ptr)</td></tr>
<tr class="memdesc:gac7e03a7fff2f56c53363a13974ec64d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the given pointer is pointing inside the mmpkt's buffer. <a href="group__MMPKT.html#gac7e03a7fff2f56c53363a13974ec64d8">More...</a><br /></td></tr>
<tr class="separator:gac7e03a7fff2f56c53363a13974ec64d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga695315db4f1a49abe1178b6869356265" name="ga695315db4f1a49abe1178b6869356265"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga695315db4f1a49abe1178b6869356265">&#9670;&nbsp;</a></span>MM_FAST_ROUND_UP</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define MM_FAST_ROUND_UP</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">x, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">m&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;((((x)-1) | ((m)-1)) + 1)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Round <code>x</code> up to the next multiple of <code>m</code> (where <code>m</code> is a power of 2). </p>
<dl class="section warning"><dt>Warning</dt><dd><code>m</code> must be a power of 2. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00034">34</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga52da3c2453402d5635e6e20d8ebcbf87" name="ga52da3c2453402d5635e6e20d8ebcbf87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga52da3c2453402d5635e6e20d8ebcbf87">&#9670;&nbsp;</a></span>mmpkt_adjust_start_offset()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mmpkt_adjust_start_offset </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int32_t&#160;</td>
<td class="paramname"><em>delta</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adjust the start offset of an mmpkt. </p>
<p >This is only allowable when the mmpkt is empty (i.e., <code>data_len</code> is 0).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>The mmpkt to operate on. </td></tr>
<tr><td class="paramname">delta</td><td>Difference between the current start offset and the new start offset (this may be negative, but the new start offset must not be less than 0). </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00439">439</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga05c0e63a58984eaa8e676ec1d5430dc3" name="ga05c0e63a58984eaa8e676ec1d5430dc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga05c0e63a58984eaa8e676ec1d5430dc3">&#9670;&nbsp;</a></span>mmpkt_alloc_on_heap()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structmmpkt.html">mmpkt</a> * mmpkt_alloc_on_heap </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>space_at_start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>space_at_end</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>metadata_size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Allocate a new mmpkt on the heap (using <a class="el" href="group__MMOSAL__MEMMGMT.html#ga1da4459b12043d73361b6d798501e72d">mmosal_malloc()</a>). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">space_at_start</td><td>Amount of space to reserve at start of buffer. </td></tr>
<tr><td class="paramname">space_at_end</td><td>Amount of space to reserve at end of buffer. </td></tr>
<tr><td class="paramname">metadata_size</td><td>Size of metadata (0 for no metadata).</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd><code>start_offset</code> will be set to <code>space_at_start</code>, and <code>buf_len</code> will be the sum of <code>space_at_start</code> and <code>space_at_end</code> (rounded up to a multiple of 4).</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>newly allocated mmpkt on success or <code>NULL</code> on failure. </dd></dl>
</div>
</div>
<a id="gab864161ae5cc4e40f4c9d61831538c3b" name="gab864161ae5cc4e40f4c9d61831538c3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab864161ae5cc4e40f4c9d61831538c3b">&#9670;&nbsp;</a></span>mmpkt_append()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint8_t * mmpkt_append </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserves space immediately after the data currently in the given mmpkt and returns a pointer to this space. </p>
<p >For a function that also copies data in, see <a class="el" href="group__MMPKT.html#ga107042fcf64419dbfe0ecbbb57837250">mmpkt_append_data()</a>.</p>
<dl class="section warning"><dt>Warning</dt><dd><code>len</code> must be less than or equal to <a class="el" href="group__MMPKT.html#ga9cc23f1cf0586292a3df766ffe3569ce">mmpkt_available_space_at_end()</a>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on. </td></tr>
<tr><td class="paramname">len</td><td>Length of data to be append.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the place in the buffer where the data should be put. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00395">395</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga107042fcf64419dbfe0ecbbb57837250" name="ga107042fcf64419dbfe0ecbbb57837250"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga107042fcf64419dbfe0ecbbb57837250">&#9670;&nbsp;</a></span>mmpkt_append_data()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mmpkt_append_data </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Appends the given data to the data already in the mmpkt. </p>
<dl class="section warning"><dt>Warning</dt><dd><code>len</code> must be less than or equal to <a class="el" href="group__MMPKT.html#ga54528342c387cc8274c3a86f5a788774">mmpkt_available_space_at_start()</a>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on. </td></tr>
<tr><td class="paramname">data</td><td>The data to be prepended. </td></tr>
<tr><td class="paramname">len</td><td>Length of data to be prepended. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00413">413</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga9cc23f1cf0586292a3df766ffe3569ce" name="ga9cc23f1cf0586292a3df766ffe3569ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9cc23f1cf0586292a3df766ffe3569ce">&#9670;&nbsp;</a></span>mmpkt_available_space_at_end()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t mmpkt_available_space_at_end </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the amount of space available for appending to the data in the buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the available space in bytes. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00337">337</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga54528342c387cc8274c3a86f5a788774" name="ga54528342c387cc8274c3a86f5a788774"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga54528342c387cc8274c3a86f5a788774">&#9670;&nbsp;</a></span>mmpkt_available_space_at_start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t mmpkt_available_space_at_start </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the amount of space available for prepending to the data in the buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the available space in bytes. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00324">324</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga24979cd9edbc47d48ea9561ea9ec0288" name="ga24979cd9edbc47d48ea9561ea9ec0288"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga24979cd9edbc47d48ea9561ea9ec0288">&#9670;&nbsp;</a></span>mmpkt_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mmpkt_close </td>
<td>(</td>
<td class="paramtype">struct mmpktview **&#160;</td>
<td class="paramname"><em>view</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Close the given view. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">view</td><td>Pointer to a variable holding the view to be closed. This will be modified to indicate it is no longer valid. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00247">247</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="gac7e03a7fff2f56c53363a13974ec64d8" name="gac7e03a7fff2f56c53363a13974ec64d8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac7e03a7fff2f56c53363a13974ec64d8">&#9670;&nbsp;</a></span>mmpkt_contains_ptr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool mmpkt_contains_ptr </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>ptr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check whether the given pointer is pointing inside the mmpkt's buffer. </p>
<dl class="section note"><dt>Note</dt><dd>This checks against the full buffer, which includes any unused regions at the beginning and end of the buffer which do not contain valid packet data.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on. </td></tr>
<tr><td class="paramname">ptr</td><td>The pointer to check.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the pointer points into the buffer. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00548">548</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga1bebd6f96fa54f70e0fdb2967d88d446" name="ga1bebd6f96fa54f70e0fdb2967d88d446"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1bebd6f96fa54f70e0fdb2967d88d446">&#9670;&nbsp;</a></span>mmpkt_from_view()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static struct <a class="el" href="structmmpkt.html">mmpkt</a> * mmpkt_from_view </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the underlying mmpkt from an opened view. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>View of an mmpkt.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the underlying mmpkt. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00259">259</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga72bdbf55a809fe4ed55a543532929be0" name="ga72bdbf55a809fe4ed55a543532929be0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga72bdbf55a809fe4ed55a543532929be0">&#9670;&nbsp;</a></span>mmpkt_get_data_end()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint8_t * mmpkt_get_data_end </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets a pointer to the end of the data in the mmpkt. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the end of the data in the mmpkt. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00284">284</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga962e898a0a13d4f7052472a8bf1cf56d" name="ga962e898a0a13d4f7052472a8bf1cf56d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga962e898a0a13d4f7052472a8bf1cf56d">&#9670;&nbsp;</a></span>mmpkt_get_data_length()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t mmpkt_get_data_length </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the length of the data currently in the mmpkt. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the length of the data currently in the mmpkt (note that this is different from the length of the available buffer space). </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00311">311</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="gac5dd72295ffe3eedb8b6dd370285fb8b" name="gac5dd72295ffe3eedb8b6dd370285fb8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac5dd72295ffe3eedb8b6dd370285fb8b">&#9670;&nbsp;</a></span>mmpkt_get_data_start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint8_t * mmpkt_get_data_start </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets a pointer to the start of the data in the mmpkt. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the start of the data in the mmpkt. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00271">271</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga39f3da203ad9ef916c8995c4ea904e05" name="ga39f3da203ad9ef916c8995c4ea904e05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga39f3da203ad9ef916c8995c4ea904e05">&#9670;&nbsp;</a></span>mmpkt_get_metadata()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static union <a class="el" href="unionmmpkt__metadata__ptr.html">mmpkt_metadata_ptr</a> mmpkt_get_metadata </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Retrieve a reference to the metadata associated with the given mmpkt. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>The mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a reference to the mmpkt metadata. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00426">426</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga4a734b65be7add65bfee1399bec7628d" name="ga4a734b65be7add65bfee1399bec7628d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4a734b65be7add65bfee1399bec7628d">&#9670;&nbsp;</a></span>mmpkt_get_next()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static struct <a class="el" href="structmmpkt.html">mmpkt</a> * mmpkt_get_next </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the <code>next</code> pointer embedded in the mmpkt. </p>
<p >Used by the <a class="el" href="structmmpkt__list.html" title="Structure that can be used as the head of a linked list of mmpkts that counts its length.">mmpkt_list</a> structure for making linked lists of mmpkts.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>The mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>pointer to the next mmpkt in the chain (may be NULL). </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00519">519</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga27dc641ce6c6a35a803df01be953d6d6" name="ga27dc641ce6c6a35a803df01be953d6d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga27dc641ce6c6a35a803df01be953d6d6">&#9670;&nbsp;</a></span>mmpkt_init()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mmpkt_init </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>buf_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>data_start_offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structmmpkt__ops.html">mmpkt_ops</a> *&#160;</td>
<td class="paramname"><em>ops</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize an mmpkt header with the given values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>mmpkt to initialize. </td></tr>
<tr><td class="paramname">buf</td><td>Pointer to buffer. </td></tr>
<tr><td class="paramname">buf_len</td><td>Length of <code>buf</code>. </td></tr>
<tr><td class="paramname">data_start_offset</td><td>Initial value for <code>start_offset</code>. </td></tr>
<tr><td class="paramname">ops</td><td>Operations data structure. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00125">125</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga1683aaa780a62c81a52861c9796d6e21" name="ga1683aaa780a62c81a52861c9796d6e21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1683aaa780a62c81a52861c9796d6e21">&#9670;&nbsp;</a></span>mmpkt_init_buf()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static struct <a class="el" href="structmmpkt.html">mmpkt</a> * mmpkt_init_buf </td>
<td>(</td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>buf_len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>space_at_start</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>space_at_end</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>metadata_size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const struct <a class="el" href="structmmpkt__ops.html">mmpkt_ops</a> *&#160;</td>
<td class="paramname"><em>ops</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize an mmpkt in a single buffer using the given values. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buf</td><td>Pointer to buffer. </td></tr>
<tr><td class="paramname">buf_len</td><td>Length of <code>buf</code>. </td></tr>
<tr><td class="paramname">space_at_start</td><td>Amount of space to reserve at start of buffer. </td></tr>
<tr><td class="paramname">space_at_end</td><td>Amount of space to reserve at end of buffer. </td></tr>
<tr><td class="paramname">metadata_size</td><td>Size of metadata (0 for no metadata).</td></tr>
<tr><td class="paramname">ops</td><td>Operations data structure.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd><code>buf_len</code> must be large enough to contain the <code>mmkpt</code> header, the data buffer (rounded up to the nearest 4 bytes) and metadata (rounded up to the nearest 4 bytes).</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the initialized <code>mmpkt</code> (will be the same address as <code>buf</code>) or <code>NULL</code> on error (<code>buf</code> length too short). </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00152">152</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="gab7207f5fa460c4a79b908adc8a382835" name="gab7207f5fa460c4a79b908adc8a382835"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab7207f5fa460c4a79b908adc8a382835">&#9670;&nbsp;</a></span>mmpkt_open()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static struct mmpktview * mmpkt_open </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Open a view of the given mmpkt. </p>
<p >Packets must be opened before the contents of their buffer can be accessed. Most of the functions below expect to be passed an opened view of a packet to operate on.</p>
<p >The view must be closed by calling <a class="el" href="group__MMPKT.html#ga24979cd9edbc47d48ea9561ea9ec0288">mmpkt_close()</a> before the packet is released by <a class="el" href="group__MMPKT.html#ga2523fbfac5ac7b4104bb1c14e179650b">mmpkt_release()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>The mmpkt to be opened.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer representing the opened view. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00236">236</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga59a080c847f9e180ac29535d4e62da24" name="ga59a080c847f9e180ac29535d4e62da24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga59a080c847f9e180ac29535d4e62da24">&#9670;&nbsp;</a></span>mmpkt_peek_data_length()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint32_t mmpkt_peek_data_length </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Peek the length of the data currently from an unopened mmpkt. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>The unopened mmpkt to operate on.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the length of the data currently in the mmpkt (note that this is different from the length of the available buffer space). </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00298">298</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga7bf092fdc2a3069ad312b0a5ab0a70b4" name="ga7bf092fdc2a3069ad312b0a5ab0a70b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7bf092fdc2a3069ad312b0a5ab0a70b4">&#9670;&nbsp;</a></span>mmpkt_prepend()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint8_t * mmpkt_prepend </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Reserves space immediately before the data currently in the given mmpkt and returns a pointer to this space. </p>
<p >For a function that also copies data in, see <a class="el" href="group__MMPKT.html#ga9f9b6d169bcbdb36a1b82d87209b58cd">mmpkt_prepend_data()</a>.</p>
<dl class="section warning"><dt>Warning</dt><dd><code>len</code> must be less than or equal to <a class="el" href="group__MMPKT.html#ga54528342c387cc8274c3a86f5a788774">mmpkt_available_space_at_start()</a>.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on. </td></tr>
<tr><td class="paramname">len</td><td>Length of data to be prepended.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the place in the buffer where the data should be put. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00356">356</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga9f9b6d169bcbdb36a1b82d87209b58cd" name="ga9f9b6d169bcbdb36a1b82d87209b58cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9f9b6d169bcbdb36a1b82d87209b58cd">&#9670;&nbsp;</a></span>mmpkt_prepend_data()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mmpkt_prepend_data </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Prepends the given data to the data already in the mmpkt. </p>
<dl class="section warning"><dt>Warning</dt><dd><code>len</code> must be less than or equal to <a class="el" href="group__MMPKT.html#ga54528342c387cc8274c3a86f5a788774">mmpkt_available_space_at_start()</a>.</dd>
<dd>
The memory area pointed to by data must not overlap with the mmpkt data.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on. </td></tr>
<tr><td class="paramname">data</td><td>The data to be prepended. </td></tr>
<tr><td class="paramname">len</td><td>Length of data to be prepended. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00376">376</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga2523fbfac5ac7b4104bb1c14e179650b" name="ga2523fbfac5ac7b4104bb1c14e179650b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2523fbfac5ac7b4104bb1c14e179650b">&#9670;&nbsp;</a></span>mmpkt_release()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void mmpkt_release </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Release a reference to the given mmpkt. </p>
<p >If this was the last reference (<code>addition_ref_cnt</code> was 0) then the mmpkt will be freed using the appropriate op callback.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>The mmpkt to release reference to. May be <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gaa3c059790e8a73f90795cfb2e3729cdd" name="gaa3c059790e8a73f90795cfb2e3729cdd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa3c059790e8a73f90795cfb2e3729cdd">&#9670;&nbsp;</a></span>mmpkt_remove_from_end()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint8_t * mmpkt_remove_from_end </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove data from the end of the mmpkt. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on. </td></tr>
<tr><td class="paramname">len</td><td>Length of data to remove.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the removed data or NULL if the mmpkt data length was less than <code>len</code>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00480">480</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="gacda18b62ce4c62c53d51a3f330dc5869" name="gacda18b62ce4c62c53d51a3f330dc5869"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacda18b62ce4c62c53d51a3f330dc5869">&#9670;&nbsp;</a></span>mmpkt_remove_from_start()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static uint8_t * mmpkt_remove_from_start </td>
<td>(</td>
<td class="paramtype">struct mmpktview *&#160;</td>
<td class="paramname"><em>view</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove data from the start of the mmpkt. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">view</td><td>The opened mmpkt to operate on. </td></tr>
<tr><td class="paramname">len</td><td>Length of data to remove.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the removed data or NULL if the mmpkt data length was less than <code>len</code>. </dd></dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00454">454</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="gadb79b8452e3aecc37363e9273954309b" name="gadb79b8452e3aecc37363e9273954309b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadb79b8452e3aecc37363e9273954309b">&#9670;&nbsp;</a></span>mmpkt_set_next()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mmpkt_set_next </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>next</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the <code>next</code> pointer embedded in the mmpkt. </p>
<p >Used by the <a class="el" href="structmmpkt__list.html" title="Structure that can be used as the head of a linked list of mmpkts that counts its length.">mmpkt_list</a> structure for making linked lists of mmpkts.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>The mmpkt to operate on. </td></tr>
<tr><td class="paramname">next</td><td>The next mmpkt in the chain. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00532">532</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
<a id="ga8f76aca81d14dd42f20422f92db9fc44" name="ga8f76aca81d14dd42f20422f92db9fc44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8f76aca81d14dd42f20422f92db9fc44">&#9670;&nbsp;</a></span>mmpkt_truncate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mmpkt_truncate </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structmmpkt.html">mmpkt</a> *&#160;</td>
<td class="paramname"><em>mmpkt</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Truncate the mmpkt data to the given length. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mmpkt</td><td>mmpkt to operate on. </td></tr>
<tr><td class="paramname">len</td><td>New data length. (Must be less than or equal to the data length of the mmpkt). </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="mmpkt_8h_source.html#l00504">504</a> of file <a class="el" href="mmpkt_8h_source.html">mmpkt.h</a>.</p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.17-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Copyright 2021 Morse Micro </li>
</ul>
</div>
</body>
</html>