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

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

commit e0e41c5d7f58ef6542f6fd732a3b97a47c2a59dc
Author: zhanghongyu <[email protected]>
AuthorDate: Wed Jan 12 17:51:40 2022 +0800

    feature: wapi add encode parse when scan
    
    Signed-off-by: zhanghongyu <[email protected]>
---
 include/wireless/wapi.h      | 17 +++++++++++++++++
 wireless/wapi/src/wapi.c     |  8 ++++----
 wireless/wapi/src/wireless.c |  9 +++++++++
 3 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/include/wireless/wapi.h b/include/wireless/wapi.h
index 062291d..75b1325 100644
--- a/include/wireless/wapi.h
+++ b/include/wireless/wapi.h
@@ -147,6 +147,21 @@ enum wapi_mode_e
   WAPI_MODE_MESH    = IW_MODE_MESH     /* Mesh (IEEE 802.11s) network */
 };
 
+/* Flags for encoding */
+
+enum wapi_encode_e
+{
+  WAPI_ENCODE_INDEX      = IW_ENCODE_INDEX,       /* Token index (if needed) */
+  WAPI_ENCODE_FLAGS      = IW_ENCODE_FLAGS,       /* Flags defined below */
+  WAPI_ENCODE_MODE       = IW_ENCODE_MODE,        /* Modes defined below */
+  WAPI_ENCODE_DISABLED   = IW_ENCODE_DISABLED,    /* Encoding disabled */
+  WAPI_ENCODE_ENABLED    = IW_ENCODE_ENABLED,     /* Encoding enabled */
+  WAPI_ENCODE_RESTRICTED = IW_ENCODE_RESTRICTED,  /* Refuse non-encoded 
packets */
+  WAPI_ENCODE_OPEN       = IW_ENCODE_OPEN,        /* Accept non-encoded 
packets */
+  WAPI_ENCODE_NOKEY      = IW_ENCODE_NOKEY,       /* Key is write only, so not 
present */
+  WAPI_ENCODE_TEMP       = IW_ENCODE_TEMP         /* Temporary key */
+};
+
 /* Bitrate flags.
  *
  * At the moment, unicast (IW_BITRATE_UNICAST) and broadcast
@@ -193,6 +208,8 @@ struct wapi_scan_info_s
   int bitrate;
   int has_rssi;
   int rssi;
+  int has_encode;
+  int encode;
 };
 
 /* Linked list container for routing table rows. */
diff --git a/wireless/wapi/src/wapi.c b/wireless/wapi/src/wapi.c
index 43a00ec..89bcf08 100644
--- a/wireless/wapi/src/wapi.c
+++ b/wireless/wapi/src/wapi.c
@@ -708,14 +708,14 @@ static int wapi_scan_results_cmd(int sock, int argc, FAR 
char **argv)
 
   /* Print found aps */
 
-  printf("bssid / frequency / signal level / ssid\n");
+  printf("bssid / frequency / signal level / encode / ssid\n");
   for (info = list.head.scan; info; info = info->next)
     {
-      printf("%02x:%02x:%02x:%02x:%02x:%02x\t%g\t%d\t%s\n",
+      printf("%02x:%02x:%02x:%02x:%02x:%02x\t%g\t%d\t%04x\t%s\n",
              info->ap.ether_addr_octet[0], info->ap.ether_addr_octet[1],
              info->ap.ether_addr_octet[2], info->ap.ether_addr_octet[3],
-             info->ap.ether_addr_octet[4],  info->ap.ether_addr_octet[5],
-             info->freq, info->rssi, info->essid);
+             info->ap.ether_addr_octet[4], info->ap.ether_addr_octet[5],
+             info->freq, info->rssi, info->encode, info->essid);
     }
 
   /* Free ap list */
diff --git a/wireless/wapi/src/wireless.c b/wireless/wapi/src/wireless.c
index cf3f2c2..ecba875 100644
--- a/wireless/wapi/src/wireless.c
+++ b/wireless/wapi/src/wireless.c
@@ -263,6 +263,7 @@ static int wapi_event_stream_extract(FAR struct 
wapi_event_stream_s *stream,
   switch (iwe_stream->cmd)
     {
       case SIOCGIWESSID:
+      case SIOCGIWENCODE:
       case IWEVGENIE:
         iwe->cmd = iwe_stream->cmd;
         iwe->len = offsetof(struct iw_event, u) + sizeof(struct iw_point);
@@ -329,6 +330,7 @@ static int wapi_scan_event(FAR struct iw_event *event,
         /* Reset it. */
 
         bzero(temp, sizeof(struct wapi_scan_info_s));
+        temp->encode = 0xffff;
 
         /* Save cell identifier. */
 
@@ -438,6 +440,13 @@ static int wapi_scan_event(FAR struct iw_event *event,
 
         break;
       }
+
+    case SIOCGIWENCODE:
+      {
+        info->has_encode = 1;
+        info->encode = event->u.data.flags;
+        break;
+      }
     }
 
   return 0;

Reply via email to