📄 support_reference.htm
字号:
INT length;
<font face="Arial, Helvetica, sans-serif" color="#999999">// set length
</font> length = sizeof(message);
<font face="Arial, Helvetica, sans-serif" color="#999999">// post message
</font> status = SDLIB_GetMessage(pInstance->pReadQueue,&message,&length);
if (!SDIO_SUCCESS(status)) {
<font face="Arial, Helvetica, sans-serif" color="#999999">// failed
</font>
Checking queue for a message and getting the size of the message
INT length;
<font face="Arial, Helvetica, sans-serif" color="#999999">// use zero length to get the size of the message
</font> length = 0;
status = SDLIB_GetMessage(pInstance->pReadQueue,NULL,&length);
if (status == SDIO_STATUS_NO_MORE_MESSAGES) {
<font face="Arial, Helvetica, sans-serif" color="#999999">// no messages in queue
</font> } else if (status == SDIO_STATUS_BUFFER_TOO_SMALL) {
<font face="Arial, Helvetica, sans-serif" color="#999999">// message exists in queue and length of message is returned
</font> messageSizeInQueue = length;
} else {
<font face="Arial, Helvetica, sans-serif" color="#999999">// some other failure
</font>
</pre>
</p>
</blockquote>
<p class="FUNCHEADINGS">See also:</p>
<blockquote>
<p class="BODYTEXT">
SDLIB_CreateMessageQueue , SDLIB_PostMessage
<br>
</p>
</blockquote>
</td>
</tr>
</table>
<a name="FUNC_SDLIB_IsQueueEmpty"></a>
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td bgcolor="#0000FF" rowspan="2" width="40%"><a href="http://www.codetelligence.com"><img border="0" height="40" width="252" name="image" src="Images/codetelligence_lrg.gif"></a></td><td bgcolor="#0000FF" height="62" width="50%"><font face="Arial, Helvetica, sans-serif" size="5" color="#FFFFFF"><strong>Codetelligence Embedded SDIO Stack<br>Support Functions Documentation</strong></font></td><td bgcolor="#0000FF" height="62" width="10%"><td><a href="#FUNC_SDLIB_GetMessage"><img border="0" height="32" width="27" src="Images/leftarrow.gif"></a></td><td><a href="#FUNC_SDLIB_OSCreateHelper"><img border="0" height="32" width="27" src="Images/rightarrow.gif"></a></td></td>
</tr>
</table>
<table cellpadding="0" cellspacing="10" border="0" width="100%">
<tr>
<td width="93%"><font face="Arial, Helvetica, sans-serif"><span class="Topic">
<blockquote>
<table width="100%" cellspacing="0" cellpadding="0">
<td>
<br>
<pre>
<span class="FUNCPROTOTYPE">
BOOL SDLIB_IsQueueEmpty(PSDMESSAGE_QUEUE pQueue)
</span>
</pre>
</td>
</table>
</blockquote>
</span></font></td>
</tr>
</table>
<hr>
<table cellpadding="15" cellspacing="0" border="0" width="100%">
<tr>
<td>
<p class="FUNCHEADINGS">Description:</p>
<blockquote>
<p class="BODYTEXT">Check message queue is empty</p>
</blockquote>
<p class="FUNCHEADINGS">Parameters:</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Inputs:</p>
<blockquote>
<p class="BODYTEXT">
pQueue - message queue to check
<br>
</p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Outputs:</p>
<blockquote>
<p class="BODYTEXT"></p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Returns:</p>
<blockquote>
<p class="BODYCODE">
TRUE if empty else false
<br>
</p>
</blockquote>
</blockquote>
</p>
<p class="FUNCHEADINGS">Notes:</p>
<blockquote>
<p class="BODYTEXT"></p>
</blockquote>
<p class="FUNCHEADINGS">Example: </p>
<blockquote>
<p class="BODYCODE">
<pre>
<font face="Arial, Helvetica, sans-serif" color="#FF00FF"> Check message queue :</font>
if (SDLIB_IsQueueEmpty(pInstance->pQueue)) {
.. message queue is empty
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
</pre>
</p>
</blockquote>
<p class="FUNCHEADINGS">See also:</p>
<blockquote>
<p class="BODYTEXT">
<a href="#FUNC_SDLIB_CreateMessageQueue">
SDLIB_CreateMessageQueue
</a>
<br>
</p>
</blockquote>
</td>
</tr>
</table>
<a name="FUNC_SDLIB_OSCreateHelper"></a>
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td bgcolor="#0000FF" rowspan="2" width="40%"><a href="http://www.codetelligence.com"><img border="0" height="40" width="252" name="image" src="Images/codetelligence_lrg.gif"></a></td><td bgcolor="#0000FF" height="62" width="50%"><font face="Arial, Helvetica, sans-serif" size="5" color="#FFFFFF"><strong>Codetelligence Embedded SDIO Stack<br>Support Functions Documentation</strong></font></td><td bgcolor="#0000FF" height="62" width="10%"><td><a href="#FUNC_SDLIB_IsQueueEmpty"><img border="0" height="32" width="27" src="Images/leftarrow.gif"></a></td><td><a href="#FUNC_SDLIB_OSDeleteHelper"><img border="0" height="32" width="27" src="Images/rightarrow.gif"></a></td></td>
</tr>
</table>
<table cellpadding="0" cellspacing="10" border="0" width="100%">
<tr>
<td width="93%"><font face="Arial, Helvetica, sans-serif"><span class="Topic">
<blockquote>
<table width="100%" cellspacing="0" cellpadding="0">
<td>
<br>
<pre>
<span class="FUNCPROTOTYPE">
SDIO_STATUS SDLIB_OSCreateHelper(POSKERNEL_HELPER pHelper,
PHELPER_FUNCTION pFunction,
PVOID pContext)
</span>
</pre>
</td>
</table>
</blockquote>
</span></font></td>
</tr>
</table>
<hr>
<table cellpadding="15" cellspacing="0" border="0" width="100%">
<tr>
<td>
<p class="FUNCHEADINGS">Description:</p>
<blockquote>
<p class="BODYTEXT">Create an OS-specific helper task/thread</p>
</blockquote>
<p class="FUNCHEADINGS">Parameters:</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Inputs:</p>
<blockquote>
<p class="BODYTEXT">
pHelper - caller allocated helper object
<br>
pFunction - helper function
<br>
pContext - helper context
<br>
</p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Outputs:</p>
<blockquote>
<p class="BODYTEXT"></p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Returns:</p>
<blockquote>
<p class="BODYCODE">
SDIO_STATUS
<br>
</p>
</blockquote>
</blockquote>
</p>
<p class="FUNCHEADINGS">Notes:</p>
<blockquote>
<p class="BODYTEXT">
This function creates a helper task/thread that runs in a new execution context. The newly
created task/thread invokes the helper function. The thread/task exits when the helper
function returns. The helper function has the prototype of:
THREAD_RETURN HelperFunction(POSKERNEL_HELPER pHelper)
The helper function usually implements a while loop and suspends execution using
SD_WAIT_FOR_WAKEUP(). On exit the helper function can return an OS-specific THREAD_RETURN
code (usually zero). The helper function executes in a fully schedule-able context and
can block on semaphores and sleep.
<br>
</p>
</blockquote>
<p class="FUNCHEADINGS">Example: </p>
<blockquote>
<p class="BODYCODE">
<pre>
<font face="Arial, Helvetica, sans-serif" color="#FF00FF"> A thread helper function:</font>
THREAD_RETURN HelperFunction(POSKERNEL_HELPER pHelper)
{
SDIO_STATUS status;
PMYCONTEXT pContext = (PMYCONTEXT)SD_GET_OS_HELPER_CONTEXT(pHelper);
<font face="Arial, Helvetica, sans-serif" color="#999999">// wait for wake up
</font> while(1) {
status = SD_WAIT_FOR_WAKEUP(pHelper);
if (!SDIO_SUCCESS(status)) {
break;
}
if (SD_IS_HELPER_SHUTTING_DOWN(pHelper)) {
<font face="Arial, Helvetica, sans-serif" color="#999999">//... shutting down
</font> break;
}
<font face="Arial, Helvetica, sans-serif" color="#999999">// handle wakeup...
</font> }
return 0;
<font face="Arial, Helvetica, sans-serif" color="#FF00FF"> Creating a helper:</font>
status = SDLIB_OSCreateHelper(&pInstance->OSHelper,HelperFunction,pInstance);
if (!SDIO_SUCCESS(status)) {
<font face="Arial, Helvetica, sans-serif" color="#999999">// failed
</font>
</pre>
</p>
</blockquote>
<p class="FUNCHEADINGS">See also:</p>
<blockquote>
<p class="BODYTEXT">
SDLIB_OSDeleteHelper , SD_WAIT_FOR_WAKEUP
<br>
</p>
</blockquote>
</td>
</tr>
</table>
<a name="FUNC_SDLIB_OSDeleteHelper"></a>
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td bgcolor="#0000FF" rowspan="2" width="40%"><a href="http://www.codetelligence.com"><img border="0" height="40" width="252" name="image" src="Images/codetelligence_lrg.gif"></a></td><td bgcolor="#0000FF" height="62" width="50%"><font face="Arial, Helvetica, sans-serif" size="5" color="#FFFFFF"><strong>Codetelligence Embedded SDIO Stack<br>Support Functions Documentation</strong></font></td><td bgcolor="#0000FF" height="62" width="10%"><td><a href="#FUNC_SDLIB_OSCreateHelper"><img border="0" height="32" width="27" src="Images/leftarrow.gif"></a></td><td><a href="#FUNC_SDLIB_PostMessage"><img border="0" height="32" width="27" src="Images/rightarrow.gif"></a></td></td>
</tr>
</table>
<table cellpadding="0" cellspacing="10" border="0" width="100%">
<tr>
<td width="93%"><font face="Arial, Helvetica, sans-serif"><span class="Topic">
<blockquote>
<table width="100%" cellspacing="0" cellpadding="0">
<td>
<br>
<pre>
<span class="FUNCPROTOTYPE">
void SDLIB_OSDeleteHelper(POSKERNEL_HELPER pHelper)
</span>
</pre>
</td>
</table>
</blockquote>
</span></font></td>
</tr>
</table>
<hr>
<table cellpadding="15" cellspacing="0" border="0" width="100%">
<tr>
<td>
<p class="FUNCHEADINGS">Description:</p>
<blockquote>
<p class="BODYTEXT">Delete an OS helper task/thread</p>
</blockquote>
<p class="FUNCHEADINGS">Parameters:</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Inputs:</p>
<blockquote>
<p class="BODYTEXT">
pHelper - caller allocated helper object
<br>
</p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Outputs:</p>
<blockquote>
<p class="BODYTEXT"></p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Returns:</p>
<blockquote>
<p class="BODYCODE"></p>
</blockquote>
</blockquote>
</p>
<p class="FUNCHEADINGS">Notes:</p>
<blockquote>
<p class="BODYTEXT">
This function wakes the helper and waits(blocks) until the helper exits. The caller can
only pass an OS helper structure that was initialized sucessfully by
SDLIB_OSCreateHelper. The caller must be in a schedulable context.
<br>
</p>
</blockquote>
<p class="FUNCHEADINGS">Example: </p>
<blockquote>
<p class="BODYCODE">
<pre>
<font face="Arial, Helvetica, sans-serif" color="#FF00FF"> Deleting a helper:</font>
if (pInstance->HelperCreated) {
<font face="Arial, Helvetica, sans-serif" color="#999999">// clean up the helper if we successfully created it
</font> SDLIB_OSDeleteHelper(&pInstance->OSHelper);
</pre>
</p>
</blockquote>
<p class="FUNCHEADINGS">See also:</p>
<blockquote>
<p class="BODYTEXT">
<a href="#FUNC_SDLIB_OSCreateHelper">
SDLIB_OSCreateHelper
</a>
<br>
</p>
</blockquote>
</td>
</tr>
</table>
<a name="FUNC_SDLIB_PostMessage"></a>
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td bgcolor="#0000FF" rowspan="2" width="40%"><a href="http://www.codetelligence.com"><img border="0" height="40" width="252" name="image" src="Images/codetelligence_lrg.gif"></a></td><td bgcolor="#0000FF" height="62" width="50%"><font face="Arial, Helvetica, sans-serif" size="5" color="#FFFFFF"><strong>Codetelligence Embedded SDIO Stack<br>Support Functions Documentation</strong></font></td><td bgcolor="#0000FF" height="62" width="10%"><td><a href="#FUNC_SDLIB_OSDeleteHelper"><img border="0" height="32" width="27" src="Images/leftarrow.gif"></a></td><td><a href="#FUNC_SDLIB_PrintBuffer"><img border="0" height="32" width="27" src="Images/rightarrow.gif"></a></td></td>
</tr>
</table>
<table cellpadding="0" cellspacing="10" border="0" width="100%">
<tr>
<td width="93%"><font face="Arial, Helvetica, sans-serif"><span class="Topic">
<blockquote>
<table width="100%" cellspacing="0" cellpadding="0">
<td>
<br>
<pre>
<span class="FUNCPROTOTYPE">
SDIO_STATUS SDLIB_PostMessage(PSDMESSAGE_QUEUE pQueue, PVOID pMessage, INT MessageLength)
</span>
</pre>
</td>
</table>
</blockquote>
</span></font></td>
</tr>
</table>
<hr>
<table cellpadding="15" cellspacing="0" border="0" width="100%">
<tr>
<td>
<p class="FUNCHEADINGS">Description:</p>
<blockquote>
<p class="BODYTEXT">Post a message queue</p>
</blockquote>
<p class="FUNCHEADINGS">Parameters:</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Inputs:</p>
<blockquote>
<p class="BODYTEXT">
pQueue - message queue to post to
<br>
pMessage - message to post
<br>
MessageLength - length of message (for validation)
<br>
</p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Outputs:</p>
<blockquote>
<p class="BODYTEXT"></p>
</blockquote>
</blockquote>
</p>
<p class="BODYTEXT">
<blockquote>
<p class="BODYTEXT">Returns:</p>
<blockquote>
<p class="BODYCODE">
SDIO_STATUS
<br>
</p>
</blockquote>
</blockquote>
</p>
<p class="FUNCHEADINGS">Notes:</p>
<blockquote>
<p class="BODYTEXT">
The message queue uses an internal list of user defined message structures. When
posting a message the message is copied into an allocated structure and queued. The memory
pointed to by pMessage does not need to be allocated and can reside on the stack.
The length of the message to post can be smaller that the maximum message size. This allows
for variable length messages up to the maximum message size. This
function returns SDIO_STATUS_NO_RESOURCES, if the
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -