Sergey
5 years ago
8 changed files with 168 additions and 7 deletions
@ -1,15 +1,116 @@ |
|||||
#include "mks_wifi.h" |
#include "mks_wifi.h" |
||||
|
|
||||
|
ESP_PROTOC_FRAME esp_frame; |
||||
|
uint8_t mks_buffer[ESP_PACKET_DATA_MAX_SIZE]; |
||||
|
|
||||
void mks_wifi_init(void){ |
void mks_wifi_init(void){ |
||||
|
|
||||
DEBUG("Init MKS WIFI"); |
DEBUG("Init MKS WIFI"); |
||||
SET_INPUT_PULLUP(MKS_WIFI_IO0); |
SET_OUTPUT(MKS_WIFI_IO_RST); |
||||
attachInterrupt(MKS_WIFI_IO0, mks_wifi_io0_irq, FALLING); |
WRITE(MKS_WIFI_IO_RST, LOW); |
||||
} |
|
||||
|
|
||||
|
safe_delay(2000); |
||||
|
WRITE(MKS_WIFI_IO_RST, HIGH); |
||||
|
|
||||
void mks_wifi_io0_irq(void){ |
// SET_INPUT_PULLUP(MKS_WIFI_IO0);
|
||||
|
// attachInterrupt(MKS_WIFI_IO0, mks_wifi_io0_irq, FALLING);
|
||||
|
} |
||||
|
|
||||
|
/* Тестовая функция на обработчик EXTI прерывания */ |
||||
|
void mks_wifi_io0_irq(void){ |
||||
INFO("IO0 Irq"); |
INFO("IO0 Irq"); |
||||
|
} |
||||
|
|
||||
|
/*
|
||||
|
Принимает по символу из входных данных. |
||||
|
Сладывает в буфер, формирует пакет. |
||||
|
Возвращаемые занчения: |
||||
|
1 - найден признак начала пакета, отдавать байт мардину не надо |
||||
|
0 - начало пакета не найдено, передать байт дальше марлину |
||||
|
*/ |
||||
|
uint8_t mks_wifi_input(uint8_t data){ |
||||
|
static uint8_t packet_start_flag=0; |
||||
|
static uint8_t packet_type=0; |
||||
|
static uint16_t packet_index=0; |
||||
|
static uint16_t payload_size=ESP_PACKET_DATA_MAX_SIZE; |
||||
|
uint8_t ret_val=1; |
||||
|
|
||||
|
if(data == ESP_PROTOC_HEAD){ |
||||
|
payload_size = ESP_PACKET_DATA_MAX_SIZE; |
||||
|
packet_start_flag=1; |
||||
|
packet_index=0; |
||||
|
memset(mks_buffer,0,ESP_PACKET_DATA_MAX_SIZE); |
||||
} |
} |
||||
|
|
||||
|
if(packet_start_flag){ |
||||
|
mks_buffer[packet_index]=data; |
||||
|
} |
||||
|
|
||||
|
if(packet_index == 1){ |
||||
|
packet_type = mks_buffer[1]; |
||||
|
} |
||||
|
|
||||
|
if(packet_index == 3){ |
||||
|
payload_size = uint16_t(mks_buffer[3] << 8) | mks_buffer[2]; |
||||
|
} |
||||
|
|
||||
|
if( (packet_index >= (payload_size+4)) || (packet_index >= ESP_PACKET_DATA_MAX_SIZE) ){ |
||||
|
esp_frame.type = packet_type; |
||||
|
esp_frame.dataLen = payload_size; |
||||
|
esp_frame.data = &mks_buffer[4]; |
||||
|
|
||||
|
mks_wifi_parse_packet(&esp_frame); |
||||
|
|
||||
|
packet_start_flag=0; |
||||
|
packet_index=0; |
||||
|
} |
||||
|
|
||||
|
/* Если в пакете G-Сode, отдаем payload дальше в обработчик марлина */ |
||||
|
if((packet_type == ESP_TYPE_GCODE) && |
||||
|
(packet_index >= 4) && |
||||
|
(packet_index < (payload_size+5)) |
||||
|
){ |
||||
|
ret_val=0; |
||||
|
} |
||||
|
|
||||
|
if(packet_start_flag){ |
||||
|
packet_index++; |
||||
|
} |
||||
|
|
||||
|
return ret_val; |
||||
|
} |
||||
|
|
||||
|
void mks_wifi_parse_packet(ESP_PROTOC_FRAME *packet){ |
||||
|
|
||||
|
switch(packet->type){ |
||||
|
case ESP_TYPE_NET: |
||||
|
|
||||
|
if(packet->data[6] == ESP_NET_WIFI_CONNECTED){ |
||||
|
DEBUG("[Net] connected, IP: %d.%d.%d.%d",packet->data[0],packet->data[1],packet->data[2],packet->data[3]); |
||||
|
}else if(packet->data[6] == ESP_NET_WIFI_EXCEPTION){ |
||||
|
DEBUG("[Net] wifi exeption"); |
||||
|
}else{ |
||||
|
DEBUG("[Net] wifi not config"); |
||||
|
} |
||||
|
break; |
||||
|
case ESP_TYPE_GCODE: |
||||
|
DEBUG("[Gcode] %s",packet->data); |
||||
|
break; |
||||
|
case ESP_TYPE_FILE_FIRST: |
||||
|
DEBUG("[FILE_FIRST]"); |
||||
|
break; |
||||
|
case ESP_TYPE_FILE_FRAGMENT: |
||||
|
DEBUG("[FILE_FRAGMENT]"); |
||||
|
break; |
||||
|
case ESP_TYPE_WIFI_LIST: |
||||
|
DEBUG("[WIFI_LIST]"); |
||||
|
break; |
||||
|
default: |
||||
|
DEBUG("[Unkn]"); |
||||
|
break; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
@ -0,0 +1,17 @@ |
|||||
|
|
||||
|
Работа Марлин с Serial: |
||||
|
Вызов manage_inactivity(){ |
||||
|
if (queue.length < BUFSIZE) queue.get_available_commands(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
queue.get_available_commands(){ |
||||
|
get_serial_commands(); |
||||
|
get_sdcard_commands(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
get_serial_commands(){ |
||||
|
|
||||
|
|
||||
|
} |
Loading…
Reference in new issue