]> granicus.if.org Git - esp-idf/commitdiff
refactor smartconfig
authorXiaXiaotian <xiaxiaotian@espressif.com>
Mon, 9 Apr 2018 06:29:53 +0000 (14:29 +0800)
committerXiaXiaotian <xiaxiaotian@espressif.com>
Fri, 11 May 2018 06:49:35 +0000 (14:49 +0800)
    move wifi part to wifi lib and lwip part to idf

components/esp32/lib
components/smartconfig_ack/component.mk [moved from components/smartconfig/component.mk with 100% similarity]
components/smartconfig_ack/include/smartconfig_ack.h [moved from components/smartconfig/include/smartconfig.h with 97% similarity]
components/smartconfig_ack/smartconfig_ack.c [moved from components/smartconfig/smartconfig.c with 88% similarity, mode: 0755]

index ab80b0b980997af5c224f2316a33486fe4af7258..efae38d4d6f43c59e1570fe6dd0f483b26cbd7e7 160000 (submodule)
@@ -1 +1 @@
-Subproject commit ab80b0b980997af5c224f2316a33486fe4af7258
+Subproject commit efae38d4d6f43c59e1570fe6dd0f483b26cbd7e7
similarity index 97%
rename from components/smartconfig/include/smartconfig.h
rename to components/smartconfig_ack/include/smartconfig_ack.h
index 1723a775b8c64e3db03c4ef72b18f44470049872..be49fd3bd133cb717fdb07183378b55334695672 100644 (file)
@@ -12,8 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef SMARTCONFIG_H
-#define SMARTCONFIG_H
+#ifndef SMARTCONFIG_ACK_H
+#define SMARTCONFIG_ACK_H
 
 #ifdef __cplusplus
 extern "C" {
old mode 100644 (file)
new mode 100755 (executable)
similarity index 88%
rename from components/smartconfig/smartconfig.c
rename to components/smartconfig_ack/smartconfig_ack.c
index a0636d0..be5c4a6
@@ -25,7 +25,7 @@
 #include "esp_log.h"
 #include "esp_wifi.h"
 #include "esp_smartconfig.h"
-#include "smartconfig.h"
+#include "smartconfig_ack.h"
 
 static const char *TAG = "smartconfig";
 
@@ -50,7 +50,7 @@ static void sc_ack_send_task(void *pvParameters)
     int remote_port = (ack->type == SC_ACK_TYPE_ESPTOUCH) ? SC_ACK_TOUCH_SERVER_PORT : SC_ACK_AIRKISS_SERVER_PORT;
     struct sockaddr_in server_addr;
     socklen_t sin_size = sizeof(server_addr);
-    int send_sock = 0;
+    int send_sock = -1;
     int optval = 1;
     int sendlen;
     int ack_len = (ack->type == SC_ACK_TYPE_ESPTOUCH) ? SC_ACK_TOUCH_LEN : SC_ACK_AIRKISS_LEN;
@@ -78,10 +78,9 @@ static void sc_ack_send_task(void *pvParameters)
 
             /* Create UDP socket. */
             send_sock = socket(AF_INET, SOCK_DGRAM, 0);
-            if (send_sock < 0) {
+            if ((send_sock < LWIP_SOCKET_OFFSET) || (send_sock > (FD_SETSIZE - 1))) {
                 ESP_LOGE(TAG,  "Creat udp socket failed");
-                free(ack);
-                vTaskDelete(NULL);
+                goto _end;     
             }
 
             setsockopt(send_sock, SOL_SOCKET, SO_BROADCAST | SO_REUSEADDR, &optval, sizeof(int));
@@ -100,9 +99,7 @@ static void sc_ack_send_task(void *pvParameters)
                         if (ack->cb) {
                             ack->cb(SC_STATUS_LINK_OVER, remote_ip);
                         }
-                        close(send_sock);
-                        free(ack);
-                        vTaskDelete(NULL);
+                        goto _end;
                     }
                 }
                 else {
@@ -112,9 +109,7 @@ static void sc_ack_send_task(void *pvParameters)
                         continue;
                     }
                     ESP_LOGE(TAG, "send failed, errno %d", err);
-                    close(send_sock);
-                    free(ack);
-                    vTaskDelete(NULL);
+                    goto _end;
                 }
             }
         }
@@ -123,6 +118,10 @@ static void sc_ack_send_task(void *pvParameters)
         }
     }
 
+_end:
+    if ((send_sock >= LWIP_SOCKET_OFFSET) && (send_sock <= (FD_SETSIZE - 1))) {
+        close(send_sock);
+    }
     free(ack);
     vTaskDelete(NULL);
 }
@@ -145,7 +144,10 @@ void sc_ack_send(sc_ack_t *param)
 
     s_sc_ack_send = true;
 
-    xTaskCreate(sc_ack_send_task, "sc_ack_send_task", SC_ACK_TASK_STACK_SIZE, ack, SC_ACK_TASK_PRIORITY, NULL);
+    if (xTaskCreate(sc_ack_send_task, "sc_ack_send_task", SC_ACK_TASK_STACK_SIZE, ack, SC_ACK_TASK_PRIORITY, NULL) != pdPASS) {
+        ESP_LOGE(TAG, "Create sending smartconfig ACK task fail");
+        free(ack);
+    }
 }
 
 void sc_ack_send_stop(void)