31
31
#include "esp_wifi.h"
32
32
#include "esp_smartconfig.h"
33
33
#include "smartconfig_ack.h"
34
+ #include "lwip/inet.h"
34
35
35
36
#define SC_ACK_TASK_PRIORITY 2 /*!< Priority of sending smartconfig ACK task */
36
37
#define SC_ACK_TASK_STACK_SIZE 2048 /*!< Stack size of sending smartconfig ACK task */
40
41
#define SC_ACK_TOUCH_V2_SERVER_PORT (i ) (18266+i*10000) /*!< ESP touch_v2 UDP port of server on cellphone */
41
42
#define SC_ACK_AIRKISS_SERVER_PORT 10000 /*!< Airkiss UDP port of server on cellphone */
42
43
#define SC_ACK_AIRKISS_DEVICE_PORT 10001 /*!< Airkiss UDP port of server on device */
43
- #define SC_ACK_AIRKISS_TIMEOUT 1500 /*!< Airkiss read data timout millisecond */
44
+ #define SC_ACK_TIMEOUT 1500 /*!< Airkiss and ESP touch_v2 read data timout millisecond */
44
45
45
46
#define SC_ACK_TOUCH_LEN 11 /*!< Length of ESP touch ACK context */
46
47
#define SC_ACK_AIRKISS_LEN 7 /*!< Length of Airkiss ACK context */
@@ -133,21 +134,24 @@ static void sc_ack_send_task(void* pvParameters)
133
134
134
135
setsockopt (send_sock , SOL_SOCKET , SO_BROADCAST | SO_REUSEADDR , & optval , sizeof (int ));
135
136
136
- if (ack -> type == SC_TYPE_AIRKISS ) {
137
+ if (ack -> type == SC_TYPE_AIRKISS || ack -> type == SC_TYPE_ESPTOUCH_V2 ) {
137
138
char data = 0 ;
138
139
struct sockaddr_in local_addr , from ;
139
140
socklen_t sockadd_len = sizeof (struct sockaddr );
140
141
struct timeval timeout = {
141
- SC_ACK_AIRKISS_TIMEOUT / 1000 ,
142
- SC_ACK_AIRKISS_TIMEOUT % 1000 * 1000
142
+ SC_ACK_TIMEOUT / 1000 ,
143
+ SC_ACK_TIMEOUT % 1000 * 1000
143
144
};
144
145
145
146
bzero (& local_addr , sizeof (struct sockaddr_in ));
146
147
bzero (& from , sizeof (struct sockaddr_in ));
147
148
local_addr .sin_family = AF_INET ;
148
149
local_addr .sin_addr .s_addr = INADDR_ANY ;
149
- local_addr .sin_port = htons (SC_ACK_AIRKISS_DEVICE_PORT );
150
-
150
+ if (ack -> type == SC_TYPE_AIRKISS ) {
151
+ local_addr .sin_port = htons (SC_ACK_AIRKISS_DEVICE_PORT );
152
+ } else {
153
+ local_addr .sin_port = htons (SC_ACK_TOUCH_DEVICE_PORT );
154
+ }
151
155
bind (send_sock , (struct sockaddr * )& local_addr , sockadd_len );
152
156
setsockopt (send_sock , SOL_SOCKET , SO_RCVTIMEO , & timeout , sizeof (timeout ));
153
157
@@ -156,6 +160,7 @@ static void sc_ack_send_task(void* pvParameters)
156
160
if (from .sin_addr .s_addr != INADDR_ANY ) {
157
161
memcpy (remote_ip , & from .sin_addr , 4 );
158
162
server_addr .sin_addr .s_addr = from .sin_addr .s_addr ;
163
+ ESP_LOGI (TAG , "cellphone_ip: %s" , inet_ntoa (server_addr .sin_addr ));
159
164
} else {
160
165
server_addr .sin_addr .s_addr = INADDR_BROADCAST ;
161
166
}
0 commit comments