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

[复制链接]
 楼主| vsf 发表于 2018-4-17 14:03 | 显示全部楼层 |阅读模式
解析HCI的报文的话,可以直接调用hal层的usart接口,也可以简单使用usart_stream模块(串口流)。

串口流接口如下:
  1. struct usart_stream_t
  2. {
  3.         vsfhal_usart_t index;
  4.         uint8_t mode;
  5.         uint16_t int_priority;
  6.         uint32_t baudrate;

  7.         struct vsf_stream_t *stream_tx;
  8.         struct vsf_stream_t *stream_rx;

  9.         // private
  10.         bool txing;
  11.         bool rx_pend;
  12. };

  13. vsf_err_t usart_stream_init(struct usart_stream_t *usart_stream);
  14. vsf_err_t usart_stream_fini(struct usart_stream_t *usart_stream);
  15. 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

粉丝
快速回复 在线客服 返回列表 返回顶部
vsf

27

主题

60

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部