This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3235S:CC3235S

Guru**** 2554570 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1031299/cc3235s-cc3235s

器件型号:CC3235S

电路板:CC3235

SDK:SimpleLink CC32xx SDK- 3.40.0.05

Service Pack 文件名:sp_4.9.0.2_3.7.0.1_3.1.0.26.bin

当我们的板从 LPDS 模式唤醒时、我们使用任务 来选择 SOKCet FD、

我们可以成功唤醒、但 无法再选择。 我们的 sl_select 无法实现

返回。  

1.为什么从 LPDS 唤醒时我们的 sl_select 无法返回?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yankai、

    您选择使用 CC32XX SDK 的3.40.0.05版本是否有具体原因? 其中包含最新的 CC3x35服务包 sp_4.11.0._3.7.0.1_3.1.0.26.bin

    您能否使用此 SDK 和服务包重试并让我知道结果?

    谢谢、

    Jacob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jacob:

       我已经更新了名为  sp_4.11.0.0_3.7.0.1_3.1.0.26.bin 的 binfile

    我仍然看到从服务器唤醒、然后我们可以接收一次命令、然后选择"功能无法再次返回"的情况。

    如果我们不运行 Power_enablePolicy() Power_disablePolicy() ,则不会发生这种情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yankai、

    我在上一篇帖子中留下了最新的 SDK 版本。 您正在使用    最新 SDK ( 5.20.00.06)中的最新 Service Pack sp_4.11.0.0_3.7.0.1_3.1.0.26.bin sp_4.11.0.0_3.7.0.1_3.1.0.26.bin?  

    [引用 userid="484798" URL"~/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1031299/cc3235s-cc3235s/3813786 #3813786"]如果我们不运行 Power_enablePolicy () Power_DisablePolicy () ,则不会发生这种情况

    我是否正确地理解,当您运行 Power_enablePolicy() Power_disablePolicy()时,您可以从 sl_Select 返回?

    谢谢、
    Jacob  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jacob:

       我使用  sp_4.11.0.0_3.7.0.1_3.1.0.26.bin 和最后一个 SDK (5.20.00.06)。

    但情况是一样的。

       我是否正确地理解,当您运行  Power_enablePolicy() 和  Power_disablePolicy()时,您可以从 sl_Select 返回?

        它只能返回一次、并且在 Web 发送唤醒命令后返回 Web SEND 命令。 选择 API 无法再次返回。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yankai、

    您能否提供 SL_Select 实现的代码片段? 您如何在程序中使用此函数?

    谢谢、
    Jacob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

        SL_SOCKET_FD_ZERO(&r_set);
        SL_SOCKET_FD_SET(tcp_client_fd, &r_set);
        SL_SOCKET_FD_SET(udp_fd[0], &r_set);
        SL_SOCKET_FD_SET(udp_fd_audio[0], &r_set);
        nfds = (udp_fd[0] > tcp_client_fd) ? udp_fd[0] : tcp_client_fd;
        nfds = (udp_fd_audio[0] > nfds) ? udp_fd_audio[0] : nfds;
        nfds = nfds + 1;
        while (1) {
            read_set = r_set;
            ret = sl_Select(nfds, &read_set, NULL, NULL, &time_out);
            if (ret < 0) {
                bpi_error("sl_Select failed\n");
                break;
            } else if (ret == 0) {
                //bpi_error("sl_Select return 0 which is unexpected\n");
                //break;
                continue;
            } else {
                if (SL_SOCKET_FD_ISSET(tcp_client_fd, &read_set)) {
                    ret = process_tcp_msg(tcp_client_fd);
                    if (ret <= 0) {
                        break;
                    }
                }
                if (SL_SOCKET_FD_ISSET(udp_fd[0], &read_set)) {
                    ret = process_udp_msg(udp_fd[0]);
                    if (ret >= 0) {
                        bpi_debug("Exit cmd received\n");
                        goto exit;
                    } else {
                        break;
                    }
                }
                #if 1
                if (SL_SOCKET_FD_ISSET(udp_fd_audio[0], &read_set)) {
                    do {
                         ret = audio_data_pool_query_mem(&data_info);
                         if (!data_info.used) {
                             break;
                         } else {
                             if (ret != 0) {
                                 bpi_info_time("Query audio data memory failed, try again\n");
                             }
                         }
                     } while (0);
    
                     if (!data_info.used /*&& data_info.data*/) {
                         if(ret = sl_RecvFrom(udp_fd_audio[0], data_info.data, size, 0, (SlSockAddr_t *)&Addr, (SlSocklen_t*)&AddrSize) < 0) {
                             bpi_error("get udp data failed\n");
                             break;
                         }
                         //bpi_info("audio - %x %x %x %x\n",data_info.data[0],data_info.data[1],data_info.data[2],data_info.data[3]);
                         //bpi_info("audio size - %d\n",size);
                         data_info.size = size;
                         audio_data_pool_query_mem_done(&data_info);
                     }
                }
                #endif
            }
        }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jacob:

        我们需要从服务器接收套接字、输出消息大小为512字节。 但我们只将缓冲区大小设置为300字节。

    我们的选择功能是否可以触发两次?  

    可能根本原因是套接字接收一次、然后我销毁套接字选择任务。

    由于我们的器件可以进入 LPDS 模式、因此我们需要销毁任务。

    我再次创建任务、以上原因可能导致 NWP 选择无法再次返回。 原因是否正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Yankai、

    是指 UDP 还是 TCP 的缓冲区大小? 如果是用于 UDP、则缓冲区大小应大于预期大小。 您可以监视返回值以查看接收到的数据包的实际大小。

    您为什么需要销毁任务才能进入 LPDS? sl_Select 应该在信号量上挂起、从而允许您进入 LPDS。  

    谢谢、

    Jacob