From 435cec04eebd297a6ebd29fffc2c254ee5ef6745 Mon Sep 17 00:00:00 2001 From: Andrii Pientsov Date: Mon, 22 Jun 2020 09:57:00 +0300 Subject: MTX-3449 mPower June20: GP-655 LNA7: SMS -> 3GPP vs. 3GPP2 --- src/atcmd.c | 29 +++++++++++++++++++++++++++++ src/atcmd.h | 3 +++ src/sms_delete.c | 18 +++++++++++++++++- src/sms_list.c | 18 +++++++++++++++++- src/sms_utils.h | 3 +++ 5 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/atcmd.c b/src/atcmd.c index 97fd34b..f881808 100644 --- a/src/atcmd.c +++ b/src/atcmd.c @@ -830,6 +830,21 @@ int atcmd_plus_cmgd_write(int fd, int index) return 0; } +int atcmd_plus_qcfg_write(int fd, int sms_format) +{ + char buf[ATCMD_LINE_SIZE]; + int tmp; + + atcmd_writeline(fd, "AT+QCFG=\"ltesms/format\",%d", sms_format); + tmp = atcmd_expect_line(fd, buf, sizeof(buf), "OK"); + if (tmp <= 0) { + log_debug("expected OK but it was not received"); + return -1; + } + + return 0; +} + int atcmd_response_foreach_line(int fd, atcmd_response_callback_t call, void *prv) { char buf[ATCMD_LINE_SIZE]; @@ -1542,6 +1557,20 @@ int is_vzw_lte(void) !strncmp(Global.core.model, "LE910-SV1", MODEL_LEN)); } +/* Detect LNA7 radio with Verizon SIM */ +int is_vzw_lna7(void) +{ + if (!strncmp(Global.core.model, "EG95", MODEL_LEN)) { + log_debug("Found EG95"); + /* Verizon Wireless SIM */ + if (strncmp(Global.core.iccid,"891480",6) == 0) { + log_debug("Found VZW SIM"); + return 1; + } + } + return 0; +} + int isCdmaTypeModel() { /* Test for possible dual firmware model */ diff --git a/src/atcmd.h b/src/atcmd.h index dc3d5d9..1390dff 100644 --- a/src/atcmd.h +++ b/src/atcmd.h @@ -70,6 +70,8 @@ int atcmd_plus_cmgs_write_text(int fd, const char *addr, const char *msg, size_t int atcmd_plus_cmss_write(int fd, int index, const char *addr, int addr_type); int atcmd_plus_cmgd_write(int fd, int index); +int atcmd_plus_qcfg_write(int fd, int sms_format); + int isCdmaTypeModel(); #define STORE_NAME_LEN 2 @@ -120,6 +122,7 @@ int atcmd_init(int fd, int read_timeout); int sms_device_close(int fd); int sms_device_open(void); int is_vzw_lte(void); +int is_vzw_lna7(void); int is_telit_model(void); int is_quectel_model(void); diff --git a/src/sms_delete.c b/src/sms_delete.c index b45546e..34a0655 100644 --- a/src/sms_delete.c +++ b/src/sms_delete.c @@ -141,6 +141,7 @@ int sms_delete(int argc, char **argv) int option_index; int ret; int fd; + int tmp, ret_3gpp, ret_3gpp2 = false; while ((i = getopt_long(argc, argv, short_options, long_options, &option_index)) >= 0) { switch (i) { @@ -165,7 +166,22 @@ int sms_delete(int argc, char **argv) return false; } - ret = do_delete(fd, argc, argv); + // LNA7 with Verizon SIM SMS 3GPP, 3GPP2 WORKAROUND + if (is_vzw_lna7()) { + tmp = atcmd_plus_qcfg_write(fd, SMS_FORMAT_3GPP); + if (tmp == 0) { + ret_3gpp = do_delete(fd, argc, argv); + } + + tmp = atcmd_plus_qcfg_write(fd, SMS_FORMAT_3GPP2); + if (tmp == 0) { + ret_3gpp2 = do_delete(fd, argc, argv); + } + + ret = (ret_3gpp || ret_3gpp2); + } else { + ret = do_delete(fd, argc, argv); + } sms_device_close(fd); diff --git a/src/sms_list.c b/src/sms_list.c index 678c158..ac55a28 100644 --- a/src/sms_list.c +++ b/src/sms_list.c @@ -456,6 +456,7 @@ int sms_list(int argc, char **argv) int option_index; int ret; int fd; + int tmp, ret_3gpp, ret_3gpp2 = false; if (argc < 1) { log_debug("should have received at least one argument"); @@ -497,7 +498,22 @@ int sms_list(int argc, char **argv) return false; } - ret = do_list(fd, cmd_type, argc, argv); + // LNA7 with Verizon SIM SMS 3GPP, 3GPP2 WORKAROUND + if (is_vzw_lna7()) { + tmp = atcmd_plus_qcfg_write(fd, SMS_FORMAT_3GPP); + if (tmp == 0) { + ret_3gpp = do_list(fd, cmd_type, argc, argv); + } + + tmp = atcmd_plus_qcfg_write(fd, SMS_FORMAT_3GPP2); + if (tmp == 0) { + ret_3gpp2 = do_list(fd, cmd_type, argc, argv); + } + + ret = (ret_3gpp || ret_3gpp2); + } else { + ret = do_list(fd, cmd_type, argc, argv); + } sms_device_close(fd); diff --git a/src/sms_utils.h b/src/sms_utils.h index 01d0e1f..2c50eb7 100644 --- a/src/sms_utils.h +++ b/src/sms_utils.h @@ -16,6 +16,9 @@ #define SMS_PDU_MODE 0 #define SMS_TEXT_MODE 1 +#define SMS_FORMAT_3GPP 1 +#define SMS_FORMAT_3GPP2 0 + #define SMS_ADDR_UNSPEC 0x00 #define SMS_ADDR_LOCAL 0x81 #define SMS_ADDR_GLOBAL 0x91 -- cgit v1.2.3 From 4fc2e232b17be5ea12d152a6c3f72902594f1966 Mon Sep 17 00:00:00 2001 From: Andrii Pientsov Date: Mon, 22 Jun 2020 10:49:59 +0300 Subject: MTX-3449 mPower June20: GP-655 LNA7: SMS -> 3GPP vs. 3GPP2 --- src/sms_delete.c | 4 +++- src/sms_list.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/sms_delete.c b/src/sms_delete.c index 34a0655..48afc06 100644 --- a/src/sms_delete.c +++ b/src/sms_delete.c @@ -141,7 +141,8 @@ int sms_delete(int argc, char **argv) int option_index; int ret; int fd; - int tmp, ret_3gpp, ret_3gpp2 = false; + int ret_3gpp = false; + int ret_3gpp2 = false; while ((i = getopt_long(argc, argv, short_options, long_options, &option_index)) >= 0) { switch (i) { @@ -168,6 +169,7 @@ int sms_delete(int argc, char **argv) // LNA7 with Verizon SIM SMS 3GPP, 3GPP2 WORKAROUND if (is_vzw_lna7()) { + int tmp; tmp = atcmd_plus_qcfg_write(fd, SMS_FORMAT_3GPP); if (tmp == 0) { ret_3gpp = do_delete(fd, argc, argv); diff --git a/src/sms_list.c b/src/sms_list.c index ac55a28..d5ad263 100644 --- a/src/sms_list.c +++ b/src/sms_list.c @@ -456,7 +456,8 @@ int sms_list(int argc, char **argv) int option_index; int ret; int fd; - int tmp, ret_3gpp, ret_3gpp2 = false; + int ret_3gpp = false; + int ret_3gpp2 = false; if (argc < 1) { log_debug("should have received at least one argument"); @@ -500,6 +501,7 @@ int sms_list(int argc, char **argv) // LNA7 with Verizon SIM SMS 3GPP, 3GPP2 WORKAROUND if (is_vzw_lna7()) { + int tmp; tmp = atcmd_plus_qcfg_write(fd, SMS_FORMAT_3GPP); if (tmp == 0) { ret_3gpp = do_list(fd, cmd_type, argc, argv); -- cgit v1.2.3