请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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
此致、
尤金