From c7fc0eeec914ce78977cf49d9939479f19d657f0 Mon Sep 17 00:00:00 2001
From: "orlane.donias" <orlane.donias@telecom-sudparis.eu>
Date: Sun, 28 May 2023 18:55:52 +0200
Subject: [PATCH 1/2] Adding parameter "pattern" to scan functions

---
 main/commands.c | 12 +++++++-----
 main/commands.h |  9 +++++++++
 main/ftm.c      |  9 +++++----
 main/ftm.h      |  2 +-
 main/ftm_main.c |  6 +++++-
 5 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/main/commands.c b/main/commands.c
index b942e7b..0ae1541 100644
--- a/main/commands.c
+++ b/main/commands.c
@@ -6,6 +6,7 @@ wifi_args_t sta_args;
 wifi_args_t sta_args;
 wifi_args_t ap_args;
 wifi_scan_arg_t scan_args;
+wifi_scan_arg_pattern_t scan_pattern_args;
 wifi_ftm_args_t ftm_args;
 wifi_calibrate_args_t calibrate_args;
 
@@ -71,19 +72,20 @@ int wifi_cmd_scan(int argc, char **argv) {
 }
 
 int wifi_cmd_scan_pattern(int argc, char **argv) {
-  int nerrors = arg_parse(argc, argv, (void **)&scan_args);
+  int nerrors = arg_parse(argc, argv, (void **)&scan_pattern_args);
 
   if (nerrors != 0) {
-    arg_print_errors(stderr, scan_args.end, argv[0]);
+    arg_print_errors(stderr, scan_pattern_args.end, argv[0]);
     return 1;
   }
 
   ESP_LOGI(TAG_STA, "sta start to scan for pattern");
-  if (scan_args.ssid->count == 1) {
-    wifi_perform_scan_pattern(scan_args.ssid->sval[0], false);
+  if (scan_pattern_args.pattern->count == 1) {
+    wifi_perform_scan_pattern(false, scan_pattern_args.pattern->sval[0]);
   } else {
-    wifi_perform_scan_pattern(NULL, false);
+    wifi_perform_scan_pattern(false, NULL);
   }
+
   return 0;
 }
 
diff --git a/main/commands.h b/main/commands.h
index eda8f5d..17f4524 100644
--- a/main/commands.h
+++ b/main/commands.h
@@ -31,6 +31,14 @@ typedef struct {
   struct arg_end *end;
 } wifi_scan_arg_t;
 
+/*
+ * Arguments for the Wifi scan command
+ */
+typedef struct {
+  struct arg_str *pattern;
+  struct arg_end *end;
+} wifi_scan_arg_pattern_t;
+
 typedef struct {
   /* FTM Initiator */
   struct arg_lit *initiator;
@@ -56,6 +64,7 @@ extern wifi_args_t sta_args;
 extern wifi_args_t sta_args;
 extern wifi_args_t ap_args;
 extern wifi_scan_arg_t scan_args;
+extern wifi_scan_arg_pattern_t scan_pattern_args;
 extern wifi_ftm_args_t ftm_args;
 extern wifi_calibrate_args_t calibrate_args;
 
diff --git a/main/ftm.c b/main/ftm.c
index c0f93af..b940179 100644
--- a/main/ftm.c
+++ b/main/ftm.c
@@ -1,4 +1,6 @@
 #include "ftm.h"
+#include <stdio.h>
+#include <string.h>
 
 const char *TAG_STA = "ftm_station";
 const char *TAG_AP = "ftm_ap";
@@ -133,11 +135,9 @@ bool wifi_perform_scan(const char *ssid, bool internal) {
   return true;
 }
 
-bool wifi_perform_scan_pattern(const char *ssid, bool internal) {
+bool wifi_perform_scan_pattern(bool internal, char *pattern) {
   wifi_scan_config_t scan_config = {0};
-  scan_config.ssid = (uint8_t *)ssid;
   uint8_t i;
-  char *pattern = "NET";
 
   ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
   if (ESP_OK != esp_wifi_scan_start(&scan_config, true)) {
@@ -165,7 +165,8 @@ bool wifi_perform_scan_pattern(const char *ssid, bool internal) {
     if (!internal) {
       int compteur = 0;
       for (i = 0; i < g_scan_ap_num && compteur < 4; i++) {
-        if (strcmp(g_ap_list_buffer[i].ssid, pattern, strlen(pattern))) {
+        if (strncmp(pattern, (char *)g_ap_list_buffer[i].ssid,
+                    strlen(pattern))) {
           ESP_LOGI(TAG_STA,
                    "[%s][rssi=%d]"
                    "%s",
diff --git a/main/ftm.h b/main/ftm.h
index 74e9a7b..5b10ca3 100644
--- a/main/ftm.h
+++ b/main/ftm.h
@@ -54,7 +54,7 @@ extern wifi_ap_record_t *g_ap_list_buffer;
 
 bool wifi_perform_scan(const char *ssid, bool internal);
 
-bool wifi_perform_scan_pattern(const char *ssid, bool internal);
+bool wifi_perform_scan_pattern(bool internal, char *pattern);
 
 wifi_ap_record_t *find_ftm_responder_ap(const char *ssid);
 
diff --git a/main/ftm_main.c b/main/ftm_main.c
index da14fc6..2ce529c 100755
--- a/main/ftm_main.c
+++ b/main/ftm_main.c
@@ -201,11 +201,15 @@ void register_wifi(void) {
 
   /* Scan_pattern command*/
 
+  scan_pattern_args.pattern =
+      arg_str0("p", "pattern", "pattern", "Pattern to search for");
+  calibrate_args.end = arg_end(1);
+
   const esp_console_cmd_t scan_pattern_cmd = {.command = "scan_pattern",
                                               .help = "Scan_pattern command",
                                               .hint = NULL,
                                               .func = &wifi_cmd_scan_pattern,
-                                              .argtable = &scan_args};
+                                              .argtable = &scan_pattern_args};
   ESP_ERROR_CHECK(esp_console_cmd_register(&scan_pattern_cmd));
 }
 
-- 
GitLab


From 34b49976f155203ac5cadf968411fabd47953403 Mon Sep 17 00:00:00 2001
From: "orlane.donias" <orlane.donias@telecom-sudparis.eu>
Date: Sun, 28 May 2023 19:10:42 +0200
Subject: [PATCH 2/2] Last_fixes

---
 main/ftm.c      | 4 ++--
 main/ftm_main.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/main/ftm.c b/main/ftm.c
index b940179..218b994 100644
--- a/main/ftm.c
+++ b/main/ftm.c
@@ -165,8 +165,8 @@ bool wifi_perform_scan_pattern(bool internal, char *pattern) {
     if (!internal) {
       int compteur = 0;
       for (i = 0; i < g_scan_ap_num && compteur < 4; i++) {
-        if (strncmp(pattern, (char *)g_ap_list_buffer[i].ssid,
-                    strlen(pattern))) {
+        if (!strncmp(pattern, (char *)g_ap_list_buffer[i].ssid,
+                     strlen(pattern))) {
           ESP_LOGI(TAG_STA,
                    "[%s][rssi=%d]"
                    "%s",
diff --git a/main/ftm_main.c b/main/ftm_main.c
index 2ce529c..cc9d158 100755
--- a/main/ftm_main.c
+++ b/main/ftm_main.c
@@ -203,7 +203,7 @@ void register_wifi(void) {
 
   scan_pattern_args.pattern =
       arg_str0("p", "pattern", "pattern", "Pattern to search for");
-  calibrate_args.end = arg_end(1);
+  scan_pattern_args.end = arg_end(1);
 
   const esp_console_cmd_t scan_pattern_cmd = {.command = "scan_pattern",
                                               .help = "Scan_pattern command",
-- 
GitLab