本章学习这个命令是怎么解析的:curl -X GET http://ip/client?command=info
申明:本人不懂http相关的协议,而且从来没看过这个esp8266, json也不懂, ~~~~~~
一、通过curl工具发送curl -X GET http://ip/client?command=info 信息到esp8266板子。板子返回如下信息
"Version":{
"hardware":"0.1",
"sdk_version":"2.2.0(f28eaf2)",
"iot_version":"v1.0.5t45772(a)"
},
"Device":{
"product":"Light",
"manufacturer":"Espressif Systems"
}
}
二、 板子在收到这些命令或者数据时都会调用webserver_recv这个回调函数。这这个函数中有一个大switch,这里面主要执行GET和POST两种数据帧类型。而这个查询版本信息的命令则有GET的字样,我想它应该就是GET类型了(即pURL_Frame->Type=GET)。
而这个GET类型下面有如下类型的比较信息:
if (os_strcmp(pURL_Frame->pSelect, "client") == 0 &&
os_strcmp(pURL_Frame->pCommand, "command") == 0) {
if (os_strcmp(pURL_Frame->pFilename, "info") == 0) {
json_send(ptrespconn, INFOMATION);
}
if (os_strcmp(pURL_Frame->pFilename, "status") == 0) {
json_send(ptrespconn, CONNECT_STATUS);
} else if (os_strcmp(pURL_Frame->pFilename, "scan") == 0)
那么对比下我们发送的命令信息可以匹配一些关键信息client、command、info的关键信息。又从“json_send(ptrespconn, INFOMATION);”这句话的INFOMATION看就是在发送信息,这似乎就是我们要的代码。好了, 继续跟进去看看吧。
case INFOMATION: