打印

VSF应用实例--解析蓝牙串口HCI(2)串口流

[复制链接]
781|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vsf|  楼主 | 2018-4-17 14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
解析HCI的报文的话,可以直接调用hal层的usart接口,也可以简单使用usart_stream模块(串口流)。

串口流接口如下:
struct usart_stream_t
{
        vsfhal_usart_t index;
        uint8_t mode;
        uint16_t int_priority;
        uint32_t baudrate;

        struct vsf_stream_t *stream_tx;
        struct vsf_stream_t *stream_rx;

        // private
        bool txing;
        bool rx_pend;
};

vsf_err_t usart_stream_init(struct usart_stream_t *usart_stream);
vsf_err_t usart_stream_fini(struct usart_stream_t *usart_stream);
vsf_err_t usart_stream_config(struct usart_stream_t *usart_stream);
usart_stream_t结构中,index、mode、int_priority、baudrate是和串口硬件相关的设置。
stream_tx和stream_rx是流指针,实际使用什么数据格式的流并没有规定,反正流也只是一种接口定义。

定义好usart_stream_t数据结构后,通过简单的usart_stream_init就可以初始化串口流了。
usart_stream_fini是不在使用串口流的时候调用的。
usart_stream_config是在需要重新配置串口参数的时候调用的(比如蓝牙串口HCI,芯片初始化时候一般使用115200,初始化之后,可以提升到几M)。

注意一点,串口流模块中,并没有带流结构的实例,而是需要用户按需定义发送和接收流(如果只是发送,就不需要定义接收流)。
这个是因为串口流模块对流的数据格式没要求。在一些其他的流应用中,如果模块对流的格式有要求的话,一般会直接内置流的数据结构,而不是放一个指针。

使用特权

评论回复

相关帖子

发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

vsf

27

主题

60

帖子

6

粉丝