Shifted MQTT telnet setup into a separate module.
Fixed addCRC script for > V3 python
This commit is contained in:
parent
77dada9d6b
commit
9fbb6e8dfc
23
add_CRC.py
23
add_CRC.py
|
@ -1,7 +1,8 @@
|
|||
Import("env")
|
||||
import sys
|
||||
|
||||
# access to global build environment
|
||||
print env
|
||||
print (env)
|
||||
|
||||
CRCTable = [
|
||||
0X0000, 0XC0C1, 0XC181, 0X0140, 0XC301, 0X03C0, 0X0280, 0XC241,
|
||||
|
@ -41,18 +42,20 @@ CRCTable = [
|
|||
|
||||
def appendCRC(source, target, env) :
|
||||
|
||||
print "Adding CRC to %s" % str(target[0])
|
||||
print ("Adding CRC to %s" % str(target[0]))
|
||||
|
||||
# read entire firmware binary file into a string
|
||||
f = open(str(target[0]), "rb")
|
||||
bindata = f.read()
|
||||
binfile = f.read()
|
||||
f.close()
|
||||
|
||||
# create CRC for the firmware binary input file
|
||||
CRCword = 0xffff
|
||||
count = 0
|
||||
for val in bindata :
|
||||
byte = ord(val)
|
||||
for byte in binfile :
|
||||
if sys.version_info[0] < 3 :
|
||||
byte = ord(byte)
|
||||
|
||||
if(count == 0) :
|
||||
byte = 0xff
|
||||
temp = (byte ^ CRCword) & 0xff # mask to keep in bouds of lookup table
|
||||
|
@ -60,12 +63,16 @@ def appendCRC(source, target, env) :
|
|||
CRCword = CRCword ^ CRCTable[temp]
|
||||
count = count + 1
|
||||
|
||||
print "CRC result = %X from %d bytes" % (CRCword, count)
|
||||
print ("CRC result = %X from %d bytes" % (CRCword, count))
|
||||
|
||||
# append CRC to the firmware binary file
|
||||
o = open(str(target[0]), "a+b")
|
||||
o.write(chr(CRCword & 0xff))
|
||||
o.write(chr((CRCword >> 8) & 0xff))
|
||||
if sys.version_info[0] < 3 :
|
||||
o.write(chr(CRCword & 0xff))
|
||||
o.write(chr((CRCword >> 8) & 0xff))
|
||||
else :
|
||||
o.write(CRCword.to_bytes(2, byteorder='little'))
|
||||
|
||||
o.close()
|
||||
|
||||
|
||||
|
|
|
@ -115,6 +115,7 @@
|
|||
#include <esp_spiffs.h>
|
||||
#include <SPIFFS.h>
|
||||
#include <nvs.h>
|
||||
#include "Utility/MQTTsetup.h"
|
||||
|
||||
// SSID & password now stored in NV storage - these are still the default values.
|
||||
//#define AP_SSID "Afterburner"
|
||||
|
@ -183,7 +184,9 @@ TelnetSpy DebugPort;
|
|||
CGPIOin GPIOin;
|
||||
CGPIOout GPIOout;
|
||||
CGPIOalg GPIOalg;
|
||||
sMQTTparams MQTTsetup;
|
||||
|
||||
CMQTTsetup MQTTmenu;
|
||||
|
||||
|
||||
|
||||
sRxLine PCline;
|
||||
|
@ -1215,12 +1218,9 @@ void checkDebugCommands()
|
|||
bTestBTModule = Bluetooth.test(rxVal);
|
||||
return;
|
||||
}
|
||||
if(bSetupMQTT) {
|
||||
bSetupMQTT = HandleMQTTsetup(rxVal);
|
||||
if(!bSetupMQTT) { // left MQTT setup menu
|
||||
if(MQTTmenu.Handle(rxVal)) {
|
||||
if(rxVal == 0)
|
||||
showMainmenu();
|
||||
mqttInit();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1382,9 +1382,7 @@ void checkDebugCommands()
|
|||
PCline.clear();
|
||||
}
|
||||
else if(rxVal == 'm') {
|
||||
MQTTsetup = NVstore.getMQTTinfo();
|
||||
bSetupMQTT = true;
|
||||
showMQTTmenu();
|
||||
MQTTmenu.setActive();
|
||||
}
|
||||
else if(rxVal == 'o') {
|
||||
bReportOEMresync = !bReportOEMresync;
|
||||
|
@ -1784,208 +1782,6 @@ void setAPpassword(const char* name)
|
|||
ESP.restart();
|
||||
}
|
||||
|
||||
const char* MQTTsetupmodes[] = {
|
||||
"Enter MQTT broker's IP address",
|
||||
"Enter MQTT broker's port",
|
||||
"Enter MQTT broker's username",
|
||||
"Enter MQTT broker's password",
|
||||
"Enter root topic name",
|
||||
"Enter QoS level",
|
||||
"Enable? (Y)es / (N)o"
|
||||
};
|
||||
|
||||
bool HandleMQTTsetup(char rxVal)
|
||||
{
|
||||
static int mode = 0;
|
||||
static int idx = 0;
|
||||
static char lclbuffer[128];
|
||||
switch(mode) {
|
||||
case 0:
|
||||
if(rxVal == 0x1b) {
|
||||
MQTTsetup = NVstore.getMQTTinfo();
|
||||
return false;
|
||||
}
|
||||
// if(rxVal == '\r' || rxVal == '\n') {
|
||||
if(rxVal == '\n') {
|
||||
NVstore.setMQTTinfo(MQTTsetup);
|
||||
NVstore.save();
|
||||
return false;
|
||||
}
|
||||
if(rxVal >= '1' && rxVal <= '7') {
|
||||
mode = rxVal - '0';
|
||||
idx = 0;
|
||||
DebugPort.print("\014");
|
||||
DebugPort.print(MQTTsetupmodes[mode-1]);
|
||||
switch(mode) {
|
||||
case 1: DebugPort.printf(" (%s)", MQTTsetup.host); break;
|
||||
case 2: DebugPort.printf(" (%d)", MQTTsetup.port); break;
|
||||
case 3: DebugPort.printf(" (%s)", MQTTsetup.username); break;
|
||||
case 4: DebugPort.printf(" (%s)", MQTTsetup.password); break;
|
||||
case 5: DebugPort.printf(" (%s)", MQTTsetup.topic); break;
|
||||
case 6: DebugPort.printf(" (%d)", MQTTsetup.qos); break;
|
||||
case 7: DebugPort.printf(" (%s)", MQTTsetup.enabled ? "YES" : "NO"); break;
|
||||
}
|
||||
DebugPort.print("... ");
|
||||
}
|
||||
else {
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
case 1: // enter MQTT broker IP
|
||||
if(rxVal < ' ') {
|
||||
if(idx == 0) strcpy(lclbuffer, MQTTsetup.host);
|
||||
if(rxVal == '\n') {
|
||||
strncpy(MQTTsetup.host, lclbuffer, 127);
|
||||
MQTTsetup.host[127] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
if(rxVal == 0x1b) {
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if(idx == 0) memset(lclbuffer, 0, sizeof(lclbuffer));
|
||||
DebugPort.print(rxVal);
|
||||
lclbuffer[idx++] = rxVal;
|
||||
if(idx == 127) {
|
||||
strncpy(MQTTsetup.host, lclbuffer, 127);
|
||||
MQTTsetup.host[127] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 2: // enter MQTT broker port
|
||||
if(rxVal < ' ') {
|
||||
if(idx == 0) sprintf(lclbuffer, "%d", MQTTsetup.port);
|
||||
if(rxVal == '\n') {
|
||||
int val = atoi(lclbuffer);
|
||||
MQTTsetup.port = val;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
if(rxVal == 0x1b) {
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
DebugPort.print(rxVal);
|
||||
if(isdigit(rxVal)) {
|
||||
if(idx == 0) memset(lclbuffer, 0, sizeof(lclbuffer));
|
||||
lclbuffer[idx++] = rxVal;
|
||||
if(idx == 5) {
|
||||
int val = atoi(lclbuffer);
|
||||
MQTTsetup.port = val;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 3: // enter MQTT broker username
|
||||
if(rxVal < ' ') {
|
||||
if(idx == 0) strcpy(lclbuffer, MQTTsetup.username);
|
||||
if(rxVal == '\n') {
|
||||
strncpy(MQTTsetup.username, lclbuffer, 31);
|
||||
MQTTsetup.username[31] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
if(rxVal == 0x1b) {
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if(idx == 0) memset(lclbuffer, 0, sizeof(lclbuffer));
|
||||
DebugPort.print(rxVal);
|
||||
lclbuffer[idx++] = rxVal;
|
||||
if(idx == 31) {
|
||||
strncpy(MQTTsetup.username, lclbuffer, 31);
|
||||
MQTTsetup.username[31] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 4: // enter MQTT broker username
|
||||
if(rxVal < ' ') {
|
||||
if(idx == 0) strcpy(lclbuffer, MQTTsetup.password);
|
||||
if(rxVal == '\n') {
|
||||
strncpy(MQTTsetup.password, lclbuffer, 31);
|
||||
MQTTsetup.password[31] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
if(rxVal == 0x1b) {
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if(idx == 0) memset(lclbuffer, 0, sizeof(lclbuffer));
|
||||
DebugPort.print(rxVal);
|
||||
lclbuffer[idx++] = rxVal;
|
||||
if(idx == 31) {
|
||||
strncpy(MQTTsetup.password, lclbuffer, 31);
|
||||
MQTTsetup.password[31] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 5: // enter root topic name
|
||||
if(rxVal < ' ') {
|
||||
if(idx == 0) strcpy(lclbuffer, MQTTsetup.topic);
|
||||
if(rxVal == '\n') {
|
||||
strncpy(MQTTsetup.topic, lclbuffer, 31);
|
||||
MQTTsetup.topic[31] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
if(rxVal == 0x1b) {
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if(idx == 0) memset(lclbuffer, 0, sizeof(lclbuffer));
|
||||
DebugPort.print(rxVal);
|
||||
lclbuffer[idx++] = rxVal;
|
||||
if(idx == 31) {
|
||||
strncpy(MQTTsetup.topic, lclbuffer, 31);
|
||||
MQTTsetup.topic[31] = 0;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if(rxVal >= '0' && rxVal <= '2') {
|
||||
MQTTsetup.qos = rxVal - '0';
|
||||
}
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
case 7:
|
||||
if(tolower(rxVal) == 'y')
|
||||
MQTTsetup.enabled = true;
|
||||
if(tolower(rxVal) == 'n')
|
||||
MQTTsetup.enabled = false;
|
||||
mode = 0;
|
||||
showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void showMainmenu()
|
||||
{
|
||||
|
@ -2012,19 +1808,3 @@ void showMainmenu()
|
|||
DebugPort.println("");
|
||||
}
|
||||
|
||||
void showMQTTmenu()
|
||||
{
|
||||
DebugPort.print("\014");
|
||||
DebugPort.println("MQTT broker configuration");
|
||||
DebugPort.println("");
|
||||
DebugPort.printf(" <1> - set IP address, currently \"%s\"\r\n", MQTTsetup.host);
|
||||
DebugPort.printf(" <2> - set port, currently %d\r\n", MQTTsetup.port);
|
||||
DebugPort.printf(" <3> - set username, currently \"%s\"\r\n", MQTTsetup.username);
|
||||
DebugPort.printf(" <4> - set password, currently \"%s\"\r\n", MQTTsetup.password);
|
||||
DebugPort.printf(" <5> - set root topic, currently \"%s\"\r\n", MQTTsetup.topic);
|
||||
DebugPort.printf(" <6> - set QoS, currently %d\r\n", MQTTsetup.qos);
|
||||
DebugPort.printf(" <7> - set enabled, currently %s\r\n", MQTTsetup.enabled ? "ON" : "OFF");
|
||||
DebugPort.printf(" <ENTER> - save and exit\r\n");
|
||||
DebugPort.printf(" <ESC> - abort\r\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -95,6 +95,9 @@ CMQTTScreen::show()
|
|||
yPos += _display.textHeight() + 2;
|
||||
sprintf(msg, "%s/%s", NVstore.getMQTTinfo().username, NVstore.getMQTTinfo().password);
|
||||
_printMenuText(border, yPos, msg);
|
||||
yPos += _display.textHeight() + 2;
|
||||
sprintf(msg, "%s", NVstore.getMQTTinfo().topic);
|
||||
_printMenuText(border, yPos, msg);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,199 @@
|
|||
#include "NVStorage.h"
|
||||
#include "DebugPort.h"
|
||||
#include "MQTTsetup.h"
|
||||
|
||||
#ifdef newmqttmenu
|
||||
|
||||
/*const char* MQTTsetupmodes[] = {
|
||||
"Enter MQTT broker's IP address",
|
||||
"Enter MQTT broker's port",
|
||||
"Enter MQTT broker's username",
|
||||
"Enter MQTT broker's password",
|
||||
"Enter root topic name",
|
||||
"Enter QoS level",
|
||||
"Enable? (Y)es / (N)o"
|
||||
};*/
|
||||
|
||||
CMQTTsetup::CMQTTsetup()
|
||||
{
|
||||
_active = false;
|
||||
}
|
||||
|
||||
void
|
||||
CMQTTsetup::setActive()
|
||||
{
|
||||
_active = true;
|
||||
showMQTTmenu(true);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CMQTTsetup::showMQTTmenu(bool init)
|
||||
{
|
||||
if(init)
|
||||
_MQTTsetup = NVstore.getMQTTinfo();
|
||||
|
||||
DebugPort.print("\014");
|
||||
DebugPort.println("MQTT broker configuration");
|
||||
DebugPort.println("");
|
||||
DebugPort.printf(" <1> - set IP address, currently \"%s\"\r\n", _MQTTsetup.host);
|
||||
DebugPort.printf(" <2> - set port, currently %d\r\n", _MQTTsetup.port);
|
||||
DebugPort.printf(" <3> - set username, currently \"%s\"\r\n", _MQTTsetup.username);
|
||||
DebugPort.printf(" <4> - set password, currently \"%s\"\r\n", _MQTTsetup.password);
|
||||
DebugPort.printf(" <5> - set root topic, currently \"%s\"\r\n", _MQTTsetup.topic);
|
||||
DebugPort.printf(" <6> - set QoS, currently %d\r\n", _MQTTsetup.qos);
|
||||
DebugPort.printf(" <7> - set enabled, currently %s\r\n", _MQTTsetup.enabled ? "ON" : "OFF");
|
||||
DebugPort.printf(" <ENTER> - save and exit\r\n");
|
||||
DebugPort.printf(" <ESC> - abort\r\n");
|
||||
}
|
||||
|
||||
bool
|
||||
CMQTTsetup::Handle(char& rxVal)
|
||||
{
|
||||
if(_active) {
|
||||
_active = HandleMQTTsetup(rxVal);
|
||||
if(!_active)
|
||||
rxVal = 0;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
CMQTTsetup::HandleMQTTsetup(char rxVal)
|
||||
{
|
||||
bool bJumptoMQTTmenuRoot = false;
|
||||
switch(_mode) {
|
||||
case 0:
|
||||
if(rxVal == 0x1b) {
|
||||
_MQTTsetup = NVstore.getMQTTinfo();
|
||||
return false;
|
||||
}
|
||||
if(rxVal == '\n') {
|
||||
NVstore.setMQTTinfo(_MQTTsetup);
|
||||
NVstore.save();
|
||||
return false;
|
||||
}
|
||||
if(rxVal >= '1' && rxVal <= '7') {
|
||||
_mode = rxVal - '0';
|
||||
_idx = 0;
|
||||
DebugPort.print("\014");
|
||||
switch(_mode) {
|
||||
case 1: DebugPort.printf("Enter MQTT broker's IP address (%s)", _MQTTsetup.host); break;
|
||||
case 2: DebugPort.printf("Enter MQTT broker's port (%d)", _MQTTsetup.port); break;
|
||||
case 3: DebugPort.printf("Enter MQTT broker's username (%s)", _MQTTsetup.username); break;
|
||||
case 4: DebugPort.printf("Enter MQTT broker's password (%s)", _MQTTsetup.password); break;
|
||||
case 5: DebugPort.printf("Enter root topic name (%s)", _MQTTsetup.topic); break;
|
||||
case 6: DebugPort.printf("Enter QoS level (%d)", _MQTTsetup.qos); break;
|
||||
case 7: DebugPort.printf("Enable MQTT? (Y)es / (N)o (%s)", _MQTTsetup.enabled ? "YES" : "NO"); break;
|
||||
}
|
||||
DebugPort.print("... ");
|
||||
}
|
||||
else {
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
case 1: // enter MQTT broker IP
|
||||
if(getMQTTstring(rxVal, 31, _MQTTsetup.host)) {
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
break;
|
||||
case 2: // enter MQTT broker port
|
||||
if(rxVal < ' ') {
|
||||
if(_idx == 0) sprintf(_buffer, "%d", _MQTTsetup.port);
|
||||
if(rxVal == '\n') {
|
||||
int val = atoi(_buffer);
|
||||
_MQTTsetup.port = val;
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
if(rxVal == 0x1b) {
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
DebugPort.print(rxVal);
|
||||
if(isdigit(rxVal)) {
|
||||
if(_idx == 0) memset(_buffer, 0, sizeof(_buffer));
|
||||
_buffer[_idx++] = rxVal;
|
||||
if(_idx == 5) {
|
||||
int val = atoi(_buffer);
|
||||
_MQTTsetup.port = val;
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
break;
|
||||
case 3: // enter MQTT broker username
|
||||
if(getMQTTstring(rxVal, 31, _MQTTsetup.username)) {
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
break;
|
||||
case 4: // enter MQTT broker username
|
||||
if(getMQTTstring(rxVal, 31, _MQTTsetup.password)) {
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
break;
|
||||
case 5: // enter root topic name
|
||||
if(getMQTTstring(rxVal, 31, _MQTTsetup.topic)) {
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if(rxVal >= '0' && rxVal <= '2') {
|
||||
_MQTTsetup.qos = rxVal - '0';
|
||||
}
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
break;
|
||||
case 7:
|
||||
if(tolower(rxVal) == 'y')
|
||||
_MQTTsetup.enabled = true;
|
||||
if(tolower(rxVal) == 'n')
|
||||
_MQTTsetup.enabled = false;
|
||||
bJumptoMQTTmenuRoot = true;
|
||||
break;
|
||||
}
|
||||
if(bJumptoMQTTmenuRoot) {
|
||||
_mode = 0;
|
||||
showMQTTmenu();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
CMQTTsetup::getMQTTstring(char rxVal, int maxidx, char* pTargetString)
|
||||
{
|
||||
if(rxVal < ' ') {
|
||||
if(_idx == 0) strcpy(_buffer, pTargetString);
|
||||
if(rxVal == '\r')
|
||||
return false;
|
||||
if(rxVal == '\n') {
|
||||
strncpy(pTargetString, _buffer, maxidx);
|
||||
pTargetString[maxidx] = 0;
|
||||
// _mode = 0;
|
||||
// showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
if(rxVal == 0x1b) {
|
||||
// _mode = 0;
|
||||
// showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(_idx == 0) memset(_buffer, 0, sizeof(_buffer));
|
||||
DebugPort.print(rxVal);
|
||||
_buffer[_idx++] = rxVal;
|
||||
if(_idx == maxidx) {
|
||||
strncpy(pTargetString, _buffer, maxidx);
|
||||
pTargetString[maxidx] = 0;
|
||||
// _mode = 0;
|
||||
// showMQTTmenu();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
|
@ -0,0 +1,17 @@
|
|||
#include "NVStorage.h"
|
||||
|
||||
|
||||
class CMQTTsetup {
|
||||
char _buffer[128];
|
||||
int _idx;
|
||||
int _mode;
|
||||
bool _active;
|
||||
sMQTTparams _MQTTsetup;
|
||||
bool HandleMQTTsetup(char rxVal);
|
||||
void showMQTTmenu(bool init = false);
|
||||
bool getMQTTstring(char rxVal, int maxidx, char* pTargetString);
|
||||
public:
|
||||
CMQTTsetup();
|
||||
bool Handle(char& rxVal);
|
||||
void setActive();
|
||||
};
|
Loading…
Reference in New Issue