ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
tca9548a.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace esphome::tca9548a {
7
8static const uint8_t TCA9548A_DISABLE_CHANNELS_COMMAND = 0x00;
9
10class TCA9548AComponent;
11class TCA9548AChannel final : public i2c::I2CBus {
12 public:
13 void set_channel(uint8_t channel) { this->channel_ = channel; }
14 void set_parent(TCA9548AComponent *parent) { this->parent_ = parent; }
15
16 i2c::ErrorCode write_readv(uint8_t address, const uint8_t *write_buffer, size_t write_count, uint8_t *read_buffer,
17 size_t read_count) override;
18
19#ifdef I2C_PORT_FREQUENCY_COUNT
22 uint32_t get_frequency() const override;
23#endif
24
25 protected:
26#ifdef I2C_PORT_FREQUENCY_COUNT
29 i2c::ErrorCode write_readv_at_port_frequency_(uint32_t select_frequency, uint8_t address, const uint8_t *write_buffer,
30 size_t write_count, uint8_t *read_buffer, size_t read_count);
31 i2c::ErrorCode transfer_(uint32_t select_frequency, uint8_t address, const uint8_t *write_buffer, size_t write_count,
32 uint8_t *read_buffer, size_t read_count);
36#endif
37 uint8_t channel_;
39};
40
41class TCA9548AComponent final : public Component, public i2c::I2CDevice {
42 public:
43 void setup() override;
44 void dump_config() override;
45 float get_setup_priority() const override { return setup_priority::IO; }
46 void update();
47
48 i2c::ErrorCode switch_to_channel(uint8_t channel);
50#ifdef I2C_PORT_FREQUENCY_COUNT
53#endif
54
55 protected:
56 friend class TCA9548AChannel;
57#ifdef I2C_PORT_FREQUENCY_COUNT
59#endif
60};
61} // namespace esphome::tca9548a
uint8_t address
Definition bl0906.h:4
uint16_le_t frequency
Definition bl0942.h:6
This Class provides the methods to read and write bytes from an I2CBus.
Definition i2c_bus.h:30
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:144
i2c::ErrorCode write_readv_at_port_frequency_(uint32_t select_frequency, uint8_t address, const uint8_t *write_buffer, size_t write_count, uint8_t *read_buffer, size_t read_count)
Definition tca9548a.cpp:44
void set_parent(TCA9548AComponent *parent)
Definition tca9548a.h:14
uint32_t transfer_frequency_() const
Definition tca9548a.cpp:40
uint32_t get_frequency() const override
Definition tca9548a.cpp:90
i2c::ErrorCode write_readv(uint8_t address, const uint8_t *write_buffer, size_t write_count, uint8_t *read_buffer, size_t read_count) override
Definition tca9548a.cpp:10
i2c::ErrorCode switch_frequency(uint32_t frequency) override
Definition tca9548a.cpp:78
i2c::ErrorCode switch_bus_(uint32_t frequency)
Switch the upstream bus, flagging the multiplexer on failure.
Definition tca9548a.cpp:82
TCA9548AComponent * parent_
Definition tca9548a.h:38
void set_channel(uint8_t channel)
Definition tca9548a.h:13
i2c::ErrorCode transfer_(uint32_t select_frequency, uint8_t address, const uint8_t *write_buffer, size_t write_count, uint8_t *read_buffer, size_t read_count)
Definition tca9548a.cpp:63
void set_frequency(uint32_t frequency)
Definition tca9548a.h:20
i2c::ErrorCode switch_to_channel(uint8_t channel)
Definition tca9548a.cpp:124
void set_frequency(uint32_t frequency)
Addressing frequency, and the default for the ports.
Definition tca9548a.h:52
float get_setup_priority() const override
Definition tca9548a.h:45
ErrorCode
Error codes returned by I2CBus and I2CDevice methods.
Definition i2c_bus.h:13
constexpr float IO
For components that represent GPIO pins like PCF8573.
Definition component.h:41
static void uint32_t