drivers:alt1250: Correspond to shutdown

ALT1250 driver to support shutdown.
This commit is contained in:
SPRESENSE
2023-09-21 17:01:18 +09:00
committed by Xiang Xiao
parent e930476b4b
commit 7f574210a7
4 changed files with 45 additions and 0 deletions
+8
View File
@@ -159,6 +159,14 @@
#define ALTCOM_IPV6_V6ONLY 27 /* Refer to IPV6_V6ONLY on lwIP */
/* Options for level ALTCOM_SHUT
* Referenced from sockets.h of lwIP-v2.02
*/
#define ALTCOM_SHUT_RD 0 /* Refer to SHUT_RD on lwIP */
#define ALTCOM_SHUT_WR 1 /* Refer to SHUT_WR on lwIP */
#define ALTCOM_SHUT_RDWR 2 /* Refer to SHUT_RDWR on lwIP */
/****************************************************************************
* Public Types
****************************************************************************/
+2
View File
@@ -124,6 +124,7 @@ static compose_inst_t g_composehdlrs[] =
CTABLE_CONTENT(RECVFROM, altcom_recvfrom),
CTABLE_CONTENT(SELECT, altcom_select),
CTABLE_CONTENT(SENDTO, altcom_sendto),
CTABLE_CONTENT(SHUTDOWN, altcom_shutdown),
CTABLE_CONTENT(SOCKET, altcom_socket),
CTABLE_CONTENT(SETSOCKOPT, altcom_setsockopt),
CTABLE_CONTENT(SENDATCMD, altcom_sendatcmd),
@@ -199,6 +200,7 @@ static parse_inst_t g_parsehdlrs[] =
PTABLE_CONTENT(SOCK_RECVFROM, altcom_recvfrom),
PTABLE_CONTENT(SOCK_SELECT, altcom_select),
PTABLE_CONTENT(SOCK_SENDTO, altcom_sockcomm),
PTABLE_CONTENT(SOCK_SHUTDOWN, altcom_sockcomm),
PTABLE_CONTENT(SOCK_SOCKET, altcom_sockcomm),
PTABLE_CONTENT(SOCK_SETSOCKOPT, altcom_sockcomm),
PTABLE_CONTENT(SEND_ATCMD, altcom_sendatcmd),
@@ -1069,6 +1069,37 @@ int32_t altcom_select_pkt_compose(FAR void **arg, size_t arglen,
return size;
}
int32_t altcom_shutdown_pkt_compose(FAR void **arg, size_t arglen,
uint8_t altver, FAR uint8_t *pktbuf,
const size_t pktsz, FAR uint16_t *altcid)
{
FAR int32_t sockfd = *((FAR int32_t *)arg[0]);
FAR int32_t how = *((FAR int32_t *)arg[1]);
FAR struct apicmd_shutdown_s *out =
(FAR struct apicmd_shutdown_s *)pktbuf;
switch (how)
{
case SHUT_RD:
how = ALTCOM_SHUT_RD;
break;
case SHUT_WR:
how = ALTCOM_SHUT_WR;
break;
case SHUT_RDWR:
how = ALTCOM_SHUT_RDWR;
break;
default:
return -EINVAL;
}
out->sockfd = htonl(sockfd);
out->how = htonl(how);
*altcid = APICMDID_SOCK_SHUTDOWN;
return sizeof(struct apicmd_shutdown_s);
}
int32_t altcom_sockcomm_pkt_parse(FAR struct alt1250_dev_s *dev,
FAR uint8_t *pktbuf, size_t pktsz,
uint8_t altver, FAR void **arg,
@@ -77,6 +77,10 @@ int32_t altcom_setsockopt_pkt_compose(FAR void **arg, size_t arglen,
int32_t altcom_select_pkt_compose(FAR void **arg, size_t arglen,
uint8_t altver, FAR uint8_t *pktbuf,
const size_t pktsz, FAR uint16_t *altcid);
int32_t altcom_shutdown_pkt_compose(FAR void **arg, size_t arglen,
uint8_t altver, FAR uint8_t *pktbuf,
const size_t pktsz,
FAR uint16_t *altcid);
int32_t altcom_sockcomm_pkt_parse(FAR struct alt1250_dev_s *dev,
FAR uint8_t *pktbuf, size_t pktsz,
uint8_t altver, FAR void **arg,