找回密码
 立即注册

微信扫码登录

查看: 1017|回复: 1

[BLE Mesh] 【串口相关】blc_rx_from_uart()函数是怎样使用的

[复制链接]

4

主题

6

回帖

72

积分

不屈白银

积分
72
发表于 2025-3-11 17:48:22 | 显示全部楼层 |阅读模式
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: tlsr8258
SDK及版本: sig_mesh_sdk
请问blc_rx_from_uart()函数是怎样使用的,应该在哪里调用,有点没看懂。如果我想把串口接收的数据取出来到我自己定义的缓存数组中该怎么操作呢,另外当我把 UART_DATA_SIZE 宏定义改大后,程序会崩溃,但是我们有一次接收很多字节(2k bytes)的需求,以下是我修改的程序片段


// #define UART_DATA_SIZE              (EXTENDED_ADV_ENABLE ? 280 : 72)    // increase or decrease 16bytes for each step.
#define UART_DATA_SIZE              (2048 - 4 - 4)  // fyb change bigger for ota data





int blc_rx_from_uart (void)
{
    uart_ErrorCLR();
   
    uart_data_t* p = (uart_data_t *)my_fifo_get(&hci_rx_fifo);
    if(p){
        u32 rx_len = p->len  & 0xffff ; //usually <= 255 so 1 byte should be sufficient //0xff change to 0xffff
        LOG_USER_MSG_INFO(0,0,"rx_num  %d\r\n",rx_len);
        if (rx_len)
        {
            #if 0 // Serial loop test
            #if 1
            if(0 == my_fifo_push_hci_tx_fifo(p->data, rx_len, 0, 0));
            #else
            if(uart_Send(p->data, rx_len))
            #endif
            {
                my_fifo_pop(&hci_rx_fifo);
            }
            #else
            app_hci_cmd_from_usb_handle(p->data, rx_len);
            my_fifo_pop(&hci_rx_fifo);
            #endif
        }
    }
    return 0;
}






5

主题

235

回帖

793

积分

版主

积分
793
发表于 2025-3-12 10:38:58 | 显示全部楼层
不要改size,有一次接收很多字节(2k bytes)的需求。这个也是不正确的做法,应该是要把数据分包传输,传过来后,你可以分配一个大的缓存buffer,链表存取。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-5-7 06:01 , Processed in 0.086622 second(s), 20 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表