From 2f398df8aa4e65b978a6a6432928e949c61b0a8e Mon Sep 17 00:00:00 2001 From: Andrey Klimov Date: Mon, 7 Jun 2021 15:44:39 +0300 Subject: [PATCH] UART interceptor now is compatible with Whireshark --- build-flags/build_flags_esp32-wifi | 11 ++-- lighthub/main.h | 2 + lighthub/modules/in_ccs811_hdc1080.h | 1 + lighthub/modules/out_uartbridge.cpp | 81 ++++++++++++++++++++++++---- lighthub/modules/out_uartbridge.h | 2 +- lighthub/options.h | 23 ++++---- 6 files changed, 91 insertions(+), 29 deletions(-) diff --git a/build-flags/build_flags_esp32-wifi b/build-flags/build_flags_esp32-wifi index a3cdb86..bc13197 100644 --- a/build-flags/build_flags_esp32-wifi +++ b/build-flags/build_flags_esp32-wifi @@ -16,10 +16,11 @@ #-DPID_DISABLE #Define pins for Serial1. Default - 9/10 is utilized by ESP flash -#-DRX1=15 -#-DTX1=2 +#-DMODBUS_UART_RX_PIN=15 +#-DMODBUS_UART_TX_PIN=2 +#-DmodbusSerial=Serial1 --DMODBUS_UART_RX_PIN=15 --DMODBUS_UART_TX_PIN=2 --DmodbusSerial=Serial1 +# Use default pins +-DMODBUS_UART_RX_PIN=-1 +-DMODBUS_UART_TX_PIN=-1 diff --git a/lighthub/main.h b/lighthub/main.h index 7eb32fe..13a3778 100644 --- a/lighthub/main.h +++ b/lighthub/main.h @@ -211,6 +211,8 @@ enum lan_status { DO_NOTHING = -15 }; +extern lan_status lanStatus; + typedef union { uint32_t UID_Long[5]; uint8_t UID_Byte[20]; diff --git a/lighthub/modules/in_ccs811_hdc1080.h b/lighthub/modules/in_ccs811_hdc1080.h index aece938..40b70b2 100644 --- a/lighthub/modules/in_ccs811_hdc1080.h +++ b/lighthub/modules/in_ccs811_hdc1080.h @@ -31,6 +31,7 @@ #if defined (ARDUINO_ARCH_ESP32) #undef WAK_PIN +#undef SCL_RESET //#ifndef WAK_PIN //#define WAK_PIN 17 //#endif diff --git a/lighthub/modules/out_uartbridge.cpp b/lighthub/modules/out_uartbridge.cpp index a5be807..a6e08a8 100644 --- a/lighthub/modules/out_uartbridge.cpp +++ b/lighthub/modules/out_uartbridge.cpp @@ -11,6 +11,22 @@ #include "main.h" #include +#include "main.h" + +#if defined (ESP32) +#include +AsyncUDP udp; +AsyncUDPMessage udpMessageA; +AsyncUDPMessage udpMessageB; + +IPAddress targetIP; +uint16_t targetPort=5555; +#endif + +uint32_t timerA = 0; +uint32_t timerB = 0; + + extern aJsonObject *modbusObj; extern ModbusMaster node; extern short modbusBusy; @@ -87,6 +103,14 @@ bool out_UARTbridge::getConfig() MODULE_UATRBRIDGE_UARTA.begin(store->baud, (store->serialParam)); MODULE_UATRBRIDGE_UARTB.begin(store->baud, (store->serialParam)); #endif + + aJsonObject * debugIPObj=aJson.getObjectItem(item->itemArg, "ip"); + aJsonObject * debugPortObj=aJson.getObjectItem(item->itemArg, "port"); + + if (debugIPObj) + inet_aton(debugIPObj->valuestring, targetIP); + + if (debugPortObj) targetPort = debugPortObj->valueint; return true; } @@ -94,7 +118,8 @@ bool out_UARTbridge::getConfig() int out_UARTbridge::Setup() { -abstractOut::Setup(); +abstractOut::Setup(); + if (!store) store= (ubPersistent *)item->setPersistent(new ubPersistent); if (!store) { errorSerial<=HAVE_IP_ADDRESS) && udpMessageA.length() && (isTimeOver(timerA,millis(),PDELAY) || timerB)) +{ + udp.sendTo(udpMessageA,targetIP,targetPort); + udpMessageA.flush(); + debugSerial<=HAVE_IP_ADDRESS) && udpMessageB.length() && (isTimeOver(timerB,millis(),PDELAY) || timerA)) +{ + udp.sendTo(udpMessageB,targetIP,targetPort); + udpMessageB.flush(); + debugSerial<")<<((chB<16)?"0":"")<<_HEX(chB); + udpMessageB.write(chB); + } + } +/* while (MODULE_UATRBRIDGE_UARTB.available()) { chB=MODULE_UATRBRIDGE_UARTB.read(); MODULE_UATRBRIDGE_UARTA.write(chB); - debugSerial<")<<_HEX(chB); + debugSerial<")<<((chB<10)?"0":"")<<_HEX(chB); + udpMessageB.write(chB); + timerB=millisNZ(); } +*/ + + return 1;//store->pollingInterval; }; diff --git a/lighthub/modules/out_uartbridge.h b/lighthub/modules/out_uartbridge.h index a59dcf5..4a48ebf 100644 --- a/lighthub/modules/out_uartbridge.h +++ b/lighthub/modules/out_uartbridge.h @@ -50,7 +50,7 @@ public: //aJsonObject * parameters; }; - +#define PDELAY 50 class out_UARTbridge : public abstractOut { public: diff --git a/lighthub/options.h b/lighthub/options.h index 929f921..75a0c70 100644 --- a/lighthub/options.h +++ b/lighthub/options.h @@ -1,6 +1,14 @@ // Configuration of drivers enabled #define SYSLOG_LOCAL_SOCKET 514 +#ifndef MODBUS_UART_RX_PIN +#define MODBUS_RX_PIN -1 +#endif + +#ifndef MODBUS_UART_TX_PIN +#define MODBUS_TX_PIN -1 +#endif + #ifndef FASTLED #define ADAFRUIT_LED #endif @@ -194,7 +202,6 @@ #if defined(ARDUINO_ARCH_ESP8266) #undef _dmxin -//#undef _modbus #ifndef DMX_DISABLE #define _espdmx @@ -212,13 +219,10 @@ #if defined(ARDUINO_ARCH_ESP32) #undef _dmxin -//#undef _modbus - #ifndef DMX_DISABLE #define _espdmx #endif -//#undef _dmxout -//#undef modbusSerial + #ifndef modbusSerial #define modbusSerial Serial2 #endif @@ -227,15 +231,6 @@ #define AC_Serial Serial2 #endif - -#ifndef MODBUS_UART_RX_PIN -#define MODBUS_RX_PIN -1 -#endif - -#ifndef MODBUS_UART_TX_PIN -#define MODBUS_TX_PIN -1 -#endif - #endif #ifndef _dmxout