📄 handle_system.c
字号:
/****************************************************************************
DESCRIPTION
Implementation for handling system messages and functionality
FILE
handle_system.c
*/
/****************************************************************************
Header files
*/
#include <print.h>
#include <vm.h>
#include <stream.h>
#include "main.h"
#include "handle_system.h"
#include "pbap_client_parse.h"
/* Message Handler Prototypes */
static void handleMoreData(applicationTaskData *pTask, Source pSrc);
static void handleMoreSpace(applicationTaskData *pTask, Sink pSink);
void handleSystemMessages(applicationTaskData *pTask, MessageId pId, Message pMessage)
{
switch (pId)
{
case MESSAGE_MORE_DATA:
handleMoreData(pTask, ((MessageMoreData*)pMessage)->source);
break;
case MESSAGE_MORE_SPACE:
handleMoreSpace(pTask, ((MessageMoreSpace*)pMessage)->sink);
break;
default:
PRINT(("Unhandled System Message\n"));
break;
}
}
/* Message Handlers */
static void handleMoreData(applicationTaskData *pTask, Source pSrc)
{
uint16 lLen = SourceSize(pSrc);
PRINT(("MESSAGE_MORE_DATA\n"));
if ((pSrc == StreamUartSource()) && (lLen > 0))
{ /* Uart */
PRINT((" Uart\n"));
#if 1
{
const uint8 *s = SourceMap(pSrc);
uint16 c;
PRINT((" <"));
for (c=0; c<lLen; c++)
{
if (s[c]>=' ')
{
PRINT(("%c",s[c]));
}
else
{
PRINT(("."));
}
}
PRINT((">\n"));
}
#endif
/* Only bother parsing if there is something to parse */
while (lLen > 0)
{
/* Keep parsing while we have data in the buffer */
if (!pbap_parseSource(pSrc, &pTask->task))
break;
/* Check we have more data to parse */
lLen = SourceSize(pSrc);
}
}
else
{ /* Unknown source */
PRINT((" Unknown/Empty Source \n"));
SourceDrop(pSrc, lLen);
}
}
static void handleMoreSpace(applicationTaskData *pTask, Sink pSink)
{
PRINT(("MESSAGE_MORE_SPACE\n"));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -