Other Parts Discussed in Thread: CC3100, CC3100MODBOOST
Hi,
i'm using uart interface for CC3100.
I'm arrive al sl_accept command, i pink my device, i connect with a program from PC, but i'm stopped in this while:
" _SlDrvSyncObjWaitForever(&g_pCB->ObjPool[ObjIdx].SyncObj);".
I don't undertand?
Below my sl_accept function:
//////--------------------
_SocketAddrResponse_u AsyncRsp_A;
_i16 sl_Accept(_i16 sd, SlSockAddr_t *addr, SlSocklen_t *addrlen)
{
_SlSockAcceptMsg_u Msg;
_SlReturnVal_t RetVal;
//_SocketAddrResponse_u AsyncRsp;
_u8 ObjIdx = MAX_CONCURRENT_ACTIONS;
MsgAc.Cmd.sd = (_u8)sd;
MsgAc.Cmd.family = (sizeof(SlSockAddrIn_t) == *addrlen) ? SL_AF_INET : SL_AF_INET6;
// MsgAc.Cmd.padding1 = 1;//MC141015
ObjIdx = _SlDrvProtectAsyncRespSetting((_u8*)&AsyncRsp_A, ACCEPT_ID, sd & BSD_SOCKET_ID_MASK );
if (MAX_CONCURRENT_ACTIONS == ObjIdx)
{
return SL_POOL_IS_EMPTY;
}
/* send the command */
// VERIFY_RET_OK(_SlDrvCmdOp((_SlCmdCtrl_t *)&_SlAcceptCmdCtrl, &MsgAc, NULL));
RetVal = (_SlDrvCmdOp((_SlCmdCtrl_t *)&_SlAcceptCmdCtrl, &MsgAc, NULL));
_SL_ASSERT((_SlReturnVal_t)SL_OS_RET_CODE_OK == RetVal)
VERIFY_PROTOCOL(MsgAc.Rsp.sd == sd);
RetVal = MsgAc.Rsp.statusOrLen;
if(SL_OS_RET_CODE_OK == RetVal)
{
/* wait for async and get Data Read parameters */
_SlDrvSyncObjWaitForever(&g_pCB->ObjPool[ObjIdx].SyncObj);
VERIFY_PROTOCOL(AsyncRsp_A.IpV4.sd == sd);
RetVal = AsyncRsp_A.IpV4.statusOrLen;
if( (NULL != addr) && (NULL != addrlen) )
{
#if 0 /* Kept for backup */
_sl_ParseAddress(&AsyncRsp_A, addr, addrlen);
#else
addr->sa_family = AsyncRsp_A.IpV4.family;
if(SL_AF_INET == addr->sa_family)
{
if( *addrlen == sizeof( SlSockAddrIn_t ) )
{
((SlSockAddrIn_t *)addr)->sin_port = AsyncRsp_A.IpV4.port;
((SlSockAddrIn_t *)addr)->sin_addr.s_addr = AsyncRsp_A.IpV4.address;
}
else
{
*addrlen = 0;
}
}
else if (SL_AF_INET6_EUI_48 == addr->sa_family )
{
if( *addrlen == sizeof( SlSockAddrIn6_t ) )
{
((SlSockAddrIn6_t *)addr)->sin6_port = AsyncRsp_A.IpV6EUI48.port ;
/* will be called from here and from _sl_BuildAddress*/
sl_Memcpy(((SlSockAddrIn6_t *)addr)->sin6_addr._S6_un._S6_u8, AsyncRsp_A.IpV6EUI48.address, 6);
}
else
{
*addrlen = 0;
}
}
#ifdef SL_SUPPORT_IPV6
else
{
if( *addrlen == sizeof( sockaddr_in6 ) )
{
((sockaddr_in6 *)addr)->sin6_port = AsyncRsp.IpV6.port ;
sl_Memcpy(((sockaddr_in6 *)addr)->sin6_addr._S6_un._S6_u32, AsyncRsp_A.IpV6.address, 16);
}
else
{
*addrlen = 0;
}
}
#endif
#endif
}
}
_SlDrvReleasePoolObj(ObjIdx);
return (_i16)RetVal;
}
//-------------------------
sd = 0x0010
addrlen = 0x10
someone could halp me?
thanks