您好!
传感器上的 WiFi 芯片运行的代码与 network_terminal 示例类似。
它当前运行的是最新的堆栈版本: simplelink_cc32xx_sdk_3_40_00_05。
在我们的无线路由器中、我们发现 TI WiFi 芯片 未 显示在 其-ARP 列表中。 (所有其他器件都可以。)
我们想知道、SimpleLink 堆栈在获取 IP 地址后是否会执行免费的 ARP?
如果没有、我们是否可以命令 WiFi 芯片执行 ARP?
谢谢、Glenn。
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.
您好!
传感器上的 WiFi 芯片运行的代码与 network_terminal 示例类似。
它当前运行的是最新的堆栈版本: simplelink_cc32xx_sdk_3_40_00_05。
在我们的无线路由器中、我们发现 TI WiFi 芯片 未 显示在 其-ARP 列表中。 (所有其他器件都可以。)
我们想知道、SimpleLink 堆栈在获取 IP 地址后是否会执行免费的 ARP?
如果没有、我们是否可以命令 WiFi 芯片执行 ARP?
谢谢、Glenn。
您好、Glenn、
您是否曾尝试执行一些会触发 CC3220上的 ARP 的网络活动? 作为代码的一部分、您可能会连接到远程服务器、作为连接的一部分、CC3220将自动执行 ARP。 此 ARP 应填充 AP 的 ARP 列表。
也就是说,有一种方法可以触发手动 ARP 请求。 您可以打开一个原始套接字、构建 ARP 请求、然后发出此 ARP 请求。 我在下面的文章中详细介绍了该过程:
https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/p/845693/3134002#3134002
请告诉我您是否需要更多的说明或对执行该 ARP 有进一步的问题。
此致、
Michael
您好、Michael、
我尝试使用您引用的代码、我的版本附在下面。
我验证了我的 IP 和网关、可以 ping 我的地址、并在 Wireshark 捕获中看到它。
我看不到来自此发送的任何 ARP。
您在我的函数中看到了什么问题吗?
谢谢、Glenn。
int WiFi_Send_ARP (空)
{
int len、lstatus;
char buf[100];
struct arp_hdr* arp1;
struct arp_ETHIP* ETHIP;
struct arp_eth_hdr* ethhdr1;
无符号字符 dest_mac[6]={0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、 0xFF};
unsigned char eth_type[2]={0x08、0x06};
//检查网络连接
if (!(APP_CB.CON_CB.IpAddr)&!(APP_CB.CON_CB.GatewayIP))
返回-3;
//设置数据包
ethhdr1 =(struct arp_eth_HDR*) buf;
memcpy (ethhdr1->dst_mac、dest_mac、ETH_ADDR_LEN);
memcpy (ethhdr1->src_Mac、myMacAddress、ETH_ADDR_LEN);
memcpy(ethhdr1->type,eth_type,2);
arp1 =(struct arp_hdr*)(buf+ ETH_HDR_LEN);
arp1->ar_HRD = sl_Htons (ARP_HRD_ETH);
arp1->ar_pro = sl_Htons (ARP_PRO_IP);
arp1->ar_hln = ETH_ADDR_LEN;
arp1->ar_PLN = IP_ADDR_LEN;
arp1->ar_op = sl_Htons (ARP_HRD_ETH);
ETHIP =(struct arp_ETHIP*)(buf + ARP_HDR_LEN + ETH_HDR_LEN);
memcpy (ETHIP->ar_SHA、myMacAddress、ETH_ADDR_LEN);
memcpy (ETHIP->ar_spa、(void *) app_CB.con_cb.IpAddr、IP_ADDR_LEN);/src IP
memcpy (ETHIP->ar_tha、dest_Mac、ETH_ADDR_LEN);
memcpy (ETHIP->ar_TPA、(void *) app_CB.CON_CB.GatewayIP、IP_ADDR_LEN);//dst IP
Len = ARP_HDR_LEN + ARP_ETHIP_LEN + ETH_HDR_LEN;
//发送数据包
lstatus = sl_Send (app_bc.socket、buf、len、0);
返回(lstatus);
}