W (30761) wifi:unknown csi bug!

killerp
Posts: 9
Joined: Sat Nov 21, 2020 5:17 am

W (30761) wifi:unknown csi bug!

Postby killerp » Sun Mar 21, 2021 3:15 am

各位开发人员你们好,我在使用wifi csi功能时遇到了一个问题
当我用ping 时,esp32打印如下信息:
W (30761) wifi:unknown csi bug!

我的开发环境是idf-v4-0-1,在项目中,我开启了wifi csi功能,并将wifi初始化为station模式,程序上电连接到路由器后,ping线程开始给路由器发送ping报文,在wifi csi回调函数中,打印相位和振幅数据。

这是我的csi初始化函数:

Code: Select all

void csi_init()
{
    ESP_ERROR_CHECK(esp_wifi_set_csi(true));

    wifi_csi_config_t configuration_csi;
    configuration_csi.lltf_en = 1;
    configuration_csi.htltf_en = 1;
    configuration_csi.stbc_htltf2_en = 1;
    configuration_csi.ltf_merge_en = 1;
    configuration_csi.channel_filter_en = 0;
    configuration_csi.manu_scale = 0;

    ESP_ERROR_CHECK(esp_wifi_set_csi_config(&configuration_csi));
    ESP_ERROR_CHECK(esp_wifi_set_csi_rx_cb(&_wifi_csi_cb, NULL));
}
这是wifi csi回调函数

Code: Select all

void _wifi_csi_cb(void *ctx, wifi_csi_info_t *data)
{
    int8_t *my_ptr = data->buf;
    int i;
    for(i=0;i<64;i++){
    	outprintf("%.4f,", sqrt(pow(my_ptr[i * 2], 2) + pow(my_ptr[(i * 2) + 1], 2)));
    }
    vTaskDelay(0);
}


这是我的ping线程:

Code: Select all

static void ping_task(void *arg)
{
    uint32_t timeout = 1000;
    uint32_t total_count = 100;
    uint32_t current_count = 0;
    in_addr_t gw_ip = inet_addr("192.168.3.4"); //ping gw

    int s, ret;

    LWIP_UNUSED_ARG(arg);

    if ((s = socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0)
    {
        printf("create socket fail\n");
    }
    ret = setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
    if (ret == 0)
    {
        printf("set socket timeout success\n");
    }

    int tos = 1;
    tos <<= 5;
    ret = setsockopt(s, IPPROTO_IP, IP_TOS, &tos, sizeof(tos));
    if (ret == 0)
    {
        printf("set socket tos success\n");
    }

    while (1)
    {
        if (current_count++ >= total_count)
        {
            ping_flag = false;
        }
        if(ping_flag)
        {
            if (ping_send(s, gw_ip) == ERR_OK)
            {
                //printf("ping send ok \n");

                //gettimeofday(&ping_time, NULL);
                //ping_recv(s);
            }
            else
            {
                printf("ping send fail \n");
            }
        }

        vTaskDelay(1000 / portTICK_RATE_MS);
    }
}
请问,是什么原因导致了打印信息:
W (30761) wifi:unknown csi bug!

ESP_Gargamel
Posts: 786
Joined: Wed Nov 14, 2018 8:45 am

Re: W (30761) wifi:unknown csi bug!

Postby ESP_Gargamel » Mon Mar 22, 2021 1:59 am

能否使用基于 idf release/v4.3 分支做下测试?我们有在 v4.3 上做过较多验证,另外我们也提供了一个 csi 的示例,请参考 https://github.com/espressif/esp-csi 当中的 examples。v4.0.1 版本较老,如果能确认是老版本上的问题,那么我们再寻求内部对此加以解决。

Who is online

Users browsing this forum: No registered users and 71 guests