ESPHome 2025.5.0
Loading...
Searching...
No Matches
esphome::shelly_dimmer Namespace Reference

Data Structures

class  ShellyDimmer
 
struct  VarlenCmd
 

Typedefs

using stm32_err_t
 
using flags_t
 
using stm32_cmd_t
 
using stm32_dev_t
 
using stm32_t
 
using stm32_unique_ptr = std::unique_ptr<stm32_t, void (*)(stm32_t *)>
 

Functions

uint16_t shelly_dimmer_checksum (const uint8_t *buf, int len)
 Computes a crappy checksum as defined by the Shelly Dimmer protocol.
 
stm32_unique_ptr stm32_init (uart::UARTDevice *stream, const uint8_t flags, const char init)
 
stm32_err_t stm32_read_memory (const stm32_unique_ptr &stm, const uint32_t address, uint8_t *data, const unsigned int len)
 
stm32_err_t stm32_write_memory (const stm32_unique_ptr &stm, uint32_t address, const uint8_t *data, const unsigned int len)
 
stm32_err_t stm32_wunprot_memory (const stm32_unique_ptr &stm)
 
stm32_err_t stm32_wprot_memory (const stm32_unique_ptr &stm)
 
stm32_err_t stm32_runprot_memory (const stm32_unique_ptr &stm)
 
stm32_err_t stm32_readprot_memory (const stm32_unique_ptr &stm)
 
stm32_err_t stm32_erase_memory (const stm32_unique_ptr &stm, uint32_t spage, uint32_t pages)
 
stm32_err_t stm32_go (const stm32_unique_ptr &stm, const uint32_t address)
 
stm32_err_t stm32_reset_device (const stm32_unique_ptr &stm)
 
stm32_err_t stm32_crc_memory (const stm32_unique_ptr &stm, const uint32_t address, const uint32_t length, uint32_t *const crc)
 
uint32_t stm32_sw_crc (uint32_t crc, uint8_t *buf, unsigned int len)
 
stm32_err_t stm32_crc_wrapper (const stm32_unique_ptr &stm, uint32_t address, uint32_t length, uint32_t *crc)
 

Variables

constexpr uint32_t SZ_128 = 0x00000080
 
constexpr uint32_t SZ_256 = 0x00000100
 
constexpr uint32_t SZ_1K = 0x00000400
 
constexpr uint32_t SZ_2K = 0x00000800
 
constexpr uint32_t SZ_16K = 0x00004000
 
constexpr uint32_t SZ_32K = 0x00008000
 
constexpr uint32_t SZ_64K = 0x00010000
 
constexpr uint32_t SZ_128K = 0x00020000
 
constexpr uint32_t SZ_256K = 0x00040000
 
constexpr uint32_t p_128 [] = {SZ_128, 0}
 
constexpr uint32_t p_256 [] = {SZ_256, 0}
 
constexpr uint32_t p_1k [] = {SZ_1K, 0}
 
constexpr uint32_t p_2k [] = {SZ_2K, 0}
 
constexpr uint32_t f2f4 [] = {SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, 0}
 
constexpr uint32_t f4db []
 
constexpr uint32_t f7 [] = {SZ_32K, SZ_32K, SZ_32K, SZ_32K, SZ_128K, SZ_256K, 0}
 
constexpr stm32_dev_t DEVICES []
 
constexpr auto STREAM_OPT_BYTE = (1 << 0)
 
constexpr auto STREAM_OPT_GVR_ETX = (1 << 1)
 
constexpr auto STREAM_OPT_CMD_INIT = (1 << 2)
 
constexpr auto STREAM_OPT_RETRY = (1 << 3)
 
constexpr auto STREAM_OPT_I2C = (1 << 4)
 
constexpr auto STREAM_OPT_STRETCH_W = (1 << 5)
 
constexpr auto STREAM_SERIAL = (STREAM_OPT_BYTE | STREAM_OPT_GVR_ETX | STREAM_OPT_CMD_INIT | STREAM_OPT_RETRY)
 
constexpr auto STREAM_I2C = (STREAM_OPT_I2C | STREAM_OPT_STRETCH_W)
 
constexpr auto STM32_MAX_RX_FRAME = 256
 
constexpr auto STM32_MAX_TX_FRAME = (1 + 256 + 1)
 
constexpr auto STM32_MAX_PAGES = 0x0000ffff
 
constexpr auto STM32_MASS_ERASE = 0x00100000
 

Typedef Documentation

◆ flags_t

Initial value:
enum Flags {
F_NO_ME = 1 << 0,
F_OBLL = 1 << 1,
}

Definition at line 56 of file stm32flash.h.

◆ stm32_cmd_t

Initial value:
struct Stm32Cmd {
uint8_t get;
uint8_t gvr;
uint8_t gid;
uint8_t rm;
uint8_t go;
uint8_t wm;
uint8_t er;
uint8_t wp;
uint8_t uw;
uint8_t rp;
uint8_t ur;
uint8_t crc;
}

Definition at line 61 of file stm32flash.h.

◆ stm32_dev_t

Initial value:
struct Stm32Dev {
const uint16_t id;
const char *name;
const uint32_t ram_start, ram_end;
const uint32_t fl_start, fl_end;
const uint16_t fl_pps;
const uint32_t *fl_ps;
const uint32_t opt_start, opt_end;
const uint32_t mem_start, mem_end;
const uint32_t flags;
}

Definition at line 76 of file stm32flash.h.

◆ stm32_err_t

Initial value:
enum Stm32Err {
STM32_ERR_OK = 0,
STM32_ERR_UNKNOWN,
STM32_ERR_NACK,
STM32_ERR_NO_CMD,
}

Definition at line 49 of file stm32flash.h.

◆ stm32_t

Initial value:
struct Stm32 {
uart::UARTDevice *stream;
uint8_t flags;
struct VarlenCmd *cmd_get_reply;
uint8_t bl_version;
uint8_t version;
uint8_t option1, option2;
uint16_t pid;
const stm32_dev_t *dev;
}
struct Stm32Cmd { uint8_t get; uint8_t gvr; uint8_t gid; uint8_t rm; uint8_t go; uint8_t wm; uint8_t er; uint8_t wp; uint8_t uw; uint8_t rp; uint8_t ur; uint8_t crc;} stm32_cmd_t
Definition stm32flash.h:61
struct Stm32Dev { const uint16_t id; const char *name; const uint32_t ram_start, ram_end; const uint32_t fl_start, fl_end; const uint16_t fl_pps; const uint32_t *fl_ps; const uint32_t opt_start, opt_end; const uint32_t mem_start, mem_end; const uint32_t flags;} stm32_dev_t
Definition stm32flash.h:76

Definition at line 88 of file stm32flash.h.

◆ stm32_unique_ptr

using esphome::shelly_dimmer::stm32_unique_ptr = std::unique_ptr<stm32_t, void (*)(stm32_t *)>

Definition at line 112 of file stm32flash.h.

Function Documentation

◆ shelly_dimmer_checksum()

uint16_t esphome::shelly_dimmer::shelly_dimmer_checksum ( const uint8_t * buf,
int len )

Computes a crappy checksum as defined by the Shelly Dimmer protocol.

Definition at line 63 of file shelly_dimmer.cpp.

◆ stm32_crc_memory()

stm32_err_t esphome::shelly_dimmer::stm32_crc_memory ( const stm32_unique_ptr & stm,
const uint32_t address,
const uint32_t length,
uint32_t *const crc )

Definition at line 933 of file stm32flash.cpp.

◆ stm32_crc_wrapper()

stm32_err_t esphome::shelly_dimmer::stm32_crc_wrapper ( const stm32_unique_ptr & stm,
uint32_t address,
uint32_t length,
uint32_t * crc )

Definition at line 1029 of file stm32flash.cpp.

◆ stm32_erase_memory()

stm32_err_t esphome::shelly_dimmer::stm32_erase_memory ( const stm32_unique_ptr & stm,
uint32_t spage,
uint32_t pages )

Definition at line 811 of file stm32flash.cpp.

◆ stm32_go()

stm32_err_t esphome::shelly_dimmer::stm32_go ( const stm32_unique_ptr & stm,
const uint32_t address )

Definition at line 899 of file stm32flash.cpp.

◆ stm32_init()

stm32_unique_ptr esphome::shelly_dimmer::stm32_init ( uart::UARTDevice * stream,
const uint8_t flags,
const char init )

Definition at line 500 of file stm32flash.cpp.

◆ stm32_read_memory()

stm32_err_t esphome::shelly_dimmer::stm32_read_memory ( const stm32_unique_ptr & stm,
const uint32_t address,
uint8_t * data,
const unsigned int len )

Definition at line 659 of file stm32flash.cpp.

◆ stm32_readprot_memory()

stm32_err_t esphome::shelly_dimmer::stm32_readprot_memory ( const stm32_unique_ptr & stm)

Definition at line 798 of file stm32flash.cpp.

◆ stm32_reset_device()

stm32_err_t esphome::shelly_dimmer::stm32_reset_device ( const stm32_unique_ptr & stm)

Definition at line 922 of file stm32flash.cpp.

◆ stm32_runprot_memory()

stm32_err_t esphome::shelly_dimmer::stm32_runprot_memory ( const stm32_unique_ptr & stm)

Definition at line 785 of file stm32flash.cpp.

◆ stm32_sw_crc()

uint32_t esphome::shelly_dimmer::stm32_sw_crc ( uint32_t crc,
uint8_t * buf,
unsigned int len )

Definition at line 1000 of file stm32flash.cpp.

◆ stm32_wprot_memory()

stm32_err_t esphome::shelly_dimmer::stm32_wprot_memory ( const stm32_unique_ptr & stm)

Definition at line 772 of file stm32flash.cpp.

◆ stm32_write_memory()

stm32_err_t esphome::shelly_dimmer::stm32_write_memory ( const stm32_unique_ptr & stm,
uint32_t address,
const uint8_t * data,
const unsigned int len )

Definition at line 698 of file stm32flash.cpp.

◆ stm32_wunprot_memory()

stm32_err_t esphome::shelly_dimmer::stm32_wunprot_memory ( const stm32_unique_ptr & stm)

Definition at line 759 of file stm32flash.cpp.

Variable Documentation

◆ DEVICES

stm32_dev_t esphome::shelly_dimmer::DEVICES[]
constexpr

Definition at line 62 of file dev_table.h.

◆ f2f4

uint32_t esphome::shelly_dimmer::f2f4[] = {SZ_16K, SZ_16K, SZ_16K, SZ_16K, SZ_64K, SZ_128K, 0}
constexpr

Definition at line 50 of file dev_table.h.

◆ f4db

uint32_t esphome::shelly_dimmer::f4db[]
constexpr
Initial value:

Definition at line 52 of file dev_table.h.

◆ f7

uint32_t esphome::shelly_dimmer::f7[] = {SZ_32K, SZ_32K, SZ_32K, SZ_32K, SZ_128K, SZ_256K, 0}
constexpr

Definition at line 55 of file dev_table.h.

◆ p_128

uint32_t esphome::shelly_dimmer::p_128[] = {SZ_128, 0}
constexpr

Definition at line 45 of file dev_table.h.

◆ p_1k

uint32_t esphome::shelly_dimmer::p_1k[] = {SZ_1K, 0}
constexpr

Definition at line 47 of file dev_table.h.

◆ p_256

uint32_t esphome::shelly_dimmer::p_256[] = {SZ_256, 0}
constexpr

Definition at line 46 of file dev_table.h.

◆ p_2k

uint32_t esphome::shelly_dimmer::p_2k[] = {SZ_2K, 0}
constexpr

Definition at line 48 of file dev_table.h.

◆ STM32_MASS_ERASE

auto esphome::shelly_dimmer::STM32_MASS_ERASE = 0x00100000
constexpr

Definition at line 47 of file stm32flash.h.

◆ STM32_MAX_PAGES

auto esphome::shelly_dimmer::STM32_MAX_PAGES = 0x0000ffff
constexpr

Definition at line 46 of file stm32flash.h.

◆ STM32_MAX_RX_FRAME

auto esphome::shelly_dimmer::STM32_MAX_RX_FRAME = 256
constexpr

Definition at line 43 of file stm32flash.h.

◆ STM32_MAX_TX_FRAME

auto esphome::shelly_dimmer::STM32_MAX_TX_FRAME = (1 + 256 + 1)
constexpr

Definition at line 44 of file stm32flash.h.

◆ STREAM_I2C

auto esphome::shelly_dimmer::STREAM_I2C = (STREAM_OPT_I2C | STREAM_OPT_STRETCH_W)
constexpr

Definition at line 41 of file stm32flash.h.

◆ STREAM_OPT_BYTE

auto esphome::shelly_dimmer::STREAM_OPT_BYTE = (1 << 0)
constexpr

Definition at line 33 of file stm32flash.h.

◆ STREAM_OPT_CMD_INIT

auto esphome::shelly_dimmer::STREAM_OPT_CMD_INIT = (1 << 2)
constexpr

Definition at line 35 of file stm32flash.h.

◆ STREAM_OPT_GVR_ETX

auto esphome::shelly_dimmer::STREAM_OPT_GVR_ETX = (1 << 1)
constexpr

Definition at line 34 of file stm32flash.h.

◆ STREAM_OPT_I2C

auto esphome::shelly_dimmer::STREAM_OPT_I2C = (1 << 4)
constexpr

Definition at line 37 of file stm32flash.h.

◆ STREAM_OPT_RETRY

auto esphome::shelly_dimmer::STREAM_OPT_RETRY = (1 << 3)
constexpr

Definition at line 36 of file stm32flash.h.

◆ STREAM_OPT_STRETCH_W

auto esphome::shelly_dimmer::STREAM_OPT_STRETCH_W = (1 << 5)
constexpr

Definition at line 38 of file stm32flash.h.

◆ STREAM_SERIAL

auto esphome::shelly_dimmer::STREAM_SERIAL = (STREAM_OPT_BYTE | STREAM_OPT_GVR_ETX | STREAM_OPT_CMD_INIT | STREAM_OPT_RETRY)
constexpr

Definition at line 40 of file stm32flash.h.

◆ SZ_128

uint32_t esphome::shelly_dimmer::SZ_128 = 0x00000080
constexpr

Definition at line 29 of file dev_table.h.

◆ SZ_128K

uint32_t esphome::shelly_dimmer::SZ_128K = 0x00020000
constexpr

Definition at line 36 of file dev_table.h.

◆ SZ_16K

uint32_t esphome::shelly_dimmer::SZ_16K = 0x00004000
constexpr

Definition at line 33 of file dev_table.h.

◆ SZ_1K

uint32_t esphome::shelly_dimmer::SZ_1K = 0x00000400
constexpr

Definition at line 31 of file dev_table.h.

◆ SZ_256

uint32_t esphome::shelly_dimmer::SZ_256 = 0x00000100
constexpr

Definition at line 30 of file dev_table.h.

◆ SZ_256K

uint32_t esphome::shelly_dimmer::SZ_256K = 0x00040000
constexpr

Definition at line 37 of file dev_table.h.

◆ SZ_2K

uint32_t esphome::shelly_dimmer::SZ_2K = 0x00000800
constexpr

Definition at line 32 of file dev_table.h.

◆ SZ_32K

uint32_t esphome::shelly_dimmer::SZ_32K = 0x00008000
constexpr

Definition at line 34 of file dev_table.h.

◆ SZ_64K

uint32_t esphome::shelly_dimmer::SZ_64K = 0x00010000
constexpr

Definition at line 35 of file dev_table.h.