This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new 90c9364b3 lte/alt1250: Force change modem parameter
90c9364b3 is described below

commit 90c9364b3b48f04a00697316ef916e2bf23ebcde
Author: SPRESENSE <41312067+sprese...@users.noreply.github.com>
AuthorDate: Thu Jan 25 11:40:29 2024 +0900

    lte/alt1250: Force change modem parameter
    
    In some conditions, LTE connection has issue.
    To fix it, need to change a modem parameter.
---
 lte/alt1250/alt1250_atcmd.c     | 27 +++++++++++++++++++++++++++
 lte/alt1250/alt1250_atcmd.h     |  7 +++++++
 lte/alt1250/alt1250_reset_seq.c | 39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 73 insertions(+)

diff --git a/lte/alt1250/alt1250_atcmd.c b/lte/alt1250/alt1250_atcmd.c
index 5eba45d6a..bdd7e2853 100644
--- a/lte/alt1250/alt1250_atcmd.c
+++ b/lte/alt1250/alt1250_atcmd.c
@@ -431,6 +431,33 @@ int ltenwop_send_setnwoptp(FAR struct alt1250_s *dev,
   return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
 }
 
+/****************************************************************************
+ * name: ltesp_send_getscanplan
+ ****************************************************************************/
+
+int ltesp_send_getscanplan(FAR struct alt1250_s *dev,
+                           FAR struct alt_container_s *container)
+{
+  int32_t dummy;
+  snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
+           "AT%%GETCFG=\"SCAN_PLAN_EN\"\r");
+  return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
+}
+
+/****************************************************************************
+ * name: ltesp_send_setscanplan
+ ****************************************************************************/
+
+int ltesp_send_setscanplan(FAR struct alt1250_s *dev,
+                           FAR struct alt_container_s *container,
+                           bool enable)
+{
+  int32_t dummy;
+  snprintf((FAR char *)dev->tx_buff, _TX_BUFF_SIZE,
+           "AT%%SETCFG=\"SCAN_PLAN_EN\",\"%s\"\r", (enable ? "1" : "0"));
+  return send_internal_at_command(dev, container, -1, NULL, 0, &dummy);
+}
+
 /****************************************************************************
  * name: lwm2mstub_send_getqueuemode
  ****************************************************************************/
diff --git a/lte/alt1250/alt1250_atcmd.h b/lte/alt1250/alt1250_atcmd.h
index 62cc56d1e..d732a3313 100644
--- a/lte/alt1250/alt1250_atcmd.h
+++ b/lte/alt1250/alt1250_atcmd.h
@@ -109,6 +109,13 @@ int ltenwop_send_getnwop(FAR struct alt1250_s *dev,
 int ltenwop_send_setnwoptp(FAR struct alt1250_s *dev,
                            FAR struct alt_container_s *container);
 
+int ltesp_send_getscanplan(FAR struct alt1250_s *dev,
+                           FAR struct alt_container_s *container);
+
+int ltesp_send_setscanplan(FAR struct alt1250_s *dev,
+                           FAR struct alt_container_s *container,
+                           bool enable);
+
 int lwm2mstub_send_getqueuemode(FAR struct alt1250_s *dev,
                                 FAR struct alt_container_s *container,
                                 int16_t usockid, FAR int32_t *ures);
diff --git a/lte/alt1250/alt1250_reset_seq.c b/lte/alt1250/alt1250_reset_seq.c
index 31192edaf..3dc836803 100644
--- a/lte/alt1250/alt1250_reset_seq.c
+++ b/lte/alt1250/alt1250_reset_seq.c
@@ -192,6 +192,37 @@ static int recv_atreply_onreset(atreply_parser_t parse,
   return ret;
 }
 
+/****************************************************************************
+ * name: alt1250_disable_scanplan
+ ****************************************************************************/
+
+static int alt1250_disable_scanplan(FAR struct alt1250_s *dev,
+                                    FAR struct alt_container_s *container)
+{
+  int recv_ret;
+  struct atreply_truefalse_s t_or_f;
+
+  t_or_f.target_str = "0";
+  ltesp_send_getscanplan(dev, container);
+  recv_ret = recv_atreply_onreset(check_atreply_truefalse, dev, &t_or_f);
+  if (recv_ret == REP_MODEM_RESET)
+    {
+      return recv_ret;
+    }
+
+  if (!t_or_f.result)
+    {
+      ltesp_send_setscanplan(dev, container, false);
+      recv_ret = recv_atreply_onreset(check_atreply_ok, dev, NULL);
+      if (recv_ret == REP_MODEM_RESET)
+        {
+          return recv_ret;
+        }
+    }
+
+  return recv_ret;
+}
+
 /****************************************************************************
  * name: alt1250_lwm2m_ponreset
  ****************************************************************************/
@@ -319,6 +350,14 @@ static int alt1250_lwm2m_ponreset(FAR struct alt1250_s 
*dev,
       ret = REP_SEND_ACK;
     }
 
+  /* Make sure SCAN_PALAN_EN is 0 */
+
+  recv_ret = alt1250_disable_scanplan(dev, container);
+  if (recv_ret == REP_MODEM_RESET)
+    {
+      return recv_ret;
+    }
+
   if (ret == REP_SEND_ACK)
     {
       /* Force Reset is needed. */

Reply via email to