diff --git a/arduino/libretuya/core/ChipType.h b/arduino/libretuya/core/ChipType.h index 29f3e4d..b3e9073 100644 --- a/arduino/libretuya/core/ChipType.h +++ b/arduino/libretuya/core/ChipType.h @@ -1,23 +1,27 @@ /* Copyright (c) Kuba SzczodrzyƄski 2022-05-28. */ +#define CHIP_TYPE(family, chip_id) (((family >> 24) << 8) | chip_id) +#define CHIP_TYPE_ENUM(family, chip_id) (ChipType) CHIP_TYPE(family, chip_id) + enum ChipFamily { // used in UF2 Family ID - RTL8710A = 0x9FFFD543, // Realtek Ameba1 - RTL8710B = 0x22E0D6FC, // Realtek AmebaZ (realtek-ambz) - RTL8720C = 0xE08F7564, // Realtek AmebaZ2 - RTL8720D = 0x3379CFE2, // Realtek AmebaD - BK7231T = 0x675A40B0, // Beken 7231T - BK7231N = 0x7B3EF230, // Beken 7231N - BL602 = 0xDE1270B7, // Boufallo 602 - XR809 = 0x51E903A8, // Xradiotech 809 + F_RTL8710A = 0x9FFFD543, // Realtek Ameba1 + F_RTL8710B = 0x22E0D6FC, // Realtek AmebaZ (realtek-ambz) + F_RTL8720C = 0xE08F7564, // Realtek AmebaZ2 + F_RTL8720D = 0x3379CFE2, // Realtek AmebaD + F_BK7231T = 0x675A40B0, // Beken 7231T + F_BK7231N = 0x7B3EF230, // Beken 7231N + F_BL602 = 0xDE1270B7, // Boufallo 602 + F_XR809 = 0x51E903A8, // Xradiotech 809 }; enum ChipType { + // Realtek AmebaZ // IDs copied from rtl8710b_efuse.h - RTL8710BL = ((RTL8710B >> 24) << 8) | 0xE0, // ??? - RTL8710BN = ((RTL8710B >> 24) << 8) | 0xFF, // CHIPID_8710BN / QFN32 - RTL8710BU = ((RTL8710B >> 24) << 8) | 0xFE, // CHIPID_8710BU / QFN48 - RTL8710BX = ((RTL8710B >> 24) << 8) | 0xFB, // CHIPID_8710BN_L0 / QFN32 - RTL8711BN = ((RTL8710B >> 24) << 8) | 0xFD, // CHIPID_8711BN / QFN48 - RTL8711BU = ((RTL8710B >> 24) << 8) | 0xFC, // CHIPID_8711BG / QFN68 + RTL8710BL = CHIP_TYPE(F_RTL8710B, 0xE0), // ??? + RTL8710BN = CHIP_TYPE(F_RTL8710B, 0xFF), // CHIPID_8710BN / QFN32 + RTL8710BU = CHIP_TYPE(F_RTL8710B, 0xFE), // CHIPID_8710BU / QFN48 + RTL8710BX = CHIP_TYPE(F_RTL8710B, 0xFB), // CHIPID_8710BN_L0 / QFN32 + RTL8711BN = CHIP_TYPE(F_RTL8710B, 0xFD), // CHIPID_8711BN / QFN48 + RTL8711BU = CHIP_TYPE(F_RTL8710B, 0xFC), // CHIPID_8711BG / QFN68 }; diff --git a/arduino/libretuya/core/LibreTuyaClass.cpp b/arduino/libretuya/core/LibreTuyaClass.cpp index b2eeba2..70df6e9 100644 --- a/arduino/libretuya/core/LibreTuyaClass.cpp +++ b/arduino/libretuya/core/LibreTuyaClass.cpp @@ -27,7 +27,7 @@ ChipFamily LibreTuya::getChipFamily() { * @brief Get CPU family name as string. */ const char *LibreTuya::getChipFamilyName() { - return STRINGIFY_MACRO(FAMILY); + return STRINGIFY_MACRO(FAMILY) + 2; } static char *deviceName = NULL; diff --git a/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp b/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp index c716e86..acf964c 100644 --- a/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp +++ b/arduino/realtek-ambz/cores/arduino/LibreTuyaAPI.cpp @@ -24,7 +24,7 @@ void LibreTuya::gpioRecover() { ChipType LibreTuya::getChipType() { uint8_t chipId; EFUSE_OneByteReadROM(9902, 0xF8, &chipId, L25EOUTVOLTAGE); - return (ChipType)(((RTL8710B >> 24) << 8) | chipId); + return CHIP_TYPE_ENUM(F_RTL8710B, chipId); } const char *LibreTuya::getChipModel() { diff --git a/builder/utils/env.py b/builder/utils/env.py index 85b99c1..a0577fe 100644 --- a/builder/utils/env.py +++ b/builder/utils/env.py @@ -65,7 +65,7 @@ def env_add_defaults(env, platform, board): ("LT_BOARD", "${VARIANT}"), ("F_CPU", board.get("build.f_cpu")), ("MCU", "${MCU}"), - ("FAMILY", "${FAMILY}"), + ("FAMILY", "F_${FAMILY}"), ], LINKFLAGS=[ "-Wl,-Map=" + join("$BUILD_DIR", "${PROGNAME}.map"), diff --git a/docs/ota/library.md b/docs/ota/library.md index 5900d7b..c7f3126 100644 --- a/docs/ota/library.md +++ b/docs/ota/library.md @@ -5,8 +5,8 @@ uf2ota library allows to write a LibreTuya UF2 file to the flash, while parsing ## Usage example ```c -uint8_t target = 1; // target OTA scheme - 1 or 2 -uint32_t family = RTL8710B; // chip's UF2 family ID +uint8_t target = 1; // target OTA scheme - 1 or 2 +uint32_t family = F_RTL8710B; // chip's UF2 family ID uf2_ota_t *ctx = uf2_ctx_init(target, family); uf2_info_t *info = uf2_info_init(); // optional, for getting firmware info uf2_block_t *block = (uf2_block_t *)malloc(UF2_BLOCK_SIZE);