Skip to content

Commit 1fc08c8

Browse files
trantanentokangas
authored andcommitted
samples: cellular: modem_shell: sock: 'option' set/get commands
Added support for setting/getting socket options in a generic manner. Jira: MOSH-636 Signed-off-by: Tommi Rantanen <tommi.rantanen@nordicsemi.no>
1 parent b78c12e commit 1fc08c8

File tree

3 files changed

+377
-2
lines changed

3 files changed

+377
-2
lines changed

samples/cellular/modem_shell/src/sock/sock.c

+47
Original file line numberDiff line numberDiff line change
@@ -1305,6 +1305,53 @@ int sock_rai(int socket_id, bool rai_last, bool rai_no_data,
13051305
return 0;
13061306
}
13071307

1308+
int sock_setopt(int socket_id, int sock_level, int sock_opt_id, int sock_opt_value)
1309+
{
1310+
struct sock_info *socket_info = get_socket_info_by_id(socket_id);
1311+
int err;
1312+
1313+
if (socket_info == NULL) {
1314+
return -EINVAL;
1315+
}
1316+
1317+
err = setsockopt(socket_info->fd, sock_level, sock_opt_id, &sock_opt_value,
1318+
sizeof(sock_opt_value));
1319+
1320+
if (err) {
1321+
mosh_error("setsockopt() for level=%d, option=%d, value=%d failed with error %d",
1322+
sock_level, sock_opt_id, sock_opt_value, errno);
1323+
}
1324+
1325+
return err;
1326+
}
1327+
1328+
int sock_getopt(int socket_id, int sock_level, int sock_opt_id)
1329+
{
1330+
struct sock_info *socket_info = get_socket_info_by_id(socket_id);
1331+
int err;
1332+
int sock_opt_value = 0;
1333+
int sock_opt_value_len = sizeof(sock_opt_value);
1334+
1335+
if (socket_info == NULL) {
1336+
return -EINVAL;
1337+
}
1338+
1339+
err = getsockopt(socket_info->fd, sock_level, sock_opt_id, &sock_opt_value,
1340+
&sock_opt_value_len);
1341+
1342+
if (err) {
1343+
mosh_error(
1344+
"getsockopt() socket_id=%d, level=%d, option=%d failed with error %d",
1345+
socket_id, sock_level, sock_opt_id, errno);
1346+
} else {
1347+
mosh_print(
1348+
"getsockopt() socket_id=%d, option=%d, level=%d, value=%d",
1349+
socket_id, sock_opt_id, sock_level, sock_opt_value);
1350+
}
1351+
1352+
return err;
1353+
}
1354+
13081355
int sock_list(void)
13091356
{
13101357
bool opened_sockets = false;

samples/cellular/modem_shell/src/sock/sock.h

+2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ int sock_close(int socket_id);
4040
int sock_rai(
4141
int socket_id, bool rai_last, bool rai_no_data, bool rai_one_resp,
4242
bool rai_ongoing, bool rai_wait_more);
43+
int sock_setopt(int socket_id, int sock_level, int sock_opt_id, int sock_opt_value);
44+
int sock_getopt(int socket_id, int sock_level, int sock_opt_id);
4345
int sock_list(void);
4446

4547
#endif /* MOSH_SOCK_H */

0 commit comments

Comments
 (0)