Skip to content

Commit 8aa3f03

Browse files
authored
Merge pull request #134 from tmobile/tmo-CFSPDK-1107-Implement-Callback-Mechanism-for-SMS-Messages
Added async SMS function to tmo shell
2 parents 20aa821 + 286bd5b commit 8aa3f03

File tree

5 files changed

+49
-12
lines changed

5 files changed

+49
-12
lines changed

samples/tmo_shell/Kconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ config TMO_SHELL_USE_MBED
1616
bool "Configure HTTP to use mbedTLS for TLS connections"
1717
default n
1818

19+
config TMO_SHELL_ASYNC_SMS
20+
bool "Use asynchronous callback for SMS"
21+
select MODEM_SMS_CALLBACK
22+
default n
23+
1924
config TMO_SHELL_BUILD_EK
2025
bool "Build in ekermit"
2126
select USE_SEGGER_RTT

samples/tmo_shell/src/tmo_ble_demo.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -572,8 +572,8 @@ void button_stat_change(const struct device *dev, struct gpio_callback *cb,
572572
k_sem_give(&update_sem);
573573
k_sem_give(&ble_thd_sem);
574574
}
575+
575576
#if CONFIG_MODEM
576-
#include "modem_sms.h"
577577

578578
static uint64_t get_imei()
579579
{
@@ -626,8 +626,6 @@ static ssize_t cell_rssi_rd_cb(struct bt_conn *conn,
626626
#define UUID_TMO_CELL_SVC \
627627
uuid128(0x2618484c, 0x7465, 0x441d, 0xbc3f, 0x35f1af1c6f16)
628628

629-
// Cell tower characteristic: 55f78d7f-6f97-4444-9b77-00dcc9d5a07c
630-
631629
// Cell strength characteristic: 0e3b403a4-e97d-4401-8d09-87b6af705298 int8t
632630
#define UUID_TMO_CELL_RSSI \
633631
uuid128(0x0e3b403a4, 0xe97d, 0x4401, 0x8d09, 0x87b6af705298)

samples/tmo_shell/src/tmo_modem.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,3 +227,38 @@ int tmo_modem_get_imsi(char* res, int res_len) {
227227
int tmo_modem_get_msisdn(char* res, int res_len) {
228228
return tmo_modem_atcmd_str_get(res, res_len, msisdn_e);
229229
}
230+
231+
#if CONFIG_MODEM_SMS && CONFIG_TMO_SHELL_ASYNC_SMS
232+
#include <zephyr/drivers/modem/sms.h>
233+
#include <zephyr/shell/shell.h>
234+
#include <zephyr/shell/shell_uart.h>
235+
236+
static void on_sms_recv(const struct device *dev, struct sms_in *sms, int csms_ref,
237+
int csms_idx, int csms_tot)
238+
{
239+
ARG_UNUSED(dev);
240+
const struct shell *sh = shell_backend_uart_get_ptr();
241+
242+
shell_print(sh, "SMS Received [%d/%d] from %s, sent at %s:\n%s",
243+
csms_idx, csms_tot, sms->phone, sms->time, sms->msg);
244+
245+
}
246+
247+
static struct sms_recv_cb recv_cb = {
248+
.recv = on_sms_recv,
249+
};
250+
251+
static int sms_recv_cb_init(const struct device *unused)
252+
{
253+
ARG_UNUSED(unused);
254+
255+
const struct device *dev = DEVICE_DT_GET(DT_NODELABEL(murata_1sc));
256+
257+
sms_recv_cb_register(&recv_cb);
258+
sms_recv_cb_en(dev, 1);
259+
260+
return 0;
261+
}
262+
263+
SYS_INIT(sms_recv_cb_init, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
264+
#endif /* CONFIG_MODEM_SMS && CONFIG_TMO_SHELL_ASYNC_SMS */

samples/tmo_shell/src/tmo_shell.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ typedef int sec_tag_t;
3838

3939
#if CONFIG_MODEM
4040
#include <zephyr/drivers/modem/murata-1sc.h>
41-
#include "modem_sms.h"
41+
#include <zephyr/drivers/modem/sms.h>
4242
#endif
4343

4444
#include "tmo_http_request.h"
@@ -1102,7 +1102,7 @@ int sock_close(const struct shell *shell, size_t argc, char **argv)
11021102
return stat;
11031103
}
11041104

1105-
#if CONFIG_MODEM
1105+
#if CONFIG_MODEM && CONFIG_MODEM_SMS
11061106
int sock_sendsms(const struct shell *shell, size_t argc, char **argv)
11071107
{
11081108
int ret;
@@ -1132,7 +1132,6 @@ int sock_sendsms(const struct shell *shell, size_t argc, char **argv)
11321132
strncpy(sms.phone, argv[2], SMS_PHONE_MAX_LEN);
11331133
strncpy(sms.msg, argv[3], CONFIG_MODEM_SMS_OUT_MSG_MAX_LEN + 1);
11341134
ret = fcntl_ptr(sock_idx, SMS_SEND, &sms);
1135-
11361135
return ret;
11371136
}
11381137

@@ -1169,7 +1168,8 @@ int sock_recvsms(const struct shell *shell, size_t argc, char **argv)
11691168
shell_print(shell, "No SMS received!");
11701169
return ret;
11711170
}
1172-
#endif /* CONFIG_MODEM */
1171+
#endif /* CONFIG_MODEM && CONFIG_MODEM_SMS */
1172+
11731173
int cmd_list_socks(const struct shell *shell, size_t argc, char **argv)
11741174
{
11751175
enum proto_idx {
@@ -1342,9 +1342,9 @@ SHELL_STATIC_SUBCMD_SET_CREATE(tmo_tcp_sub,
13421342
#endif
13431343
SHELL_CMD(recv, NULL, "<socket>", tcp_rcv),
13441344
SHELL_CMD(recvb, NULL, "<socket> <size>", tcp_recvb),
1345-
#if CONFIG_MODEM
1345+
#if CONFIG_MODEM && CONFIG_MODEM_SMS
13461346
SHELL_CMD(recvsms, NULL, "<socket> <wait time (seconds)>", sock_recvsms),
1347-
#endif /* CONFIG_MODEM */
1347+
#endif /* CONFIG_MODEM && CONFIG_MODEM_SMS */
13481348
#if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS)
13491349
SHELL_CMD(secure_create, NULL, "<iface>", tcp_create_tls),
13501350
#if IS_ENABLED(CONFIG_NET_IPV6)
@@ -1353,9 +1353,9 @@ SHELL_STATIC_SUBCMD_SET_CREATE(tmo_tcp_sub,
13531353
#endif
13541354
SHELL_CMD(send, NULL, "<socket> <payload>", tcp_send),
13551355
SHELL_CMD(sendb, NULL, "<socket> <size>", tcp_sendb),
1356-
#if CONFIG_MODEM
1356+
#if CONFIG_MODEM && CONFIG_MODEM_SMS
13571357
SHELL_CMD(sendsms, NULL, "<socket> <phone number> <message>", sock_sendsms),
1358-
#endif /* CONFIG_MODEM */
1358+
#endif /* CONFIG_MODEM && CONFIG_MODEM_SMS */
13591359
SHELL_CMD(xfersz, NULL, "[size]", sock_mxfragment),
13601360
SHELL_SUBCMD_SET_END
13611361
);

samples/tmo_shell/src/tmo_web_demo.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include <zephyr/net/net_ip.h>
1414
#include <zephyr/net/socket.h>
1515
#if CONFIG_MODEM
16-
#include "modem_sms.h"
1716
#include <zephyr/drivers/modem/murata-1sc.h>
1817
#endif
1918

0 commit comments

Comments
 (0)