Fix: clang-tidy

This commit is contained in:
limengdu 2024-10-10 14:00:38 +08:00
parent dfbd830663
commit 31d815d882
2 changed files with 101 additions and 100 deletions

View file

@ -46,8 +46,8 @@ void MR60FDA2Component::setup() {
this->get_radar_parameters(); this->get_radar_parameters();
memset(this->current_frame_buf, 0, FRAME_BUF_MAX_SIZE); memset(this->current_frame_buf_, 0, FRAME_BUF_MAX_SIZE);
memset(this->current_data_buf, 0, DATA_BUF_MAX_SIZE); memset(this->current_data_buf_, 0, DATA_BUF_MAX_SIZE);
ESP_LOGCONFIG(TAG, "Set up MR60FDA2 complete"); ESP_LOGCONFIG(TAG, "Set up MR60FDA2 complete");
} }
@ -59,7 +59,7 @@ void MR60FDA2Component::loop() {
// Is there data on the serial port // Is there data on the serial port
while (this->available()) { while (this->available()) {
this->read_byte(&byte); this->read_byte(&byte);
this->splitFrame(byte); // split data frame this->split_frame_(byte); // split data frame
} }
} }
@ -73,7 +73,7 @@ void MR60FDA2Component::loop() {
* @param len The length of the byte array. * @param len The length of the byte array.
* @return The calculated checksum. * @return The calculated checksum.
*/ */
uint8_t MR60FDA2Component::calculateChecksum(const uint8_t *data, size_t len) { uint8_t MR60FDA2Component::calculate_checksum_(const uint8_t *data, size_t len) {
uint8_t checksum = 0; uint8_t checksum = 0;
for (size_t i = 0; i < len; i++) { for (size_t i = 0; i < len; i++) {
checksum ^= data[i]; checksum ^= data[i];
@ -93,11 +93,11 @@ uint8_t MR60FDA2Component::calculateChecksum(const uint8_t *data, size_t len) {
* @param expected_checksum The expected checksum. * @param expected_checksum The expected checksum.
* @return True if the checksum is valid, false otherwise. * @return True if the checksum is valid, false otherwise.
*/ */
bool MR60FDA2Component::validateChecksum(const uint8_t *data, size_t len, uint8_t expected_checksum) { bool MR60FDA2Component::validate_checksum_(const uint8_t *data, size_t len, uint8_t expected_checksum) {
return calculateChecksum(data, len) == expected_checksum; return calculate_checksum_(data, len) == expected_checksum;
} }
uint8_t MR60FDA2Component::find_nearest_index(float value, const float *arr, int size) { uint8_t MR60FDA2Component::find_nearest_index_(float value, const float *arr, int size) {
int nearest_index = 0; int nearest_index = 0;
float min_diff = std::abs(value - arr[0]); float min_diff = std::abs(value - arr[0]);
for (int i = 1; i < size; ++i) { for (int i = 1; i < size; ++i) {
@ -110,32 +110,32 @@ uint8_t MR60FDA2Component::find_nearest_index(float value, const float *arr, int
return nearest_index; return nearest_index;
} }
void MR60FDA2Component::splitFrame(uint8_t buffer) { void MR60FDA2Component::split_frame_(uint8_t buffer) {
switch (this->current_frame_locate_) { switch (this->current_frame_locate_) {
case LOCATE_FRAME_HEADER: // starting buffer case LOCATE_FRAME_HEADER: // starting buffer
if (buffer == FRAME_HEADER_BUFFER) { if (buffer == FRAME_HEADER_BUFFER) {
this->current_frame_len_ = 1; this->current_frame_len_ = 1;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
} }
break; break;
case LOCATE_ID_FRAME1: case LOCATE_ID_FRAME1:
this->current_frame_id_ = buffer << 8; this->current_frame_id_ = buffer << 8;
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
break; break;
case LOCATE_ID_FRAME2: case LOCATE_ID_FRAME2:
this->current_frame_id_ += buffer; this->current_frame_id_ += buffer;
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
break; break;
case LOCATE_LENGTH_FRAME_H: case LOCATE_LENGTH_FRAME_H:
this->current_data_frame_len_ = buffer << 8; this->current_data_frame_len_ = buffer << 8;
if (this->current_data_frame_len_ == 0x00) { if (this->current_data_frame_len_ == 0x00) {
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
} else { } else {
// ESP_LOGD(TAG, "DATA_FRAME_LEN_H: 0x%02x", buffer); // ESP_LOGD(TAG, "DATA_FRAME_LEN_H: 0x%02x", buffer);
@ -152,16 +152,16 @@ void MR60FDA2Component::splitFrame(uint8_t buffer) {
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
} else { } else {
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
} }
break; break;
case LOCATE_TYPE_FRAME1: case LOCATE_TYPE_FRAME1:
this->current_frame_type_ = buffer << 8; this->current_frame_type_ = buffer << 8;
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
// ESP_LOGD(TAG, "GET LOCATE_TYPE_FRAME1: 0x%02x", this->current_frame_buf[this->current_frame_len_ - 1]); // ESP_LOGD(TAG, "GET LOCATE_TYPE_FRAME1: 0x%02x", this->current_frame_buf_[this->current_frame_len_ - 1]);
break; break;
case LOCATE_TYPE_FRAME2: case LOCATE_TYPE_FRAME2:
this->current_frame_type_ += buffer; this->current_frame_type_ += buffer;
@ -170,41 +170,41 @@ void MR60FDA2Component::splitFrame(uint8_t buffer) {
(this->current_frame_type_ == RUSULT_INSTALL_HEIGHT) || (this->current_frame_type_ == RUSULT_PARAMETERS) || (this->current_frame_type_ == RUSULT_INSTALL_HEIGHT) || (this->current_frame_type_ == RUSULT_PARAMETERS) ||
(this->current_frame_type_ == RUSULT_HEIGHT_THRESHOLD) || (this->current_frame_type_ == RUSULT_SENSITIVITY)) { (this->current_frame_type_ == RUSULT_HEIGHT_THRESHOLD) || (this->current_frame_type_ == RUSULT_SENSITIVITY)) {
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
// ESP_LOGD(TAG, "GET CURRENT_FRAME_TYPE: 0x%02x 0x%02x", this->current_frame_buf[this->current_frame_len_ - 2], // ESP_LOGD(TAG, "GET CURRENT_FRAME_TYPE: 0x%02x 0x%02x", this->current_frame_buf_[this->current_frame_len_ - 2],
// this->current_frame_buf[this->current_frame_len_ - 1]); // this->current_frame_buf_[this->current_frame_len_ - 1]);
} else { } else {
// ESP_LOGD(TAG, "CURRENT_FRAME_TYPE NOT FOUND: 0x%02x 0x%02x", // ESP_LOGD(TAG, "CURRENT_FRAME_TYPE NOT FOUND: 0x%02x 0x%02x",
// this->current_frame_buf[this->current_frame_len_ - 2], // this->current_frame_buf_[this->current_frame_len_ - 2],
// this->current_frame_buf[this->current_frame_len_ - 1]); // this->current_frame_buf_[this->current_frame_len_ - 1]);
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
} }
break; break;
case LOCATE_HEAD_CKSUM_FRAME: case LOCATE_HEAD_CKSUM_FRAME:
if (this->validateChecksum(this->current_frame_buf, this->current_frame_len_, buffer)) { if (this->validate_checksum_(this->current_frame_buf_, this->current_frame_len_, buffer)) {
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
} else { } else {
ESP_LOGD(TAG, "HEAD_CKSUM_FRAME ERROR: 0x%02x", buffer); ESP_LOGD(TAG, "HEAD_CKSUM_FRAME ERROR: 0x%02x", buffer);
ESP_LOGD(TAG, "GET CURRENT_FRAME: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", ESP_LOGD(TAG, "GET CURRENT_FRAME: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",
this->current_frame_buf[this->current_frame_len_ - 9], this->current_frame_buf_[this->current_frame_len_ - 9],
this->current_frame_buf[this->current_frame_len_ - 8], this->current_frame_buf_[this->current_frame_len_ - 8],
this->current_frame_buf[this->current_frame_len_ - 7], this->current_frame_buf_[this->current_frame_len_ - 7],
this->current_frame_buf[this->current_frame_len_ - 6], this->current_frame_buf_[this->current_frame_len_ - 6],
this->current_frame_buf[this->current_frame_len_ - 5], this->current_frame_buf_[this->current_frame_len_ - 5],
this->current_frame_buf[this->current_frame_len_ - 4], this->current_frame_buf_[this->current_frame_len_ - 4],
this->current_frame_buf[this->current_frame_len_ - 3], this->current_frame_buf_[this->current_frame_len_ - 3],
this->current_frame_buf[this->current_frame_len_ - 2], this->current_frame_buf_[this->current_frame_len_ - 2],
this->current_frame_buf[this->current_frame_len_ - 1], buffer); this->current_frame_buf_[this->current_frame_len_ - 1], buffer);
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
} }
break; break;
case LOCATE_DATA_FRAME: case LOCATE_DATA_FRAME:
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_data_buf[this->current_frame_len_ - LEN_TO_DATA_FRAME] = buffer; this->current_data_buf_[this->current_frame_len_ - LEN_TO_DATA_FRAME] = buffer;
if (this->current_frame_len_ - LEN_TO_HEAD_CKSUM == this->current_data_frame_len_) { if (this->current_frame_len_ - LEN_TO_HEAD_CKSUM == this->current_data_frame_len_) {
this->current_frame_locate_++; this->current_frame_locate_++;
} }
@ -214,23 +214,23 @@ void MR60FDA2Component::splitFrame(uint8_t buffer) {
} }
break; break;
case LOCATE_DATA_CKSUM_FRAME: case LOCATE_DATA_CKSUM_FRAME:
if (this->validateChecksum(this->current_data_buf, this->current_data_frame_len_, buffer)) { if (this->validate_checksum_(this->current_data_buf_, this->current_data_frame_len_, buffer)) {
this->current_frame_len_++; this->current_frame_len_++;
this->current_frame_buf[this->current_frame_len_ - 1] = buffer; this->current_frame_buf_[this->current_frame_len_ - 1] = buffer;
this->current_frame_locate_++; this->current_frame_locate_++;
this->processFrame(); this->process_frame_();
} else { } else {
ESP_LOGD(TAG, "DATA_CKSUM_FRAME ERROR: 0x%02x", buffer); ESP_LOGD(TAG, "DATA_CKSUM_FRAME ERROR: 0x%02x", buffer);
ESP_LOGD(TAG, "GET CURRENT_FRAME: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", ESP_LOGD(TAG, "GET CURRENT_FRAME: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",
this->current_frame_buf[this->current_frame_len_ - 9], this->current_frame_buf_[this->current_frame_len_ - 9],
this->current_frame_buf[this->current_frame_len_ - 8], this->current_frame_buf_[this->current_frame_len_ - 8],
this->current_frame_buf[this->current_frame_len_ - 7], this->current_frame_buf_[this->current_frame_len_ - 7],
this->current_frame_buf[this->current_frame_len_ - 6], this->current_frame_buf_[this->current_frame_len_ - 6],
this->current_frame_buf[this->current_frame_len_ - 5], this->current_frame_buf_[this->current_frame_len_ - 5],
this->current_frame_buf[this->current_frame_len_ - 4], this->current_frame_buf_[this->current_frame_len_ - 4],
this->current_frame_buf[this->current_frame_len_ - 3], this->current_frame_buf_[this->current_frame_len_ - 3],
this->current_frame_buf[this->current_frame_len_ - 2], this->current_frame_buf_[this->current_frame_len_ - 2],
this->current_frame_buf[this->current_frame_len_ - 1], buffer); this->current_frame_buf_[this->current_frame_len_ - 1], buffer);
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
} }
break; break;
@ -239,13 +239,13 @@ void MR60FDA2Component::splitFrame(uint8_t buffer) {
} }
} }
void MR60FDA2Component::processFrame() { void MR60FDA2Component::process_frame_() {
switch (this->current_frame_type_) { switch (this->current_frame_type_) {
case IS_FALL_TYPE_BUFFER: case IS_FALL_TYPE_BUFFER:
if (this->is_fall_text_sensor_ != nullptr) { if (this->is_fall_text_sensor_ != nullptr) {
if (this->current_frame_buf[LEN_TO_HEAD_CKSUM] == 0) { if (this->current_frame_buf_[LEN_TO_HEAD_CKSUM] == 0) {
this->is_fall_text_sensor_->publish_state("Normal"); this->is_fall_text_sensor_->publish_state("Normal");
} else if (this->current_frame_buf[LEN_TO_HEAD_CKSUM] == 1) { } else if (this->current_frame_buf_[LEN_TO_HEAD_CKSUM] == 1) {
this->is_fall_text_sensor_->publish_state("Falling"); this->is_fall_text_sensor_->publish_state("Falling");
} }
} }
@ -253,65 +253,71 @@ void MR60FDA2Component::processFrame() {
break; break;
case PEOPLE_EXIST_TYPE_BUFFER: case PEOPLE_EXIST_TYPE_BUFFER:
if (this->people_exist_binary_sensor_ != nullptr) if (this->people_exist_binary_sensor_ != nullptr)
this->people_exist_binary_sensor_->publish_state(this->current_frame_buf[LEN_TO_HEAD_CKSUM]); this->people_exist_binary_sensor_->publish_state(this->current_frame_buf_[LEN_TO_HEAD_CKSUM]);
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
break; break;
case RUSULT_INSTALL_HEIGHT: case RUSULT_INSTALL_HEIGHT:
if (this->current_data_buf[0]) if (this->current_data_buf_[0]) {
ESP_LOGD(TAG, "Successfully set the mounting height"); ESP_LOGD(TAG, "Successfully set the mounting height");
else }
else {
ESP_LOGD(TAG, "Failed to set the mounting height"); ESP_LOGD(TAG, "Failed to set the mounting height");
}
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
break; break;
case RUSULT_HEIGHT_THRESHOLD: case RUSULT_HEIGHT_THRESHOLD:
if (this->current_data_buf[0]) if (this->current_data_buf_[0]) {
ESP_LOGD(TAG, "Successfully set the height threshold"); ESP_LOGD(TAG, "Successfully set the height threshold");
else }
else {
ESP_LOGD(TAG, "Failed to set the height threshold"); ESP_LOGD(TAG, "Failed to set the height threshold");
}
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
break; break;
case RUSULT_SENSITIVITY: case RUSULT_SENSITIVITY:
if (this->current_data_buf[0]) if (this->current_data_buf_[0]) {
ESP_LOGD(TAG, "Successfully set the sensitivity"); ESP_LOGD(TAG, "Successfully set the sensitivity");
else }
else {
ESP_LOGD(TAG, "Failed to set the sensitivity"); ESP_LOGD(TAG, "Failed to set the sensitivity");
}
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
break; break;
case RUSULT_PARAMETERS: case RUSULT_PARAMETERS:
// ESP_LOGD( // ESP_LOGD(
// TAG, // TAG,
// "GET CURRENT_FRAME: 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x 0x%02x", // "GET CURRENT_FRAME: 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x 0x%02x",
// this->current_frame_buf[8], this->current_frame_buf[9], this->current_frame_buf[10], // this->current_frame_buf_[8], this->current_frame_buf_[9], this->current_frame_buf_[10],
// this->current_frame_buf[11], this->current_frame_buf[12], this->current_frame_buf[13], // this->current_frame_buf_[11], this->current_frame_buf_[12], this->current_frame_buf_[13],
// this->current_frame_buf[14], this->current_frame_buf[15], this->current_frame_buf[16], // this->current_frame_buf_[14], this->current_frame_buf_[15], this->current_frame_buf_[16],
// this->current_frame_buf[17], this->current_frame_buf[18], this->current_frame_buf[19]); // this->current_frame_buf_[17], this->current_frame_buf_[18], this->current_frame_buf_[19]);
// ESP_LOGD( // ESP_LOGD(
// TAG, // TAG,
// "GET CURRENT_FRAME_2: 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x // "GET CURRENT_FRAME_2: 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x 0x%02x, 0x%02x 0x%02x 0x%02x
// 0x%02x", this->current_data_buf[0], this->current_data_buf[1], this->current_data_buf[2], // 0x%02x", this->current_data_buf_[0], this->current_data_buf_[1], this->current_data_buf_[2],
// this->current_data_buf[3], this->current_data_buf[4], this->current_data_buf[5], this->current_data_buf[6], // this->current_data_buf_[3], this->current_data_buf_[4], this->current_data_buf_[5], this->current_data_buf_[6],
// this->current_data_buf[7], this->current_data_buf[8], this->current_data_buf[9], // this->current_data_buf_[7], this->current_data_buf_[8], this->current_data_buf_[9],
// this->current_data_buf[10], this->current_data_buf[11]); // this->current_data_buf_[10], this->current_data_buf_[11]);
this->current_install_height_int_ = this->current_install_height_int_ =
(static_cast<uint32_t>(current_data_buf[3]) << 24) | (static_cast<uint32_t>(current_data_buf[2]) << 16) | (static_cast<uint32_t>(current_data_buf_[3]) << 24) | (static_cast<uint32_t>(current_data_buf_[2]) << 16) |
(static_cast<uint32_t>(current_data_buf[1]) << 8) | static_cast<uint32_t>(current_data_buf[0]); (static_cast<uint32_t>(current_data_buf_[1]) << 8) | static_cast<uint32_t>(current_data_buf_[0]);
float install_height_float; float install_height_float;
memcpy(&install_height_float, &current_install_height_int_, sizeof(float)); memcpy(&install_height_float, &current_install_height_int_, sizeof(float));
select_index_ = find_nearest_index(install_height_float, INSTALL_HEIGHT, 7); select_index_ = find_nearest_index_(install_height_float, INSTALL_HEIGHT, 7);
this->install_height_select_->publish_state(INSTALL_HEIGHT_STR[select_index_]); this->install_height_select_->publish_state(INSTALL_HEIGHT_STR[select_index_]);
this->current_height_threshold_int_ = this->current_height_threshold_int_ =
(static_cast<uint32_t>(current_data_buf[7]) << 24) | (static_cast<uint32_t>(current_data_buf[6]) << 16) | (static_cast<uint32_t>(current_data_buf_[7]) << 24) | (static_cast<uint32_t>(current_data_buf_[6]) << 16) |
(static_cast<uint32_t>(current_data_buf[5]) << 8) | static_cast<uint32_t>(current_data_buf[4]); (static_cast<uint32_t>(current_data_buf_[5]) << 8) | static_cast<uint32_t>(current_data_buf_[4]);
float height_threshold_float; float height_threshold_float;
memcpy(&height_threshold_float, &current_height_threshold_int_, sizeof(float)); memcpy(&height_threshold_float, &current_height_threshold_int_, sizeof(float));
select_index_ = find_nearest_index(height_threshold_float, HEIGHT_THRESHOLD, 7); select_index_ = find_nearest_index_(height_threshold_float, HEIGHT_THRESHOLD, 7);
this->height_threshold_select_->publish_state(HEIGHT_THRESHOLD_STR[select_index_]); this->height_threshold_select_->publish_state(HEIGHT_THRESHOLD_STR[select_index_]);
this->current_sensitivity_ = this->current_sensitivity_ =
(static_cast<uint32_t>(current_data_buf[11]) << 24) | (static_cast<uint32_t>(current_data_buf[10]) << 16) | (static_cast<uint32_t>(current_data_buf_[11]) << 24) | (static_cast<uint32_t>(current_data_buf_[10]) << 16) |
(static_cast<uint32_t>(current_data_buf[9]) << 8) | static_cast<uint32_t>(current_data_buf[8]); (static_cast<uint32_t>(current_data_buf_[9]) << 8) | static_cast<uint32_t>(current_data_buf_[8]);
select_index_ = find_nearest_index(this->current_sensitivity_, SENSITIVITY, 3); select_index_ = find_nearest_index_(this->current_sensitivity_, SENSITIVITY, 3);
this->sensitivity_select_->publish_state(SENSITIVITY_STR[select_index_]); this->sensitivity_select_->publish_state(SENSITIVITY_STR[select_index_]);
ESP_LOGD(TAG, "Mounting height: %.2f, Height threshold: %.2f, Sensitivity: %lu", install_height_float, ESP_LOGD(TAG, "Mounting height: %.2f, Height threshold: %.2f, Sensitivity: %u", install_height_float,
height_threshold_float, this->current_sensitivity_); height_threshold_float, this->current_sensitivity_);
this->current_frame_locate_ = LOCATE_FRAME_HEADER; this->current_frame_locate_ = LOCATE_FRAME_HEADER;
break; break;
@ -331,7 +337,7 @@ void MR60FDA2Component::send_query_(uint8_t *query, size_t string_length) { this
* @param value The float value to convert. * @param value The float value to convert.
* @param bytes The byte array to store the converted value. * @param bytes The byte array to store the converted value.
*/ */
void MR60FDA2Component::float_to_bytes(float value, unsigned char *bytes) { void MR60FDA2Component::float_to_bytes_(float value, unsigned char *bytes) {
union { union {
float float_value; float float_value;
unsigned char byte_array[4]; unsigned char byte_array[4];
@ -349,7 +355,7 @@ void MR60FDA2Component::float_to_bytes(float value, unsigned char *bytes) {
* @param value The 32-bit unsigned integer to convert. * @param value The 32-bit unsigned integer to convert.
* @param bytes The byte array to store the converted value. * @param bytes The byte array to store the converted value.
*/ */
void MR60FDA2Component::int_to_bytes(uint32_t value, unsigned char *bytes) { void MR60FDA2Component::int_to_bytes_(uint32_t value, unsigned char *bytes) {
bytes[0] = value & 0xFF; bytes[0] = value & 0xFF;
bytes[1] = (value >> 8) & 0xFF; bytes[1] = (value >> 8) & 0xFF;
bytes[2] = (value >> 16) & 0xFF; bytes[2] = (value >> 16) & 0xFF;
@ -358,17 +364,16 @@ void MR60FDA2Component::int_to_bytes(uint32_t value, unsigned char *bytes) {
// Send Heartbeat Packet Command // Send Heartbeat Packet Command
void MR60FDA2Component::set_install_height(uint8_t index) { void MR60FDA2Component::set_install_height(uint8_t index) {
size_t send_data_len = 13; uint8_t send_data[13] = {0x01, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x04, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00};
uint8_t send_data[send_data_len] = {0x01, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x04, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00};
uint8_t data_frame[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t data_frame[4] = {0x00, 0x00, 0x00, 0x00};
float_to_bytes(INSTALL_HEIGHT[index], &send_data[8]); float_to_bytes_(INSTALL_HEIGHT[index], &send_data[8]);
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
data_frame[i] = send_data[i + 8]; data_frame[i] = send_data[i + 8];
} }
send_data[12] = calculateChecksum(data_frame, 4); send_data[12] = calculate_checksum_(data_frame, 4);
this->send_query_(send_data, send_data_len); this->send_query_(send_data, send_data_len);
ESP_LOGD(TAG, ESP_LOGD(TAG,
"SEND INSTALL HEIGHT FRAME: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x " "SEND INSTALL HEIGHT FRAME: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x "
@ -378,17 +383,16 @@ void MR60FDA2Component::set_install_height(uint8_t index) {
} }
void MR60FDA2Component::set_height_threshold(uint8_t index) { void MR60FDA2Component::set_height_threshold(uint8_t index) {
size_t send_data_len = 13; uint8_t send_data[13] = {0x01, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00};
uint8_t send_data[send_data_len] = {0x01, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x08, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00};
uint8_t data_frame[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t data_frame[4] = {0x00, 0x00, 0x00, 0x00};
float_to_bytes(HEIGHT_THRESHOLD[index], &send_data[8]); float_to_bytes_(HEIGHT_THRESHOLD[index], &send_data[8]);
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
data_frame[i] = send_data[i + 8]; data_frame[i] = send_data[i + 8];
} }
send_data[12] = calculateChecksum(data_frame, 4); send_data[12] = calculate_checksum_(data_frame, 4);
this->send_query_(send_data, send_data_len); this->send_query_(send_data, send_data_len);
ESP_LOGD(TAG, ESP_LOGD(TAG,
"SEND HEIGHT THRESHOLD: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x " "SEND HEIGHT THRESHOLD: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x "
@ -398,17 +402,16 @@ void MR60FDA2Component::set_height_threshold(uint8_t index) {
} }
void MR60FDA2Component::set_sensitivity(uint8_t index) { void MR60FDA2Component::set_sensitivity(uint8_t index) {
size_t send_data_len = 13; uint8_t send_data[13] = {0x01, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x0A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00};
uint8_t send_data[send_data_len] = {0x01, 0x00, 0x00, 0x00, 0x04, 0x0E, 0x0A, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00};
uint8_t data_frame[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t data_frame[4] = {0x00, 0x00, 0x00, 0x00};
int_to_bytes(SENSITIVITY[index], &send_data[8]); int_to_bytes_(SENSITIVITY[index], &send_data[8]);
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
data_frame[i] = send_data[i + 8]; data_frame[i] = send_data[i + 8];
} }
send_data[12] = calculateChecksum(data_frame, 4); send_data[12] = calculate_checksum_(data_frame, 4);
this->send_query_(send_data, send_data_len); this->send_query_(send_data, send_data_len);
ESP_LOGD(TAG, ESP_LOGD(TAG,
"SEND SET SENSITIVITY: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x " "SEND SET SENSITIVITY: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x "
@ -418,16 +421,14 @@ void MR60FDA2Component::set_sensitivity(uint8_t index) {
} }
void MR60FDA2Component::get_radar_parameters() { void MR60FDA2Component::get_radar_parameters() {
size_t send_data_len = 8; uint8_t send_data[8] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x06, 0xF6};
uint8_t send_data[send_data_len] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x06, 0xF6};
this->send_query_(send_data, send_data_len); this->send_query_(send_data, send_data_len);
ESP_LOGD(TAG, "SEND GET PARAMETERS: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", send_data[0], ESP_LOGD(TAG, "SEND GET PARAMETERS: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", send_data[0],
send_data[1], send_data[2], send_data[3], send_data[4], send_data[5], send_data[6], send_data[7]); send_data[1], send_data[2], send_data[3], send_data[4], send_data[5], send_data[6], send_data[7]);
} }
void MR60FDA2Component::reset_radar() { void MR60FDA2Component::reset_radar() {
size_t send_data_len = 8; uint8_t send_data[8] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0xCF};
uint8_t send_data[send_data_len] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x21, 0x10, 0xCF};
this->send_query_(send_data, send_data_len); this->send_query_(send_data, send_data_len);
ESP_LOGD(TAG, "SEND RESET: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", send_data[0], send_data[1], ESP_LOGD(TAG, "SEND RESET: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x", send_data[0], send_data[1],
send_data[2], send_data[3], send_data[4], send_data[5], send_data[6], send_data[7]); send_data[2], send_data[3], send_data[4], send_data[5], send_data[6], send_data[7]);

View file

@ -77,8 +77,8 @@ class MR60FDA2Component : public Component,
protected: protected:
uint8_t current_frame_locate_; uint8_t current_frame_locate_;
uint8_t current_frame_buf[FRAME_BUF_MAX_SIZE]; uint8_t current_frame_buf_[FRAME_BUF_MAX_SIZE];
uint8_t current_data_buf[DATA_BUF_MAX_SIZE]; uint8_t current_data_buf_[DATA_BUF_MAX_SIZE];
uint16_t current_frame_id_; uint16_t current_frame_id_;
size_t current_frame_len_; size_t current_frame_len_;
size_t current_data_frame_len_; size_t current_data_frame_len_;
@ -88,14 +88,14 @@ class MR60FDA2Component : public Component,
uint32_t current_sensitivity_; uint32_t current_sensitivity_;
uint8_t select_index_; uint8_t select_index_;
bool validateChecksum(const uint8_t *data, size_t len, uint8_t expected_checksum); bool validate_checksum_(const uint8_t *data, size_t len, uint8_t expected_checksum);
uint8_t calculateChecksum(const uint8_t *data, size_t len); uint8_t calculate_checksum_(const uint8_t *data, size_t len);
void splitFrame(uint8_t buffer); void split_frame_(uint8_t buffer);
void processFrame(); void process_frame_();
void send_query_(uint8_t *query, size_t string_length); void send_query_(uint8_t *query, size_t string_length);
void float_to_bytes(float value, unsigned char *bytes); void float_to_bytes_(float value, unsigned char *bytes);
void int_to_bytes(uint32_t value, unsigned char *bytes); void int_to_bytes_(uint32_t value, unsigned char *bytes);
uint8_t find_nearest_index(float value, const float *arr, int size); uint8_t find_nearest_index_(float value, const float *arr, int size);
public: public:
float get_setup_priority() const override { return esphome::setup_priority::LATE; } float get_setup_priority() const override { return esphome::setup_priority::LATE; }