MCUXpresso_LPC55S69/docs/MCUXpresso SDK API Referenc.../a00070.html

1850 lines
121 KiB
HTML

<!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.5"/>
<title>MCUXpresso SDK API Reference Manual: OSA_Adapter: Operatin System Abstraction Adapter</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" />
<link href="customdoxygen.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="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<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>API&#160;Reference</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('a00070.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>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><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="#groups">Modules</a> &#124;
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">OSA_Adapter: Operatin System Abstraction Adapter</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:a00288"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html">OSA BM</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00289"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html">OSA FreeRTOS</a></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="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:a00457"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a00457">osa_task_def_tag</a></td></tr>
<tr class="memdesc:a00457"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread Definition structure contains startup information of a thread. <a href="a00070.html#a00457">More...</a><br/></td></tr>
<tr class="separator:a00457"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00458"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a00458">osa_thread_link_tag</a></td></tr>
<tr class="memdesc:a00458"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread Link Definition structure . <a href="a00070.html#a00458">More...</a><br/></td></tr>
<tr class="separator:a00458"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00459"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a00459">osa_time_def_tag</a></td></tr>
<tr class="memdesc:a00459"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition structure contains timer parameters. <a href="a00070.html#a00459">More...</a><br/></td></tr>
<tr class="separator:a00459"><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:ga867065c8e88dbdbef0f300f2117e194b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga867065c8e88dbdbef0f300f2117e194b">OSA_PRIORITY_IDLE</a>&#160;&#160;&#160;(6U)</td></tr>
<tr class="memdesc:ga867065c8e88dbdbef0f300f2117e194b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Priority setting for OSA. <a href="#ga867065c8e88dbdbef0f300f2117e194b">More...</a><br/></td></tr>
<tr class="separator:ga867065c8e88dbdbef0f300f2117e194b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7cec4a84004bc6c3d110f280d0d95cee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga7cec4a84004bc6c3d110f280d0d95cee">osaWaitNone_c</a>&#160;&#160;&#160;((uint32_t)(0))</td></tr>
<tr class="memdesc:ga7cec4a84004bc6c3d110f280d0d95cee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant to pass as timeout value in order to wait indefinitely. <a href="#ga7cec4a84004bc6c3d110f280d0d95cee">More...</a><br/></td></tr>
<tr class="separator:ga7cec4a84004bc6c3d110f280d0d95cee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa5c9288e29c44b484ad2fd9a202ad83b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b">OSA_SEMAPHORE_HANDLE_DEFINE</a>(name)&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gad3acdbbf97a3cfc8ca5f1693b76b7b08">OSA_SEM_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td></tr>
<tr class="memdesc:gaa5c9288e29c44b484ad2fd9a202ad83b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the semaphore handle. <a href="#gaa5c9288e29c44b484ad2fd9a202ad83b">More...</a><br/></td></tr>
<tr class="separator:gaa5c9288e29c44b484ad2fd9a202ad83b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga531290d8fe30f775ac60ed51a518f830"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga531290d8fe30f775ac60ed51a518f830">OSA_MUTEX_HANDLE_DEFINE</a>(name)&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gae182c9d7eb2e70d7a329bef4d7b078ce">OSA_MUTEX_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td></tr>
<tr class="memdesc:ga531290d8fe30f775ac60ed51a518f830"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the mutex handle. <a href="#ga531290d8fe30f775ac60ed51a518f830">More...</a><br/></td></tr>
<tr class="separator:ga531290d8fe30f775ac60ed51a518f830"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga015211790e7199dbc5c1b644258c9fec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga015211790e7199dbc5c1b644258c9fec">OSA_EVENT_HANDLE_DEFINE</a>(name)&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#ga4bdb0a2333c1340dd4935603fac49410">OSA_EVENT_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td></tr>
<tr class="memdesc:ga015211790e7199dbc5c1b644258c9fec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the event handle. <a href="#ga015211790e7199dbc5c1b644258c9fec">More...</a><br/></td></tr>
<tr class="separator:ga015211790e7199dbc5c1b644258c9fec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae72445c7e27eef2fcba730598f1a2c70"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gae72445c7e27eef2fcba730598f1a2c70">OSA_MSGQ_HANDLE_DEFINE</a>(name, numberOfMsgs, msgSize)&#160;&#160;&#160;uint32_t name[((<a class="el" href="a00294.html#ga74037fb2a46e4d4d9688de76087c2f38">OSA_MSGQ_HANDLE_SIZE</a> + numberOfMsgs * msgSize) + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td></tr>
<tr class="memdesc:gae72445c7e27eef2fcba730598f1a2c70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the message queue handle. <a href="#gae72445c7e27eef2fcba730598f1a2c70">More...</a><br/></td></tr>
<tr class="separator:gae72445c7e27eef2fcba730598f1a2c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2ff8ffb5ce5533212f7ed2b4bb2e3fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaa2ff8ffb5ce5533212f7ed2b4bb2e3fd">OSA_TIMER_HANDLE_DEFINE</a>(name)&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gaf782a5bdda47beea47a55cc72cdebff4">OSA_TIMER_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td></tr>
<tr class="memdesc:gaa2ff8ffb5ce5533212f7ed2b4bb2e3fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the timer handle. <a href="#gaa2ff8ffb5ce5533212f7ed2b4bb2e3fd">More...</a><br/></td></tr>
<tr class="separator:gaa2ff8ffb5ce5533212f7ed2b4bb2e3fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga43087dda9f523fa72c8988d9dad35b4b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga43087dda9f523fa72c8988d9dad35b4b">OSA_TASK_HANDLE_DEFINE</a>(name)&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gad93fc627fa71d0ae31fc42da169b2bb8">OSA_TASK_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td></tr>
<tr class="memdesc:ga43087dda9f523fa72c8988d9dad35b4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the TASK handle. <a href="#ga43087dda9f523fa72c8988d9dad35b4b">More...</a><br/></td></tr>
<tr class="separator:ga43087dda9f523fa72c8988d9dad35b4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga9073847cf3f5fa77633bad8284a6255c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9073847cf3f5fa77633bad8284a6255c"></a>
typedef uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga9073847cf3f5fa77633bad8284a6255c">osa_task_priority_t</a></td></tr>
<tr class="memdesc:ga9073847cf3f5fa77633bad8284a6255c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the Task Priority. <br/></td></tr>
<tr class="separator:ga9073847cf3f5fa77633bad8284a6255c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaff220797f9205a2563e90247af14b5d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaff220797f9205a2563e90247af14b5d0"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaff220797f9205a2563e90247af14b5d0">osa_task_handle_t</a></td></tr>
<tr class="memdesc:gaff220797f9205a2563e90247af14b5d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for a task handler. <br/></td></tr>
<tr class="separator:gaff220797f9205a2563e90247af14b5d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacf27b88806f35c8682851354a9360310"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacf27b88806f35c8682851354a9360310"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gacf27b88806f35c8682851354a9360310">osa_task_param_t</a></td></tr>
<tr class="memdesc:gacf27b88806f35c8682851354a9360310"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the parameter to be passed to the task at its creation. <br/></td></tr>
<tr class="separator:gacf27b88806f35c8682851354a9360310"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5dc7b5e6c130c18b4b7d0f3e4edab7ab"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a> )(<a class="el" href="a00070.html#gacf27b88806f35c8682851354a9360310">osa_task_param_t</a> task_param)</td></tr>
<tr class="memdesc:ga5dc7b5e6c130c18b4b7d0f3e4edab7ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for task pointer. <a href="#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">More...</a><br/></td></tr>
<tr class="separator:ga5dc7b5e6c130c18b4b7d0f3e4edab7ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3f5010db706a11ffd2b2c1701f7c2c0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3f5010db706a11ffd2b2c1701f7c2c0e"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a></td></tr>
<tr class="memdesc:ga3f5010db706a11ffd2b2c1701f7c2c0e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the semaphore handler. <br/></td></tr>
<tr class="separator:ga3f5010db706a11ffd2b2c1701f7c2c0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2f32f00a98f059a0de5dce110c4c55a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2f32f00a98f059a0de5dce110c4c55a6"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a></td></tr>
<tr class="memdesc:ga2f32f00a98f059a0de5dce110c4c55a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the mutex handler. <br/></td></tr>
<tr class="separator:ga2f32f00a98f059a0de5dce110c4c55a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga800f6346ade64a29d6b9a8dcec87fa70"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga800f6346ade64a29d6b9a8dcec87fa70"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a></td></tr>
<tr class="memdesc:ga800f6346ade64a29d6b9a8dcec87fa70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the event handler. <br/></td></tr>
<tr class="separator:ga800f6346ade64a29d6b9a8dcec87fa70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga282940489533ac4bf9b98bb7bc3dadd1"><td class="memItemLeft" align="right" valign="top">typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a></td></tr>
<tr class="memdesc:ga282940489533ac4bf9b98bb7bc3dadd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for an event flags group, bit 32 is reserved. <a href="#ga282940489533ac4bf9b98bb7bc3dadd1">More...</a><br/></td></tr>
<tr class="separator:ga282940489533ac4bf9b98bb7bc3dadd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4476723e61d25fbdc15580e7550a7d7e"><td class="memItemLeft" align="right" valign="top">typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga4476723e61d25fbdc15580e7550a7d7e">osa_msg_handle_t</a></td></tr>
<tr class="memdesc:ga4476723e61d25fbdc15580e7550a7d7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Message definition. <a href="#ga4476723e61d25fbdc15580e7550a7d7e">More...</a><br/></td></tr>
<tr class="separator:ga4476723e61d25fbdc15580e7550a7d7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga85cf3c01d07c577a5f3e23e0a40a2b64"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga85cf3c01d07c577a5f3e23e0a40a2b64"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a></td></tr>
<tr class="memdesc:ga85cf3c01d07c577a5f3e23e0a40a2b64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the message queue handler. <br/></td></tr>
<tr class="separator:ga85cf3c01d07c577a5f3e23e0a40a2b64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaed2e72cb6b91506095526418b36c8dbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaed2e72cb6b91506095526418b36c8dbe"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaed2e72cb6b91506095526418b36c8dbe">osa_timer_handle_t</a></td></tr>
<tr class="memdesc:gaed2e72cb6b91506095526418b36c8dbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the Timer handler. <br/></td></tr>
<tr class="separator:gaed2e72cb6b91506095526418b36c8dbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9931a8d0f995122c66bd5ed226617231"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga9931a8d0f995122c66bd5ed226617231">osa_timer_fct_ptr_t</a> )(void const *argument)</td></tr>
<tr class="memdesc:ga9931a8d0f995122c66bd5ed226617231"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the Timer callback function pointer. <a href="#ga9931a8d0f995122c66bd5ed226617231">More...</a><br/></td></tr>
<tr class="separator:ga9931a8d0f995122c66bd5ed226617231"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga01e1851ab5a0c6b79f8e47aa3d1c10aa"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00070.html#a00457">osa_task_def_tag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga01e1851ab5a0c6b79f8e47aa3d1c10aa">osa_task_def_t</a></td></tr>
<tr class="memdesc:ga01e1851ab5a0c6b79f8e47aa3d1c10aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread Definition structure contains startup information of a thread. <a href="#ga01e1851ab5a0c6b79f8e47aa3d1c10aa">More...</a><br/></td></tr>
<tr class="separator:ga01e1851ab5a0c6b79f8e47aa3d1c10aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga41a9403a9204bcc299d9733a627542a0"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00070.html#a00458">osa_thread_link_tag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga41a9403a9204bcc299d9733a627542a0">osa_thread_link_t</a></td></tr>
<tr class="memdesc:ga41a9403a9204bcc299d9733a627542a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread Link Definition structure . <a href="#ga41a9403a9204bcc299d9733a627542a0">More...</a><br/></td></tr>
<tr class="separator:ga41a9403a9204bcc299d9733a627542a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga620791f096d7a42cb81d7cfe9c450c93"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00070.html#a00459">osa_time_def_tag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga620791f096d7a42cb81d7cfe9c450c93">osa_time_def_t</a></td></tr>
<tr class="memdesc:ga620791f096d7a42cb81d7cfe9c450c93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition structure contains timer parameters. <a href="#ga620791f096d7a42cb81d7cfe9c450c93">More...</a><br/></td></tr>
<tr class="separator:ga620791f096d7a42cb81d7cfe9c450c93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga497e2e3d067fb7c0794bd659a9cd17ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga497e2e3d067fb7c0794bd659a9cd17ef"></a>
typedef enum <a class="el" href="a00070.html#ga4fe3d228ba6412aa14d3d778d5a836eb">_osa_timer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga497e2e3d067fb7c0794bd659a9cd17ef">osa_timer_t</a></td></tr>
<tr class="memdesc:ga497e2e3d067fb7c0794bd659a9cd17ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the timer definition. <br/></td></tr>
<tr class="separator:ga497e2e3d067fb7c0794bd659a9cd17ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga60bf015c712d1c58e008dc489c37e101"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga60bf015c712d1c58e008dc489c37e101"></a>
typedef enum <a class="el" href="a00070.html#gacd616eaf24cdb0240bd0d2ace06a1f05">_osa_status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a></td></tr>
<tr class="memdesc:ga60bf015c712d1c58e008dc489c37e101"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the return status of OSA's functions. <br/></td></tr>
<tr class="separator:ga60bf015c712d1c58e008dc489c37e101"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga4fe3d228ba6412aa14d3d778d5a836eb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga4fe3d228ba6412aa14d3d778d5a836eb">_osa_timer</a> { <br/>
&#160;&#160;<a class="el" href="a00070.html#gga4fe3d228ba6412aa14d3d778d5a836ebaa71e8982a1f5766c947bf8687c9a7aa6">KOSA_TimerOnce</a> = 0,
<br/>
&#160;&#160;<a class="el" href="a00070.html#gga4fe3d228ba6412aa14d3d778d5a836eba03986ae7440b4ab4bc55841b0addd550">KOSA_TimerPeriodic</a> = 1
<br/>
}</td></tr>
<tr class="memdesc:ga4fe3d228ba6412aa14d3d778d5a836eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for the timer definition. <a href="a00070.html#ga4fe3d228ba6412aa14d3d778d5a836eb">More...</a><br/></td></tr>
<tr class="separator:ga4fe3d228ba6412aa14d3d778d5a836eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacd616eaf24cdb0240bd0d2ace06a1f05"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gacd616eaf24cdb0240bd0d2ace06a1f05">_osa_status</a> { <br/>
&#160;&#160;<a class="el" href="a00070.html#ggacd616eaf24cdb0240bd0d2ace06a1f05a08c1fb394e824862ca4acfaa8923247e">KOSA_StatusSuccess</a> = kStatus_Success,
<br/>
&#160;&#160;<a class="el" href="a00070.html#ggacd616eaf24cdb0240bd0d2ace06a1f05aa7da37791fcec9058f73d9b7d423baea">KOSA_StatusError</a> = MAKE_STATUS(kStatusGroup_OSA, 1),
<br/>
&#160;&#160;<a class="el" href="a00070.html#ggacd616eaf24cdb0240bd0d2ace06a1f05a4ebd8b2aaf2d24a83712ec36bfeeceda">KOSA_StatusTimeout</a> = MAKE_STATUS(kStatusGroup_OSA, 2),
<br/>
&#160;&#160;<a class="el" href="a00070.html#ggacd616eaf24cdb0240bd0d2ace06a1f05a4ef349b1d5b1898deb64224800666d41">KOSA_StatusIdle</a> = MAKE_STATUS(kStatusGroup_OSA, 3)
<br/>
}</td></tr>
<tr class="memdesc:gacd616eaf24cdb0240bd0d2ace06a1f05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the return status of OSA's functions. <a href="a00070.html#gacd616eaf24cdb0240bd0d2ace06a1f05">More...</a><br/></td></tr>
<tr class="separator:gacd616eaf24cdb0240bd0d2ace06a1f05"><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:gac54affd429ec3df9826fd4289675f8fd"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gac54affd429ec3df9826fd4289675f8fd">OSA_MemoryAllocate</a> (uint32_t memLength)</td></tr>
<tr class="memdesc:gac54affd429ec3df9826fd4289675f8fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserves the requested amount of memory in bytes. <a href="#gac54affd429ec3df9826fd4289675f8fd">More...</a><br/></td></tr>
<tr class="separator:gac54affd429ec3df9826fd4289675f8fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga23a030af2ed423c151e850ef90944c69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga23a030af2ed423c151e850ef90944c69">OSA_MemoryFree</a> (void *p)</td></tr>
<tr class="memdesc:ga23a030af2ed423c151e850ef90944c69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees the memory previously reserved. <a href="#ga23a030af2ed423c151e850ef90944c69">More...</a><br/></td></tr>
<tr class="separator:ga23a030af2ed423c151e850ef90944c69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga48d6e1a6421b55e5aca1565adf072fb9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga48d6e1a6421b55e5aca1565adf072fb9">OSA_EnterCritical</a> (uint32_t *sr)</td></tr>
<tr class="memdesc:ga48d6e1a6421b55e5aca1565adf072fb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enter critical with nesting mode. <a href="#ga48d6e1a6421b55e5aca1565adf072fb9">More...</a><br/></td></tr>
<tr class="separator:ga48d6e1a6421b55e5aca1565adf072fb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9bfe45991e386e628ae70a4ac0f61dd3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga9bfe45991e386e628ae70a4ac0f61dd3">OSA_ExitCritical</a> (uint32_t sr)</td></tr>
<tr class="memdesc:ga9bfe45991e386e628ae70a4ac0f61dd3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exit critical with nesting mode. <a href="#ga9bfe45991e386e628ae70a4ac0f61dd3">More...</a><br/></td></tr>
<tr class="separator:ga9bfe45991e386e628ae70a4ac0f61dd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Task management</h2></td></tr>
<tr class="memitem:ga71c2ee403d32bc0d2df721d04f553a56"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga71c2ee403d32bc0d2df721d04f553a56">OSA_SemaphorePrecreate</a> (<a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a> semaphoreHandle, <a class="el" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a> taskHandler)</td></tr>
<tr class="memdesc:ga71c2ee403d32bc0d2df721d04f553a56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize OSA. <a href="#ga71c2ee403d32bc0d2df721d04f553a56">More...</a><br/></td></tr>
<tr class="separator:ga71c2ee403d32bc0d2df721d04f553a56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga520fc6e953974270f40b6df7b774565b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga520fc6e953974270f40b6df7b774565b">OSA_SemaphoreCreate</a> (<a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a> semaphoreHandle, uint32_t initValue)</td></tr>
<tr class="memdesc:ga520fc6e953974270f40b6df7b774565b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a semaphore with a given value. <a href="#ga520fc6e953974270f40b6df7b774565b">More...</a><br/></td></tr>
<tr class="separator:ga520fc6e953974270f40b6df7b774565b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac1cd818c51983961b881a56693e982b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gac1cd818c51983961b881a56693e982b0">OSA_SemaphoreCreateBinary</a> (<a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a> semaphoreHandle)</td></tr>
<tr class="memdesc:gac1cd818c51983961b881a56693e982b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a binary semaphore. <a href="#gac1cd818c51983961b881a56693e982b0">More...</a><br/></td></tr>
<tr class="separator:gac1cd818c51983961b881a56693e982b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7fd5c6b44421ba9cbe2157c2a279f1fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga7fd5c6b44421ba9cbe2157c2a279f1fb">OSA_SemaphoreDestroy</a> (<a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a> semaphoreHandle)</td></tr>
<tr class="memdesc:ga7fd5c6b44421ba9cbe2157c2a279f1fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a previously created semaphore. <a href="#ga7fd5c6b44421ba9cbe2157c2a279f1fb">More...</a><br/></td></tr>
<tr class="separator:ga7fd5c6b44421ba9cbe2157c2a279f1fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf2db64a154b1b13f290c6bfce4d18368"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaf2db64a154b1b13f290c6bfce4d18368">OSA_SemaphoreWait</a> (<a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a> semaphoreHandle, uint32_t millisec)</td></tr>
<tr class="memdesc:gaf2db64a154b1b13f290c6bfce4d18368"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pending a semaphore with timeout. <a href="#gaf2db64a154b1b13f290c6bfce4d18368">More...</a><br/></td></tr>
<tr class="separator:gaf2db64a154b1b13f290c6bfce4d18368"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7ff528e4e3c7e97ce452bdcdc1e7accf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga7ff528e4e3c7e97ce452bdcdc1e7accf">OSA_SemaphorePost</a> (<a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a> semaphoreHandle)</td></tr>
<tr class="memdesc:ga7ff528e4e3c7e97ce452bdcdc1e7accf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signals for someone waiting on the semaphore to wake up. <a href="#ga7ff528e4e3c7e97ce452bdcdc1e7accf">More...</a><br/></td></tr>
<tr class="separator:ga7ff528e4e3c7e97ce452bdcdc1e7accf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c72a01cbbf983b33c3a104470929a70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga7c72a01cbbf983b33c3a104470929a70">OSA_MutexCreate</a> (<a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a> mutexHandle)</td></tr>
<tr class="memdesc:ga7c72a01cbbf983b33c3a104470929a70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an unlocked mutex. <a href="#ga7c72a01cbbf983b33c3a104470929a70">More...</a><br/></td></tr>
<tr class="separator:ga7c72a01cbbf983b33c3a104470929a70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga57f9be7f92c26763509b3ef141441457"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga57f9be7f92c26763509b3ef141441457">OSA_MutexLock</a> (<a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a> mutexHandle, uint32_t millisec)</td></tr>
<tr class="memdesc:ga57f9be7f92c26763509b3ef141441457"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for a mutex and locks it. <a href="#ga57f9be7f92c26763509b3ef141441457">More...</a><br/></td></tr>
<tr class="separator:ga57f9be7f92c26763509b3ef141441457"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga31a92296612f31ac8746f0e4bb18773f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga31a92296612f31ac8746f0e4bb18773f">OSA_MutexUnlock</a> (<a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a> mutexHandle)</td></tr>
<tr class="memdesc:ga31a92296612f31ac8746f0e4bb18773f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unlocks a previously locked mutex. <a href="#ga31a92296612f31ac8746f0e4bb18773f">More...</a><br/></td></tr>
<tr class="separator:ga31a92296612f31ac8746f0e4bb18773f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaddee7117a759dfbf280e4d5722af413d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaddee7117a759dfbf280e4d5722af413d">OSA_MutexDestroy</a> (<a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a> mutexHandle)</td></tr>
<tr class="memdesc:gaddee7117a759dfbf280e4d5722af413d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a previously created mutex. <a href="#gaddee7117a759dfbf280e4d5722af413d">More...</a><br/></td></tr>
<tr class="separator:gaddee7117a759dfbf280e4d5722af413d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga11048c51ec10f64e7d358f7335dc5ddf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga11048c51ec10f64e7d358f7335dc5ddf">OSA_EventPrecreate</a> (<a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a> eventHandle, <a class="el" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a> taskHandler)</td></tr>
<tr class="memdesc:ga11048c51ec10f64e7d358f7335dc5ddf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pre-initializes an event object. <a href="#ga11048c51ec10f64e7d358f7335dc5ddf">More...</a><br/></td></tr>
<tr class="separator:ga11048c51ec10f64e7d358f7335dc5ddf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2682738ca2e392986bbecec9caf13fbc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga2682738ca2e392986bbecec9caf13fbc">OSA_EventCreate</a> (<a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a> eventHandle, uint8_t autoClear)</td></tr>
<tr class="memdesc:ga2682738ca2e392986bbecec9caf13fbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes an event object with all flags cleared. <a href="#ga2682738ca2e392986bbecec9caf13fbc">More...</a><br/></td></tr>
<tr class="separator:ga2682738ca2e392986bbecec9caf13fbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2842bedab2151c907dda255d74212926"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga2842bedab2151c907dda255d74212926">OSA_EventSet</a> (<a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a> eventHandle, <a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> flagsToSet)</td></tr>
<tr class="memdesc:ga2842bedab2151c907dda255d74212926"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets one or more event flags. <a href="#ga2842bedab2151c907dda255d74212926">More...</a><br/></td></tr>
<tr class="separator:ga2842bedab2151c907dda255d74212926"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga60083cea29f64c4408b09eca5cdf262f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga60083cea29f64c4408b09eca5cdf262f">OSA_EventClear</a> (<a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a> eventHandle, <a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> flagsToClear)</td></tr>
<tr class="memdesc:ga60083cea29f64c4408b09eca5cdf262f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears one or more flags. <a href="#ga60083cea29f64c4408b09eca5cdf262f">More...</a><br/></td></tr>
<tr class="separator:ga60083cea29f64c4408b09eca5cdf262f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga283f86998b4820121c1d75304bdfa050"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga283f86998b4820121c1d75304bdfa050">OSA_EventGet</a> (<a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a> eventHandle, <a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> flagsMask, <a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> *pFlagsOfEvent)</td></tr>
<tr class="memdesc:ga283f86998b4820121c1d75304bdfa050"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get event's flags. <a href="#ga283f86998b4820121c1d75304bdfa050">More...</a><br/></td></tr>
<tr class="separator:ga283f86998b4820121c1d75304bdfa050"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab70ceaa8eb113386f4ce458e87b1d0fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gab70ceaa8eb113386f4ce458e87b1d0fe">OSA_EventWait</a> (<a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a> eventHandle, <a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> flagsToWait, uint8_t waitAll, uint32_t millisec, <a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> *pSetFlags)</td></tr>
<tr class="memdesc:gab70ceaa8eb113386f4ce458e87b1d0fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits for specified event flags to be set. <a href="#gab70ceaa8eb113386f4ce458e87b1d0fe">More...</a><br/></td></tr>
<tr class="separator:gab70ceaa8eb113386f4ce458e87b1d0fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa9f5850e1ac5b6447a4ecfc38f71d85c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaa9f5850e1ac5b6447a4ecfc38f71d85c">OSA_EventDestroy</a> (<a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a> eventHandle)</td></tr>
<tr class="memdesc:gaa9f5850e1ac5b6447a4ecfc38f71d85c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a previously created event object. <a href="#gaa9f5850e1ac5b6447a4ecfc38f71d85c">More...</a><br/></td></tr>
<tr class="separator:gaa9f5850e1ac5b6447a4ecfc38f71d85c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7e4faea7f46db9008dd266db81175c7f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga7e4faea7f46db9008dd266db81175c7f">OSA_MsgQCreate</a> (<a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a> msgqHandle, uint32_t msgNo, uint32_t msgSize)</td></tr>
<tr class="memdesc:ga7e4faea7f46db9008dd266db81175c7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a message queue. <a href="#ga7e4faea7f46db9008dd266db81175c7f">More...</a><br/></td></tr>
<tr class="separator:ga7e4faea7f46db9008dd266db81175c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96e7ae6b05fb24b380eaebc5a355b4dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga96e7ae6b05fb24b380eaebc5a355b4dd">OSA_MsgQPut</a> (<a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a> msgqHandle, <a class="el" href="a00070.html#ga4476723e61d25fbdc15580e7550a7d7e">osa_msg_handle_t</a> pMessage)</td></tr>
<tr class="memdesc:ga96e7ae6b05fb24b380eaebc5a355b4dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puts a message at the end of the queue. <a href="#ga96e7ae6b05fb24b380eaebc5a355b4dd">More...</a><br/></td></tr>
<tr class="separator:ga96e7ae6b05fb24b380eaebc5a355b4dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga606231457e67222e4c1a9ec0ec496ad0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga606231457e67222e4c1a9ec0ec496ad0">OSA_MsgQGet</a> (<a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a> msgqHandle, <a class="el" href="a00070.html#ga4476723e61d25fbdc15580e7550a7d7e">osa_msg_handle_t</a> pMessage, uint32_t millisec)</td></tr>
<tr class="memdesc:ga606231457e67222e4c1a9ec0ec496ad0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads and remove a message at the head of the queue. <a href="#ga606231457e67222e4c1a9ec0ec496ad0">More...</a><br/></td></tr>
<tr class="separator:ga606231457e67222e4c1a9ec0ec496ad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaca0a3d51780350ac37fb3d349407ec98"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaca0a3d51780350ac37fb3d349407ec98">OSA_MsgQAvailableMsgs</a> (<a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a> msgqHandle)</td></tr>
<tr class="memdesc:gaca0a3d51780350ac37fb3d349407ec98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the available message. <a href="#gaca0a3d51780350ac37fb3d349407ec98">More...</a><br/></td></tr>
<tr class="separator:gaca0a3d51780350ac37fb3d349407ec98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8d20a741c86cd504888ba518d426f69b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga8d20a741c86cd504888ba518d426f69b">OSA_MsgQDestroy</a> (<a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a> msgqHandle)</td></tr>
<tr class="memdesc:ga8d20a741c86cd504888ba518d426f69b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a previously created queue. <a href="#ga8d20a741c86cd504888ba518d426f69b">More...</a><br/></td></tr>
<tr class="separator:ga8d20a741c86cd504888ba518d426f69b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga65d224b9c116eb76ecc820fbe02e5168"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga65d224b9c116eb76ecc820fbe02e5168"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga65d224b9c116eb76ecc820fbe02e5168">OSA_InterruptEnable</a> (void)</td></tr>
<tr class="memdesc:ga65d224b9c116eb76ecc820fbe02e5168"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable all interrupts. <br/></td></tr>
<tr class="separator:ga65d224b9c116eb76ecc820fbe02e5168"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0dafafbe7ff826d4087e6dafc873c89c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0dafafbe7ff826d4087e6dafc873c89c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga0dafafbe7ff826d4087e6dafc873c89c">OSA_InterruptDisable</a> (void)</td></tr>
<tr class="memdesc:ga0dafafbe7ff826d4087e6dafc873c89c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable all interrupts. <br/></td></tr>
<tr class="separator:ga0dafafbe7ff826d4087e6dafc873c89c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa3acb924a8f0a091ec10f8f785986388"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa3acb924a8f0a091ec10f8f785986388"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaa3acb924a8f0a091ec10f8f785986388">OSA_EnableIRQGlobal</a> (void)</td></tr>
<tr class="memdesc:gaa3acb924a8f0a091ec10f8f785986388"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable all interrupts using PRIMASK. <br/></td></tr>
<tr class="separator:gaa3acb924a8f0a091ec10f8f785986388"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa52edae9c3381e234e0720c1b930f081"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa52edae9c3381e234e0720c1b930f081"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gaa52edae9c3381e234e0720c1b930f081">OSA_DisableIRQGlobal</a> (void)</td></tr>
<tr class="memdesc:gaa52edae9c3381e234e0720c1b930f081"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable all interrupts using PRIMASK. <br/></td></tr>
<tr class="separator:gaa52edae9c3381e234e0720c1b930f081"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab3cef36da7d7d5ff742bc1d8a1a704f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab3cef36da7d7d5ff742bc1d8a1a704f2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gab3cef36da7d7d5ff742bc1d8a1a704f2">OSA_DisableScheduler</a> (void)</td></tr>
<tr class="memdesc:gab3cef36da7d7d5ff742bc1d8a1a704f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable the scheduling of any task. <br/></td></tr>
<tr class="separator:gab3cef36da7d7d5ff742bc1d8a1a704f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada4e67b8ce3311217e09806f1e15110a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gada4e67b8ce3311217e09806f1e15110a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gada4e67b8ce3311217e09806f1e15110a">OSA_EnableScheduler</a> (void)</td></tr>
<tr class="memdesc:gada4e67b8ce3311217e09806f1e15110a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable the scheduling of any task. <br/></td></tr>
<tr class="separator:gada4e67b8ce3311217e09806f1e15110a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabc3512ab77e1abdf0942621caa41a18e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#gabc3512ab77e1abdf0942621caa41a18e">OSA_TimeDelay</a> (uint32_t millisec)</td></tr>
<tr class="memdesc:gabc3512ab77e1abdf0942621caa41a18e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delays execution for a number of milliseconds. <a href="#gabc3512ab77e1abdf0942621caa41a18e">More...</a><br/></td></tr>
<tr class="separator:gabc3512ab77e1abdf0942621caa41a18e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga13573345b625c22855e4c1d02fdbb284"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga13573345b625c22855e4c1d02fdbb284">OSA_TimeGetMsec</a> (void)</td></tr>
<tr class="memdesc:ga13573345b625c22855e4c1d02fdbb284"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function gets current time in milliseconds. <a href="#ga13573345b625c22855e4c1d02fdbb284">More...</a><br/></td></tr>
<tr class="separator:ga13573345b625c22855e4c1d02fdbb284"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga16804c3d8d0b5f8ce3d4f9915a30bafe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ga16804c3d8d0b5f8ce3d4f9915a30bafe">OSA_InstallIntHandler</a> (uint32_t IRQNumber, void(*handler)(void))</td></tr>
<tr class="memdesc:ga16804c3d8d0b5f8ce3d4f9915a30bafe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs the interrupt handler. <a href="#ga16804c3d8d0b5f8ce3d4f9915a30bafe">More...</a><br/></td></tr>
<tr class="separator:ga16804c3d8d0b5f8ce3d4f9915a30bafe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00457" id="a00457"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osa_task_def_tag</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:ab7e871b449e942a1030b09b5bdfd91f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab7e871b449e942a1030b09b5bdfd91f8"></a>
<a class="el" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ab7e871b449e942a1030b09b5bdfd91f8">pthread</a></td></tr>
<tr class="memdesc:ab7e871b449e942a1030b09b5bdfd91f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">start address of thread function <br/></td></tr>
<tr class="separator:ab7e871b449e942a1030b09b5bdfd91f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bf5f6296f271a6253add6a205f01d4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bf5f6296f271a6253add6a205f01d4d"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a8bf5f6296f271a6253add6a205f01d4d">tpriority</a></td></tr>
<tr class="memdesc:a8bf5f6296f271a6253add6a205f01d4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">initial thread priority <br/></td></tr>
<tr class="separator:a8bf5f6296f271a6253add6a205f01d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79c0d6019b5496b9942686005d6a9935"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79c0d6019b5496b9942686005d6a9935"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a79c0d6019b5496b9942686005d6a9935">instances</a></td></tr>
<tr class="memdesc:a79c0d6019b5496b9942686005d6a9935"><td class="mdescLeft">&#160;</td><td class="mdescRight">maximum number of instances of that thread function <br/></td></tr>
<tr class="separator:a79c0d6019b5496b9942686005d6a9935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bb000e21880529ba2b366f23f9b8148"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8bb000e21880529ba2b366f23f9b8148"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a8bb000e21880529ba2b366f23f9b8148">stacksize</a></td></tr>
<tr class="memdesc:a8bb000e21880529ba2b366f23f9b8148"><td class="mdescLeft">&#160;</td><td class="mdescRight">stack size requirements in bytes; 0 is default stack size <br/></td></tr>
<tr class="separator:a8bb000e21880529ba2b366f23f9b8148"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5e287112b5be61254a4679190561c09"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5e287112b5be61254a4679190561c09"></a>
uint32_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ac5e287112b5be61254a4679190561c09">tstack</a></td></tr>
<tr class="memdesc:ac5e287112b5be61254a4679190561c09"><td class="mdescLeft">&#160;</td><td class="mdescRight">stack pointer, which can be used on freertos static allocation <br/></td></tr>
<tr class="separator:ac5e287112b5be61254a4679190561c09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9312e684f5d7e956b5dea1837bb3b476"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9312e684f5d7e956b5dea1837bb3b476"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a9312e684f5d7e956b5dea1837bb3b476">tlink</a></td></tr>
<tr class="memdesc:a9312e684f5d7e956b5dea1837bb3b476"><td class="mdescLeft">&#160;</td><td class="mdescRight">link pointer <br/></td></tr>
<tr class="separator:a9312e684f5d7e956b5dea1837bb3b476"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a067966102a7619a09eeb90c55d660461"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a067966102a7619a09eeb90c55d660461"></a>
uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a067966102a7619a09eeb90c55d660461">tname</a></td></tr>
<tr class="memdesc:a067966102a7619a09eeb90c55d660461"><td class="mdescLeft">&#160;</td><td class="mdescRight">name pointer <br/></td></tr>
<tr class="separator:a067966102a7619a09eeb90c55d660461"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a523059c89cce8a47bce3b437a71043a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a523059c89cce8a47bce3b437a71043a3"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a523059c89cce8a47bce3b437a71043a3">useFloat</a></td></tr>
<tr class="memdesc:a523059c89cce8a47bce3b437a71043a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">is use float <br/></td></tr>
<tr class="separator:a523059c89cce8a47bce3b437a71043a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<a name="a00458" id="a00458"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osa_thread_link_tag</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a8b9aaa9e04e496649648071ccca553c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b9aaa9e04e496649648071ccca553c7"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a8b9aaa9e04e496649648071ccca553c7">link</a> [12]</td></tr>
<tr class="memdesc:a8b9aaa9e04e496649648071ccca553c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">link <br/></td></tr>
<tr class="separator:a8b9aaa9e04e496649648071ccca553c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4d6fe617cab4d548dcd7316c0c1440d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4d6fe617cab4d548dcd7316c0c1440d"></a>
<a class="el" href="a00070.html#gaff220797f9205a2563e90247af14b5d0">osa_task_handle_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ad4d6fe617cab4d548dcd7316c0c1440d">osThreadId</a></td></tr>
<tr class="memdesc:ad4d6fe617cab4d548dcd7316c0c1440d"><td class="mdescLeft">&#160;</td><td class="mdescRight">thread id <br/></td></tr>
<tr class="separator:ad4d6fe617cab4d548dcd7316c0c1440d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab67bd9696cce87799d9a041db94728ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab67bd9696cce87799d9a041db94728ab"></a>
<a class="el" href="a00070.html#ga01e1851ab5a0c6b79f8e47aa3d1c10aa">osa_task_def_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#ab67bd9696cce87799d9a041db94728ab">osThreadDefHandle</a></td></tr>
<tr class="memdesc:ab67bd9696cce87799d9a041db94728ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">pointer of thread define handle <br/></td></tr>
<tr class="separator:ab67bd9696cce87799d9a041db94728ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18023851bae8690a2a3785cb711aef01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a18023851bae8690a2a3785cb711aef01"></a>
uint32_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00070.html#a18023851bae8690a2a3785cb711aef01">osThreadStackHandle</a></td></tr>
<tr class="memdesc:a18023851bae8690a2a3785cb711aef01"><td class="mdescLeft">&#160;</td><td class="mdescRight">pointer of thread stack handle <br/></td></tr>
<tr class="separator:a18023851bae8690a2a3785cb711aef01"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<a name="a00459" id="a00459"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct osa_time_def_tag</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga867065c8e88dbdbef0f300f2117e194b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_PRIORITY_IDLE&#160;&#160;&#160;(6U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga7cec4a84004bc6c3d110f280d0d95cee"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define osaWaitNone_c&#160;&#160;&#160;((uint32_t)(0))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gaa5c9288e29c44b484ad2fd9a202ad83b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_SEMAPHORE_HANDLE_DEFINE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gad3acdbbf97a3cfc8ca5f1693b76b7b08">OSA_SEM_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td>
</tr>
</table>
</div><div class="memdoc">
<p>This macro is used to define a 4 byte aligned semaphore handle. Then use "(osa_semaphore_handle_t)name" to get the semaphore handle.</p>
<p>The macro should be global and could be optional. You could also define semaphore handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b">OSA_SEMAPHORE_HANDLE_DEFINE</a>(semaphoreHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name string of the semaphore handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga531290d8fe30f775ac60ed51a518f830"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_MUTEX_HANDLE_DEFINE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gae182c9d7eb2e70d7a329bef4d7b078ce">OSA_MUTEX_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td>
</tr>
</table>
</div><div class="memdoc">
<p>This macro is used to define a 4 byte aligned mutex handle. Then use "(osa_mutex_handle_t)name" to get the mutex handle.</p>
<p>The macro should be global and could be optional. You could also define mutex handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#ga531290d8fe30f775ac60ed51a518f830">OSA_MUTEX_HANDLE_DEFINE</a>(mutexHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name string of the mutex handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga015211790e7199dbc5c1b644258c9fec"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_EVENT_HANDLE_DEFINE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#ga4bdb0a2333c1340dd4935603fac49410">OSA_EVENT_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td>
</tr>
</table>
</div><div class="memdoc">
<p>This macro is used to define a 4 byte aligned event handle. Then use "(osa_event_handle_t)name" to get the event handle.</p>
<p>The macro should be global and could be optional. You could also define event handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#ga015211790e7199dbc5c1b644258c9fec">OSA_EVENT_HANDLE_DEFINE</a>(eventHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name string of the event handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae72445c7e27eef2fcba730598f1a2c70"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_MSGQ_HANDLE_DEFINE</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">numberOfMsgs, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">msgSize&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;uint32_t name[((<a class="el" href="a00294.html#ga74037fb2a46e4d4d9688de76087c2f38">OSA_MSGQ_HANDLE_SIZE</a> + numberOfMsgs * msgSize) + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td>
</tr>
</table>
</div><div class="memdoc">
<p>This macro is used to define a 4 byte aligned message queue handle. Then use "(osa_msgq_handle_t)name" to get the message queue handle.</p>
<p>The macro should be global and could be optional. You could also define message queue handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#gae72445c7e27eef2fcba730598f1a2c70">OSA_MSGQ_HANDLE_DEFINE</a>(msgqHandle, 3, <span class="keyword">sizeof</span>(msgStruct));</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name string of the message queue handle. </td></tr>
<tr><td class="paramname">numberOfMsgs</td><td>Number of messages. </td></tr>
<tr><td class="paramname">msgSize</td><td>Message size. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa2ff8ffb5ce5533212f7ed2b4bb2e3fd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_TIMER_HANDLE_DEFINE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gaf782a5bdda47beea47a55cc72cdebff4">OSA_TIMER_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td>
</tr>
</table>
</div><div class="memdoc">
<p>This macro is used to define a 4 byte aligned timer handle. Then use "(osa_timer_handle_t)name" to get the timer handle.</p>
<p>The macro should be global and could be optional. You could also define timer handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#gaa2ff8ffb5ce5533212f7ed2b4bb2e3fd">OSA_TIMER_HANDLE_DEFINE</a>(timerHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name string of the timer handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga43087dda9f523fa72c8988d9dad35b4b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_TASK_HANDLE_DEFINE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00294.html#gad93fc627fa71d0ae31fc42da169b2bb8">OSA_TASK_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td>
</tr>
</table>
</div><div class="memdoc">
<p>This macro is used to define a 4 byte aligned TASK handle. Then use "(osa_task_handle_t)name" to get the TASK handle.</p>
<p>The macro should be global and could be optional. You could also define TASK handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#ga43087dda9f523fa72c8988d9dad35b4b">OSA_TASK_HANDLE_DEFINE</a>(taskHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name string of the TASK handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga5dc7b5e6c130c18b4b7d0f3e4edab7ab"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* osa_task_ptr_t)(<a class="el" href="a00070.html#gacf27b88806f35c8682851354a9360310">osa_task_param_t</a> task_param)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Task prototype declaration </p>
</div>
</div>
<a class="anchor" id="ga282940489533ac4bf9b98bb7bc3dadd1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef uint32_t <a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga4476723e61d25fbdc15580e7550a7d7e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void* <a class="el" href="a00070.html#ga4476723e61d25fbdc15580e7550a7d7e">osa_msg_handle_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga9931a8d0f995122c66bd5ed226617231"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef void(* osa_timer_fct_ptr_t)(void const *argument)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga01e1851ab5a0c6b79f8e47aa3d1c10aa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00070.html#a00457">osa_task_def_tag</a> <a class="el" href="a00070.html#ga01e1851ab5a0c6b79f8e47aa3d1c10aa">osa_task_def_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga41a9403a9204bcc299d9733a627542a0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00070.html#a00458">osa_thread_link_tag</a> <a class="el" href="a00070.html#ga41a9403a9204bcc299d9733a627542a0">osa_thread_link_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga620791f096d7a42cb81d7cfe9c450c93"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="a00070.html#a00459">osa_time_def_tag</a> <a class="el" href="a00070.html#ga620791f096d7a42cb81d7cfe9c450c93">osa_time_def_t</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga4fe3d228ba6412aa14d3d778d5a836eb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00070.html#ga4fe3d228ba6412aa14d3d778d5a836eb">_osa_timer</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga4fe3d228ba6412aa14d3d778d5a836ebaa71e8982a1f5766c947bf8687c9a7aa6"></a>KOSA_TimerOnce</em>&nbsp;</td><td class="fielddoc">
<p>one-shot timer </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga4fe3d228ba6412aa14d3d778d5a836eba03986ae7440b4ab4bc55841b0addd550"></a>KOSA_TimerPeriodic</em>&nbsp;</td><td class="fielddoc">
<p>repeating timer </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gacd616eaf24cdb0240bd0d2ace06a1f05"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00070.html#gacd616eaf24cdb0240bd0d2ace06a1f05">_osa_status</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="ggacd616eaf24cdb0240bd0d2ace06a1f05a08c1fb394e824862ca4acfaa8923247e"></a>KOSA_StatusSuccess</em>&nbsp;</td><td class="fielddoc">
<p>Success. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggacd616eaf24cdb0240bd0d2ace06a1f05aa7da37791fcec9058f73d9b7d423baea"></a>KOSA_StatusError</em>&nbsp;</td><td class="fielddoc">
<p>Failed. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggacd616eaf24cdb0240bd0d2ace06a1f05a4ebd8b2aaf2d24a83712ec36bfeeceda"></a>KOSA_StatusTimeout</em>&nbsp;</td><td class="fielddoc">
<p>Timeout occurs while waiting. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggacd616eaf24cdb0240bd0d2ace06a1f05a4ef349b1d5b1898deb64224800666d41"></a>KOSA_StatusIdle</em>&nbsp;</td><td class="fielddoc">
<p>Used for bare metal only, the wait object is not ready and timeout still not occur. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gac54affd429ec3df9826fd4289675f8fd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* OSA_MemoryAllocate </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>memLength</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The function is used to reserve the requested amount of memory in bytes and initializes it to 0.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">memLength</td><td>Amount of bytes to reserve.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the reserved memory. NULL if memory can't be allocated. </dd></dl>
</div>
</div>
<a class="anchor" id="ga23a030af2ed423c151e850ef90944c69"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OSA_MemoryFree </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The function is used to free the memory block previously reserved.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to the start of the memory block previously reserved. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga48d6e1a6421b55e5aca1565adf072fb9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OSA_EnterCritical </td>
<td>(</td>
<td class="paramtype">uint32_t *&#160;</td>
<td class="paramname"><em>sr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sr</td><td>Store current status and return to caller. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9bfe45991e386e628ae70a4ac0f61dd3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OSA_ExitCritical </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>sr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sr</td><td>Previous status to restore. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga71c2ee403d32bc0d2df721d04f553a56"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_SemaphorePrecreate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>&#160;</td>
<td class="paramname"><em>semaphoreHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a>&#160;</td>
<td class="paramname"><em>taskHandler</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used to setup the basic services.</p>
<p>Example below shows how to use this API to create the task handle. </p>
<div class="fragment"><div class="line">* OSA_Init();</div>
<div class="line">* </div>
</div><!-- fragment --><p>Start OSA schedule.</p>
<p>This function is used to start OSA scheduler.</p>
<p>Example below shows how to use this API to start osa schedule. </p>
<div class="fragment"><div class="line">* OSA_Start();</div>
<div class="line">* </div>
</div><!-- fragment --><p>Pre-creates a semaphore.</p>
<p>This function pre-creates a semaphore with the task handler.</p>
<p>Example below shows how to use this API to create the semaphore handle. </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b">OSA_SEMAPHORE_HANDLE_DEFINE</a>(semaphoreHandle);</div>
<div class="line">* <a class="code" href="a00070.html#ga520fc6e953974270f40b6df7b774565b">OSA_SemaphoreCreate</a>((<a class="code" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>)semaphoreHandle, (<a class="code" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a>)taskHandler);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">semaphoreHandle</td><td>Pointer to a memory space of size OSA_SEM_HANDLE_SIZE allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b" title="Defines the semaphore handle. ">OSA_SEMAPHORE_HANDLE_DEFINE(semaphoreHandle)</a>; or uint32_t semaphoreHandle[((OSA_SEM_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; </td></tr>
<tr><td class="paramname">taskHandler</td><td>The task handler this semaphore is used by.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>the new semaphore if the semaphore is created successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga520fc6e953974270f40b6df7b774565b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_SemaphoreCreate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>&#160;</td>
<td class="paramname"><em>semaphoreHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>initValue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function creates a semaphore and sets the value to the parameter initValue.</p>
<p>Example below shows how to use this API to create the semaphore handle. </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b">OSA_SEMAPHORE_HANDLE_DEFINE</a>(semaphoreHandle);</div>
<div class="line">* <a class="code" href="a00070.html#ga520fc6e953974270f40b6df7b774565b">OSA_SemaphoreCreate</a>((<a class="code" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>)semaphoreHandle, 0xff);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">semaphoreHandle</td><td>Pointer to a memory space of size OSA_SEM_HANDLE_SIZE allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b" title="Defines the semaphore handle. ">OSA_SEMAPHORE_HANDLE_DEFINE(semaphoreHandle)</a>; or uint32_t semaphoreHandle[((OSA_SEM_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; </td></tr>
<tr><td class="paramname">initValue</td><td>Initial value the semaphore will be set to.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>the new semaphore if the semaphore is created successfully. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>if the semaphore can not be created. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac1cd818c51983961b881a56693e982b0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_SemaphoreCreateBinary </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>&#160;</td>
<td class="paramname"><em>semaphoreHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function creates a binary semaphore</p>
<p>Example below shows how to use this API to create the semaphore handle. </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b">OSA_SEMAPHORE_HANDLE_DEFINE</a>(semaphoreHandle);</div>
<div class="line">* <a class="code" href="a00070.html#gac1cd818c51983961b881a56693e982b0">OSA_SemaphoreCreateBinary</a>((<a class="code" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>)semaphoreHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">semaphoreHandle</td><td>Pointer to a memory space of size OSA_SEM_HANDLE_SIZE allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00070.html#gaa5c9288e29c44b484ad2fd9a202ad83b" title="Defines the semaphore handle. ">OSA_SEMAPHORE_HANDLE_DEFINE(semaphoreHandle)</a>; or uint32_t semaphoreHandle[((OSA_SEM_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))];</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>the new binary semaphore if the binary semaphore is created successfully. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>if the binary semaphore can not be created. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7fd5c6b44421ba9cbe2157c2a279f1fb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_SemaphoreDestroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>&#160;</td>
<td class="paramname"><em>semaphoreHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">semaphoreHandle</td><td>The semaphore handle. The macro SEMAPHORE_HANDLE_BUFFER_GET is used to get the semaphore buffer pointer, and should not be used before the macro SEMAPHORE_HANDLE_BUFFER_DEFINE is used.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The semaphore is successfully destroyed. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>The semaphore can not be destroyed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf2db64a154b1b13f290c6bfce4d18368"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_SemaphoreWait </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>&#160;</td>
<td class="paramname"><em>semaphoreHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function checks the semaphore's counting value. If it is positive, decreases it and returns KOSA_StatusSuccess. Otherwise, a timeout is used to wait.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">semaphoreHandle</td><td>The semaphore handle. </td></tr>
<tr><td class="paramname">millisec</td><td>The maximum number of milliseconds to wait if semaphore is not positive. Pass osaWaitForever_c to wait indefinitely, pass 0 will return KOSA_StatusTimeout immediately.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The semaphore is received. </td></tr>
<tr><td class="paramname">KOSA_StatusTimeout</td><td>The semaphore is not received within the specified 'timeout'. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>An incorrect parameter was passed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7ff528e4e3c7e97ce452bdcdc1e7accf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_SemaphorePost </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga3f5010db706a11ffd2b2c1701f7c2c0e">osa_semaphore_handle_t</a>&#160;</td>
<td class="paramname"><em>semaphoreHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Wakes up one task that is waiting on the semaphore. If no task is waiting, increases the semaphore's counting value.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">semaphoreHandle</td><td>The semaphore handle to signal.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The semaphore is successfully signaled. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>The object can not be signaled or invalid parameter. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7c72a01cbbf983b33c3a104470929a70"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MutexCreate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a>&#160;</td>
<td class="paramname"><em>mutexHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function creates a non-recursive mutex and sets it to unlocked status.</p>
<p>Example below shows how to use this API to create the mutex handle. </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#ga531290d8fe30f775ac60ed51a518f830">OSA_MUTEX_HANDLE_DEFINE</a>(mutexHandle);</div>
<div class="line">* <a class="code" href="a00070.html#ga7c72a01cbbf983b33c3a104470929a70">OSA_MutexCreate</a>((<a class="code" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a>)mutexHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mutexHandle</td><td>Pointer to a memory space of size OSA_MUTEX_HANDLE_SIZE allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00070.html#ga531290d8fe30f775ac60ed51a518f830" title="Defines the mutex handle. ">OSA_MUTEX_HANDLE_DEFINE(mutexHandle)</a>; or uint32_t mutexHandle[((OSA_MUTEX_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>the new mutex if the mutex is created successfully. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>if the mutex can not be created. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga57f9be7f92c26763509b3ef141441457"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MutexLock </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a>&#160;</td>
<td class="paramname"><em>mutexHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function checks the mutex's status. If it is unlocked, locks it and returns the KOSA_StatusSuccess. Otherwise, waits for a timeout in milliseconds to lock.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mutexHandle</td><td>The mutex handle. </td></tr>
<tr><td class="paramname">millisec</td><td>The maximum number of milliseconds to wait for the mutex. If the mutex is locked, Pass the value osaWaitForever_c will wait indefinitely, pass 0 will return KOSA_StatusTimeout immediately.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The mutex is locked successfully. </td></tr>
<tr><td class="paramname">KOSA_StatusTimeout</td><td>Timeout occurred. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>Incorrect parameter was passed.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This is non-recursive mutex, a task can not try to lock the mutex it has locked. </dd></dl>
</div>
</div>
<a class="anchor" id="ga31a92296612f31ac8746f0e4bb18773f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MutexUnlock </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a>&#160;</td>
<td class="paramname"><em>mutexHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mutexHandle</td><td>The mutex handle.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The mutex is successfully unlocked. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>The mutex can not be unlocked or invalid parameter. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaddee7117a759dfbf280e4d5722af413d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MutexDestroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga2f32f00a98f059a0de5dce110c4c55a6">osa_mutex_handle_t</a>&#160;</td>
<td class="paramname"><em>mutexHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">mutexHandle</td><td>The mutex handle.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The mutex is successfully destroyed. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>The mutex can not be destroyed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga11048c51ec10f64e7d358f7335dc5ddf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_EventPrecreate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>&#160;</td>
<td class="paramname"><em>eventHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a>&#160;</td>
<td class="paramname"><em>taskHandler</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function pre-creates an event object and indicates which task this event is used by.</p>
<p>Example below shows how to use this API to create the event handle. </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#ga015211790e7199dbc5c1b644258c9fec">OSA_EVENT_HANDLE_DEFINE</a>(eventHandle);</div>
<div class="line">* <a class="code" href="a00070.html#ga11048c51ec10f64e7d358f7335dc5ddf">OSA_EventPrecreate</a>((<a class="code" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>)eventHandle, (<a class="code" href="a00070.html#ga5dc7b5e6c130c18b4b7d0f3e4edab7ab">osa_task_ptr_t</a>)taskHandler);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventHandle</td><td>Pointer to a memory space of size OSA_EVENT_HANDLE_SIZE allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00070.html#ga015211790e7199dbc5c1b644258c9fec" title="Defines the event handle. ">OSA_EVENT_HANDLE_DEFINE(eventHandle)</a>; or uint32 eventHandle[((OSA_EVENT_HANDLE_SIZE + sizeof(uint32) - 1U) / sizeof(uint32))]; </td></tr>
<tr><td class="paramname">taskHandler</td><td>The task handler this event is used by. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>the new event if the event is pre-created successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga2682738ca2e392986bbecec9caf13fbc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_EventCreate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>&#160;</td>
<td class="paramname"><em>eventHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>autoClear</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function creates an event object and set its clear mode. If autoClear is 1, when a task gets the event flags, these flags will be cleared automatically. Otherwise these flags must be cleared manually.</p>
<p>Example below shows how to use this API to create the event handle. </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#ga015211790e7199dbc5c1b644258c9fec">OSA_EVENT_HANDLE_DEFINE</a>(eventHandle);</div>
<div class="line">* <a class="code" href="a00070.html#ga2682738ca2e392986bbecec9caf13fbc">OSA_EventCreate</a>((<a class="code" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>)eventHandle, 0);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventHandle</td><td>Pointer to a memory space of size OSA_EVENT_HANDLE_SIZE allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00070.html#ga015211790e7199dbc5c1b644258c9fec" title="Defines the event handle. ">OSA_EVENT_HANDLE_DEFINE(eventHandle)</a>; or uint32_t eventHandle[((OSA_EVENT_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; </td></tr>
<tr><td class="paramname">autoClear</td><td>1 The event is auto-clear. 0 The event manual-clear </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>the new event if the event is created successfully. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>if the event can not be created. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga2842bedab2151c907dda255d74212926"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_EventSet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>&#160;</td>
<td class="paramname"><em>eventHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a>&#160;</td>
<td class="paramname"><em>flagsToSet</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets specified flags of an event object.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventHandle</td><td>The event handle. </td></tr>
<tr><td class="paramname">flagsToSet</td><td>Flags to be set.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The flags were successfully set. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>An incorrect parameter was passed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga60083cea29f64c4408b09eca5cdf262f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_EventClear </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>&#160;</td>
<td class="paramname"><em>eventHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a>&#160;</td>
<td class="paramname"><em>flagsToClear</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clears specified flags of an event object.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventHandle</td><td>The event handle. </td></tr>
<tr><td class="paramname">flagsToClear</td><td>Flags to be clear.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The flags were successfully cleared. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>An incorrect parameter was passed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga283f86998b4820121c1d75304bdfa050"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_EventGet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>&#160;</td>
<td class="paramname"><em>eventHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a>&#160;</td>
<td class="paramname"><em>flagsMask</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> *&#160;</td>
<td class="paramname"><em>pFlagsOfEvent</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get specified flags of an event object.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventHandle</td><td>The event handle. The macro EVENT_HANDLE_BUFFER_GET is used to get the event buffer pointer, and should not be used before the macro EVENT_HANDLE_BUFFER_DEFINE is used. </td></tr>
<tr><td class="paramname">flagsMask</td><td>The flags user want to get are specified by this parameter. </td></tr>
<tr><td class="paramname">pFlagsOfEvent</td><td>The event flags are obtained by this parameter.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The event flags were successfully got. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>An incorrect parameter was passed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab70ceaa8eb113386f4ce458e87b1d0fe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_EventWait </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>&#160;</td>
<td class="paramname"><em>eventHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a>&#160;</td>
<td class="paramname"><em>flagsToWait</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>waitAll</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga282940489533ac4bf9b98bb7bc3dadd1">osa_event_flags_t</a> *&#160;</td>
<td class="paramname"><em>pSetFlags</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function waits for a combination of flags to be set in an event object. Applications can wait for any/all bits to be set. Also this function could obtain the flags who wakeup the waiting task.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventHandle</td><td>The event handle. </td></tr>
<tr><td class="paramname">flagsToWait</td><td>Flags that to wait. </td></tr>
<tr><td class="paramname">waitAll</td><td>Wait all flags or any flag to be set. </td></tr>
<tr><td class="paramname">millisec</td><td>The maximum number of milliseconds to wait for the event. If the wait condition is not met, pass osaWaitForever_c will wait indefinitely, pass 0 will return KOSA_StatusTimeout immediately. </td></tr>
<tr><td class="paramname">pSetFlags</td><td>Flags that wakeup the waiting task are obtained by this parameter.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The wait condition met and function returns successfully. </td></tr>
<tr><td class="paramname">KOSA_StatusTimeout</td><td>Has not met wait condition within timeout. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>An incorrect parameter was passed.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Please pay attention to the flags bit width, FreeRTOS uses the most significant 8 bis as control bits, so do not wait these bits while using FreeRTOS. </dd></dl>
</div>
</div>
<a class="anchor" id="gaa9f5850e1ac5b6447a4ecfc38f71d85c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_EventDestroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga800f6346ade64a29d6b9a8dcec87fa70">osa_event_handle_t</a>&#160;</td>
<td class="paramname"><em>eventHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eventHandle</td><td>The event handle.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The event is successfully destroyed. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>Event destruction failed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7e4faea7f46db9008dd266db81175c7f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MsgQCreate </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a>&#160;</td>
<td class="paramname"><em>msgqHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>msgNo</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>msgSize</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function allocates memory for and initializes a message queue. Message queue elements are hardcoded as void*.</p>
<p>Example below shows how to use this API to create the massage queue handle. </p>
<div class="fragment"><div class="line">* <a class="code" href="a00070.html#gae72445c7e27eef2fcba730598f1a2c70">OSA_MSGQ_HANDLE_DEFINE</a>(msgqHandle);</div>
<div class="line">* <a class="code" href="a00070.html#ga7e4faea7f46db9008dd266db81175c7f">OSA_MsgQCreate</a>((<a class="code" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a>)msgqHandle, 5U, <span class="keyword">sizeof</span>(msg));</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msgqHandle</td><td>Pointer to a memory space of size #(OSA_MSGQ_HANDLE_SIZE + msgNo*msgSize) on bare-matel, FreeRTOS static allocation allocated by the caller and #(OSA_MSGQ_HANDLE_SIZE) on FreeRTOS dynamic allocation, message queue handle. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00070.html#gae72445c7e27eef2fcba730598f1a2c70" title="Defines the message queue handle. ">OSA_MSGQ_HANDLE_DEFINE(msgqHandle)</a>; or For bm and freertos static: uint32_t msgqHandle[((OSA_MSGQ_HANDLE_SIZE + msgNo*msgSize + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; For freertos dynamic: uint32_t msgqHandle[((OSA_MSGQ_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; </td></tr>
<tr><td class="paramname">msgNo</td><td>:number of messages the message queue should accommodate. </td></tr>
<tr><td class="paramname">msgSize</td><td>:size of a single message structure.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>Message queue successfully Create. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>Message queue create failure. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga96e7ae6b05fb24b380eaebc5a355b4dd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MsgQPut </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a>&#160;</td>
<td class="paramname"><em>msgqHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga4476723e61d25fbdc15580e7550a7d7e">osa_msg_handle_t</a>&#160;</td>
<td class="paramname"><em>pMessage</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function puts a message to the end of the message queue. If the queue is full, this function returns the KOSA_StatusError;</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msgqHandle</td><td>Message Queue handler. </td></tr>
<tr><td class="paramname">pMessage</td><td>Pointer to the message to be put into the queue.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>Message successfully put into the queue. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>The queue was full or an invalid parameter was passed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga606231457e67222e4c1a9ec0ec496ad0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MsgQGet </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a>&#160;</td>
<td class="paramname"><em>msgqHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00070.html#ga4476723e61d25fbdc15580e7550a7d7e">osa_msg_handle_t</a>&#160;</td>
<td class="paramname"><em>pMessage</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function gets a message from the head of the message queue. If the queue is empty, timeout is used to wait.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msgqHandle</td><td>Message Queue handler. </td></tr>
<tr><td class="paramname">pMessage</td><td>Pointer to a memory to save the message. </td></tr>
<tr><td class="paramname">millisec</td><td>The number of milliseconds to wait for a message. If the queue is empty, pass osaWaitForever_c will wait indefinitely, pass 0 will return KOSA_StatusTimeout immediately.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>Message successfully obtained from the queue. </td></tr>
<tr><td class="paramname">KOSA_StatusTimeout</td><td>The queue remains empty after timeout. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>Invalid parameter. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaca0a3d51780350ac37fb3d349407ec98"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int OSA_MsgQAvailableMsgs </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a>&#160;</td>
<td class="paramname"><em>msgqHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used to get the available message.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msgqHandle</td><td>Message Queue handler.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Available message count </dd></dl>
</div>
</div>
<a class="anchor" id="ga8d20a741c86cd504888ba518d426f69b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00070.html#ga60bf015c712d1c58e008dc489c37e101">osa_status_t</a> OSA_MsgQDestroy </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00070.html#ga85cf3c01d07c577a5f3e23e0a40a2b64">osa_msgq_handle_t</a>&#160;</td>
<td class="paramname"><em>msgqHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msgqHandle</td><td>Message Queue handler.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">KOSA_StatusSuccess</td><td>The queue was successfully destroyed. </td></tr>
<tr><td class="paramname">KOSA_StatusError</td><td>Message queue destruction failed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabc3512ab77e1abdf0942621caa41a18e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OSA_TimeDelay </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>millisec</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">millisec</td><td>The time in milliseconds to wait. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga13573345b625c22855e4c1d02fdbb284"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t OSA_TimeGetMsec </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">current</td><td>time in milliseconds </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga16804c3d8d0b5f8ce3d4f9915a30bafe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OSA_InstallIntHandler </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>IRQNumber</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void(*)(void)&#160;</td>
<td class="paramname"><em>handler</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">IRQNumber</td><td>IRQ number of the interrupt. </td></tr>
<tr><td class="paramname">handler</td><td>The interrupt handler to install. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>