This commit is contained in:
CptSkippy 2024-05-27 00:05:02 -07:00
parent 41f73a8086
commit 1ad85619e0
3 changed files with 153 additions and 190 deletions

View file

@ -6,28 +6,24 @@ namespace ld2415h {
static const char *const TAG = "ld2415h";
static const uint8_t LD2415H_CMD_SET_SPEED_ANGLE_SENSE[] = {0x43, 0x46, 0x01, 0x01, 0x00, 0x05, 0x0d, 0x0a};
static const uint8_t LD2415H_CMD_SET_MODE_RATE_UOM[] = {0x43, 0x46, 0x02, 0x01, 0x01, 0x00, 0x0d, 0x0a};
static const uint8_t LD2415H_CMD_SET_ANTI_VIB_COMP[] = {0x43, 0x46, 0x03, 0x05, 0x00, 0x00, 0x0d, 0x0a};
static const uint8_t LD2415H_CMD_SET_SPEED_ANGLE_SENSE[] = {0x43, 0x46, 0x01, 0x01, 0x00, 0x05, 0x0d, 0x0a};
static const uint8_t LD2415H_CMD_SET_MODE_RATE_UOM[] = {0x43, 0x46, 0x02, 0x01, 0x01, 0x00, 0x0d, 0x0a};
static const uint8_t LD2415H_CMD_SET_ANTI_VIB_COMP[] = {0x43, 0x46, 0x03, 0x05, 0x00, 0x00, 0x0d, 0x0a};
static const uint8_t LD2415H_CMD_SET_RELAY_DURATION_SPEED[] = {0x43, 0x46, 0x04, 0x03, 0x01, 0x00, 0x0d, 0x0a};
static const uint8_t LD2415H_CMD_GET_CONFIG[] = {0x43, 0x46, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
/* TODO ::
* Create controls that expose settings
*/
LD2415HComponent::LD2415HComponent()
: cmd_speed_angle_sense_ {0x43, 0x46, 0x01, 0x01, 0x00, 0x05, 0x0d, 0x0a},
cmd_mode_rate_uom_ {0x43, 0x46, 0x02, 0x01, 0x01, 0x00, 0x0d, 0x0a},
cmd_anti_vib_comp_ {0x43, 0x46, 0x03, 0x05, 0x00, 0x00, 0x0d, 0x0a},
cmd_relay_duration_speed_ {0x43, 0x46, 0x04, 0x03, 0x01, 0x00, 0x0d, 0x0a},
cmd_config_ {0x43, 0x46, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} {}
static const uint8_t LD2415H_CMD_GET_CONFIG[] = {0x43, 0x46, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
LD2415HComponent::LD2415HComponent()
: cmd_speed_angle_sense_{0x43, 0x46, 0x01, 0x01, 0x00, 0x05, 0x0d, 0x0a},
cmd_mode_rate_uom_{0x43, 0x46, 0x02, 0x01, 0x01, 0x00, 0x0d, 0x0a},
cmd_anti_vib_comp_{0x43, 0x46, 0x03, 0x05, 0x00, 0x00, 0x0d, 0x0a},
cmd_relay_duration_speed_{0x43, 0x46, 0x04, 0x03, 0x01, 0x00, 0x0d, 0x0a},
cmd_config_{0x43, 0x46, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} {}
void LD2415HComponent::setup() {
// This triggers current sensor configurations to be dumped
//this->issue_command_(LD2415H_CMD_GET_CONFIG, sizeof(LD2415H_CMD_GET_CONFIG));
this->update_config_ = true;
#ifdef USE_NUMBER
this->min_speed_threshold_number_->publish_state(this->min_speed_threshold_);
this->compensation_angle_number_->publish_state(this->compensation_angle_);
@ -55,9 +51,6 @@ void LD2415HComponent::dump_config() {
ESP_LOGCONFIG(TAG, " Relay Trigger Duration: %u", this->relay_trigger_duration_);
ESP_LOGCONFIG(TAG, " Relay Trigger Speed: %u KPH", this->relay_trigger_speed_);
ESP_LOGCONFIG(TAG, " Negotiation Mode: %s", NegotiationMode_to_s_(this->negotiation_mode_));
//LOG_SELECT(TAG, " Sample Rate", this->sample_rate_);
//LOG_SELECT(TAG, " Tracking Mode", this->tracking_mode_);
}
void LD2415HComponent::loop() {
@ -68,7 +61,7 @@ void LD2415HComponent::loop() {
}
}
if(this->update_speed_angle_sense_) {
if (this->update_speed_angle_sense_) {
ESP_LOGD(TAG, "LD2415H_CMD_SET_SPEED_ANGLE_SENSE: ");
this->cmd_speed_angle_sense_[3] = this->min_speed_threshold_;
this->cmd_speed_angle_sense_[4] = this->compensation_angle_;
@ -79,7 +72,7 @@ void LD2415HComponent::loop() {
return;
}
if(this->update_mode_rate_uom_) {
if (this->update_mode_rate_uom_) {
ESP_LOGD(TAG, "LD2415H_CMD_SET_MODE_RATE_UOM: ");
this->cmd_mode_rate_uom_[3] = static_cast<uint8_t>(this->tracking_mode_);
this->cmd_mode_rate_uom_[4] = this->sample_rate_;
@ -89,7 +82,7 @@ void LD2415HComponent::loop() {
return;
}
if(this->update_anti_vib_comp_) {
if (this->update_anti_vib_comp_) {
ESP_LOGD(TAG, "LD2415H_CMD_SET_ANTI_VIB_COMP: ");
this->cmd_anti_vib_comp_[3] = this->vibration_correction_;
@ -98,7 +91,7 @@ void LD2415HComponent::loop() {
return;
}
if(this->update_relay_duration_speed_) {
if (this->update_relay_duration_speed_) {
ESP_LOGD(TAG, "LD2415H_CMD_SET_RELAY_DURATION_SPEED: ");
this->cmd_relay_duration_speed_[3] = this->relay_trigger_duration_;
this->cmd_relay_duration_speed_[4] = this->relay_trigger_speed_;
@ -108,7 +101,7 @@ void LD2415HComponent::loop() {
return;
}
if(this->update_config_) {
if (this->update_config_) {
ESP_LOGD(TAG, "LD2415H_CMD_GET_CONFIG: ");
this->issue_command_(this->cmd_config_, sizeof(this->cmd_config_));
@ -117,7 +110,7 @@ void LD2415HComponent::loop() {
}
}
void LD2415HComponent::set_min_speed_threshold(uint8_t speed) {
void LD2415HComponent::set_min_speed_threshold(uint8_t speed) {
this->min_speed_threshold_ = speed;
this->update_speed_angle_sense_ = true;
}
@ -143,9 +136,7 @@ void LD2415HComponent::set_tracking_mode(TrackingMode mode) {
this->update_mode_rate_uom_ = true;
}
void LD2415HComponent::set_tracking_mode(uint8_t mode) {
this->set_tracking_mode(i_to_TrackingMode_(mode));
}
void LD2415HComponent::set_tracking_mode(uint8_t mode) { this->set_tracking_mode(i_to_TrackingMode_(mode)); }
void LD2415HComponent::set_sample_rate(const std::string &state) {
uint8_t rate = SAMPLE_RATE_STR_TO_INT.at(state);
@ -175,7 +166,7 @@ void LD2415HComponent::set_relay_trigger_speed(uint8_t speed) {
}
void LD2415HComponent::issue_command_(const uint8_t cmd[], const uint8_t size) {
for(uint8_t i = 0; i < size; i++)
for (uint8_t i = 0; i < size; i++)
ESP_LOGD(TAG, " 0x%02x", cmd[i]);
// Don't assume the response buffer is empty, clear it before issuing a command.
@ -184,7 +175,7 @@ void LD2415HComponent::issue_command_(const uint8_t cmd[], const uint8_t size) {
}
bool LD2415HComponent::fill_buffer_(char c) {
switch(c) {
switch (c) {
case 0x00:
case 0xFF:
case '\r':
@ -193,7 +184,7 @@ bool LD2415HComponent::fill_buffer_(char c) {
case '\n':
// End of response
if(this->response_buffer_index_ == 0)
if (this->response_buffer_index_ == 0)
break;
clear_remaining_buffer_(this->response_buffer_index_);
@ -211,9 +202,9 @@ bool LD2415HComponent::fill_buffer_(char c) {
}
void LD2415HComponent::clear_remaining_buffer_(uint8_t pos) {
while(pos < sizeof(this->response_buffer_)) {
this->response_buffer_[pos] = 0x00;
pos++;
while (pos < sizeof(this->response_buffer_)) {
this->response_buffer_[pos] = 0x00;
pos++;
}
this->response_buffer_index_ = 0;
@ -222,7 +213,7 @@ void LD2415HComponent::clear_remaining_buffer_(uint8_t pos) {
void LD2415HComponent::parse_buffer_() {
char c = this->response_buffer_[0];
switch(c) {
switch (c) {
case 'N':
// Firmware Version
this->parse_firmware_();
@ -245,28 +236,27 @@ void LD2415HComponent::parse_buffer_() {
void LD2415HComponent::parse_config_() {
// Example: "X1:01 X2:00 X3:05 X4:01 X5:00 X6:00 X7:05 X8:03 X9:01 X0:01"
const char* delim = ": ";
const char *delim = ": ";
uint8_t token_len = 2;
char* key;
char* val;
char *key;
char *val;
char* token = strtok(this->response_buffer_, delim);
while (token != NULL)
{
if(std::strlen(token) != token_len) {
char *token = strtok(this->response_buffer_, delim);
while (token != NULL) {
if (std::strlen(token) != token_len) {
ESP_LOGE(TAG, "Configuration key length invalid.");
break;
}
key = token;
token = strtok(NULL, delim);
if(std::strlen(token) != token_len) {
if (std::strlen(token) != token_len) {
ESP_LOGE(TAG, "Configuration value length invalid.");
break;
}
val = token;
this->parse_config_param_(key, val);
token = strtok(NULL, delim);
@ -285,13 +275,12 @@ void LD2415HComponent::parse_config_() {
ESP_LOGCONFIG(TAG, " Relay Trigger Duration: %u", this->relay_trigger_duration_);
ESP_LOGCONFIG(TAG, " Relay Trigger Speed: %u KPH", this->relay_trigger_speed_);
ESP_LOGCONFIG(TAG, " Negotiation Mode: %s", NegotiationMode_to_s_(this->negotiation_mode_));
}
void LD2415HComponent::parse_firmware_() {
// Example: "No.:20230801E v5.0"
const char* fw = strchr(this->response_buffer_, ':');
const char *fw = strchr(this->response_buffer_, ':');
if (fw != nullptr) {
// Move p to the character after ':'
@ -307,7 +296,7 @@ void LD2415HComponent::parse_firmware_() {
void LD2415HComponent::parse_speed_() {
// Example: "V+001.9"
const char* p = strchr(this->response_buffer_, 'V');
const char *p = strchr(this->response_buffer_, 'V');
if (p != nullptr) {
++p;
@ -319,9 +308,9 @@ void LD2415HComponent::parse_speed_() {
for (auto &listener : this->listeners_) {
listener->on_speed(this->speed_);
//listener->on_approaching(this->approaching_);
// listener->on_approaching(this->approaching_);
}
if (this->speed_sensor_ != nullptr)
this->speed_sensor_->publish_state(this->speed_);
@ -330,15 +319,15 @@ void LD2415HComponent::parse_speed_() {
}
}
void LD2415HComponent::parse_config_param_(char* key, char* value) {
if(std::strlen(key) != 2 || std::strlen(value) != 2 || key[0] != 'X') {
ESP_LOGE(TAG, "Invalid Parameter %s:%s", key, value);
return;
void LD2415HComponent::parse_config_param_(char *key, char *value) {
if (std::strlen(key) != 2 || std::strlen(value) != 2 || key[0] != 'X') {
ESP_LOGE(TAG, "Invalid Parameter %s:%s", key, value);
return;
}
uint8_t v = std::stoi(value, nullptr, 16);
switch(key[1]) {
switch (key[1]) {
case '1':
this->min_speed_threshold_ = v;
break;
@ -377,9 +366,7 @@ void LD2415HComponent::parse_config_param_(char* key, char* value) {
TrackingMode LD2415HComponent::i_to_TrackingMode_(uint8_t value) {
TrackingMode u = TrackingMode(value);
ESP_LOGD(TAG, "i_to_TrackingMode_: %i, %i", value, static_cast<uint8_t>(u));
switch (u)
{
switch (u) {
case TrackingMode::APPROACHING_AND_RETREATING:
return TrackingMode::APPROACHING_AND_RETREATING;
case TrackingMode::APPROACHING:
@ -394,8 +381,7 @@ TrackingMode LD2415HComponent::i_to_TrackingMode_(uint8_t value) {
UnitOfMeasure LD2415HComponent::i_to_UnitOfMeasure_(uint8_t value) {
UnitOfMeasure u = UnitOfMeasure(value);
switch (u)
{
switch (u) {
case UnitOfMeasure::MPS:
return UnitOfMeasure::MPS;
case UnitOfMeasure::MPH:
@ -410,9 +396,8 @@ UnitOfMeasure LD2415HComponent::i_to_UnitOfMeasure_(uint8_t value) {
NegotiationMode LD2415HComponent::i_to_NegotiationMode_(uint8_t value) {
NegotiationMode u = NegotiationMode(value);
switch (u)
{
switch (u) {
case NegotiationMode::CUSTOM_AGREEMENT:
return NegotiationMode::CUSTOM_AGREEMENT;
case NegotiationMode::STANDARD_PROTOCOL:
@ -423,9 +408,8 @@ NegotiationMode LD2415HComponent::i_to_NegotiationMode_(uint8_t value) {
}
}
const char* LD2415HComponent::TrackingMode_to_s_(TrackingMode value) {
switch (value)
{
const char *LD2415HComponent::TrackingMode_to_s_(TrackingMode value) {
switch (value) {
case TrackingMode::APPROACHING_AND_RETREATING:
return "APPROACHING_AND_RETREATING";
case TrackingMode::APPROACHING:
@ -436,9 +420,8 @@ const char* LD2415HComponent::TrackingMode_to_s_(TrackingMode value) {
}
}
const char* LD2415HComponent::UnitOfMeasure_to_s_(UnitOfMeasure value) {
switch (value)
{
const char *LD2415HComponent::UnitOfMeasure_to_s_(UnitOfMeasure value) {
switch (value) {
case UnitOfMeasure::MPS:
return "MPS";
case UnitOfMeasure::MPH:
@ -449,9 +432,8 @@ const char* LD2415HComponent::UnitOfMeasure_to_s_(UnitOfMeasure value) {
}
}
const char* LD2415HComponent::NegotiationMode_to_s_(NegotiationMode value) {
switch (value)
{
const char *LD2415HComponent::NegotiationMode_to_s_(NegotiationMode value) {
switch (value) {
case NegotiationMode::CUSTOM_AGREEMENT:
return "CUSTOM_AGREEMENT";
case NegotiationMode::STANDARD_PROTOCOL:
@ -460,13 +442,13 @@ const char* LD2415HComponent::NegotiationMode_to_s_(NegotiationMode value) {
}
}
const char* i_to_s_(std::map<std::string, uint8_t> map, uint8_t i) {
for (const auto& pair : map) {
if (pair.second == i) {
return pair.first;
}
const char *i_to_s_(std::map<std::string, uint8_t> map, uint8_t i) {
for (const auto &pair : map) {
if (pair.second == i) {
return pair.first;
}
return "Unknown";
}
return "Unknown";
}
} // namespace ld2415h

View file

@ -14,150 +14,131 @@
namespace esphome {
namespace ld2415h {
enum NegotiationMode : uint8_t{
CUSTOM_AGREEMENT = 0x01,
STANDARD_PROTOCOL = 0x02
};
enum NegotiationMode : uint8_t { CUSTOM_AGREEMENT = 0x01, STANDARD_PROTOCOL = 0x02 };
enum SampleRateStructure : uint8_t {
SAMPLE_RATE_22FPS = 0x00,
SAMPLE_RATE_11FPS = 0x01,
SAMPLE_RATE_6FPS = 0x02
};
enum SampleRateStructure : uint8_t { SAMPLE_RATE_22FPS = 0x00, SAMPLE_RATE_11FPS = 0x01, SAMPLE_RATE_6FPS = 0x02 };
static const std::map<std::string, uint8_t> SAMPLE_RATE_STR_TO_INT{
{"~22 fps", SAMPLE_RATE_22FPS},
{"~11 fps", SAMPLE_RATE_11FPS},
{"~6 fps", SAMPLE_RATE_6FPS}
};
{"~22 fps", SAMPLE_RATE_22FPS}, {"~11 fps", SAMPLE_RATE_11FPS}, {"~6 fps", SAMPLE_RATE_6FPS}};
enum TrackingMode : uint8_t {
APPROACHING_AND_RETREATING = 0x00,
APPROACHING = 0x01,
RETREATING = 0x02
};
enum TrackingMode : uint8_t { APPROACHING_AND_RETREATING = 0x00, APPROACHING = 0x01, RETREATING = 0x02 };
static const std::map<std::string, uint8_t> TRACKING_MODE_STR_TO_INT{
{"Approaching and Restreating", APPROACHING_AND_RETREATING},
{"Approaching", APPROACHING},
{"Restreating", RETREATING}
};
{"Restreating", RETREATING}};
enum UnitOfMeasure : uint8_t {
KPH = 0x00,
MPH = 0x01,
MPS = 0x02
};
enum UnitOfMeasure : uint8_t { KPH = 0x00, MPH = 0x01, MPS = 0x02 };
class LD2415HListener {
public:
virtual void on_speed(uint8_t speed){};
virtual void on_speed(uint8_t speed) {};
};
class LD2415HComponent : public Component, public uart::UARTDevice {
public:
// Constructor declaration
LD2415HComponent();
void setup() override;
void dump_config() override;
void loop() override;
public:
// Constructor declaration
LD2415HComponent();
void setup() override;
void dump_config() override;
void loop() override;
#ifdef USE_NUMBER
void set_min_speed_threshold_number(number::Number *number) { this->min_speed_threshold_number_ = number; };
void set_compensation_angle_number(number::Number *number) { this->compensation_angle_number_ = number; };
void set_sensitivity_number(number::Number *number) { this->sensitivity_number_ = number; };
void set_vibration_correction_number(number::Number *number) { this->vibration_correction_number_ = number; };
void set_relay_trigger_duration_number(number::Number *number) { this->relay_trigger_duration_number_ = number; };
void set_relay_trigger_speed_number(number::Number *number) { this->relay_trigger_speed_number_ = number; };
void set_min_speed_threshold_number(number::Number *number) { this->min_speed_threshold_number_ = number; };
void set_compensation_angle_number(number::Number *number) { this->compensation_angle_number_ = number; };
void set_sensitivity_number(number::Number *number) { this->sensitivity_number_ = number; };
void set_vibration_correction_number(number::Number *number) { this->vibration_correction_number_ = number; };
void set_relay_trigger_duration_number(number::Number *number) { this->relay_trigger_duration_number_ = number; };
void set_relay_trigger_speed_number(number::Number *number) { this->relay_trigger_speed_number_ = number; };
#endif
#ifdef USE_SELECT
void set_sample_rate_select(select::Select *selector) { this->sample_rate_selector_ = selector; };
void set_tracking_mode_select(select::Select *selector) { this->tracking_mode_selector_ = selector; };
void set_sample_rate_select(select::Select *selector) { this->sample_rate_selector_ = selector; };
void set_tracking_mode_select(select::Select *selector) { this->tracking_mode_selector_ = selector; };
#endif
float get_setup_priority() const override { return setup_priority::HARDWARE; }
//void set_speed_sensor(sensor::Sensor *speed_sensor) { this->speed_sensor_ = speed_sensor; }
void register_listener(LD2415HListener *listener) { this->listeners_.push_back(listener); }
float get_setup_priority() const override { return setup_priority::HARDWARE; }
// void set_speed_sensor(sensor::Sensor *speed_sensor) { this->speed_sensor_ = speed_sensor; }
void register_listener(LD2415HListener *listener) { this->listeners_.push_back(listener); }
void set_min_speed_threshold(uint8_t speed);
void set_compensation_angle(uint8_t angle);
void set_sensitivity(uint8_t sensitivity);
void set_tracking_mode(const std::string &state);
void set_tracking_mode(TrackingMode mode);
void set_tracking_mode(uint8_t mode);
void set_sample_rate(const std::string &state);
void set_sample_rate(uint8_t rate);
void set_vibration_correction(uint8_t correction);
void set_relay_trigger_duration(uint8_t duration);
void set_relay_trigger_speed(uint8_t speed);
void set_min_speed_threshold(uint8_t speed);
void set_compensation_angle(uint8_t angle);
void set_sensitivity(uint8_t sensitivity);
void set_tracking_mode(const std::string &state);
void set_tracking_mode(TrackingMode mode);
void set_tracking_mode(uint8_t mode);
void set_sample_rate(const std::string &state);
void set_sample_rate(uint8_t rate);
void set_vibration_correction(uint8_t correction);
void set_relay_trigger_duration(uint8_t duration);
void set_relay_trigger_speed(uint8_t speed);
#ifdef USE_NUMBER
number::Number *min_speed_threshold_number_{nullptr};
number::Number *compensation_angle_number_{nullptr};
number::Number *sensitivity_number_{nullptr};
number::Number *vibration_correction_number_{nullptr};
number::Number *relay_trigger_duration_number_{nullptr};
number::Number *relay_trigger_speed_number_{nullptr};
number::Number *min_speed_threshold_number_{nullptr};
number::Number *compensation_angle_number_{nullptr};
number::Number *sensitivity_number_{nullptr};
number::Number *vibration_correction_number_{nullptr};
number::Number *relay_trigger_duration_number_{nullptr};
number::Number *relay_trigger_speed_number_{nullptr};
#endif
#ifdef USE_SELECT
select::Select *sample_rate_selector_{nullptr};
select::Select *tracking_mode_selector_{nullptr};
select::Select *sample_rate_selector_{nullptr};
select::Select *tracking_mode_selector_{nullptr};
#endif
protected:
sensor::Sensor *speed_sensor_{nullptr};
// Configuration
uint8_t min_speed_threshold_ = 0;
uint8_t compensation_angle_ = 0;
uint8_t sensitivity_ = 0;
TrackingMode tracking_mode_ = TrackingMode::APPROACHING_AND_RETREATING;
uint8_t sample_rate_ = 0;
UnitOfMeasure unit_of_measure_ = UnitOfMeasure::KPH;
uint8_t vibration_correction_ = 0;
uint8_t relay_trigger_duration_ = 0;
uint8_t relay_trigger_speed_ = 0;
NegotiationMode negotiation_mode_ = NegotiationMode::CUSTOM_AGREEMENT;
protected:
sensor::Sensor *speed_sensor_{nullptr};
// State
uint8_t cmd_speed_angle_sense_[8];
uint8_t cmd_mode_rate_uom_[8];
uint8_t cmd_anti_vib_comp_[8];
uint8_t cmd_relay_duration_speed_[8];
uint8_t cmd_config_[13];
// Configuration
uint8_t min_speed_threshold_ = 0;
uint8_t compensation_angle_ = 0;
uint8_t sensitivity_ = 0;
TrackingMode tracking_mode_ = TrackingMode::APPROACHING_AND_RETREATING;
uint8_t sample_rate_ = 0;
UnitOfMeasure unit_of_measure_ = UnitOfMeasure::KPH;
uint8_t vibration_correction_ = 0;
uint8_t relay_trigger_duration_ = 0;
uint8_t relay_trigger_speed_ = 0;
NegotiationMode negotiation_mode_ = NegotiationMode::CUSTOM_AGREEMENT;
bool update_speed_angle_sense_ = false;
bool update_mode_rate_uom_ = false;
bool update_anti_vib_comp_ = false;
bool update_relay_duration_speed_ = false;
bool update_config_ = false;
// State
uint8_t cmd_speed_angle_sense_[8];
uint8_t cmd_mode_rate_uom_[8];
uint8_t cmd_anti_vib_comp_[8];
uint8_t cmd_relay_duration_speed_[8];
uint8_t cmd_config_[13];
char firmware_[20] = "";
float speed_ = 0;
bool approaching_ = 1;
char response_buffer_[64];
uint8_t response_buffer_index_ = 0;
bool update_speed_angle_sense_ = false;
bool update_mode_rate_uom_ = false;
bool update_anti_vib_comp_ = false;
bool update_relay_duration_speed_ = false;
bool update_config_ = false;
// Processing
void issue_command_(const uint8_t cmd[], const uint8_t size);
bool fill_buffer_(char c);
void clear_remaining_buffer_(uint8_t pos);
void parse_buffer_();
void parse_config_();
void parse_firmware_();
void parse_speed_();
void parse_config_param_(char* key, char* value);
char firmware_[20] = "";
float speed_ = 0;
bool approaching_ = 1;
char response_buffer_[64];
uint8_t response_buffer_index_ = 0;
// Helpers
TrackingMode i_to_TrackingMode_(uint8_t value);
UnitOfMeasure i_to_UnitOfMeasure_(uint8_t value);
NegotiationMode i_to_NegotiationMode_(uint8_t value);
const char* TrackingMode_to_s_(TrackingMode value);
const char* UnitOfMeasure_to_s_(UnitOfMeasure value);
const char* NegotiationMode_to_s_(NegotiationMode value);
const char* i_to_s_(std::map<std::string, uint8_t> map, uint8_t i);
// Processing
void issue_command_(const uint8_t cmd[], const uint8_t size);
bool fill_buffer_(char c);
void clear_remaining_buffer_(uint8_t pos);
void parse_buffer_();
void parse_config_();
void parse_firmware_();
void parse_speed_();
void parse_config_param_(char *key, char *value);
std::vector<LD2415HListener *> listeners_{};
};
// Helpers
TrackingMode i_to_TrackingMode_(uint8_t value);
UnitOfMeasure i_to_UnitOfMeasure_(uint8_t value);
NegotiationMode i_to_NegotiationMode_(uint8_t value);
const char *TrackingMode_to_s_(TrackingMode value);
const char *UnitOfMeasure_to_s_(UnitOfMeasure value);
const char *NegotiationMode_to_s_(NegotiationMode value);
const char *i_to_s_(std::map<std::string, uint8_t> map, uint8_t i);
std::vector<LD2415HListener *> listeners_{};
};
} // namespace ld2415h
} // namespace esphome

View file

@ -12,5 +12,5 @@ void LD2415HSensor::dump_config() {
LOG_SENSOR(" ", "Speed", this->speed_sensor_);
}
} // namespace ld2415H
} // namespace ld2415h
} // namespace esphome