Skip to content

Commit

Permalink
Test
Browse files Browse the repository at this point in the history
  • Loading branch information
AzonInc committed Feb 14, 2025
1 parent 54e28aa commit af6711c
Showing 1 changed file with 18 additions and 25 deletions.
43 changes: 18 additions & 25 deletions components/tc_bus/tc_bus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ namespace esphome
this->publish_settings();
this->read_memory_complete_callback_.call(memory_buffer_);
} else {
delay(300);
read_memory_block();
}
}
Expand Down Expand Up @@ -377,7 +376,7 @@ namespace esphome
mac_addr |= (mac[4] << 8);
mac_addr |= (mac[5] << 0);

send_command(COMMAND_TYPE_FOUND_DOORMAN_DEVICE, 0, mac_addr, 0);
enqueue_command(COMMAND_TYPE_FOUND_DOORMAN_DEVICE, 0, mac_addr, 0);
} else if (cmd_data.type == COMMAND_TYPE_FOUND_DOORMAN_DEVICE) {
uint8_t mac[3];
mac[0] = (cmd_data.payload >> 16) & 0xFF;
Expand Down Expand Up @@ -714,7 +713,7 @@ namespace esphome

void TCBusComponent::set_programming_mode(bool enabled)
{
send_command(COMMAND_TYPE_PROGRAMMING_MODE, 0, enabled ? 1 : 0);
enqueue_command(COMMAND_TYPE_PROGRAMMING_MODE, 0, enabled ? 1 : 0);
}

void TCBusComponent::request_version(uint32_t serial_number)
Expand All @@ -734,9 +733,9 @@ namespace esphome

this->identify_model_ = true;
enqueue_command(COMMAND_TYPE_SELECT_DEVICE_GROUP, 0, 0); // class 0
enqueue_command(COMMAND_TYPE_REQUEST_VERSION, 0, 0, serial_number);
enqueue_command(COMMAND_TYPE_REQUEST_VERSION, 0, 0, serial_number, 400);
enqueue_command(COMMAND_TYPE_SELECT_DEVICE_GROUP, 0, 1); // class 1
enqueue_command(COMMAND_TYPE_REQUEST_VERSION, 0, 0, serial_number);
enqueue_command(COMMAND_TYPE_REQUEST_VERSION, 0, 0, serial_number, 400);

this->set_timeout("wait_for_identification", 2000, [this]() {
this->identify_model_ = false;
Expand Down Expand Up @@ -779,7 +778,7 @@ namespace esphome
reading_memory_count_ = 0;
reading_memory_max_ = (model_data.memory_size / 4);

this->set_timeout("wait_for_memory_reading", 6000, [this]() {
this->set_timeout("wait_for_memory_reading", reading_memory_max_ * 400, [this]() {
memory_buffer_.clear();
reading_memory_ = false;
reading_memory_serial_number_ = 0;
Expand All @@ -796,7 +795,7 @@ namespace esphome
void TCBusComponent::read_memory_block()
{
ESP_LOGD(TAG, "Read 4 memory blocks, from %i to %i.", (reading_memory_count_ * 4), (reading_memory_count_ * 4) + 4);
enqueue_command(COMMAND_TYPE_READ_MEMORY_BLOCK, reading_memory_count_);
enqueue_command(COMMAND_TYPE_READ_MEMORY_BLOCK, reading_memory_count_, 0, 0, 300);
}

bool TCBusComponent::supports_setting(SettingType type, Model model)
Expand Down Expand Up @@ -883,22 +882,19 @@ namespace esphome
memory_buffer_[cellData.index] = cellData.left_nibble ? ((new_value << 4) | (saved_nibble & 0xF)) : ((saved_nibble << 4) | (new_value & 0xF));

// Prepare Transmission
ESP_LOGD(TAG, "Select device category");
//ESP_LOGD(TAG, "Select device category");
ModelData model_data = getModelData(model);
send_command(COMMAND_TYPE_SELECT_DEVICE_GROUP, 0, model_data.category);
delay(200);
enqueue_command(COMMAND_TYPE_SELECT_DEVICE_GROUP, 0, model_data.category);

ESP_LOGD(TAG, "Select memory page %i of serial number %i", 0, serial_number);
send_command(COMMAND_TYPE_SELECT_MEMORY_PAGE, 0, 0, serial_number);
delay(200);
//ESP_LOGD(TAG, "Select memory page %i of serial number %i", 0, serial_number);
enqueue_command(COMMAND_TYPE_SELECT_MEMORY_PAGE, 0, 0, serial_number);

// Transfer new settings value to memory
uint16_t new_values = (memory_buffer_[cellData.index] << 8) | memory_buffer_[cellData.index + 1];
send_command(COMMAND_TYPE_WRITE_MEMORY, cellData.index, new_values);
delay(200);
enqueue_command(COMMAND_TYPE_WRITE_MEMORY, cellData.index, new_values);

// Reset
send_command(COMMAND_TYPE_RESET);
enqueue_command(COMMAND_TYPE_RESET);

return true;
}
Expand Down Expand Up @@ -929,24 +925,21 @@ namespace esphome
ESP_LOGD(TAG, "Write memory buffer to EEPROM of %s (%i)...", model_to_string(model), serial_number);

// Prepare Transmission
ESP_LOGD(TAG, "Select device category");
//ESP_LOGD(TAG, "Select device category");
ModelData model_data = getModelData(model);
send_command(COMMAND_TYPE_SELECT_DEVICE_GROUP, 0, model_data.category);
delay(200);
enqueue_command(COMMAND_TYPE_SELECT_DEVICE_GROUP, 0, model_data.category);

ESP_LOGD(TAG, "Select memory page %i of serial number %i", 0, serial_number);
send_command(COMMAND_TYPE_SELECT_MEMORY_PAGE, 0, 0, serial_number);
delay(200);
//ESP_LOGD(TAG, "Select memory page %i of serial number %i", 0, serial_number);
enqueue_command(COMMAND_TYPE_SELECT_MEMORY_PAGE, 0, 0, serial_number);

// Transmit Memory
for (size_t address = 0; address < memory_buffer_.size(); address += 2) {
uint16_t new_value = (memory_buffer_[address] << 8) | memory_buffer_[address + 1];
send_command(COMMAND_TYPE_WRITE_MEMORY, address, new_value);
delay(200);
enqueue_command(COMMAND_TYPE_WRITE_MEMORY, address, new_value);
}

// Reset
send_command(COMMAND_TYPE_RESET);
enqueue_command(COMMAND_TYPE_RESET);

return true;
}
Expand Down

0 comments on commit af6711c

Please sign in to comment.