mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-25 02:57:33 +08:00
Merge branch 'feature/transfer_ACK_type_to_sc_callback' into 'master'
feat(sc): transfer smartconfig ACK type to sc_callback See merge request sdk/ESP8266_RTOS_SDK!944
This commit is contained in:
@ -54,6 +54,14 @@ typedef struct sc_ack {
|
||||
} ctx;
|
||||
} sc_ack_t;
|
||||
|
||||
/**
|
||||
* @brief Smartconfig parameters passed sc_callback call.
|
||||
*/
|
||||
typedef struct sc_callback_ack {
|
||||
uint8_t ip[4]; /*!< IP address of cellphone */
|
||||
sc_ack_type_t type; /*!< Smartconfig ACK type */
|
||||
} sc_callback_data_t;
|
||||
|
||||
/**
|
||||
* @brief Send smartconfig ACK to cellphone.
|
||||
*
|
||||
|
@ -53,8 +53,14 @@ static void sc_ack_send_task(void *pvParameters)
|
||||
{
|
||||
sc_ack_t *ack = (sc_ack_t *)pvParameters;
|
||||
tcpip_adapter_ip_info_t local_ip;
|
||||
sc_callback_data_t sc_callback_data;
|
||||
uint8_t remote_ip[4];
|
||||
memset(&sc_callback_data, 0x0, sizeof(sc_callback_data_t));
|
||||
if (ack->type == SC_ACK_TYPE_ESPTOUCH) {
|
||||
memcpy(sc_callback_data.ip, ack->ctx.ip, sizeof(sc_callback_data.ip));
|
||||
}
|
||||
memcpy(remote_ip, ack->ctx.ip, sizeof(remote_ip));
|
||||
sc_callback_data.type = ack->type;
|
||||
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);
|
||||
@ -117,7 +123,7 @@ static void sc_ack_send_task(void *pvParameters)
|
||||
server_addr.sin_addr.s_addr = from.sin_addr.s_addr;
|
||||
} else {
|
||||
if (ack->cb) {
|
||||
ack->cb(SC_STATUS_LINK_OVER, remote_ip);
|
||||
ack->cb(SC_STATUS_LINK_OVER, &sc_callback_data);
|
||||
}
|
||||
goto _end;
|
||||
}
|
||||
@ -140,7 +146,7 @@ static void sc_ack_send_task(void *pvParameters)
|
||||
*ack->link_flag = 1;
|
||||
}
|
||||
if (ack->cb) {
|
||||
ack->cb(SC_STATUS_LINK_OVER, remote_ip);
|
||||
ack->cb(SC_STATUS_LINK_OVER, &sc_callback_data);
|
||||
}
|
||||
goto _end;
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "nvs_flash.h"
|
||||
#include "tcpip_adapter.h"
|
||||
#include "esp_smartconfig.h"
|
||||
#include "smartconfig_ack.h"
|
||||
|
||||
/* FreeRTOS event group to signal when we are connected & ready to make a request */
|
||||
static EventGroupHandle_t wifi_event_group;
|
||||
@ -88,9 +89,19 @@ static void sc_callback(smartconfig_status_t status, void *pdata)
|
||||
case SC_STATUS_LINK_OVER:
|
||||
ESP_LOGI(TAG, "SC_STATUS_LINK_OVER");
|
||||
if (pdata != NULL) {
|
||||
uint8_t phone_ip[4] = { 0 };
|
||||
memcpy(phone_ip, (uint8_t* )pdata, 4);
|
||||
ESP_LOGI(TAG, "Phone ip: %d.%d.%d.%d\n", phone_ip[0], phone_ip[1], phone_ip[2], phone_ip[3]);
|
||||
sc_callback_data_t *sc_callback_data = (sc_callback_data_t *)pdata;
|
||||
switch (sc_callback_data->type) {
|
||||
case SC_ACK_TYPE_ESPTOUCH:
|
||||
ESP_LOGI(TAG, "Phone ip: %d.%d.%d.%d", sc_callback_data->ip[0], sc_callback_data->ip[1], sc_callback_data->ip[2], sc_callback_data->ip[3]);
|
||||
ESP_LOGI(TAG, "TYPE: ESPTOUCH");
|
||||
break;
|
||||
case SC_ACK_TYPE_AIRKISS:
|
||||
ESP_LOGI(TAG, "TYPE: AIRKISS");
|
||||
break;
|
||||
default:
|
||||
ESP_LOGE(TAG, "TYPE: ERROR");
|
||||
break;
|
||||
}
|
||||
}
|
||||
xEventGroupSetBits(wifi_event_group, ESPTOUCH_DONE_BIT);
|
||||
break;
|
||||
@ -102,7 +113,7 @@ static void sc_callback(smartconfig_status_t status, void *pdata)
|
||||
void smartconfig_example_task(void * parm)
|
||||
{
|
||||
EventBits_t uxBits;
|
||||
ESP_ERROR_CHECK( esp_smartconfig_set_type(SC_TYPE_ESPTOUCH) );
|
||||
ESP_ERROR_CHECK( esp_smartconfig_set_type(SC_TYPE_ESPTOUCH_AIRKISS) );
|
||||
ESP_ERROR_CHECK( esp_smartconfig_start(sc_callback) );
|
||||
while (1) {
|
||||
uxBits = xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT | ESPTOUCH_DONE_BIT, true, false, portMAX_DELAY);
|
||||
|
Reference in New Issue
Block a user