马上注册,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
×
- typedef struct{
- TaskData task;
- }bt_uart_t;
- bt_uart_t bt_uart;
- extern BT_INFO *pBtInfo;
- static void UartRecv(BT_INFO *pBtInfo)
- {
- Source src;
- uint8 *s = NULL;
- uint8 size = 0;
-
- src = StreamUartSource(); /* get the uart source header */
- s = (uint8*)SourceMap(src); /* get the uart source memory */
- size = SourceSize(src);
- memcpy(&pBtInfo->uart.buf[0],s,size);
- SourceDrop(src,size); /*Discards the indicated number of bytes from the front of the source*/
- }
- static void UartHandler(Task task, MessageId id, Message message)
- {
- DBGD(("\nUart recv id:----> %d",id));
- switch (id)
- {
- case MESSAGE_MORE_DATA:
- UartRecv(pBtInfo);
- DBGD(("Uart recv data:\n"));
- break;
- default:
- break;
- }
- }
- void InitUart(BT_INFO *pBtInfo)
- {
- bt_uart.task.handler = UartHandler;
- StreamUartConfigure(VM_UART_RATE_115K2,VM_UART_STOP_ONE,VM_UART_PARITY_NONE);
- /*MessageSinkTask(StreamUartSink(), &bt_uart.task);*/
- MessageSinkTask(StreamSinkFromSource(StreamUartSource()),&bt_uart.task);
- }
- void UartSend(BT_INFO *pBtInfo,uint8 *buf, uint16 len)
- {
- Sink sink;
-
- if (buf == NULL || len == 0)
- {
- DBGD(("Uart Send buf is NULL or len is zero\n"));
- }
- /*sink = StreamUartSink();*/
- sink = StreamSinkFromSource(StreamUartSource());
- if(sink && SinkClaim(sink, sizeof(uint8)*len) != 0xFFFF)
- {
- memcpy(SinkMap(sink), buf, sizeof(uint8)*len);
- /*SinkFlush*/
- PanicZero(SinkFlush(sink, sizeof(uint8)*len));
- }
- else
- {
- DBGD(("Can not send uart\n"));
- }
- }
复制代码 |