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.

[参考译文] CC3220R:主机进行后置令牌处理

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/967915/cc3220r-post-token-processing-by-host

器件型号:CC3220R
Thread 中讨论的其他器件:CC3200

您好!

我将应用程序从 CC3200移植到 CC32xx SDK (最新版本)。

使用相同的 SimpleLinkHttpServerCallback 函数处理 SFFS 中/www/文件夹中文件的获取和发布令牌的旧 CC3200 SDK/NWP。

新的 CC32xx SDK/NWP 仅针对 GET 请求调用此回调函数。 对于 POST 请求、另一个 SimpleLinkNetAppRequestEventHandler 会以 param 的完整 HTTP 请求元数据/负载进行调用(然后我必须将其标记为自己)。 这本身不是问题、问题是对于使用 SimpleLinkNetAppRequestEventHandler、我必须保留

#define slcb_NetAppRequestHdlr SimpleLinkNetAppRequestEventHandler

这会将 g_StatMem 全局结构大小按比例增加到 SL_ASYNC_HTTP_SRV_EVENT_LEN * MAX_ANOND_Actions (((1600-220)* 5 = 6900字节)。

在我看来、就内存消耗而言、这就像是一个绝对超频。

查看 swru455l.pdf 中"9.1.3.2主机令牌静态页面"中的"图9-6"时、确实仅记录了 Get 请求。

但我还在 source/ti/drivers/net/wifi/source/netapp.c 函数中看到

_slReturnVal_t _slNetAppEventHandler (void* pargs)

(笑声)

switch (PHDR->GenHeader.Opcode)

(笑声)

案例 sl_opcode_NetApp_HTTPPOSTTOKENVVALUE

这表明至少 SL 驱动程序知道此功能、不确定 NWP。

那么、我的问题是:是否真正支持主机 POST 令牌处理?

谢谢、

Oleg

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

    SimpleLinkHttpServerCallback -处理主机令牌。

    SimpleLinkNetAppRequestEventHandler -处理请求的整个内容(当资源在 ROM 或 FS 中不可用时)。  

    对于 POST (不使用定义的 RESTful API)、第2次回调更有意义。

    我不确定我是否理解您对 g_StatMem 的评论。 CC3220主机驱动程序配置为动态存储器(sl_memory_Mgmt_dynamic)。

    您是否更改了此内容?

    BR、

    Kobi

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

    您好、Kobi、

    感谢您的回答。

    是的、我的项目使用 sl_memory_Mgmt_static (以消除潜在的 malloc 问题、如碎片)。

    我的问题是关于对新芯片主机 POST 令牌处理状态的支持。

    谢谢、

    Oleg

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

    我认为开机自检不支持主机令牌(我需要验证)。 您使用的是什么资源名称? 它是 RESTful API 之一还是文件系统上存在的文件?

    使用动态存储器的主要原因之一是避免在更糟糕的情况下保留存储器。 如果您知道您只会收到较短的消息、则可以减小大小。  

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

    它是文件系统上的.html 文件、发送包含用户定义令牌(从_sl_P_U 开始)的 URL 编码后请求。

    动态存储器管理方法有一些缺点:除了前面提到的 malloc 碎片问题之外、我必须在所有可能的条件下对系统进行全面测试、以确保我能够正确处理真正最坏情况下的存储器负载。 如果我对可以使用 SL_*函数的多个任务使用抢先式 RTOS,则此任务将变得非常复杂。

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

    玩了一会儿之后、我可以通过 SimpleLinkHttpServerCallback 确认 CC3220实际上确实支持用户定义的主机 POST 令牌。 POST 请求的"内容类型"标题必须为"application/x-www-form-urlencoded"(也在数据表中说明)。

    问题在于、所有基于 Webkit 的 Web 浏览器(如所有 iPhone 浏览器和桌面 Safari)都会以某种方式破坏此机制、CC3220会返回 SimpleLinkNetAppRequestEventHandler。 非常有趣。

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

    我建议使用动态内存管理、因为这是我们的默认方法、因此它主要由我们的测试团队和客户进行测试。

    BR、

    Kobi

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

    最初的问题是逐个处理 POST 令牌、此功能由 NWP 提供、与 SL 驱动程序中的存储器管理无关。 这以前在 CC3200上正常工作、现在已部分损坏。 我必须找出原因。

    稍后、我将了解 Safari 和非 Safari 浏览器发送的完整帖子数据有何不同、并将继续向您发布。

    谢谢、

    Oleg

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

    我理解最初的问题、但在 CC3220/3x 中、我们建议对  帖子内容使用 slcb_NetAppRequestHdlr。

    动态分配将允许您使用此方法、而无需额外的内存消耗。

    BR、

    Kobi

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

    我理解您的观点、如果没有其他帮助、我可能会走这条路。

    谢谢、

    Oleg