mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-17 08:25:55 +08:00
Add MKS Fast Upload support
This commit is contained in:
parent
4a1f1c72e8
commit
4c4ff06518
@ -107,7 +107,9 @@ bool Commands::ESP201(const char* cmd_params, level_authenticate_type auth_type,
|
|||||||
if (!Hal::analogWrite(pin, value)) {
|
if (!Hal::analogWrite(pin, value)) {
|
||||||
output->printERROR ("Invalid value!");
|
output->printERROR ("Invalid value!");
|
||||||
response = false;
|
response = false;
|
||||||
} else output->printMSG ("ok");
|
} else {
|
||||||
|
output->printMSG ("ok");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
output->printERROR ("Invalid parameter!");
|
output->printERROR ("Invalid parameter!");
|
||||||
response = false;
|
response = false;
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "../esp3doutput.h"
|
#include "../esp3doutput.h"
|
||||||
#include "../settings_esp3d.h"
|
#include "../settings_esp3d.h"
|
||||||
#include "../../modules/authentication/authentication_service.h"
|
#include "../../modules/authentication/authentication_service.h"
|
||||||
|
#include "../../modules/serial/serial_service.h"
|
||||||
#ifdef SENSOR_DEVICE
|
#ifdef SENSOR_DEVICE
|
||||||
#include "../../modules/sensor/sensor.h"
|
#include "../../modules/sensor/sensor.h"
|
||||||
#endif //SENSOR_DEVICE
|
#endif //SENSOR_DEVICE
|
||||||
@ -135,6 +136,9 @@ bool Commands::ESP401(const char* cmd_params, level_authenticate_type auth_type,
|
|||||||
esp3d_sensor.setInterval(sval.toInt());
|
esp3d_sensor.setInterval(sval.toInt());
|
||||||
break;
|
break;
|
||||||
#endif //SENSOR_DEVICE
|
#endif //SENSOR_DEVICE
|
||||||
|
case ESP_BAUD_RATE:
|
||||||
|
serial_service.updateBaudRate(sval.toInt());
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -137,6 +137,23 @@ bool Commands::ESP800(const char* cmd_params, level_authenticate_type auth_type,
|
|||||||
} else {
|
} else {
|
||||||
output->print("none");
|
output->print("none");
|
||||||
}
|
}
|
||||||
|
if(plain) {
|
||||||
|
output->printLN("");
|
||||||
|
} else {
|
||||||
|
output->print("\"");
|
||||||
|
}
|
||||||
|
//Serial protocol
|
||||||
|
if (plain) {
|
||||||
|
output->print("Serial protocol:");
|
||||||
|
} else {
|
||||||
|
output->print(",\"serialprotocol\":\"");
|
||||||
|
}
|
||||||
|
#if COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
|
output->print("MKS");
|
||||||
|
#endif //COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
|
#if COMMUNICATION_PROTOCOL == RAW_SERIAL
|
||||||
|
output->print("RAW");
|
||||||
|
#endif //COMMUNICATION_PROTOCOL == RAW_SERIAL
|
||||||
if(plain) {
|
if(plain) {
|
||||||
output->printLN("");
|
output->printLN("");
|
||||||
} else {
|
} else {
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#define _VERSION_ESP3D_H
|
#define _VERSION_ESP3D_H
|
||||||
|
|
||||||
//version and sources location
|
//version and sources location
|
||||||
#define FW_VERSION "3.0.0.a79"
|
#define FW_VERSION "3.0.0.a80"
|
||||||
#define REPOSITORY "https://github.com/luc-github/ESP3D/tree/3.0"
|
#define REPOSITORY "https://github.com/luc-github/ESP3D/tree/3.0"
|
||||||
|
|
||||||
#endif //_VERSION_ESP3D_H
|
#endif //_VERSION_ESP3D_H
|
||||||
|
50
esp3d/src/modules/http/handles/handle-mks-files.cpp
Normal file
50
esp3d/src/modules/http/handles/handle-mks-files.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
handle-mks-files.cpp - ESP3D http handle
|
||||||
|
|
||||||
|
Copyright (c) 2014 Luc Lebosse. All rights reserved.
|
||||||
|
|
||||||
|
This code is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This code is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with This code; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
#include "../../../include/esp3d_config.h"
|
||||||
|
#if defined (HTTP_FEATURE) && (COMMUNICATION_PROTOCOL == MKS_SERIAL)
|
||||||
|
#include "../http_server.h"
|
||||||
|
#if defined (ARDUINO_ARCH_ESP32)
|
||||||
|
#include <WebServer.h>
|
||||||
|
#endif //ARDUINO_ARCH_ESP32
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#include <ESP8266WebServer.h>
|
||||||
|
#endif //ARDUINO_ARCH_ESP8266
|
||||||
|
#include "../../mks/mks_service.h"
|
||||||
|
#include "../../authentication/authentication_service.h"
|
||||||
|
|
||||||
|
void HTTP_Server::handleMKSUpload ()
|
||||||
|
{
|
||||||
|
level_authenticate_type auth_level = AuthenticationService::authenticated_level();
|
||||||
|
if (auth_level == LEVEL_GUEST) {
|
||||||
|
_upload_status = UPLOAD_STATUS_NONE;
|
||||||
|
_webserver->send (401, "text/plain", "Wrong authentication!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ( (_upload_status == UPLOAD_STATUS_FAILED) || (_upload_status == UPLOAD_STATUS_CANCELLED) ) {
|
||||||
|
_webserver->send (500, "text/plain", "Upload failed!");
|
||||||
|
_upload_status = UPLOAD_STATUS_NONE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//no error
|
||||||
|
_webserver->send (200, "text/plain", "{\"status\":\"ok\"}");
|
||||||
|
_upload_status = UPLOAD_STATUS_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //HTTP_FEATURE && (COMMUNICATION_PROTOCOL == MKS_SERIAL)
|
114
esp3d/src/modules/http/handles/upload-mks-files.cpp
Normal file
114
esp3d/src/modules/http/handles/upload-mks-files.cpp
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
/*
|
||||||
|
upload-mks-files.cpp - ESP3D http handle
|
||||||
|
|
||||||
|
Copyright (c) 2014 Luc Lebosse. All rights reserved.
|
||||||
|
|
||||||
|
This code is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This code is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with This code; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
#include "../../../include/esp3d_config.h"
|
||||||
|
#if defined (HTTP_FEATURE) && (COMMUNICATION_PROTOCOL == MKS_SERIAL)
|
||||||
|
#include "../http_server.h"
|
||||||
|
#if defined (ARDUINO_ARCH_ESP32)
|
||||||
|
#include <WebServer.h>
|
||||||
|
#endif //ARDUINO_ARCH_ESP32
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#include <ESP8266WebServer.h>
|
||||||
|
#endif //ARDUINO_ARCH_ESP8266
|
||||||
|
#include "../../mks/mks_service.h"
|
||||||
|
#include "../../authentication/authentication_service.h"
|
||||||
|
//MKS files uploader handle
|
||||||
|
void HTTP_Server::MKSFileupload ()
|
||||||
|
{
|
||||||
|
static uint32_t fragmentID = 0;
|
||||||
|
static uint8_t buf2send[MKS_FRAME_DATA_MAX_SIZE];
|
||||||
|
static size_t buf2sendlen = 0;
|
||||||
|
//get authentication status
|
||||||
|
level_authenticate_type auth_level= AuthenticationService::authenticated_level();
|
||||||
|
//Guest cannot upload - only admin
|
||||||
|
if (auth_level == LEVEL_GUEST) {
|
||||||
|
pushError(ESP_ERROR_AUTHENTICATION, "Upload rejected", 401);
|
||||||
|
_upload_status=UPLOAD_STATUS_FAILED;
|
||||||
|
} else {
|
||||||
|
HTTPUpload& upload = _webserver->upload();
|
||||||
|
if (upload.status == UPLOAD_FILE_START) {
|
||||||
|
buf2sendlen = 0;
|
||||||
|
log_esp3d("Starting upload");
|
||||||
|
_upload_status= UPLOAD_STATUS_ONGOING;
|
||||||
|
size_t fileSize = 0 ;
|
||||||
|
String filename = upload.filename;
|
||||||
|
String sfilename = "s"+filename;
|
||||||
|
if (_webserver->hasArg(sfilename)) {
|
||||||
|
fileSize = _webserver->arg(sfilename).toInt();
|
||||||
|
} else if (_webserver->hasHeader("Content-Length")) {
|
||||||
|
fileSize = _webserver->header("Content-Length").toInt();
|
||||||
|
}
|
||||||
|
fragmentID = 0;
|
||||||
|
if (MKSService::sendFirstFragment(filename.c_str(), fileSize)) {
|
||||||
|
MKSService::uploadMode();
|
||||||
|
}
|
||||||
|
} else if(upload.status == UPLOAD_FILE_WRITE) {
|
||||||
|
if (_upload_status == UPLOAD_STATUS_ONGOING) {
|
||||||
|
uint currentsize = upload.currentSize;
|
||||||
|
uint8_t * currentBuffer = upload.buf;
|
||||||
|
while ((currentsize > 0) &&(_upload_status == UPLOAD_STATUS_ONGOING)) {
|
||||||
|
while ((buf2sendlen<MKS_FRAME_DATA_MAX_SIZE) && currentsize > 0) {
|
||||||
|
buf2send[buf2sendlen]=currentBuffer[0];
|
||||||
|
buf2sendlen++;
|
||||||
|
currentsize--;
|
||||||
|
currentBuffer++;
|
||||||
|
}
|
||||||
|
if (buf2sendlen == MKS_FRAME_DATA_MAX_SIZE) {
|
||||||
|
log_esp3d("Send %d chars in Fragment %d", buf2sendlen, fragmentID);
|
||||||
|
if (MKSService::sendFragment(buf2send,buf2sendlen,fragmentID)) {
|
||||||
|
buf2sendlen=0;
|
||||||
|
fragmentID++;
|
||||||
|
} else {
|
||||||
|
_upload_status=UPLOAD_STATUS_FAILED;
|
||||||
|
pushError(ESP_ERROR_FILE_WRITE, "File write failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Hal::wait(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(upload.status == UPLOAD_FILE_END) {
|
||||||
|
if (_upload_status == UPLOAD_STATUS_ONGOING) {
|
||||||
|
log_esp3d("Upload end");
|
||||||
|
fragmentID=MKSService::getFragmentID(fragmentID,true);
|
||||||
|
log_esp3d("Send %d chars in Fragment %d", buf2sendlen, fragmentID);
|
||||||
|
if(MKSService::sendFragment(buf2send,buf2sendlen,fragmentID)) {
|
||||||
|
_upload_status=UPLOAD_STATUS_SUCCESSFUL;
|
||||||
|
} else {
|
||||||
|
_upload_status=UPLOAD_STATUS_FAILED;
|
||||||
|
pushError(ESP_ERROR_FILE_CLOSE, "File close failed");
|
||||||
|
}
|
||||||
|
MKSService::commandMode();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//error
|
||||||
|
_upload_status=UPLOAD_STATUS_FAILED;
|
||||||
|
pushError(ESP_ERROR_FILE_WRITE, "File write failed");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(_upload_status == UPLOAD_STATUS_FAILED) {
|
||||||
|
cancelUpload();
|
||||||
|
//TBC need to do that
|
||||||
|
//MKSService::sendFragment(nullptr,0,MKSService::getFragmentID(fragmentID, true));
|
||||||
|
MKSService::commandMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif //HTTP_FEATURE && (COMMUNICATION_PROTOCOL == MKS_SERIAL)
|
@ -58,6 +58,10 @@ void HTTP_Server::init_handlers()
|
|||||||
//FileSystememptyConstChar
|
//FileSystememptyConstChar
|
||||||
_webserver->on ("/files", HTTP_ANY, handleFSFileList, FSFileupload);
|
_webserver->on ("/files", HTTP_ANY, handleFSFileList, FSFileupload);
|
||||||
#endif //FILESYSTEM_FEATURE
|
#endif //FILESYSTEM_FEATURE
|
||||||
|
#if COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
|
//MKS_SERIAL
|
||||||
|
_webserver->on ("/upload", HTTP_ANY, handleMKSUpload, MKSFileupload);
|
||||||
|
#endif //COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
#ifdef SD_DEVICE
|
#ifdef SD_DEVICE
|
||||||
//SD
|
//SD
|
||||||
_webserver->on ("/sdfiles", HTTP_ANY, handleSDFileList, SDFileupload);
|
_webserver->on ("/sdfiles", HTTP_ANY, handleSDFileList, SDFileupload);
|
||||||
@ -199,14 +203,16 @@ bool HTTP_Server::begin()
|
|||||||
}
|
}
|
||||||
|
|
||||||
init_handlers();
|
init_handlers();
|
||||||
#ifdef AUTHENTICATION_FEATURE
|
|
||||||
//here the list of headers to be recorded
|
//here the list of headers to be recorded
|
||||||
//Autrization is already added
|
//Autorization is already added
|
||||||
const char * headerkeys[] = {"Cookie"} ;
|
|
||||||
size_t headerkeyssize = sizeof (headerkeys) / sizeof (char*);
|
|
||||||
//ask server to track these headers
|
//ask server to track these headers
|
||||||
_webserver->collectHeaders (headerkeys, headerkeyssize );
|
#ifdef AUTHENTICATION_FEATURE
|
||||||
|
const char * headerkeys[] = {"Cookie","Content-Length"} ;
|
||||||
|
#else
|
||||||
|
const char * headerkeys[] = {"Content-Length"} ;
|
||||||
#endif
|
#endif
|
||||||
|
size_t headerkeyssize = sizeof (headerkeys) / sizeof (char*);
|
||||||
|
_webserver->collectHeaders (headerkeys, headerkeyssize );
|
||||||
_webserver->begin();
|
_webserver->begin();
|
||||||
#ifdef AUTHENTICATION_FEATURE
|
#ifdef AUTHENTICATION_FEATURE
|
||||||
AuthenticationService::begin(_webserver);
|
AuthenticationService::begin(_webserver);
|
||||||
|
@ -93,6 +93,10 @@ private:
|
|||||||
static void handleSDFileList ();
|
static void handleSDFileList ();
|
||||||
static bool StreamSDFile(const char* filename, const char * contentType);
|
static bool StreamSDFile(const char* filename, const char * contentType);
|
||||||
#endif //SD_DEVICE
|
#endif //SD_DEVICE
|
||||||
|
#if COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
|
static void MKSFileupload ();
|
||||||
|
static void handleMKSUpload ();
|
||||||
|
#endif //COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //_HTTP_SERVER_H
|
#endif //_HTTP_SERVER_H
|
||||||
|
@ -28,8 +28,7 @@
|
|||||||
#include "../telnet/telnet_server.h"
|
#include "../telnet/telnet_server.h"
|
||||||
#include "../http/http_server.h"
|
#include "../http/http_server.h"
|
||||||
#include "../network/netconfig.h"
|
#include "../network/netconfig.h"
|
||||||
|
#include "../serial/serial_service.h"
|
||||||
#define MKS_FRAME_DATA_MAX_SIZE (MKS_FRAME_SIZE - 5 - 4)
|
|
||||||
|
|
||||||
//Flag Pins
|
//Flag Pins
|
||||||
#define ESP_FLAG_PIN 0
|
#define ESP_FLAG_PIN 0
|
||||||
@ -91,18 +90,21 @@
|
|||||||
#define ERROR_STATE 0x1
|
#define ERROR_STATE 0x1
|
||||||
#define SUCCESS_STATE 0x2
|
#define SUCCESS_STATE 0x2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define NB_HOTSPOT_MAX 15
|
#define NB_HOTSPOT_MAX 15
|
||||||
|
|
||||||
//Timeouts
|
//Timeouts
|
||||||
#define FRAME_WAIT_TO_SEND_TIMEOUT 2000
|
#define FRAME_WAIT_TO_SEND_TIMEOUT 2000
|
||||||
|
#define ACK_TIMEOUT 5000
|
||||||
#define NET_FRAME_REFRESH_TIME 10000
|
#define NET_FRAME_REFRESH_TIME 10000
|
||||||
|
|
||||||
|
#define UPLOAD_BAUD_RATE 1958400
|
||||||
|
|
||||||
bool MKSService::_started = false;
|
bool MKSService::_started = false;
|
||||||
char MKSService::_frame[MKS_FRAME_SIZE] = {0};
|
uint8_t MKSService::_frame[MKS_FRAME_SIZE] = {0};
|
||||||
char MKSService::_moduleId[22] = {0};
|
char MKSService::_moduleId[22] = {0};
|
||||||
uint8_t MKSService::_uploadStatus = UNKNOW_STATE;
|
uint8_t MKSService::_uploadStatus = UNKNOW_STATE;
|
||||||
|
long MKSService::_commandBaudRate = 115200;
|
||||||
|
bool MKSService::_uploadMode = false;
|
||||||
|
|
||||||
bool MKSService::isHead(const char c)
|
bool MKSService::isHead(const char c)
|
||||||
{
|
{
|
||||||
@ -131,9 +133,125 @@ bool MKSService::begin()
|
|||||||
_started = true;
|
_started = true;
|
||||||
//max size is 21
|
//max size is 21
|
||||||
strncpy(_moduleId,NetConfig::hostname(), 21);
|
strncpy(_moduleId,NetConfig::hostname(), 21);
|
||||||
|
commandMode(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MKSService::commandMode(bool fromSettings)
|
||||||
|
{
|
||||||
|
if (fromSettings) {
|
||||||
|
_commandBaudRate= Settings_ESP3D::read_uint32(ESP_BAUD_RATE);
|
||||||
|
}
|
||||||
|
log_esp3d("Cmd Mode");
|
||||||
|
_uploadMode = false;
|
||||||
|
serial_service.updateBaudRate(_commandBaudRate);
|
||||||
|
|
||||||
|
}
|
||||||
|
void MKSService::uploadMode()
|
||||||
|
{
|
||||||
|
log_esp3d("Upload Mode");
|
||||||
|
_uploadMode = true;
|
||||||
|
serial_service.updateBaudRate(UPLOAD_BAUD_RATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint MKSService::getFragmentID(uint32_t fragmentNumber, bool isLast)
|
||||||
|
{
|
||||||
|
log_esp3d("Fragment: %d %s",fragmentNumber, isLast?" is last":"" );
|
||||||
|
if (isLast) {
|
||||||
|
fragmentNumber |= (1 << 31);
|
||||||
|
} else {
|
||||||
|
fragmentNumber &= ~(1 << 31);
|
||||||
|
}
|
||||||
|
log_esp3d("Fragment is now: %d",fragmentNumber);
|
||||||
|
return fragmentNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MKSService::sendFirstFragment(const char* filename, size_t filesize)
|
||||||
|
{
|
||||||
|
uint fileNameLen = strlen(filename);
|
||||||
|
uint dataLen = fileNameLen + 5;
|
||||||
|
clearFrame();
|
||||||
|
//Head Flag
|
||||||
|
_frame[MKS_FRAME_HEAD_OFFSET] = MKS_FRAME_HEAD_FLAG;
|
||||||
|
//Type Flag
|
||||||
|
_frame[MKS_FRAME_TYPE_OFFSET] = MKS_FRAME_DATA_FIRST_FRAGMENT_TYPE;
|
||||||
|
//Fragment size
|
||||||
|
_frame[MKS_FRAME_DATALEN_OFFSET] = dataLen & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATALEN_OFFSET + 1] = dataLen >> 8;
|
||||||
|
//FileName size
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET] = strlen(filename);
|
||||||
|
//File Size
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET+1] = filesize & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET+2] = (filesize >> 8) & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET+3] = (filesize >> 16) & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET+4] = (filesize >> 24) & 0xff;
|
||||||
|
//Filename
|
||||||
|
strncpy((char *)&_frame[MKS_FRAME_DATA_OFFSET+ 5], filename, fileNameLen);
|
||||||
|
//Tail Flag
|
||||||
|
_frame[dataLen + 4] = MKS_FRAME_TAIL_FLAG;
|
||||||
|
log_esp3d("Filename: %s Filesize: %d",filename, filesize );
|
||||||
|
for (uint i =0; i< dataLen + 5 ; i++) {
|
||||||
|
log_esp3d("%c %x",_frame[i],_frame[i]);
|
||||||
|
}
|
||||||
|
_uploadStatus = UNKNOW_STATE;
|
||||||
|
if (canSendFrame()) {
|
||||||
|
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
||||||
|
_uploadStatus = UNKNOW_STATE;
|
||||||
|
if (output.write(_frame,dataLen + 5) == (dataLen + 5)) {
|
||||||
|
log_esp3d("First fragment Ok");
|
||||||
|
sendFrameDone();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log_esp3d("Failed");
|
||||||
|
sendFrameDone();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool MKSService::sendFragment(const uint8_t * dataFrame, const size_t dataSize,uint fragmentID)
|
||||||
|
{
|
||||||
|
uint dataLen = dataSize + 4;
|
||||||
|
log_esp3d("Fragment datalen:%d",dataSize);
|
||||||
|
//Head Flag
|
||||||
|
_frame[MKS_FRAME_HEAD_OFFSET] = MKS_FRAME_HEAD_FLAG;
|
||||||
|
//Type Flag
|
||||||
|
_frame[MKS_FRAME_TYPE_OFFSET] = MKS_FRAME_DATA_FRAGMENT_TYPE;
|
||||||
|
//Fragment size
|
||||||
|
_frame[MKS_FRAME_DATALEN_OFFSET] = dataLen & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATALEN_OFFSET + 1] = dataLen >> 8;
|
||||||
|
//Fragment ID
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET ] = fragmentID & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET + 1] = (fragmentID >> 8) & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET + 2] = (fragmentID >> 16) & 0xff;
|
||||||
|
_frame[MKS_FRAME_DATA_OFFSET + 3] = (fragmentID >> 24) & 0xff;
|
||||||
|
//data
|
||||||
|
if ((dataSize>0) && (dataFrame!=nullptr)) {
|
||||||
|
memcpy(&_frame[MKS_FRAME_DATA_OFFSET+ 4], dataFrame, dataSize);
|
||||||
|
}
|
||||||
|
if (dataSize<MKS_FRAME_DATA_MAX_SIZE) {
|
||||||
|
clearFrame(dataLen + 4);
|
||||||
|
}
|
||||||
|
//Tail Flag
|
||||||
|
_frame[dataLen + 4] = MKS_FRAME_TAIL_FLAG;
|
||||||
|
/* for (uint i =0; i< dataLen + 5 ; i++) {
|
||||||
|
log_esp3d("%c %x",_frame[i],_frame[i]);
|
||||||
|
}*/
|
||||||
|
if (canSendFrame()) {
|
||||||
|
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
||||||
|
_uploadStatus = UNKNOW_STATE;
|
||||||
|
if (output.write(_frame,MKS_FRAME_SIZE) == MKS_FRAME_SIZE) {
|
||||||
|
log_esp3d("Ok");
|
||||||
|
sendFrameDone();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
log_esp3d("Error with size sent");
|
||||||
|
}
|
||||||
|
log_esp3d("Failed");
|
||||||
|
sendFrameDone();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void MKSService::sendWifiHotspots()
|
void MKSService::sendWifiHotspots()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -188,7 +306,7 @@ void MKSService::sendWifiHotspots()
|
|||||||
}
|
}
|
||||||
if (canSendFrame()) {
|
if (canSendFrame()) {
|
||||||
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
||||||
if (output.write((const uint8_t *)_frame,dataOffset+5) == (dataOffset+5)) {
|
if (output.write(_frame,dataOffset+5) == (dataOffset+5)) {
|
||||||
log_esp3d("Ok");
|
log_esp3d("Ok");
|
||||||
sendFrameDone();
|
sendFrameDone();
|
||||||
} else {
|
} else {
|
||||||
@ -202,6 +320,7 @@ void MKSService::sendWifiHotspots()
|
|||||||
}
|
}
|
||||||
//Restore mode
|
//Restore mode
|
||||||
WiFi.mode((WiFiMode_t)currentmode);
|
WiFi.mode((WiFiMode_t)currentmode);
|
||||||
|
sendFrameDone();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MKSService::handleFrame(const uint8_t type, const uint8_t * dataFrame, const size_t dataSize )
|
void MKSService::handleFrame(const uint8_t type, const uint8_t * dataFrame, const size_t dataSize )
|
||||||
@ -304,6 +423,24 @@ void MKSService::messageException(const uint8_t * dataFrame, const size_t dataSi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MKSService::waitForAck()
|
||||||
|
{
|
||||||
|
uint32_t timestart = millis();
|
||||||
|
bool res=true;
|
||||||
|
while ((_uploadStatus==UNKNOW_STATE)&&((millis()-timestart)<ACK_TIMEOUT)) {
|
||||||
|
serial_service.handle();
|
||||||
|
Hal::wait(10);
|
||||||
|
}
|
||||||
|
if (_uploadStatus!=SUCCESS_STATE) {
|
||||||
|
res=false;
|
||||||
|
}
|
||||||
|
if(_uploadStatus==UNKNOW_STATE) {
|
||||||
|
log_esp3d("Ack timeout");
|
||||||
|
}
|
||||||
|
_uploadStatus=UNKNOW_STATE;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
void MKSService::messageWiFiConfig(const uint8_t * dataFrame, const size_t dataSize )
|
void MKSService::messageWiFiConfig(const uint8_t * dataFrame, const size_t dataSize )
|
||||||
{
|
{
|
||||||
String ssid;
|
String ssid;
|
||||||
@ -383,14 +520,15 @@ void MKSService::messageWiFiConfig(const uint8_t * dataFrame, const size_t dataS
|
|||||||
|
|
||||||
bool MKSService::canSendFrame()
|
bool MKSService::canSendFrame()
|
||||||
{
|
{
|
||||||
//log_esp3d("Is board ready for frame?");
|
log_esp3d("Is board ready for frame?");
|
||||||
digitalWrite(ESP_FLAG_PIN, HIGH);
|
digitalWrite(ESP_FLAG_PIN, BOARD_READY_FLAG_VALUE);
|
||||||
uint32_t startTime = millis();
|
uint32_t startTime = millis();
|
||||||
while( (millis() - startTime) < FRAME_WAIT_TO_SEND_TIMEOUT) {
|
while( (millis() - startTime) < FRAME_WAIT_TO_SEND_TIMEOUT) {
|
||||||
if (digitalRead(BOARD_FLAG_PIN) == BOARD_READY_FLAG_VALUE) {
|
if (digitalRead(BOARD_FLAG_PIN) == BOARD_READY_FLAG_VALUE) {
|
||||||
// log_esp3d("Yes");
|
log_esp3d("Yes");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Hal::wait(0);
|
||||||
}
|
}
|
||||||
log_esp3d("Time out no board answer");
|
log_esp3d("Time out no board answer");
|
||||||
return false;
|
return false;
|
||||||
@ -398,12 +536,15 @@ bool MKSService::canSendFrame()
|
|||||||
|
|
||||||
void MKSService::sendFrameDone()
|
void MKSService::sendFrameDone()
|
||||||
{
|
{
|
||||||
digitalWrite(ESP_FLAG_PIN, LOW);
|
digitalWrite(ESP_FLAG_PIN, !BOARD_READY_FLAG_VALUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MKSService::sendGcodeFrame(const char* cmd)
|
bool MKSService::sendGcodeFrame(const char* cmd)
|
||||||
{
|
{
|
||||||
|
if (_uploadMode) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
String tmp = cmd;
|
String tmp = cmd;
|
||||||
if (tmp.endsWith("\n")) {
|
if (tmp.endsWith("\n")) {
|
||||||
tmp[tmp.length()-1]='\0';
|
tmp[tmp.length()-1]='\0';
|
||||||
@ -428,7 +569,7 @@ bool MKSService::sendGcodeFrame(const char* cmd)
|
|||||||
|
|
||||||
if (canSendFrame()) {
|
if (canSendFrame()) {
|
||||||
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
||||||
if (output.write((const uint8_t *)_frame,strlen(tmp.c_str())+7) == (strlen(tmp.c_str())+7)) {
|
if (output.write(_frame,strlen(tmp.c_str())+7) == (strlen(tmp.c_str())+7)) {
|
||||||
log_esp3d("Ok");
|
log_esp3d("Ok");
|
||||||
sendFrameDone();
|
sendFrameDone();
|
||||||
return true;
|
return true;
|
||||||
@ -445,6 +586,9 @@ bool MKSService::sendNetworkFrame()
|
|||||||
size_t dataOffset = 0;
|
size_t dataOffset = 0;
|
||||||
String s;
|
String s;
|
||||||
static uint32_t lastsend = 0;
|
static uint32_t lastsend = 0;
|
||||||
|
if (_uploadMode) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if ((millis() - lastsend)> NET_FRAME_REFRESH_TIME) {
|
if ((millis() - lastsend)> NET_FRAME_REFRESH_TIME) {
|
||||||
lastsend = millis();
|
lastsend = millis();
|
||||||
log_esp3d("Network frame preparation");
|
log_esp3d("Network frame preparation");
|
||||||
@ -487,7 +631,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
dataOffset = MKS_FRAME_DATA_OFFSET + 9;
|
dataOffset = MKS_FRAME_DATA_OFFSET + 9;
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Wifi_name Segment
|
//Wifi_name Segment
|
||||||
strcpy(&_frame[dataOffset], s.c_str());
|
strcpy((char *)&_frame[dataOffset], s.c_str());
|
||||||
dataOffset+=s.length();
|
dataOffset+=s.length();
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Wifi_key_len Segment
|
//Wifi_key_len Segment
|
||||||
@ -496,7 +640,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
dataOffset++;
|
dataOffset++;
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Wifi_key Segment
|
//Wifi_key Segment
|
||||||
strcpy(&_frame[dataOffset], s.c_str());
|
strcpy((char *)&_frame[dataOffset], s.c_str());
|
||||||
dataOffset+=s.length();
|
dataOffset+=s.length();
|
||||||
} else if (NetConfig::getMode() == ESP_WIFI_AP) {
|
} else if (NetConfig::getMode() == ESP_WIFI_AP) {
|
||||||
log_esp3d("AP Mode");
|
log_esp3d("AP Mode");
|
||||||
@ -522,7 +666,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
dataOffset = MKS_FRAME_DATA_OFFSET + 9;
|
dataOffset = MKS_FRAME_DATA_OFFSET + 9;
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Wifi_name Segment
|
//Wifi_name Segment
|
||||||
strcpy(&_frame[dataOffset], s.c_str());
|
strcpy((char *)&_frame[dataOffset], s.c_str());
|
||||||
dataOffset+=s.length();
|
dataOffset+=s.length();
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Wifi_key_len Segment
|
//Wifi_key_len Segment
|
||||||
@ -531,7 +675,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
dataOffset++;
|
dataOffset++;
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Wifi_key Segment
|
//Wifi_key Segment
|
||||||
strcpy(&_frame[dataOffset], s.c_str());
|
strcpy((char *)&_frame[dataOffset], s.c_str());
|
||||||
dataOffset+=s.length();
|
dataOffset+=s.length();
|
||||||
} else {
|
} else {
|
||||||
//not supported
|
//not supported
|
||||||
@ -559,7 +703,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Cloud host Segment
|
//Cloud host Segment
|
||||||
//Use ESP3D IP instead
|
//Use ESP3D IP instead
|
||||||
strcpy(&_frame[dataOffset], s.c_str());
|
strcpy((char *)&_frame[dataOffset], s.c_str());
|
||||||
dataOffset+=s.length();
|
dataOffset+=s.length();
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Cloud host port Segment
|
//Cloud host port Segment
|
||||||
@ -575,7 +719,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
dataOffset++;
|
dataOffset++;
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Module id Segment
|
//Module id Segment
|
||||||
strcpy(&_frame[dataOffset], _moduleId);
|
strcpy((char *)&_frame[dataOffset], _moduleId);
|
||||||
dataOffset+=strlen(_moduleId);
|
dataOffset+=strlen(_moduleId);
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//FW version len Segment
|
//FW version len Segment
|
||||||
@ -583,7 +727,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
dataOffset++;
|
dataOffset++;
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//FW version Segment
|
//FW version Segment
|
||||||
strcpy(&_frame[dataOffset], "ESP3D_" FW_VERSION);
|
strcpy((char *)&_frame[dataOffset], "ESP3D_" FW_VERSION);
|
||||||
dataOffset+=strlen(FW_VERSION)+6;
|
dataOffset+=strlen(FW_VERSION)+6;
|
||||||
//////////////////////////////////
|
//////////////////////////////////
|
||||||
//Tail Segment
|
//Tail Segment
|
||||||
@ -597,7 +741,7 @@ bool MKSService::sendNetworkFrame()
|
|||||||
log_esp3d("Size of data in frame %d ", dataOffset-4);
|
log_esp3d("Size of data in frame %d ", dataOffset-4);
|
||||||
if (canSendFrame()) {
|
if (canSendFrame()) {
|
||||||
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
ESP3DOutput output(ESP_SERIAL_CLIENT);
|
||||||
if (output.write((const uint8_t *)_frame,dataOffset+1) == (dataOffset+1)) {
|
if (output.write(_frame,dataOffset+1) == (dataOffset+1)) {
|
||||||
log_esp3d("Ok");
|
log_esp3d("Ok");
|
||||||
sendFrameDone();
|
sendFrameDone();
|
||||||
return true;
|
return true;
|
||||||
@ -610,9 +754,9 @@ bool MKSService::sendNetworkFrame()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MKSService::clearFrame()
|
void MKSService::clearFrame(uint start)
|
||||||
{
|
{
|
||||||
memset(_frame, 0, sizeof(_frame));
|
memset(&_frame[start], 0, sizeof(_frame)-start);
|
||||||
}
|
}
|
||||||
void MKSService::handle()
|
void MKSService::handle()
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#define _MKS_SERVICES_H
|
#define _MKS_SERVICES_H
|
||||||
|
|
||||||
#define MKS_FRAME_SIZE 1024
|
#define MKS_FRAME_SIZE 1024
|
||||||
|
#define MKS_FRAME_DATA_MAX_SIZE (MKS_FRAME_SIZE - 5 - 4)
|
||||||
|
|
||||||
class MKSService
|
class MKSService
|
||||||
{
|
{
|
||||||
@ -40,18 +41,26 @@ public:
|
|||||||
static bool isTail(const char c);
|
static bool isTail(const char c);
|
||||||
static bool isFrame(const char c);
|
static bool isFrame(const char c);
|
||||||
static bool isCommand(const char c);
|
static bool isCommand(const char c);
|
||||||
|
static bool waitForAck();
|
||||||
|
static bool sendFirstFragment(const char* filename, size_t filesize);
|
||||||
|
static bool sendFragment(const uint8_t * dataFrame, const size_t dataSize,uint fragmentID);
|
||||||
|
static uint getFragmentID(uint32_t fragmentNumber, bool isLast=false);
|
||||||
|
static void commandMode(bool fromSettings=false);
|
||||||
|
static void uploadMode();
|
||||||
private:
|
private:
|
||||||
static uint8_t _uploadStatus;
|
static uint8_t _uploadStatus;
|
||||||
|
static long _commandBaudRate;
|
||||||
static void sendWifiHotspots();
|
static void sendWifiHotspots();
|
||||||
static void messageWiFiControl(const uint8_t * dataFrame, const size_t dataSize);
|
static void messageWiFiControl(const uint8_t * dataFrame, const size_t dataSize);
|
||||||
static void messageException(const uint8_t * dataFrame, const size_t dataSize);
|
static void messageException(const uint8_t * dataFrame, const size_t dataSize);
|
||||||
static void messageWiFiConfig(const uint8_t * dataFrame, const size_t dataSize);
|
static void messageWiFiConfig(const uint8_t * dataFrame, const size_t dataSize);
|
||||||
static void clearFrame();
|
static void clearFrame(uint start=0);
|
||||||
static bool canSendFrame();
|
static bool canSendFrame();
|
||||||
static void sendFrameDone();
|
static void sendFrameDone();
|
||||||
static bool _started;
|
static bool _started;
|
||||||
static char _frame[MKS_FRAME_SIZE];
|
static uint8_t _frame[MKS_FRAME_SIZE];
|
||||||
static char _moduleId[22];
|
static char _moduleId[22];
|
||||||
|
static bool _uploadMode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -236,6 +236,7 @@ bool NetConfig::begin()
|
|||||||
end();
|
end();
|
||||||
int8_t espMode =Settings_ESP3D::read_byte(ESP_RADIO_MODE);
|
int8_t espMode =Settings_ESP3D::read_byte(ESP_RADIO_MODE);
|
||||||
ESP3DOutput output(ESP_ALL_CLIENTS);
|
ESP3DOutput output(ESP_ALL_CLIENTS);
|
||||||
|
log_esp3d("Starting Network");
|
||||||
if (espMode != NO_NETWORK) {
|
if (espMode != NO_NETWORK) {
|
||||||
if (Settings_ESP3D::isVerboseBoot()) {
|
if (Settings_ESP3D::isVerboseBoot()) {
|
||||||
output.printMSG("Starting Network");
|
output.printMSG("Starting Network");
|
||||||
@ -259,6 +260,7 @@ bool NetConfig::begin()
|
|||||||
_hostname = Settings_ESP3D::read_string(ESP_HOSTNAME);
|
_hostname = Settings_ESP3D::read_string(ESP_HOSTNAME);
|
||||||
_mode = espMode;
|
_mode = espMode;
|
||||||
if (espMode == NO_NETWORK) {
|
if (espMode == NO_NETWORK) {
|
||||||
|
output.printMSG("Disable Network");
|
||||||
WiFi.mode(WIFI_OFF);
|
WiFi.mode(WIFI_OFF);
|
||||||
ESP3DGlobalOutput::display_IP();
|
ESP3DGlobalOutput::display_IP();
|
||||||
if (Settings_ESP3D::isVerboseBoot()) {
|
if (Settings_ESP3D::isVerboseBoot()) {
|
||||||
@ -271,6 +273,7 @@ bool NetConfig::begin()
|
|||||||
}
|
}
|
||||||
#if defined (WIFI_FEATURE)
|
#if defined (WIFI_FEATURE)
|
||||||
if ((espMode == ESP_WIFI_AP) || (espMode == ESP_WIFI_STA)) {
|
if ((espMode == ESP_WIFI_AP) || (espMode == ESP_WIFI_STA)) {
|
||||||
|
output.printMSG("Setup wifi");
|
||||||
res = WiFiConfig::begin();
|
res = WiFiConfig::begin();
|
||||||
//in case STA failed and fallback to AP mode
|
//in case STA failed and fallback to AP mode
|
||||||
if (WiFi.getMode() == WIFI_AP) {
|
if (WiFi.getMode() == WIFI_AP) {
|
||||||
|
@ -86,9 +86,6 @@ bool NetServices::begin()
|
|||||||
String hostname = Settings_ESP3D::read_string(ESP_HOSTNAME);
|
String hostname = Settings_ESP3D::read_string(ESP_HOSTNAME);
|
||||||
ESP3DOutput output(ESP_ALL_CLIENTS);
|
ESP3DOutput output(ESP_ALL_CLIENTS);
|
||||||
end();
|
end();
|
||||||
#if COMMUNICATION_PROTOCOL == MKS_SERIAL
|
|
||||||
MKSService::begin();
|
|
||||||
#endif //COMMUNICATION_PROTOCOL == MKS_SERIAL
|
|
||||||
#ifdef TIMESTAMP_FEATURE
|
#ifdef TIMESTAMP_FEATURE
|
||||||
if (WiFi.getMode() != WIFI_AP) {
|
if (WiFi.getMode() != WIFI_AP) {
|
||||||
if(!timeserver.begin()) {
|
if(!timeserver.begin()) {
|
||||||
@ -303,6 +300,9 @@ bool NetServices::begin()
|
|||||||
output.printMSG("Failed start camera streaming server");
|
output.printMSG("Failed start camera streaming server");
|
||||||
}
|
}
|
||||||
#endif //CAMERA_DEVICE
|
#endif //CAMERA_DEVICE
|
||||||
|
#if COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
|
MKSService::begin();
|
||||||
|
#endif //COMMUNICATION_PROTOCOL == MKS_SERIAL
|
||||||
if (!res) {
|
if (!res) {
|
||||||
end();
|
end();
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ SerialService serial_service;
|
|||||||
TaskHandle_t _hserialtask= nullptr;
|
TaskHandle_t _hserialtask= nullptr;
|
||||||
#endif //ARDUINO_ARCH_ESP32
|
#endif //ARDUINO_ARCH_ESP32
|
||||||
|
|
||||||
const long SupportedBaudList[] = {9600, 19200, 38400, 57600, 74880, 115200, 230400, 250000, 500000, 921600};
|
const long SupportedBaudList[] = {9600, 19200, 38400, 57600, 74880, 115200, 230400, 250000, 500000, 921600, 1958400};
|
||||||
|
|
||||||
#define TIMEOUT_SERIAL_FLUSH 1500
|
#define TIMEOUT_SERIAL_FLUSH 1500
|
||||||
//Constructor
|
//Constructor
|
||||||
|
@ -118,6 +118,7 @@ bool WiFiConfig::ConnectSTA2AP()
|
|||||||
uint8_t dot = 0;
|
uint8_t dot = 0;
|
||||||
wl_status_t status = WiFi.status();
|
wl_status_t status = WiFi.status();
|
||||||
ESP3DOutput output(ESP_ALL_CLIENTS);
|
ESP3DOutput output(ESP_ALL_CLIENTS);
|
||||||
|
log_esp3d("Connecting");
|
||||||
#if COMMUNICATION_PROTOCOL != MKS_SERIAL
|
#if COMMUNICATION_PROTOCOL != MKS_SERIAL
|
||||||
if (!Settings_ESP3D::isVerboseBoot()) {
|
if (!Settings_ESP3D::isVerboseBoot()) {
|
||||||
output.printMSG("Connecting");
|
output.printMSG("Connecting");
|
||||||
@ -142,6 +143,7 @@ bool WiFiConfig::ConnectSTA2AP()
|
|||||||
}
|
}
|
||||||
msg_out+=".";
|
msg_out+=".";
|
||||||
msg= msg_out;
|
msg= msg_out;
|
||||||
|
log_esp3d("...");
|
||||||
dot++;
|
dot++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -163,6 +165,7 @@ bool WiFiConfig::ConnectSTA2AP()
|
|||||||
*/
|
*/
|
||||||
bool WiFiConfig::StartSTA()
|
bool WiFiConfig::StartSTA()
|
||||||
{
|
{
|
||||||
|
log_esp3d("StartSTA");
|
||||||
#if defined (ARDUINO_ARCH_ESP32)
|
#if defined (ARDUINO_ARCH_ESP32)
|
||||||
esp_wifi_start();
|
esp_wifi_start();
|
||||||
#endif //ARDUINO_ARCH_ESP32
|
#endif //ARDUINO_ARCH_ESP32
|
||||||
@ -248,7 +251,7 @@ bool WiFiConfig::StartAP()
|
|||||||
IPAddress ip(IP);
|
IPAddress ip(IP);
|
||||||
IPAddress mask(DEFAULT_AP_MASK_VALUE);
|
IPAddress mask(DEFAULT_AP_MASK_VALUE);
|
||||||
//Set static IP
|
//Set static IP
|
||||||
|
log_esp3d("Use: %s / %s / %s", ip.toString().c_str(),ip.toString().c_str(),mask.toString().c_str());
|
||||||
if (!WiFi.softAPConfig(ip, ip, mask)) {
|
if (!WiFi.softAPConfig(ip, ip, mask)) {
|
||||||
output.printERROR("Set IP to AP failed");
|
output.printERROR("Set IP to AP failed");
|
||||||
} else {
|
} else {
|
||||||
@ -263,6 +266,7 @@ bool WiFiConfig::StartAP()
|
|||||||
stmp +=" is started not protected by passord";
|
stmp +=" is started not protected by passord";
|
||||||
}
|
}
|
||||||
output.printMSG(stmp.c_str());
|
output.printMSG(stmp.c_str());
|
||||||
|
log_esp3d("%s",stmp.c_str());
|
||||||
//must be done after starting AP not before
|
//must be done after starting AP not before
|
||||||
#if defined (ARDUINO_ARCH_ESP32)
|
#if defined (ARDUINO_ARCH_ESP32)
|
||||||
WiFi.setSleep(false);
|
WiFi.setSleep(false);
|
||||||
@ -271,6 +275,7 @@ bool WiFiConfig::StartAP()
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
output.printERROR("Starting AP failed");
|
output.printERROR("Starting AP failed");
|
||||||
|
log_esp3d("Starting AP failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -287,17 +292,21 @@ bool WiFiConfig::begin()
|
|||||||
{
|
{
|
||||||
bool res = false;
|
bool res = false;
|
||||||
end();
|
end();
|
||||||
|
log_esp3d("Starting Wifi Config");
|
||||||
if (Settings_ESP3D::isVerboseBoot()) {
|
if (Settings_ESP3D::isVerboseBoot()) {
|
||||||
ESP3DOutput output(ESP_ALL_CLIENTS);
|
ESP3DOutput output(ESP_ALL_CLIENTS);
|
||||||
output.printMSG("Starting WiFi");
|
output.printMSG("Starting WiFi");
|
||||||
}
|
}
|
||||||
int8_t wifiMode =Settings_ESP3D::read_byte(ESP_RADIO_MODE);
|
int8_t wifiMode =Settings_ESP3D::read_byte(ESP_RADIO_MODE);
|
||||||
if (wifiMode == ESP_WIFI_AP) {
|
if (wifiMode == ESP_WIFI_AP) {
|
||||||
|
log_esp3d("Starting AP mode");
|
||||||
res = StartAP();
|
res = StartAP();
|
||||||
} else if (wifiMode == ESP_WIFI_STA) {
|
} else if (wifiMode == ESP_WIFI_STA) {
|
||||||
|
log_esp3d("Starting STA");
|
||||||
res = StartSTA();
|
res = StartSTA();
|
||||||
//AP is backup mode
|
//AP is backup mode
|
||||||
if(!res) {
|
if(!res) {
|
||||||
|
log_esp3d("Starting AP mode in safe mode");
|
||||||
res = StartAP();
|
res = StartAP();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user