40 #include <ti/drivers/net/wifi/simplelink.h> 41 #include <ti/net/utils/str_mpl.h> 44 #include <ti/net/atcmd/atcmd_socket.h> 45 #include <ti/net/atcmd/atcmd_defs.h> 46 #include <ti/net/atcmd/atcmd_event.h> 47 #include <ti/net/atcmd/atcmd_gen.h> 48 #include <ti/net/atcmd/atcmd.h> 58 typedef struct _ATCmdSock_t_
66 typedef struct _ATCmdSock_Socket_t_
73 typedef struct _ATCmdSock_Accept_t_
80 typedef struct _ATCmdSock_Listen_t_
86 typedef struct _ATCmdSock_Select_t_
93 typedef struct _ATCmdSock_SetSockOpt_t_
100 }ATCmdSock_SetSockOpt_t;
102 typedef struct _ATCmdSock_tcp_t_
111 typedef struct _ATCmdSock_udp_t_
137 int32_t ATCmdSock_socketResult(
void *args, int32_t num,
char *buff)
139 int16_t sd = (int16_t)(num);
141 StrMpl_setStr(ATCmd_sockSocketStr,&buff,ATCMD_DELIM_EVENT);
142 StrMpl_setVal(&sd,&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_SIGNED|STRMPL_FLAG_PARAM_DEC);
158 int32_t ATCmdSock_socketParse(
char *buff, ATCmdSock_Socket_t *params)
163 if ((ret = StrMpl_getListVal(ATCmd_sockDomain,
sizeof(ATCmd_sockDomain)/
sizeof(StrMpl_List_t), &buff, ¶ms->domain, ATCMD_DELIM_ARG,
sizeof(params->domain))) < 0)
169 if ((ret = StrMpl_getListVal(ATCmd_sockType,
sizeof(ATCmd_sockType)/
sizeof(StrMpl_List_t), &buff, ¶ms->type, ATCMD_DELIM_ARG,
sizeof(params->type))) < 0)
175 if ((ret = StrMpl_getListVal(ATCmd_sockProtocol,
sizeof(ATCmd_sockProtocol)/
sizeof(StrMpl_List_t), &buff, ¶ms->protocol, ATCMD_DELIM_TRM,
sizeof(params->protocol))) < 0)
196 ATCmdSock_Socket_t sockParams;
198 memset(&sockParams, 0x0,
sizeof(ATCmdSock_Socket_t));
201 ret = ATCmdSock_socketParse((
char *)arg,&sockParams);
205 ATCmd_errorResult(ATCmd_errorParseStr,ret);
210 ret = sl_Socket(sockParams.domain, sockParams.type, sockParams.protocol);
214 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
218 ATCmd_commandResult(ATCmdSock_socketResult,NULL,ret);
236 int32_t ATCmdSock_closeResult(
void *args, int32_t num,
char *buff)
238 int16_t sock = (int16_t)num;
240 StrMpl_setStr(ATCmd_sockCloseStr,&buff,ATCMD_DELIM_EVENT);
242 StrMpl_setVal(&sock,&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_SIGNED|STRMPL_FLAG_PARAM_DEC);
263 if ((ret = StrMpl_getVal((
char **)&arg, (
void *)&sock, ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
265 ATCmd_errorResult(ATCmd_errorParseStr,ret);
270 ret = sl_Close(sock);
274 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
278 ATCmd_commandResult(ATCmdSock_closeResult,NULL,sock);
293 int32_t ATCmdSock_acceptFree(ATCmdSock_Accept_t *params)
314 int32_t ATCmdSock_acceptParse(
char *buff, ATCmdSock_Accept_t *params)
319 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->sd, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
324 if ((ret = StrMpl_getListVal(ATCmd_sockDomain,
sizeof(ATCmd_sockDomain)/
sizeof(StrMpl_List_t), &buff, ¶ms->domain, ATCMD_DELIM_TRM, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
330 if (params->domain == SL_AF_INET)
332 params->ret.addrlen =
sizeof(SlSockAddrIn_t);
334 else if (params->domain == SL_AF_INET6)
336 params->ret.addrlen =
sizeof(SlSockAddrIn6_t);
356 int32_t ATCmdSock_acceptResult(
void *args, int32_t num,
char *buff)
358 ATCmdSock_Accept_t *params = (ATCmdSock_Accept_t *)args;
359 void *addr = ¶ms->ret.addr;
362 StrMpl_setStr(ATCmd_sockAcceptStr,&buff,ATCMD_DELIM_EVENT);
364 StrMpl_setVal(¶ms->ret.sd,&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_SIGNED|STRMPL_FLAG_PARAM_DEC);
366 StrMpl_setListStr(ATCmd_sockDomain,
sizeof(ATCmd_sockDomain)/
sizeof(StrMpl_List_t),&(params->ret.addr.sa_family),&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_UNSIGNED);
368 if (params->ret.addr.sa_family == SL_AF_INET)
370 ((SlSockAddrIn_t *)(addr))->sin_port = sl_Htons(((SlSockAddrIn_t *)(addr))->sin_port);
372 StrMpl_setVal(&(((SlSockAddrIn_t *)(addr))->sin_port),&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
374 ((SlSockAddrIn_t *)(addr))->sin_addr.s_addr = sl_Htonl(((SlSockAddrIn_t *)(addr))->sin_addr.s_addr);
375 ATCmd_valToIPv4(((SlSockAddrIn_t *)(addr))->sin_addr.s_addr, ip);
376 StrMpl_setArrayVal(ip,&buff,4,ATCMD_DELIM_TRM,ATCMD_DELIM_INTER,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_8 | STRMPL_FLAG_PARAM_UNSIGNED);
378 else if (params->ret.addr.sa_family == SL_AF_INET6)
380 ((SlSockAddrIn6_t *)(addr))->sin6_port = sl_Htons(((SlSockAddrIn6_t *)(addr))->sin6_port);
382 StrMpl_setVal(&(((SlSockAddrIn6_t *)(addr))->sin6_port),&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
384 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[0] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[0]);
385 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[1] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[1]);
386 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[2] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[2]);
387 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[3] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[3]);
388 StrMpl_setArrayVal(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32,&buff,4,ATCMD_DELIM_TRM,ATCMD_DELIM_ARRAY,STRMPL_FLAG_PARAM_HEX | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_UNSIGNED);
391 ATCmdSock_acceptFree(params);
409 ATCmdSock_Accept_t *params;
411 params = malloc(
sizeof(ATCmdSock_Accept_t));
415 ATCmd_errorResult(ATCmd_errorAllocStr,0);
418 memset(params, 0x0,
sizeof(ATCmdSock_Accept_t));
421 ret = ATCmdSock_acceptParse((
char *)arg, params);
425 ATCmd_errorResult(ATCmd_errorParseStr,ret);
426 ATCmdSock_acceptFree(params);
434 params->ret.sd = sl_Accept(params->sd,¶ms->ret.addr,¶ms->ret.addrlen);
436 if (params->ret.sd < 0)
438 ATCmd_errorResult(ATCmd_errorCmdStr,params->ret.sd);
439 ATCmdSock_acceptFree(params);
443 ATCmd_commandResult(ATCmdSock_acceptResult,params,0);
463 int32_t ATCmdSock_parse(
char **buff, ATCmdSock_t *params,
char delim)
466 void *addr = ¶ms->addr;
470 if ((ret = StrMpl_getVal(buff, ¶ms->sd, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
475 if ((ret = StrMpl_getListVal(ATCmd_sockDomain,
sizeof(ATCmd_sockDomain)/
sizeof(StrMpl_List_t), buff, ¶ms->addr.sa_family, ATCMD_DELIM_ARG, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
480 if (params->addr.sa_family == SL_AF_INET)
483 if ((ret = StrMpl_getVal(buff, &((SlSockAddrIn_t *)(addr))->sin_port, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
487 ((SlSockAddrIn_t *)(addr))->sin_port = sl_Htons(((SlSockAddrIn_t *)(addr))->sin_port);
489 if ((ret = StrMpl_getArrayVal(buff,(
void *)ip,4,delim,ATCMD_DELIM_INTER, STRMPL_FLAG_PARAM_SIZE_8 ,ATCmd_excludeDelimArray)) < 0)
493 ((SlSockAddrIn_t *)(addr))->sin_addr.s_addr = sl_Htonl(SL_IPV4_VAL(ip[0],ip[1],ip[2],ip[3]));
495 params->addrlen =
sizeof(SlSockAddrIn_t);
497 else if (params->addr.sa_family == SL_AF_INET6)
500 if ((ret = StrMpl_getVal(buff, &((SlSockAddrIn6_t *)(addr))->sin6_port, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
504 ((SlSockAddrIn6_t *)(addr))->sin6_port = sl_Htons(((SlSockAddrIn6_t *)(addr))->sin6_port);
506 if ((ret = StrMpl_getArrayVal(buff, (
void *)(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32),4,delim,ATCMD_DELIM_ARRAY,STRMPL_FLAG_PARAM_SIZE_32,ATCmd_excludeDelimArray)) < 0)
510 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[0] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[0]);
511 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[1] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[1]);
512 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[2] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[2]);
513 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[3] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[3]);
515 params->addrlen =
sizeof(SlSockAddrIn6_t);
542 memset(¶ms, 0x0,
sizeof(ATCmdSock_t));
545 ret = ATCmdSock_parse((
char **)&arg, ¶ms,ATCMD_DELIM_TRM);
549 ATCmd_errorResult(ATCmd_errorParseStr,ret);
554 ret = sl_Bind(params.sd,¶ms.addr,params.addrlen);
558 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
580 int32_t ATCmdSock_listenParse(
char *buff, ATCmdSock_Listen_t *params)
585 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->sd, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
590 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->backlog, ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
612 ATCmdSock_Listen_t params;
614 memset(¶ms, 0x0,
sizeof(ATCmdSock_Listen_t));
617 ret = ATCmdSock_listenParse((
char *)arg, ¶ms);
621 ATCmd_errorResult(ATCmd_errorParseStr,ret);
626 ret = sl_Listen(params.sd,params.backlog);
630 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
648 int32_t ATCmdSock_connectFree(ATCmdSock_t *params)
667 int32_t ATCmdSock_connectResult(
void *args, int32_t num,
char *buff)
669 ATCmdSock_t *params = (ATCmdSock_t *)args;
670 void *addr = ¶ms->addr;
673 StrMpl_setStr(ATCmd_sockConnectStr,&buff,ATCMD_DELIM_EVENT);
674 if (params->addr.sa_family == SL_AF_INET)
677 ((SlSockAddrIn_t *)(addr))->sin_port = sl_Htons(((SlSockAddrIn_t *)(addr))->sin_port);
678 StrMpl_setVal(&(((SlSockAddrIn_t *)(addr))->sin_port),&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
680 ((SlSockAddrIn_t *)(addr))->sin_addr.s_addr = sl_Htonl(((SlSockAddrIn_t *)(addr))->sin_addr.s_addr);
681 ATCmd_valToIPv4(((SlSockAddrIn_t *)(addr))->sin_addr.s_addr, ip);
682 StrMpl_setArrayVal(ip,&buff,4,ATCMD_DELIM_TRM,ATCMD_DELIM_INTER,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_8 | STRMPL_FLAG_PARAM_UNSIGNED);
684 else if (params->addr.sa_family == SL_AF_INET6)
687 ((SlSockAddrIn6_t *)(addr))->sin6_port = sl_Htons(((SlSockAddrIn6_t *)(addr))->sin6_port);
688 StrMpl_setVal(&(((SlSockAddrIn6_t *)(addr))->sin6_port),&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
690 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[0] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[0]);
691 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[1] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[1]);
692 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[2] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[2]);
693 ((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[3] = sl_Htonl(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32[3]);
694 StrMpl_setArrayVal(((SlSockAddrIn6_t *)(addr))->sin6_addr._S6_un._S6_u32,&buff,4,ATCMD_DELIM_TRM,ATCMD_DELIM_ARRAY,STRMPL_FLAG_PARAM_HEX | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_UNSIGNED);
697 ATCmdSock_connectFree(params);
719 params = malloc(
sizeof(ATCmdSock_t));
723 ATCmd_errorResult(ATCmd_errorAllocStr,0);
726 memset(params, 0x0,
sizeof(ATCmdSock_t));
729 ret = ATCmdSock_parse((
char **)&arg, params,ATCMD_DELIM_TRM);
733 ATCmd_errorResult(ATCmd_errorParseStr,ret);
734 ATCmdSock_connectFree(params);
742 ret = sl_Connect(params->sd,¶ms->addr,params->addrlen);
746 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
747 ATCmdSock_connectFree(params);
751 ATCmd_commandResult(ATCmdSock_connectResult,params,0);
767 int32_t ATCmdSock_selectFree(ATCmdSock_Select_t *params)
786 int32_t ATCmdSock_selectParse(
char *buff, ATCmdSock_Select_t *params)
791 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->nfds, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
796 if ((ret = StrMpl_getArrayBitVal((
char **)&buff, ¶ms->readsds.fd_array[0],ATCMD_DELIM_ARG,ATCMD_DELIM_BIT,ATCmd_excludeDelimArray,STRMPL_FLAG_PARAM_SIZE_32)) < 0)
802 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->timeout.tv_sec, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
808 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->timeout.tv_usec, ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
825 int32_t ATCmdSock_selectResult(
void *args, int32_t num,
char *buff)
827 ATCmdSock_Select_t *params = (ATCmdSock_Select_t *)args;
829 StrMpl_setStr(ATCmd_sockSelectStr,&buff,ATCMD_DELIM_EVENT);
830 StrMpl_setArrayBitVal(¶ms->readsds.fd_array[0],&buff,ATCMD_DELIM_TRM,ATCMD_DELIM_BIT,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_UNSIGNED);
832 ATCmdSock_selectFree(params);
851 ATCmdSock_Select_t *params;
853 params = malloc(
sizeof(ATCmdSock_Select_t));
857 ATCmd_errorResult(ATCmd_errorAllocStr,0);
860 memset(params, 0x0,
sizeof(ATCmdSock_Select_t));
863 ret = ATCmdSock_selectParse((
char *)arg, params);
867 ATCmd_errorResult(ATCmd_errorParseStr,ret);
868 ATCmdSock_selectFree(params);
877 ret = sl_Select(params->nfds,¶ms->readsds,NULL,NULL,¶ms->timeout);
881 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
882 ATCmdSock_selectFree(params);
886 ATCmd_commandResult(ATCmdSock_selectResult,params,0);
902 int32_t ATCmdSock_setSockOptFree(ATCmdSock_SetSockOpt_t *params)
904 if (params->optval != NULL)
906 free(params->optval);
921 int32_t ATCmdSock_setSockOptParse(
char *buff, ATCmdSock_SetSockOpt_t *params)
927 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->sd, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
932 if ((ret = StrMpl_getListVal(ATCmd_sockLevel,
sizeof(ATCmd_sockLevel)/
sizeof(StrMpl_List_t), &buff, ¶ms->level, ATCMD_DELIM_ARG, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
937 switch (params->level)
940 if ((ret = StrMpl_getListVal(ATCmd_sockSocketOpt,
sizeof(ATCmd_sockSocketOpt)/
sizeof(StrMpl_List_t), &buff, ¶ms->optname, ATCMD_DELIM_ARG, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
946 if ((ret = StrMpl_getListVal(ATCmd_sockIpOpt,
sizeof(ATCmd_sockIpOpt)/
sizeof(StrMpl_List_t), &buff, ¶ms->optname, ATCMD_DELIM_ARG, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
952 if ((ret = StrMpl_getListVal(ATCmd_sockPhyOpt,
sizeof(ATCmd_sockPhyOpt)/
sizeof(StrMpl_List_t), &buff, ¶ms->optname, ATCMD_DELIM_ARG, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
960 switch (params->optname)
962 case SL_SO_KEEPALIVE:
963 case SL_SO_KEEPALIVETIME:
964 case SL_SO_RX_NO_IP_BOUNDARY:
966 case SL_SO_NONBLOCKING :
967 case SL_SO_CHANGE_CHANNEL:
969 case SL_SO_PHY_TX_POWER:
970 case SL_SO_PHY_NUM_FRAMES_TO_TX:
971 case SL_SO_PHY_PREAMBLE:
972 case SL_IP_RAW_RX_NO_HEADER:
974 case SL_IP_RAW_IPV6_HDRINCL:
975 case SL_SO_PHY_TX_TIMEOUT:
976 case SL_SO_PHY_ALLOW_ACKS:
978 params->optlen =
sizeof(uint32_t);
979 params->optval = malloc(params->optlen);
980 if (params->optval == NULL)
982 return STRMPL_ERROR_MEM_ALLOCATION;
984 if ((ret = StrMpl_getVal((
char **)&buff, params->optval , ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_32)) < 0)
990 params->optlen =
sizeof(SlTimeval_t);
991 params->optval = malloc(params->optlen);
992 if (params->optval == NULL)
994 return STRMPL_ERROR_MEM_ALLOCATION;
996 if ((ret = StrMpl_getVal((
char **)&buff, &(((SlTimeval_t *)(params->optval))->tv_sec), ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
1001 if ((ret = StrMpl_getVal((
char **)&buff, &(((SlTimeval_t *)(params->optval))->tv_usec), ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
1006 case SL_SO_SECMETHOD:
1007 params->optlen =
sizeof(uint8_t);
1008 params->optval = malloc(params->optlen);
1009 if (params->optval == NULL)
1011 return STRMPL_ERROR_MEM_ALLOCATION;
1013 if ((ret = StrMpl_getListVal(ATCmd_sockSocketSecMethod,
sizeof(ATCmd_sockSocketSecMethod)/
sizeof(StrMpl_List_t), &buff, params->optval, ATCMD_DELIM_TRM, STRMPL_FLAG_PARAM_SIZE_8)) < 0)
1018 case SL_SO_SECURE_MASK:
1019 params->optlen =
sizeof(uint32_t);
1020 params->optval = malloc(params->optlen);
1021 if (params->optval == NULL)
1023 return STRMPL_ERROR_MEM_ALLOCATION;
1025 if ((ret = StrMpl_getBitmaskListVal(ATCmd_sockSocketCipher,
sizeof(ATCmd_sockSocketCipher)/
sizeof(StrMpl_List_t), &buff, params->optval, ATCMD_DELIM_TRM,ATCMD_DELIM_BIT, ATCmd_excludeDelimArray,STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
1027 if (ret != STRMPL_ERROR_PARAM_MISSING)
1032 *(uint32_t *)(params->optval) = SL_SEC_MASK_SECURE_DEFAULT;
1035 case SL_SO_SECURE_FILES_CA_FILE_NAME:
1036 case SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME:
1037 case SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME:
1038 case SL_SO_SECURE_FILES_PEER_CERT_OR_DH_KEY_FILE_NAME:
1039 case SL_SO_SECURE_DOMAIN_NAME_VERIFICATION:
1040 if ((ret = StrMpl_getAllocStr(&buff, (
char **)¶ms->optval, ATCMD_DELIM_TRM, 255 ,ATCmd_excludeDelimStr)) < 0)
1044 params->optlen = strlen((
char *)params->optval);
1046 case SL_SO_SECURE_ALPN:
1047 params->optlen =
sizeof(uint32_t);
1048 params->optval = malloc(params->optlen);
1049 if (params->optval == NULL)
1051 return STRMPL_ERROR_MEM_ALLOCATION;
1053 if ((ret = StrMpl_getBitmaskListVal(ATCmd_sockSocketAlpn,
sizeof(ATCmd_sockSocketAlpn)/
sizeof(StrMpl_List_t), &buff, params->optval, ATCMD_DELIM_TRM,ATCMD_DELIM_BIT, ATCmd_excludeDelimArray, STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
1059 case SL_IP_MULTICAST_TTL:
1060 params->optlen =
sizeof(uint8_t);
1061 params->optval = malloc(params->optlen);
1062 if (params->optval == NULL)
1064 return STRMPL_ERROR_MEM_ALLOCATION;
1066 if ((ret = StrMpl_getVal((
char **)&buff, params->optval , ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_8)) < 0)
1071 case SL_IP_ADD_MEMBERSHIP:
1072 case SL_IP_DROP_MEMBERSHIP:
1073 params->optlen =
sizeof(SlSockIpMreq_t);
1074 params->optval = malloc(params->optlen);
1075 if (params->optval == NULL)
1077 return STRMPL_ERROR_MEM_ALLOCATION;
1079 if ((ret = StrMpl_getArrayVal(&buff,(
void *)ip,4,ATCMD_DELIM_ARG,ATCMD_DELIM_INTER, STRMPL_FLAG_PARAM_SIZE_8 ,ATCmd_excludeDelimArray)) < 0)
1083 ((SlSockIpMreq_t *)(params->optval))->imr_multiaddr.s_addr = sl_Htonl(SL_IPV4_VAL(ip[0],ip[1],ip[2],ip[3]));
1084 if ((ret = StrMpl_getArrayVal(&buff,(
void *)ip,4,ATCMD_DELIM_TRM,ATCMD_DELIM_INTER, STRMPL_FLAG_PARAM_SIZE_8 ,ATCmd_excludeDelimArray)) < 0)
1088 ((SlSockIpMreq_t *)(params->optval))->imr_interface.s_addr = sl_Htonl(SL_IPV4_VAL(ip[0],ip[1],ip[2],ip[3]));
1090 case SL_SO_PHY_TX_INHIBIT_THRESHOLD :
1091 params->optlen =
sizeof(uint32_t);
1092 params->optval = malloc(params->optlen);
1093 if (params->optval == NULL)
1095 return STRMPL_ERROR_MEM_ALLOCATION;
1097 if ((ret = StrMpl_getListVal(ATCmd_sockPhyThreshold,
sizeof(ATCmd_sockPhyThreshold)/
sizeof(StrMpl_List_t), &buff, params->optval, ATCMD_DELIM_TRM, STRMPL_FLAG_PARAM_SIZE_32)) < 0)
1103 params->optlen =
sizeof(SlSocklinger_t);
1104 params->optval = malloc(params->optlen);
1105 if (params->optval == NULL)
1107 return STRMPL_ERROR_MEM_ALLOCATION;
1109 if ((ret = StrMpl_getVal((
char **)&buff, &(((SlSocklinger_t *)(params->optval))->l_onoff), ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
1114 if ((ret = StrMpl_getVal((
char **)&buff, &(((SlSocklinger_t *)(params->optval))->l_linger), ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_32 )) < 0)
1119 case SL_SO_SECURE_EXT_CLIENT_CHLNG_RESP:
1120 params->optval = malloc(
sizeof(int32_t));
1121 if (params->optval == NULL)
1123 return STRMPL_ERROR_MEM_ALLOCATION;
1125 params->optlen =
sizeof(int32_t);
1147 ATCmdSock_SetSockOpt_t params;
1149 memset(¶ms, 0x0,
sizeof(ATCmdSock_SetSockOpt_t));
1152 ret = ATCmdSock_setSockOptParse((
char *)arg, ¶ms);
1156 ATCmd_errorResult(ATCmd_errorParseStr,ret);
1157 ATCmdSock_setSockOptFree(¶ms);
1162 ret = sl_SetSockOpt(params.sd,params.level,params.optname,(
const void *)params.optval,params.optlen);
1166 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
1173 ATCmdSock_setSockOptFree(¶ms);
1185 int32_t ATCmdSock_getSockOptFree(ATCmdSock_SetSockOpt_t *params)
1189 if (params->optval != NULL)
1191 free(params->optval);
1208 int32_t ATCmdSock_getSockOptParse(
char *buff, ATCmdSock_SetSockOpt_t *params)
1213 if ((ret = StrMpl_getVal((
char **)&buff, ¶ms->sd, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1218 if ((ret = StrMpl_getListVal(ATCmd_sockLevel,
sizeof(ATCmd_sockLevel)/
sizeof(StrMpl_List_t), &buff, ¶ms->level, ATCMD_DELIM_ARG, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1223 switch (params->level)
1226 if ((ret = StrMpl_getListVal(ATCmd_sockSocketOpt,
sizeof(ATCmd_sockSocketOpt)/
sizeof(StrMpl_List_t), &buff, ¶ms->optname, ATCMD_DELIM_TRM, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1232 if ((ret = StrMpl_getListVal(ATCmd_sockIpOpt,
sizeof(ATCmd_sockIpOpt)/
sizeof(StrMpl_List_t), &buff, ¶ms->optname, ATCMD_DELIM_TRM, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1237 case SL_SOL_PHY_OPT:
1238 if ((ret = StrMpl_getListVal(ATCmd_sockPhyOpt,
sizeof(ATCmd_sockPhyOpt)/
sizeof(StrMpl_List_t), &buff, ¶ms->optname, ATCMD_DELIM_TRM, STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1246 switch (params->optname)
1248 case SL_SO_KEEPALIVE:
1249 case SL_SO_KEEPALIVETIME:
1250 case SL_SO_RX_NO_IP_BOUNDARY:
1252 case SL_SO_NONBLOCKING :
1253 case SL_SO_CHANGE_CHANNEL:
1254 case SL_SO_PHY_RATE:
1255 case SL_SO_PHY_TX_POWER:
1256 case SL_SO_PHY_NUM_FRAMES_TO_TX:
1257 case SL_SO_PHY_PREAMBLE:
1258 case SL_IP_RAW_RX_NO_HEADER:
1260 case SL_IP_RAW_IPV6_HDRINCL:
1261 case SL_SO_PHY_TX_TIMEOUT:
1262 case SL_SO_PHY_ALLOW_ACKS:
1263 case SL_SO_SECURE_MASK:
1264 case SL_SO_SECURE_ALPN:
1265 case SL_SO_PHY_TX_INHIBIT_THRESHOLD :
1266 case SL_SO_SECURE_EXT_CLIENT_CHLNG_RESP:
1267 params->optlen =
sizeof(uint32_t);
1269 case SL_SO_RCVTIMEO:
1270 params->optlen =
sizeof(SlTimeval_t);
1272 case SL_SO_SECMETHOD:
1273 case SL_IP_MULTICAST_TTL:
1274 params->optlen =
sizeof(uint8_t);
1276 case SL_SO_SECURE_FILES_CA_FILE_NAME:
1277 case SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME:
1278 case SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME:
1279 case SL_SO_SECURE_FILES_PEER_CERT_OR_DH_KEY_FILE_NAME:
1280 case SL_SO_SECURE_DOMAIN_NAME_VERIFICATION:
1281 params->optlen = 255;
1283 case SL_IP_ADD_MEMBERSHIP:
1284 case SL_IP_DROP_MEMBERSHIP:
1285 params->optlen =
sizeof(SlSockIpMreq_t);
1288 params->optlen =
sizeof(SlSocklinger_t);
1292 params->optval = malloc(params->optlen);
1293 if(params->optval == NULL)
1312 int32_t ATCmdSock_getSockOptResult(
void *args, int32_t num,
char *buff)
1314 ATCmdSock_SetSockOpt_t *params = (ATCmdSock_SetSockOpt_t *)args;
1317 StrMpl_setStr(ATCmd_sockGetSockOptStr,&buff,ATCMD_DELIM_EVENT);
1318 switch (params->optname)
1320 case SL_SO_KEEPALIVE:
1321 case SL_SO_KEEPALIVETIME:
1322 case SL_SO_RX_NO_IP_BOUNDARY:
1324 case SL_SO_NONBLOCKING :
1325 case SL_SO_CHANGE_CHANNEL:
1326 case SL_SO_PHY_RATE:
1327 case SL_SO_PHY_TX_POWER:
1328 case SL_SO_PHY_NUM_FRAMES_TO_TX:
1329 case SL_SO_PHY_PREAMBLE:
1330 case SL_IP_RAW_RX_NO_HEADER:
1332 case SL_IP_RAW_IPV6_HDRINCL:
1333 case SL_SO_PHY_TX_TIMEOUT:
1334 case SL_SO_PHY_ALLOW_ACKS:
1335 StrMpl_setVal(params->optval,&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_UNSIGNED);
1337 case SL_SO_RCVTIMEO:
1338 StrMpl_setVal(&(((SlTimeval_t *)(params->optval))->tv_sec),&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_SIGNED);
1339 StrMpl_setVal(&(((SlTimeval_t *)(params->optval))->tv_usec),&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_SIGNED);
1341 case SL_SO_SECMETHOD:
1342 StrMpl_setListStr(ATCmd_sockSocketSecMethod,
sizeof(ATCmd_sockSocketSecMethod)/
sizeof(StrMpl_List_t),params->optval,&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_8 |STRMPL_FLAG_PARAM_UNSIGNED);
1344 case SL_SO_SECURE_MASK:
1345 StrMpl_setBitmaskListStr(ATCmd_sockSocketCipher,
sizeof(ATCmd_sockSocketCipher)/
sizeof(StrMpl_List_t),params->optval, &buff, ATCMD_DELIM_TRM, ATCMD_DELIM_BIT, STRMPL_FLAG_PARAM_SIZE_32 |STRMPL_FLAG_PARAM_UNSIGNED);
1347 case SL_SO_SECURE_FILES_CA_FILE_NAME:
1348 case SL_SO_SECURE_FILES_PRIVATE_KEY_FILE_NAME:
1349 case SL_SO_SECURE_FILES_CERTIFICATE_FILE_NAME:
1350 case SL_SO_SECURE_FILES_PEER_CERT_OR_DH_KEY_FILE_NAME:
1351 case SL_SO_SECURE_DOMAIN_NAME_VERIFICATION:
1352 StrMpl_setStr((
char *)params->optval,&buff,ATCMD_DELIM_TRM);
1354 case SL_SO_SECURE_ALPN:
1355 if (*(uint32_t *)params->optval == SL_SECURE_ALPN_FULL_LIST)
1357 StrMpl_setListStr(ATCmd_sockSocketAlpn,
sizeof(ATCmd_sockSocketAlpn)/
sizeof(StrMpl_List_t),params->optval,&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_8 |STRMPL_FLAG_PARAM_UNSIGNED);
1361 StrMpl_setBitmaskListStr(ATCmd_sockSocketAlpn,
sizeof(ATCmd_sockSocketAlpn)/
sizeof(StrMpl_List_t),params->optval, &buff, ATCMD_DELIM_TRM, ATCMD_DELIM_BIT, STRMPL_FLAG_PARAM_SIZE_32 |STRMPL_FLAG_PARAM_UNSIGNED);
1365 case SL_IP_MULTICAST_TTL:
1366 StrMpl_setVal(params->optval,&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_8 | STRMPL_FLAG_PARAM_UNSIGNED);
1368 case SL_IP_ADD_MEMBERSHIP:
1369 case SL_IP_DROP_MEMBERSHIP:
1370 ((SlSockIpMreq_t *)(params->optval))->imr_multiaddr.s_addr = sl_Htonl(((SlSockIpMreq_t *)(params->optval))->imr_multiaddr.s_addr);
1371 ATCmd_valToIPv4(((SlSockIpMreq_t *)(params->optval))->imr_multiaddr.s_addr, val);
1372 StrMpl_setArrayVal(val,&buff,4,ATCMD_DELIM_ARG,ATCMD_DELIM_INTER,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_8 | STRMPL_FLAG_PARAM_UNSIGNED);
1373 ((SlSockIpMreq_t *)(params->optval))->imr_interface.s_addr = sl_Htonl(((SlSockIpMreq_t *)(params->optval))->imr_interface.s_addr);
1374 ATCmd_valToIPv4(((SlSockIpMreq_t *)(params->optval))->imr_interface.s_addr, val);
1375 StrMpl_setArrayVal(val,&buff,4,ATCMD_DELIM_TRM,ATCMD_DELIM_INTER,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_8 | STRMPL_FLAG_PARAM_UNSIGNED);
1377 case SL_SO_PHY_TX_INHIBIT_THRESHOLD :
1378 StrMpl_setListStr(ATCmd_sockPhyThreshold,
sizeof(ATCmd_sockPhyThreshold)/
sizeof(StrMpl_List_t),params->optval,&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_32 |STRMPL_FLAG_PARAM_UNSIGNED);
1381 StrMpl_setVal(&(((SlSocklinger_t *)(params->optval))->l_onoff),&buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_UNSIGNED);
1382 StrMpl_setVal(&(((SlSocklinger_t *)(params->optval))->l_linger),&buff,ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_DEC | STRMPL_FLAG_PARAM_SIZE_32 | STRMPL_FLAG_PARAM_UNSIGNED);
1386 ATCmdSock_getSockOptFree(params);
1405 ATCmdSock_SetSockOpt_t *params;
1407 params = malloc(
sizeof(ATCmdSock_SetSockOpt_t));
1411 ATCmd_errorResult(ATCmd_errorAllocStr,0);
1414 memset(params, 0x0,
sizeof(ATCmdSock_SetSockOpt_t));
1417 ret = ATCmdSock_getSockOptParse((
char *)arg, params);
1421 ATCmd_errorResult(ATCmd_errorParseStr,ret);
1422 ATCmdSock_getSockOptFree(params);
1427 ret = sl_GetSockOpt(params->sd,params->level,params->optname,params->optval,¶ms->optlen);
1431 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
1432 ATCmdSock_getSockOptFree(params);
1436 ATCmd_commandResult(ATCmdSock_getSockOptResult,params,0);
1451 int32_t ATCmdSock_sendFree(ATCmdSock_tcp_t *params)
1453 if (params->data != NULL)
1470 int32_t ATCmdSock_sendParse(
char *buff, ATCmdSock_tcp_t *params)
1476 if ((ret = StrMpl_getVal(&buff, ¶ms->sd, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1482 if ((ret = StrMpl_getVal(&buff, ¶ms->format , ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_8)) < 0)
1488 if ((ret = StrMpl_getVal(&buff, ¶ms->len, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16)) < 0)
1493 if (params->format == ATCMD_DATA_FORMAT_BASE64)
1496 outputLen = StrMpl_getBase64DecBufSize((uint8_t *)buff,params->len);
1497 params->data = malloc(outputLen);
1498 if (params->data == NULL)
1502 if (StrMpl_decodeBase64((uint8_t *)buff, params->len, params->data, (uint32_t *)&outputLen) < 0)
1506 params->len = outputLen;
1510 params->data = malloc(params->len);
1511 if (params->data == NULL)
1516 memcpy(params->data, buff, params->len);
1537 ATCmdSock_tcp_t params;
1539 memset(¶ms, 0x0,
sizeof(ATCmdSock_tcp_t));
1542 ret = ATCmdSock_sendParse((
char *)arg, ¶ms);
1546 ATCmd_errorResult(ATCmd_errorParseStr,ret);
1547 ATCmdSock_sendFree(¶ms);
1552 ret = sl_Send(params.sd, params.data, params.len, params.flags);
1556 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
1563 ATCmdSock_sendFree(¶ms);
1575 int32_t ATCmdSock_recvFree(ATCmdSock_tcp_t *params)
1579 if (params->data != NULL)
1598 int32_t ATCmdSock_recvParse(
char *buff, ATCmdSock_tcp_t *params)
1603 if ((ret = StrMpl_getVal(&buff, ¶ms->sd, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1609 if ((ret = StrMpl_getVal(&buff, ¶ms->format , ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_8)) < 0)
1615 if ((ret = StrMpl_getVal(&buff, ¶ms->len, ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1620 params->data = malloc(params->len);
1621 if (params->data == NULL)
1638 int32_t ATCmdSock_recvResult(
void *args, int32_t num,
char *buff)
1640 ATCmdSock_tcp_t *params = (ATCmdSock_tcp_t *)args;
1643 StrMpl_setStr(ATCmd_sockRecvStr,&buff,ATCMD_DELIM_EVENT);
1645 StrMpl_setVal(¶ms->sd, &buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_SIGNED|STRMPL_FLAG_PARAM_DEC);
1648 StrMpl_setVal(¶ms->format, &buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_8 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
1651 outputLen = params->len;
1652 if (params->format == ATCMD_DATA_FORMAT_BASE64)
1655 outputLen = StrMpl_getBase64EncBufSize(params->len);
1657 StrMpl_setVal(&outputLen, &buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_32 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
1659 if (params->format == ATCMD_DATA_FORMAT_BASE64)
1662 StrMpl_encodeBase64(params->data, params->len, (uint8_t *)buff, &outputLen);
1666 memcpy(buff,params->data,params->len);
1668 ATCmdSock_recvFree(params);
1687 ATCmdSock_tcp_t *params;
1689 params = malloc(
sizeof(ATCmdSock_tcp_t));
1693 ATCmd_errorResult(ATCmd_errorAllocStr,0);
1697 memset(params, 0x0,
sizeof(ATCmdSock_tcp_t));
1700 ret = ATCmdSock_recvParse((
char *)arg, params);
1704 ATCmd_errorResult(ATCmd_errorParseStr,ret);
1705 ATCmdSock_recvFree(params);
1713 params->len = sl_Recv(params->sd, params->data, params->len, params->flags);
1715 if (params->len < 0)
1717 ATCmd_errorResult(ATCmd_errorCmdStr,params->len);
1718 ATCmdSock_recvFree(params);
1722 ATCmd_commandResult(ATCmdSock_recvResult,params,0);
1737 int32_t ATCmdSock_sendToFree(ATCmdSock_udp_t *params)
1739 if (params->data != NULL)
1756 int32_t ATCmdSock_sendToParse(
char *buff, ATCmdSock_udp_t *params)
1762 if ((ret = ATCmdSock_parse(&buff, ¶ms->target,ATCMD_DELIM_ARG)) < 0)
1768 if ((ret = StrMpl_getVal(&buff, ¶ms->format , ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_8)) < 0)
1774 if ((ret = StrMpl_getVal(&buff, ¶ms->len, ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16)) < 0)
1779 if (params->format == ATCMD_DATA_FORMAT_BASE64)
1782 outputLen = StrMpl_getBase64DecBufSize((uint8_t *)buff,params->len);
1783 params->data = malloc(outputLen);
1784 if (params->data == NULL)
1788 if (StrMpl_decodeBase64((uint8_t *)buff, params->len, params->data, (uint32_t *)&outputLen) < 0)
1792 params->len = outputLen;
1796 params->data = malloc(params->len);
1797 if (params->data == NULL)
1802 memcpy(params->data, buff, params->len);
1823 ATCmdSock_udp_t params;
1825 memset(¶ms, 0x0,
sizeof(ATCmdSock_udp_t));
1828 ret = ATCmdSock_sendToParse((
char *)arg, ¶ms);
1832 ATCmd_errorResult(ATCmd_errorParseStr,ret);
1833 ATCmdSock_sendToFree(¶ms);
1838 ret = sl_SendTo(params.target.sd, params.data, params.len, params.flags,¶ms.target.addr,params.target.addrlen);
1842 ATCmd_errorResult(ATCmd_errorCmdStr,ret);
1849 ATCmdSock_sendToFree(¶ms);
1861 int32_t ATCmdSock_recvFromFree(ATCmdSock_udp_t *params)
1865 if (params->data != NULL)
1884 int32_t ATCmdSock_recvFromParse(
char *buff, ATCmdSock_udp_t *params)
1889 if ((ret = ATCmdSock_parse(&buff, ¶ms->target,ATCMD_DELIM_ARG)) < 0)
1895 if ((ret = StrMpl_getVal(&buff, ¶ms->format , ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_8)) < 0)
1901 if ((ret = StrMpl_getVal(&buff, ¶ms->len, ATCMD_DELIM_TRM,STRMPL_FLAG_PARAM_SIZE_16 )) < 0)
1906 params->data = malloc(params->len);
1907 if (params->data == NULL)
1924 int32_t ATCmdSock_recvFromResult(
void *args, int32_t num,
char *buff)
1926 ATCmdSock_udp_t *params = (ATCmdSock_udp_t *)args;
1929 StrMpl_setStr(ATCmd_sockRecvFromStr,&buff,ATCMD_DELIM_EVENT);
1932 StrMpl_setVal(¶ms->target.sd, &buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_16 |STRMPL_FLAG_PARAM_SIGNED|STRMPL_FLAG_PARAM_DEC);
1935 StrMpl_setVal(¶ms->format, &buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_8 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
1938 outputLen = params->len;
1939 if (params->format == ATCMD_DATA_FORMAT_BASE64)
1942 outputLen = StrMpl_getBase64EncBufSize(params->len);
1944 StrMpl_setVal(&outputLen, &buff,ATCMD_DELIM_ARG,STRMPL_FLAG_PARAM_SIZE_32 |STRMPL_FLAG_PARAM_UNSIGNED|STRMPL_FLAG_PARAM_DEC);
1947 if (params->format == ATCMD_DATA_FORMAT_BASE64)
1950 StrMpl_encodeBase64(params->data, params->len, (uint8_t *)buff, &outputLen);
1954 memcpy(buff,params->data,params->len);
1956 ATCmdSock_recvFromFree(params);
1975 ATCmdSock_udp_t *params;
1977 params = malloc(
sizeof(ATCmdSock_udp_t));
1981 ATCmd_errorResult(ATCmd_errorAllocStr,0);
1985 memset(params, 0x0,
sizeof(ATCmdSock_udp_t));
1988 ret = ATCmdSock_recvFromParse((
char *)arg, params);
1992 ATCmd_errorResult(ATCmd_errorParseStr,ret);
1993 ATCmdSock_recvFromFree(params);
2001 params->len = sl_RecvFrom(params->target.sd, params->data, params->len, params->flags,¶ms->target.addr,¶ms->target.addrlen);
2003 if (params->len < 0)
2005 ATCmd_errorResult(ATCmd_errorCmdStr,params->len);
2006 ATCmdSock_recvFromFree(params);
2010 ATCmd_commandResult(ATCmdSock_recvFromResult,params,0);
int32_t ATCmdSock_closeCallback(void *arg)
Sock Close callback.
int32_t ATCmdSock_bindCallback(void *arg)
Sock Bind callback.
int32_t ATCmdSock_recvFromCallback(void *arg)
Sock RecvFrom callback.
int32_t ATCmdSock_sendCallback(void *arg)
Sock Send callback.
int32_t ATCmdSock_sendToCallback(void *arg)
Sock SendTo callback.
int32_t ATCmdSock_listenCallback(void *arg)
Sock Listen callback.
int32_t ATCmdSock_setSockOptCallback(void *arg)
Sock SetSockOpt callback.
int32_t ATCmdSock_acceptCallback(void *arg)
Sock Accept callback.
int32_t ATCmdSock_connectCallback(void *arg)
Sock Connect callback.
int32_t ATCmdSock_getSockOptCallback(void *arg)
Sock GetSockOpt callback.
int32_t ATCmdSock_recvCallback(void *arg)
Sock Recv callback.
int32_t ATCmdSock_selectCallback(void *arg)
Sock Select callback.
int32_t ATCmdSock_socketCallback(void *arg)
Sock Socket callback.