From 4cb71784e293a58024215c463e0bfb7bb7d0966c Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 23 Sep 2024 02:19:47 +0200 Subject: [PATCH] Test --- components/tc_bus/__init__.py | 2 ++ components/tc_bus/protocol.cpp | 26 ++++++++++++++++++++++++++ components/tc_bus/protocol.h | 4 +++- components/tc_bus/tc_bus.cpp | 2 +- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/components/tc_bus/__init__.py b/components/tc_bus/__init__.py index 6ecd868c..bb9e92b0 100644 --- a/components/tc_bus/__init__.py +++ b/components/tc_bus/__init__.py @@ -50,6 +50,8 @@ "found_device": CommandType.COMMAND_TYPE_FOUND_DEVICE, "found_device_subsystem": CommandType.COMMAND_TYPE_FOUND_DEVICE_SUBSYSTEM, "programming_mode": CommandType.COMMAND_TYPE_PROGRAMMING_MODE, + "read_eeprom_block": CommandType.COMMAND_TYPE_READ_EEPROM_BLOCK, + "select_eeprom_page": CommandType.COMMAND_TYPE_SELECT_EEPROM_PAGE, } CONF_TC_ID = "tc_bus" diff --git a/components/tc_bus/protocol.cpp b/components/tc_bus/protocol.cpp index 3e75fa4c..ac12175e 100644 --- a/components/tc_bus/protocol.cpp +++ b/components/tc_bus/protocol.cpp @@ -174,6 +174,8 @@ namespace esphome // request type and version // request versions of subdevices // Not implemented + + // 5 12345 C0 break; default: @@ -186,6 +188,18 @@ namespace esphome data.type = COMMAND_TYPE_CONTROL_FUNCTION; data.address = (command & 0xFF); // Function number break; + + case 8: + // 81 0 00000 + // select eeprom page of serial number + + if(command & 0x800000) // 1 + { + data.type = COMMAND_TYPE_SELECT_EEPROM_PAGE; + // data.address = (command & 0xF); // page todo + data.serial_number = command & 0xFFFFF; + } + break; } } else @@ -251,6 +265,16 @@ namespace esphome break; } } + else if (first == 8) + { + switch(second) + { + case 4: + data.type = COMMAND_TYPE_READ_EEPROM_BLOCK; + data.address = (command & 0xFF); + break; + } + } } return data; @@ -283,6 +307,8 @@ namespace esphome case COMMAND_TYPE_FOUND_DEVICE: return "FOUND_DEVICE"; case COMMAND_TYPE_FOUND_DEVICE_SUBSYSTEM: return "FOUND_DEVICE_SUBSYSTEM"; case COMMAND_TYPE_PROGRAMMING_MODE: return "PROGRAMMING_MODE"; + case COMMAND_TYPE_READ_EEPROM_BLOCK: return "READ_EEPROM_BLOCK"; + case COMMAND_TYPE_SELECT_EEPROM_PAGE: return "SELECT_EEPROM_PAGE"; default: return "UNKNOWN"; } } diff --git a/components/tc_bus/protocol.h b/components/tc_bus/protocol.h index 5bc2d181..0ffb44c0 100644 --- a/components/tc_bus/protocol.h +++ b/components/tc_bus/protocol.h @@ -29,7 +29,9 @@ namespace esphome COMMAND_TYPE_SEARCH_DEVICES, COMMAND_TYPE_FOUND_DEVICE, COMMAND_TYPE_FOUND_DEVICE_SUBSYSTEM, - COMMAND_TYPE_PROGRAMMING_MODE + COMMAND_TYPE_PROGRAMMING_MODE, + COMMAND_TYPE_READ_EEPROM_BLOCK, + COMMAND_TYPE_SELECT_EEPROM_PAGE }; struct CommandData { diff --git a/components/tc_bus/tc_bus.cpp b/components/tc_bus/tc_bus.cpp index 4531fe31..6d31ca49 100644 --- a/components/tc_bus/tc_bus.cpp +++ b/components/tc_bus/tc_bus.cpp @@ -569,7 +569,7 @@ namespace esphome delay(50); ESP_LOGD(TAG, "Select Serial Number: %i", serial_number); - uint32_t select_cmd = 0x81000000; + uint32_t select_cmd = 0x81000000; // Select Page 0 of SN select_cmd |= ((serial_number & 0xFFFFF) << 0); // C30BA send_command(select_cmd); // select serial number delay(50);