summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Hatch <jhatch@multitech.com>2020-06-30 08:41:14 -0500
committerJeff Hatch <jhatch@multitech.com>2020-06-30 08:41:14 -0500
commit5246748a8e5119dbca894e1eec3054a33acdc1c4 (patch)
tree2ad2da8b9405314d31f83432bb9a4294623ad84d
parentc7a9553edb425f8ab6c83098e8a872b79629e7f9 (diff)
parent4b5c22b5d658982952e0d5c8f00ddbcff9751727 (diff)
downloadsms-utils-5246748a8e5119dbca894e1eec3054a33acdc1c4.tar.gz
sms-utils-5246748a8e5119dbca894e1eec3054a33acdc1c4.tar.bz2
sms-utils-5246748a8e5119dbca894e1eec3054a33acdc1c4.zip
Merge branch 'sk/port-lna7-changes' into 'master'
[MTX-3489] mPower Oct20: Porting "LNA7 Intermediate Release" changes See merge request !11
-rw-r--r--src/atcmd.c33
-rw-r--r--src/atcmd.h3
-rw-r--r--src/sms_delete.c20
-rw-r--r--src/sms_list.c20
-rw-r--r--src/sms_utils.h3
5 files changed, 76 insertions, 3 deletions
diff --git a/src/atcmd.c b/src/atcmd.c
index 449518c..1fd3452 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];
@@ -1538,6 +1553,22 @@ int is_vzw_lte(void)
!strncmp(Global.core.model, "LE910-SV1", MODEL_LEN));
}
+/* Detect LNA7/L4G1 radio with Verizon SIM */
+int is_quectel_dual_sms_format(void)
+{
+ if (!strncmp(Global.core.model, "EG95", MODEL_LEN) ||
+ !strncmp(Global.core.model, "EG25", MODEL_LEN))
+ {
+ log_debug("Found Quectel radio with dual SMS format support");
+ /* 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 */
@@ -1566,4 +1597,4 @@ int is_quectel_model()
}
return 0;
-} \ No newline at end of file
+}
diff --git a/src/atcmd.h b/src/atcmd.h
index dc3d5d9..28bc384 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_quectel_dual_sms_format(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..7bd50d0 100644
--- a/src/sms_delete.c
+++ b/src/sms_delete.c
@@ -141,6 +141,8 @@ int sms_delete(int argc, char **argv)
int option_index;
int ret;
int fd;
+ int ret_3gpp = false;
+ int ret_3gpp2 = false;
while ((i = getopt_long(argc, argv, short_options, long_options, &option_index)) >= 0) {
switch (i) {
@@ -165,7 +167,23 @@ int sms_delete(int argc, char **argv)
return false;
}
- ret = do_delete(fd, argc, argv);
+ // LNA7/L4G1 with Verizon SIM SMS 3GPP, 3GPP2 WORKAROUND
+ if (is_quectel_dual_sms_format()) {
+ int tmp;
+ 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..2c39aa8 100644
--- a/src/sms_list.c
+++ b/src/sms_list.c
@@ -456,6 +456,8 @@ int sms_list(int argc, char **argv)
int option_index;
int ret;
int fd;
+ int ret_3gpp = false;
+ int ret_3gpp2 = false;
if (argc < 1) {
log_debug("should have received at least one argument");
@@ -497,7 +499,23 @@ 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_quectel_dual_sms_format()) {
+ int tmp;
+ 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