10 static const char *
const TAG =
"tof10120";
11 static const uint8_t TOF10120_READ_DISTANCE_CMD[] = {0x00};
12 static const uint8_t TOF10120_DEFAULT_DELAY = 30;
14 static const uint8_t TOF10120_DIR_SEND_REGISTER = 0x0e;
15 static const uint8_t TOF10120_DISTANCE_REGISTER = 0x00;
17 static const uint16_t TOF10120_OUT_OF_RANGE_VALUE = 2000;
20 LOG_SENSOR(
"",
"TOF10120",
this);
21 LOG_UPDATE_INTERVAL(
this);
28 if (!this->
write_bytes(TOF10120_DISTANCE_REGISTER, TOF10120_READ_DISTANCE_CMD,
sizeof(TOF10120_READ_DISTANCE_CMD))) {
29 ESP_LOGE(TAG,
"Communication with TOF10120 failed on write");
39 delay(TOF10120_DEFAULT_DELAY);
41 ESP_LOGE(TAG,
"Communication with TOF10120 failed on read");
46 uint32_t distance_mm = (data[0] << 8) | data[1];
47 ESP_LOGI(TAG,
"Data read: %dmm", distance_mm);
49 if (distance_mm == TOF10120_OUT_OF_RANGE_VALUE) {
50 ESP_LOGW(TAG,
"Distance measurement out of range");
ErrorCode read(uint8_t *data, size_t len)
void dump_config() override
void status_clear_warning()
void publish_state(float state)
Publish a new state to the front-end.
ErrorCode write(const uint8_t *data, uint8_t len, bool stop=true)
void status_set_warning()
void IRAM_ATTR HOT delay(uint32_t ms)
bool write_bytes(uint8_t a_register, const uint8_t *data, uint8_t len, bool stop=true)