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/incubator-nuttx-apps.git


The following commit(s) were added to refs/heads/master by this push:
     new bd9174a  wireless/wapi: add set country code support
bd9174a is described below

commit bd9174a3b639c2db60cbbc73c9f0260ab17bee5b
Author: chao.an <anc...@xiaomi.com>
AuthorDate: Mon Jan 4 17:53:19 2021 +0800

    wireless/wapi: add set country code support
    
    Signed-off-by: chao.an <anc...@xiaomi.com>
---
 include/wireless/wapi.h      | 11 +++++++++++
 wireless/wapi/src/wapi.c     | 18 ++++++++++++++++++
 wireless/wapi/src/wireless.c | 34 ++++++++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+)

diff --git a/include/wireless/wapi.h b/include/wireless/wapi.h
index 8c3df1a..77b4fda 100644
--- a/include/wireless/wapi.h
+++ b/include/wireless/wapi.h
@@ -700,6 +700,17 @@ int wapi_scan_coll(int sock, FAR const char *ifname,
 void wapi_scan_coll_free(FAR struct wapi_list_s *aps);
 
 /****************************************************************************
+ * Name: wapi_set_country
+ *
+ * Description:
+ *    Set the country code
+ *
+ ****************************************************************************/
+
+int wapi_set_country(int sock, FAR const char *ifname,
+                     FAR const char *country);
+
+/****************************************************************************
  * Name: wapi_get_sensitivity
  *
  * Description:
diff --git a/wireless/wapi/src/wapi.c b/wireless/wapi/src/wapi.c
index b0c6f5f..2e1ef96 100644
--- a/wireless/wapi/src/wapi.c
+++ b/wireless/wapi/src/wapi.c
@@ -96,6 +96,7 @@ static int wapi_bitrate_cmd      (int sock, int argc, FAR 
char **argv);
 static int wapi_txpower_cmd      (int sock, int argc, FAR char **argv);
 static int wapi_scan_results_cmd (int sock, int argc, FAR char **argv);
 static int wapi_scan_cmd         (int sock, int argc, FAR char **argv);
+static int wapi_country_cmd      (int sock, int argc, FAR char **argv);
 #ifdef CONFIG_WIRELESS_WAPI_INITCONF
 static int wapi_reconnect_cmd    (int sock, int argc, FAR char **argv);
 static int wapi_save_config_cmd  (int sock, int argc, FAR char **argv);
@@ -121,6 +122,7 @@ static const struct wapi_command_s g_wapi_commands[] =
   {"ap",           2, 2, wapi_ap_cmd},
   {"bitrate",      3, 3, wapi_bitrate_cmd},
   {"txpower",      3, 3, wapi_txpower_cmd},
+  {"country",      2, 2, wapi_country_cmd},
 #ifdef CONFIG_WIRELESS_WAPI_INITCONF
   {"reconnect",    1, 1, wapi_reconnect_cmd},
   {"save_config",  1, 1, wapi_save_config_cmd},
@@ -745,6 +747,22 @@ static int wapi_scan_cmd(int sock, int argc, FAR char 
**argv)
   return wapi_scan_results_cmd(sock, 1, argv);
 }
 
+/****************************************************************************
+ * Name: wapi_country_cmd
+ *
+ * Description:
+ *  Set the country code
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+static int wapi_country_cmd(int sock, int argc, FAR char **argv)
+{
+  return wapi_set_country(sock, argv[0], argv[1]);
+}
+
 #ifdef CONFIG_WIRELESS_WAPI_INITCONF
 
 /****************************************************************************
diff --git a/wireless/wapi/src/wireless.c b/wireless/wapi/src/wireless.c
index 9ddec6d..d507012 100644
--- a/wireless/wapi/src/wireless.c
+++ b/wireless/wapi/src/wireless.c
@@ -1394,6 +1394,40 @@ void wapi_scan_coll_free(FAR struct wapi_list_s *list)
 }
 
 /****************************************************************************
+ * Name: wapi_set_country
+ *
+ * Description:
+ *    Set the country code
+ *
+ ****************************************************************************/
+
+int wapi_set_country(int sock, FAR const char *ifname,
+                     FAR const char *country)
+{
+  struct iwreq wrq =
+  {
+  };
+
+  int ret;
+
+  /* Prepare request. */
+
+  wrq.u.data.pointer = (FAR void *)country;
+  wrq.u.data.length = 2;
+
+  strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
+  ret = ioctl(sock, SIOCSIWCOUNTRY, (unsigned long)((uintptr_t)&wrq));
+  if (ret < 0)
+    {
+      int errcode = errno;
+      WAPI_IOCTL_STRERROR(SIOCSIWCOUNTRY, errcode);
+      ret = -errcode;
+    }
+
+  return ret;
+}
+
+/****************************************************************************
  * Name: wapi_get_sensitivity
  *
  * Description:

Reply via email to