diff --git a/Marlin/src/module/mks_wifi/mks_wifi.cpp b/Marlin/src/module/mks_wifi/mks_wifi.cpp index 1297302efd..7bf05c9ebe 100644 --- a/Marlin/src/module/mks_wifi/mks_wifi.cpp +++ b/Marlin/src/module/mks_wifi/mks_wifi.cpp @@ -11,17 +11,18 @@ void mks_wifi_init(void){ DEBUG("Init MKS WIFI"); - WRITE(MKS_WIFI_IO4, HIGH); + SET_OUTPUT(MKS_WIFI_IO4); + WRITE(MKS_WIFI_IO4, HIGH); SET_OUTPUT(MKS_WIFI_IO_RST); WRITE(MKS_WIFI_IO_RST, LOW); - safe_delay(2000); + safe_delay(1000); WRITE(MKS_WIFI_IO_RST, HIGH); + safe_delay(1000); + WRITE(MKS_WIFI_IO4, LOW); - safe_delay(2000); - mks_wifi_set_param(); } @@ -36,16 +37,16 @@ void mks_wifi_set_param(void){ memset(mks_out_buffer, 0, sizeof(ESP_PACKET_DATA_MAX_SIZE)); - mks_out_buffer[4] = WIFI_MODE_STA; + mks_out_buffer[0] = WIFI_MODE_STA; - mks_out_buffer[5] = ap_len; - strncpy((char *)&mks_out_buffer[6], (const char *)WIFI_SSID, ap_len); + mks_out_buffer[1] = ap_len; + strncpy((char *)&mks_out_buffer[2], (const char *)WIFI_SSID, ap_len); - mks_out_buffer[6+ap_len] = key_len; - strncpy((char *)&mks_out_buffer[6 + ap_len + 1], (const char *)WIFI_KEY, key_len); + mks_out_buffer[2+ap_len] = key_len; + strncpy((char *)&mks_out_buffer[2 + ap_len + 1], (const char *)WIFI_KEY, key_len); esp_frame.type=ESP_TYPE_NET; - esp_frame.dataLen=strnlen((char *)mks_out_buffer,ESP_PACKET_DATA_MAX_SIZE); + esp_frame.dataLen= 2 + ap_len + key_len + 1; esp_frame.data=mks_out_buffer; packet_size=mks_wifi_build_packet(esp_packet,&esp_frame); @@ -96,6 +97,7 @@ void mks_wifi_out_add(uint8_t *data, uint32_t size){ uint8_t mks_wifi_input(uint8_t data){ ESP_PROTOC_FRAME esp_frame; + static uint8_t get_packet_from_esp=0; static uint8_t packet_start_flag=0; static uint8_t packet_type=0; static uint16_t packet_index=0; @@ -103,6 +105,7 @@ uint8_t mks_wifi_input(uint8_t data){ uint8_t ret_val=1; + if(data == ESP_PROTOC_HEAD){ payload_size = ESP_PACKET_DATA_MAX_SIZE; packet_start_flag=1; @@ -129,6 +132,12 @@ uint8_t mks_wifi_input(uint8_t data){ mks_wifi_parse_packet(&esp_frame); + if(!get_packet_from_esp){ + DEBUG("Fisrt packet from ESP, send config"); + mks_wifi_set_param(); + get_packet_from_esp=1; + } + packet_start_flag=0; packet_index=0; } @@ -225,17 +234,20 @@ uint16_t mks_wifi_build_packet(uint8_t *packet, ESP_PROTOC_FRAME *esp_frame){ packet[0] = ESP_PROTOC_HEAD; packet[1] = esp_frame->type; - *((uint16_t *)&packet[2]) = esp_frame->dataLen + 2; //Два байта на 0x0d 0x0a - for(uint32_t i=0; i < esp_frame->dataLen; i++){ packet[i+4]=esp_frame->data[i]; //4 байта заголовка отступить } packet_size = esp_frame->dataLen + 4; - packet[esp_frame->dataLen + 4] = 0x0d; - packet[esp_frame->dataLen + 5] = 0x0a; + + if(esp_frame->type != ESP_TYPE_NET){ + packet[packet_size++] = 0x0d; + packet[packet_size++] = 0x0a; + esp_frame->dataLen = esp_frame->dataLen + 2; //Два байта на 0x0d 0x0a + } - packet_size = esp_frame->dataLen + 6; //Два байта на 0x0d 0x0a + *((uint16_t *)&packet[2]) = esp_frame->dataLen; + packet[packet_size] = ESP_PROTOC_TAIL; return packet_size; } diff --git a/Marlin/src/module/mks_wifi/mks_wifi.h b/Marlin/src/module/mks_wifi/mks_wifi.h index af9cf78089..7749c21bcf 100644 --- a/Marlin/src/module/mks_wifi/mks_wifi.h +++ b/Marlin/src/module/mks_wifi/mks_wifi.h @@ -7,14 +7,16 @@ #define MKS_WIFI_SERIAL_NUM (uint8_t)1 -#define WIFI_MODE_STA (uint8_t)0 +#define WIFI_MODE_STA (uint8_t)2 #define WIFI_MODE_AP (uint8_t)1 #define WIFI_SSID "MikroTik2" #define WIFI_KEY "vg3Apswqvg3Aps" + /* -const char home_ssid[] = "MikroTik2"; -const char home_passwd[] = "vg3Apswqvg3Aps"; +#define WIFI_SSID "MikroTik2" +#define WIFI_KEY "vg3Apswqvg3Aps" + const char wifi_ap[]="bus_station"; const char wifi_key[]="RAnRZj2JQbSMD5djh3"; const uint8_t wifi_mode_sel=0; @@ -56,7 +58,6 @@ void mks_wifi_parse_packet(ESP_PROTOC_FRAME *packet); void mks_wifi_out_add(uint8_t *data, uint32_t size); -//uint16_t mks_wifi_build_packet(uint8_t *packet, uint8_t type, uint8_t *data, uint16_t count); uint16_t mks_wifi_build_packet(uint8_t *packet, ESP_PROTOC_FRAME *esp_frame); void mks_wifi_send(uint8_t *packet, uint16_t size);