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.

[参考译文] SIMPLELINK-WIFI-CC3120-SDK-PLUGIN:主机驱动程序 v 2.0.1.19中存在错误

Guru**** 2551360 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/613694/simplelink-wifi-cc3120-sdk-plugin-bug-in-host-driver-v-2-0-1-19

器件型号:SIMPLELINK-WIFI-CC3120-SDK-PLUGIN

您好!

由于 sl_socket.c 中的拼写错误、无法编译主机驱动程序:

原始代码:

#if _sl_include_FUNC (sl_accept)

static const _SlCmdCtrl_t _AccSlceptCmdCtrl =
{
sl_opcode_socket_accept、
(_SlArgSize_t) sizeof (SlAcceptCommand_t)、
(_SlArgSize_t) sizeof (_BasicResponse_t)、
};

_i16 sl_accept (_i16 SD、SockAddr_t *地址、Slslklen_t *地址)
{_SockAcceptMsg_u
MSG;
SlReturnVal_t 返回值;
SlSocketAddrResponse_u 观察;

_u8 ObjIdx = MAX_ONUSE_Actions;

/*验证是否允许此 API。 如果不允许、则
忽略 API 执行并立即返回、并显示错误*/
verify_api_allowed (sl_opcode_silo_socket);

MSG.Cmd.SD =(_u8) SD;

if ((addr!= NULL)&&(addrlen!= NULL))
{
/*如果存在 addr,则必须提供 addrlen */
MSG.Cmd.Family =(_u8)((sizeof (SlSockAddrIn_t)=*地址长度)? SL_AF_iNet:SL_AF_inet6);
}
其他
{
/*在任何其他情况下,addrlen 被忽略*/
MSG.Cmd.Family =(_u8) 0;
}

ObjIdx =_SlDrvProtect.当 值设置((_u8*)&RS=接受 ID、(_u8) SD 和 SL_BSD_Socket_ID_MASK);

if (MAX_ONUSE_ACactions = ObjIdx)
{
返回 SL_POOL_IS 为空;
}

/*发送命令*/
verify_RET_OK (_SlDrvCmdOp ((_SlCmdCtrl_t *)&_SlAcceptAccCmdCtrl、&Msg、NULL));
verify_Protocol (Msg.RSP.SD =(_u8) SD);

RetVal = Msg.RSP.StatusOrLen;

if (sl_OS_RET_CODE_OK = RetVal)
{
#ifndef sl_Tiny
/*如果套接字是非阻塞式、则应立即接收异步事件*/
if (g_PCB->SocketNonBlocking &(1<<(SD & SL_BSD_BSD_Socket_ID_MASK)))
{
SL_DRV_SYNC_OBJ_WAIT_TIMEOUT (&g_PCB->ObjPool[ObjIdx].SyncObj、
sl_driver_timeout_short、
sl_opcode_socket_ACCEPTASYNCRESPONSE
);
}
否则
#endif
{
/*等待异步并获取数据读取参数*/
SL_DRV_SYNC_OBJ_WAIT_FOREVER (&G PCB->ObjPool[ObjIdx].SyncObj);
}

verify_Protocol (.ipv1.sd =(_u8) sd);

RetVal = Rsp.IPv4.StatusOrLen;
#if 0 /*保留用于备份*/
_SlSocketParseAddress (&R19、addr、addrlen);
#else
if ((addr!= NULL)&&(addrlen!= NULL))
{
addr->sa_family =如果是我,那么我会推荐这家酒店。

if (sl_AF_iNet =addr->sa_family)
{
if (*addrlen ==(SlSockklen_t)sizeof (SlSockAddrIn_t))
{
(((SlSockAddrIn_t *) addr)->Sin_port = 0.0.0.0.0.0.0.0.0.
(((slSockAddrIn_t *) addr)->sin_addr.s_addr = oid.ipv1.Address;
}
其他
{
*addrlen=0;
}
}
#ifdef sl_support_ipv6
其他
{
if (* addrlen =sizeof (slSockAddrIn6_t))
{
(((SlSockAddrIn6_t *) addr)->sinc6_port = 0.0.0.0.0.0.0.0.0.
sl_memcpy (((((slSockAddrIn6_t *) addr)->sin6_addr._s6_un._s6_u32、19、isp.ipv6.Address、16);
}
其他
{
*addrlen=0;
}
}

#endif
#endif
}

_SlDrvReleasePoolObj (ObjIdx);
返回(_i16) RetVal;
}
#endif

固定:

#if _sl_include_FUNC (sl_accept)

static const _SlCmdCtrl_t _AccSlceptCmdCtrl =
{
sl_opcode_socket_accept、
(_SlArgSize_t) sizeof (SlAcceptCommand_t)、
(_SlArgSize_t) sizeof (_BasicResponse_t)、
};

_i16 sl_accept (_i16 SD、SockAddr_t *地址、Slslklen_t *地址)
{_SockAcceptMsg_u
MSG;
SlReturnVal_t 返回值;
SlSocketAddrResponse_u 观察;

_u8 ObjIdx = MAX_ONUSE_Actions;

/*验证是否允许此 API。 如果不允许、则
忽略 API 执行并立即返回、并显示错误*/
verify_api_allowed (sl_opcode_silo_socket);

MSG.Cmd.SD =(_u8) SD;

if ((addr!= NULL)&&(addrlen!= NULL))
{
/*如果存在 addr,则必须提供 addrlen */
MSG.Cmd.Family =(_u8)((sizeof (SlSockAddrIn_t)=*地址长度)? SL_AF_iNet:SL_AF_inet6);
}
其他
{
/*在任何其他情况下,addrlen 被忽略*/
MSG.Cmd.Family =(_u8) 0;
}

ObjIdx =_SlDrvProtect.当 值设置((_u8*)&RS=接受 ID、(_u8) SD 和 SL_BSD_Socket_ID_MASK);

if (MAX_ONUSE_ACactions = ObjIdx)
{
返回 SL_POOL_IS 为空;
}

/*发送命令*/
verify_RET_OK (_SlDrvCmdOp ((_SlCmdCtrl_t *)&_SlAcceptAccCmdCtrl、&Msg、NULL));
verify_Protocol (Msg.RSP.SD =(_u8) SD);

RetVal = Msg.RSP.StatusOrLen;

if (sl_OS_RET_CODE_OK = RetVal)
{
#ifndef sl_Tiny
/*如果套接字是非阻塞式、则应立即接收异步事件*/
if (g_PCB->SocketNonBlocking &(1<<(SD & SL_BSD_BSD_Socket_ID_MASK)))
{
SL_DRV_SYNC_OBJ_WAIT_TIMEOUT (&g_PCB->ObjPool[ObjIdx].SyncObj、
sl_driver_timeout_short、
sl_opcode_socket_ACCEPTASYNCRESPONSE
);
}
否则
#endif
{
/*等待异步并获取数据读取参数*/
SL_DRV_SYNC_OBJ_WAIT_FOREVER (&G PCB->ObjPool[ObjIdx].SyncObj);
}

verify_Protocol (.ipv1.sd =(_u8) sd);

RetVal = Rsp.IPv4.StatusOrLen;
#if 0 /*保留用于备份*/
_SlSocketParseAddress (&R19、addr、addrlen);
#else
if ((addr!= NULL)&&(addrlen!= NULL))
{
addr->sa_family =如果是我,那么我会推荐这家酒店。

if (sl_AF_iNet =addr->sa_family)
{
if (*addrlen ==(SlSockklen_t)sizeof (SlSockAddrIn_t))
{
(((SlSockAddrIn_t *) addr)->Sin_port = 0.0.0.0.0.0.0.0.0.
(((slSockAddrIn_t *) addr)->sin_addr.s_addr = oid.ipv1.Address;
}
其他
{
*addrlen=0;
}
}
#ifdef sl_support_ipv6
其他
{
if (* addrlen =sizeof (slSockAddrIn6_t))
{
(((SlSockAddrIn6_t *) addr)->sinc6_port = 0.0.0.0.0.0.0.0.0.
sl_memcpy (((((slSockAddrIn6_t *) addr)->sin6_addr._s6_un._s6_u32、19、isp.ipv6.Address、16);
}
其他
{
*addrlen=0;
}
}
#endif
#endif
}
}

_SlDrvReleasePoolObj (ObjIdx);
返回(_i16) RetVal;
}
#endif 

此致、

尤金

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Eugene -
    我们昨天发布了新版本的插件-我在同一个文件中看不到同样的错误。

    www.ti.com/.../SIMPLELINK-WIFI-CC3120-SDK-PLUGIN
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Josh、您好!

    是的、我使用这个新驱动程序。 旧驱动程序没有该排印错误。

    此文件的路径为 TI\simplelink_msp432_sdk_wi_plugin_1_40_00_02\source\ti\drivers\net\fies\sources\sl_socket.c

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

    好的-我现在看到了。 该文件中的第776行...将修复

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

    Josh,Eugene 代码也是错误的,应该是这样的:

    #ifdef sl_support_ipv6
    其他
    {
    if (* addrlen =sizeof (slSockAddrIn6_t))
    {
    (((SlSockAddrIn6_t *) addr)->sinc6_port = 0.0.0.0.0.0.0.0.0.
    sl_memcpy (((((slSockAddrIn6_t *) addr)->sin6_addr._s6_un._s6_u32、19、isp.ipv6.Address、16);
    }
    其他
    {
    *addrlen=0;
    }
    }
    #endif
    }
    #endif
    }
    
    _SlDrvReleasePoolObj (ObjIdx);
    返回(_i16) RetVal;
    }
    #endif 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我可以确认此问题。 Vitaly 是正确的;后括号应位于两 个#endif 定义之间。 如果未启用 IPv6支持、插件版本1.40无法构建。 我已在 SDK 副本中更正了此问题、并在 MCUxpresso v10.0下为 NXP Kinetis K64进行了编译。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    即将发布的 SDK 插件版本(版本1.50)对此进行了修复。 谢谢!

    此致、
    Sarah