mirror of
https://github.com/esphome/esphome.git
synced 2025-10-01 09:32:21 +01:00
44 lines
1.2 KiB
C++
44 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "esphome/core/component.h"
|
|
#include "esphome/core/hal.h"
|
|
#include "esphome/core/preferences.h"
|
|
#include "esphome/components/i2c/i2c.h"
|
|
#include "esphome/components/one_wire/one_wire.h"
|
|
|
|
namespace esphome {
|
|
namespace ds2484 {
|
|
|
|
class DS2484OneWireBus : public one_wire::OneWireBus, public i2c::I2CDevice, public Component {
|
|
public:
|
|
void setup() override;
|
|
void dump_config() override;
|
|
float get_setup_priority() const override { return setup_priority::BUS - 1.0; }
|
|
|
|
bool reset_device();
|
|
int reset_int() override;
|
|
void write8(uint8_t) override;
|
|
void write64(uint64_t) override;
|
|
uint8_t read8() override;
|
|
uint64_t read64() override;
|
|
|
|
void set_active_pullup(bool value) { this->active_pullup_ = value; }
|
|
void set_strong_pullup(bool value) { this->strong_pullup_ = value; }
|
|
|
|
protected:
|
|
void reset_search() override;
|
|
uint64_t search_int() override;
|
|
bool read_status_(uint8_t *);
|
|
bool wait_for_completion_();
|
|
void write8_(uint8_t);
|
|
bool one_wire_triple_(bool *branch, bool *id_bit, bool *cmp_id_bit);
|
|
|
|
uint64_t address_;
|
|
uint8_t last_discrepancy_{0};
|
|
bool last_device_flag_{false};
|
|
bool active_pullup_{false};
|
|
bool strong_pullup_{false};
|
|
};
|
|
} // namespace ds2484
|
|
} // namespace esphome
|