Skip to content

Commit 7f57421

Browse files
SPRESENSExiaoxiang781216
authored andcommitted
drivers:alt1250: Correspond to shutdown
ALT1250 driver to support shutdown.
1 parent e930476 commit 7f57421

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

drivers/modem/alt1250/altcom_cmd_sock.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,14 @@
159159

160160
#define ALTCOM_IPV6_V6ONLY 27 /* Refer to IPV6_V6ONLY on lwIP */
161161

162+
/* Options for level ALTCOM_SHUT
163+
* Referenced from sockets.h of lwIP-v2.02
164+
*/
165+
166+
#define ALTCOM_SHUT_RD 0 /* Refer to SHUT_RD on lwIP */
167+
#define ALTCOM_SHUT_WR 1 /* Refer to SHUT_WR on lwIP */
168+
#define ALTCOM_SHUT_RDWR 2 /* Refer to SHUT_RDWR on lwIP */
169+
162170
/****************************************************************************
163171
* Public Types
164172
****************************************************************************/

drivers/modem/alt1250/altcom_hdlr.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ static compose_inst_t g_composehdlrs[] =
124124
CTABLE_CONTENT(RECVFROM, altcom_recvfrom),
125125
CTABLE_CONTENT(SELECT, altcom_select),
126126
CTABLE_CONTENT(SENDTO, altcom_sendto),
127+
CTABLE_CONTENT(SHUTDOWN, altcom_shutdown),
127128
CTABLE_CONTENT(SOCKET, altcom_socket),
128129
CTABLE_CONTENT(SETSOCKOPT, altcom_setsockopt),
129130
CTABLE_CONTENT(SENDATCMD, altcom_sendatcmd),
@@ -199,6 +200,7 @@ static parse_inst_t g_parsehdlrs[] =
199200
PTABLE_CONTENT(SOCK_RECVFROM, altcom_recvfrom),
200201
PTABLE_CONTENT(SOCK_SELECT, altcom_select),
201202
PTABLE_CONTENT(SOCK_SENDTO, altcom_sockcomm),
203+
PTABLE_CONTENT(SOCK_SHUTDOWN, altcom_sockcomm),
202204
PTABLE_CONTENT(SOCK_SOCKET, altcom_sockcomm),
203205
PTABLE_CONTENT(SOCK_SETSOCKOPT, altcom_sockcomm),
204206
PTABLE_CONTENT(SEND_ATCMD, altcom_sendatcmd),

drivers/modem/alt1250/altcom_hdlr_socket.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,6 +1069,37 @@ int32_t altcom_select_pkt_compose(FAR void **arg, size_t arglen,
10691069
return size;
10701070
}
10711071

1072+
int32_t altcom_shutdown_pkt_compose(FAR void **arg, size_t arglen,
1073+
uint8_t altver, FAR uint8_t *pktbuf,
1074+
const size_t pktsz, FAR uint16_t *altcid)
1075+
{
1076+
FAR int32_t sockfd = *((FAR int32_t *)arg[0]);
1077+
FAR int32_t how = *((FAR int32_t *)arg[1]);
1078+
FAR struct apicmd_shutdown_s *out =
1079+
(FAR struct apicmd_shutdown_s *)pktbuf;
1080+
1081+
switch (how)
1082+
{
1083+
case SHUT_RD:
1084+
how = ALTCOM_SHUT_RD;
1085+
break;
1086+
case SHUT_WR:
1087+
how = ALTCOM_SHUT_WR;
1088+
break;
1089+
case SHUT_RDWR:
1090+
how = ALTCOM_SHUT_RDWR;
1091+
break;
1092+
default:
1093+
return -EINVAL;
1094+
}
1095+
1096+
out->sockfd = htonl(sockfd);
1097+
out->how = htonl(how);
1098+
*altcid = APICMDID_SOCK_SHUTDOWN;
1099+
1100+
return sizeof(struct apicmd_shutdown_s);
1101+
}
1102+
10721103
int32_t altcom_sockcomm_pkt_parse(FAR struct alt1250_dev_s *dev,
10731104
FAR uint8_t *pktbuf, size_t pktsz,
10741105
uint8_t altver, FAR void **arg,

drivers/modem/alt1250/altcom_hdlr_socket.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ int32_t altcom_setsockopt_pkt_compose(FAR void **arg, size_t arglen,
7777
int32_t altcom_select_pkt_compose(FAR void **arg, size_t arglen,
7878
uint8_t altver, FAR uint8_t *pktbuf,
7979
const size_t pktsz, FAR uint16_t *altcid);
80+
int32_t altcom_shutdown_pkt_compose(FAR void **arg, size_t arglen,
81+
uint8_t altver, FAR uint8_t *pktbuf,
82+
const size_t pktsz,
83+
FAR uint16_t *altcid);
8084
int32_t altcom_sockcomm_pkt_parse(FAR struct alt1250_dev_s *dev,
8185
FAR uint8_t *pktbuf, size_t pktsz,
8286
uint8_t altver, FAR void **arg,

0 commit comments

Comments
 (0)