From 92d63378768f8df426141af3305da7287cacd0a2 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 25 Sep 2019 21:49:12 +0200 Subject: [PATCH] tx_mode changes for EMS+ --- src/MyESP.cpp | 2 +- src/ems-esp.cpp | 6 +++--- src/ems.h | 6 +++++- src/emsuart.cpp | 10 +++++----- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/MyESP.cpp b/src/MyESP.cpp index 4ac8cb929..ad5b9958c 100644 --- a/src/MyESP.cpp +++ b/src/MyESP.cpp @@ -369,7 +369,7 @@ void MyESP::mqttSubscribe(const char * topic) { //char topic_s[MQTT_MAX_TOPIC_SIZE]; //strlcpy(topic_s, _mqttTopic(topic), sizeof(topic_s)); (void)mqttClient.subscribe(topic_s, _mqtt_qos); - myDebug_P(PSTR("[MQTT] Subscribing to %s"), topic_s); + // myDebug_P(PSTR("[MQTT] Subscribing to %s"), topic_s); // add to mqtt log _addMQTTLog(topic_s, "", 2); // type of 2 means Subscribe. Has an empty payload for now diff --git a/src/ems-esp.cpp b/src/ems-esp.cpp index a167e92b2..0618b626c 100644 --- a/src/ems-esp.cpp +++ b/src/ems-esp.cpp @@ -1211,7 +1211,7 @@ bool LoadSaveCallback(MYESP_FSACTION action, JsonObject settings) { EMSESP_Settings.listen_mode = settings["listen_mode"]; ems_setTxDisabled(EMSESP_Settings.listen_mode); - EMSESP_Settings.tx_mode = settings["tx_mode"] | 1; // default to 1 (generic) + EMSESP_Settings.tx_mode = settings["tx_mode"] | EMS_TXMODE_DEFAULT; // default to 1 (generic) ems_setTxMode(EMSESP_Settings.tx_mode); return true; @@ -1336,7 +1336,7 @@ bool SetListCallback(MYESP_FSACTION action, uint8_t wc, const char * setting, co // tx_mode if ((strcmp(setting, "tx_mode") == 0) && (wc == 2)) { uint8_t mode = atoi(value); - if ((mode >= 1) && (mode <= 3)) { + if ((mode >= 1) && (mode <= 3)) { // see ems.h for definitions EMSESP_Settings.tx_mode = mode; ems_setTxMode(mode); ok = true; @@ -1979,7 +1979,7 @@ void initEMSESP() { EMSESP_Settings.dallas_sensors = 0; EMSESP_Settings.led_gpio = EMSESP_LED_GPIO; EMSESP_Settings.dallas_gpio = EMSESP_DALLAS_GPIO; - EMSESP_Settings.tx_mode = 1; // default tx mode + EMSESP_Settings.tx_mode = EMS_TXMODE_DEFAULT; // default tx mode // shower settings EMSESP_Shower.timerStart = 0; diff --git a/src/ems.h b/src/ems.h index 4ab34f48e..a8ccf6d91 100644 --- a/src/ems.h +++ b/src/ems.h @@ -72,6 +72,11 @@ #endif // clang-format on +// EMS tx_mode types +#define EMS_TXMODE_DEFAULT 1 // Default (was previously known as tx_mode 2) +#define EMS_TXMODE_EMSPLUS 2 // EMS+ +#define EMS_TXMODE_HT3 3 // Junkers HT3 + #define EMS_ID_NONE 0x00 // used as a dest in broadcast messages and empty device IDs // Fixed EMS IDs @@ -98,7 +103,6 @@ #define EMS_VALUE_USHORT_NOTSET 0x8000 // for 2-byte unsigned shorts #define EMS_VALUE_LONG_NOTSET 0xFFFFFF // for 3-byte longs - // thermostat specific #define EMS_THERMOSTAT_MAXHC 4 // max number of heating circuits #define EMS_THERMOSTAT_DEFAULTHC 1 // default heating circuit is 1 diff --git a/src/emsuart.cpp b/src/emsuart.cpp index 7ecfe6351..a22c190e3 100644 --- a/src/emsuart.cpp +++ b/src/emsuart.cpp @@ -191,9 +191,9 @@ void ICACHE_FLASH_ATTR emsuart_tx_brk() { GPIO_H(TX_MARK_MASK); USC0(EMSUART_UART) |= (tmp); // set bit - if (EMS_Sys_Status.emsTxMode <= 1) { // classic mode and ems+ (0, 1) + if (EMS_Sys_Status.emsTxMode == EMS_TXMODE_EMSPLUS) { // EMS+ mode delayMicroseconds(EMSUART_TX_BRK_WAIT); - } else if (EMS_Sys_Status.emsTxMode == 3) { // junkers mode + } else if (EMS_Sys_Status.emsTxMode == EMS_TXMODE_HT3) { // junkers mode delayMicroseconds(EMSUART_TX_WAIT_BRK - EMSUART_TX_LAG); // 1144 (11 Bits) } @@ -214,14 +214,14 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) { if (len) { LA_PULSE(50); - if (EMS_Sys_Status.emsTxMode == 2) { // With extra tx delay for EMS+ + if (EMS_Sys_Status.emsTxMode == EMS_TXMODE_EMSPLUS) { // With extra tx delay for EMS+ for (uint8_t i = 0; i < len; i++) { TX_PULSE(EMSUART_BIT_TIME / 4); USF(EMSUART_UART) = buf[i]; delayMicroseconds(EMSUART_TX_BRK_WAIT); // https://github.com/proddy/EMS-ESP/issues/23# } emsuart_tx_brk(); // send - } else if (EMS_Sys_Status.emsTxMode == 3) { // Junkers logic by @philrich + } else if (EMS_Sys_Status.emsTxMode == EMS_TXMODE_HT3) { // Junkers logic by @philrich for (uint8_t i = 0; i < len; i++) { TX_PULSE(EMSUART_BIT_TIME / 4); USF(EMSUART_UART) = buf[i]; @@ -234,7 +234,7 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) { delayMicroseconds(EMSUART_TX_WAIT_BYTE - EMSUART_TX_LAG + EMSUART_TX_WAIT_GAP); } emsuart_tx_brk(); // send - } else if (EMS_Sys_Status.emsTxMode == 1) { + } else if (EMS_Sys_Status.emsTxMode == EMS_TXMODE_DEFAULT) { /* * based on code from https://github.com/proddy/EMS-ESP/issues/103 by @susisstrolch * we emit the whole telegram, with Rx interrupt disabled, collecting busmaster response in FIFO.