mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 13:34:54 +01:00
Bump improv library version (#3072)
This commit is contained in:
parent
172507acb5
commit
1f8a1f0046
4 changed files with 10 additions and 53 deletions
|
@ -56,7 +56,7 @@ async def to_code(config):
|
||||||
cg.add(ble_server.register_service_component(var))
|
cg.add(ble_server.register_service_component(var))
|
||||||
|
|
||||||
cg.add_define("USE_IMPROV")
|
cg.add_define("USE_IMPROV")
|
||||||
cg.add_library("esphome/Improv", "1.0.0")
|
cg.add_library("esphome/Improv", "1.1.0")
|
||||||
|
|
||||||
cg.add(var.set_identify_duration(config[CONF_IDENTIFY_DURATION]))
|
cg.add(var.set_identify_duration(config[CONF_IDENTIFY_DURATION]))
|
||||||
cg.add(var.set_authorized_duration(config[CONF_AUTHORIZED_DURATION]))
|
cg.add(var.set_authorized_duration(config[CONF_AUTHORIZED_DURATION]))
|
||||||
|
|
|
@ -30,4 +30,4 @@ FINAL_VALIDATE_SCHEMA = validate_logger_baud_rate
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
await cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
cg.add_library("esphome/Improv", "1.0.0")
|
cg.add_library("esphome/Improv", "1.1.0")
|
||||||
|
|
|
@ -111,58 +111,15 @@ std::vector<uint8_t> ImprovSerialComponent::build_version_info_() {
|
||||||
bool ImprovSerialComponent::parse_improv_serial_byte_(uint8_t byte) {
|
bool ImprovSerialComponent::parse_improv_serial_byte_(uint8_t byte) {
|
||||||
size_t at = this->rx_buffer_.size();
|
size_t at = this->rx_buffer_.size();
|
||||||
this->rx_buffer_.push_back(byte);
|
this->rx_buffer_.push_back(byte);
|
||||||
ESP_LOGD(TAG, "Improv Serial byte: 0x%02X", byte);
|
ESP_LOGV(TAG, "Improv Serial byte: 0x%02X", byte);
|
||||||
const uint8_t *raw = &this->rx_buffer_[0];
|
const uint8_t *raw = &this->rx_buffer_[0];
|
||||||
if (at == 0)
|
|
||||||
return byte == 'I';
|
|
||||||
if (at == 1)
|
|
||||||
return byte == 'M';
|
|
||||||
if (at == 2)
|
|
||||||
return byte == 'P';
|
|
||||||
if (at == 3)
|
|
||||||
return byte == 'R';
|
|
||||||
if (at == 4)
|
|
||||||
return byte == 'O';
|
|
||||||
if (at == 5)
|
|
||||||
return byte == 'V';
|
|
||||||
|
|
||||||
if (at == 6)
|
return improv::parse_improv_serial_byte(
|
||||||
return byte == IMPROV_SERIAL_VERSION;
|
at, byte, raw, [this](improv::ImprovCommand command) -> bool { return this->parse_improv_payload_(command); },
|
||||||
|
[this](improv::Error error) -> void {
|
||||||
if (at == 7)
|
ESP_LOGW(TAG, "Error decoding Improv payload");
|
||||||
return true;
|
this->set_error_(error);
|
||||||
uint8_t type = raw[7];
|
});
|
||||||
|
|
||||||
if (at == 8)
|
|
||||||
return true;
|
|
||||||
uint8_t data_len = raw[8];
|
|
||||||
|
|
||||||
if (at < 8 + data_len)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (at == 8 + data_len)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (at == 8 + data_len + 1) {
|
|
||||||
uint8_t checksum = 0x00;
|
|
||||||
for (size_t i = 0; i < at; i++)
|
|
||||||
checksum += raw[i];
|
|
||||||
|
|
||||||
if (checksum != byte) {
|
|
||||||
ESP_LOGW(TAG, "Error decoding Improv payload");
|
|
||||||
this->set_error_(improv::ERROR_INVALID_RPC);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == TYPE_RPC) {
|
|
||||||
this->set_error_(improv::ERROR_NONE);
|
|
||||||
auto command = improv::parse_improv_data(&raw[9], data_len, false);
|
|
||||||
return this->parse_improv_payload_(command);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we got here then the command coming is is improv, but not an RPC command
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ImprovSerialComponent::parse_improv_payload_(improv::ImprovCommand &command) {
|
bool ImprovSerialComponent::parse_improv_payload_(improv::ImprovCommand &command) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ build_flags =
|
||||||
lib_deps =
|
lib_deps =
|
||||||
esphome/noise-c@0.1.4 ; api
|
esphome/noise-c@0.1.4 ; api
|
||||||
makuna/NeoPixelBus@2.6.9 ; neopixelbus
|
makuna/NeoPixelBus@2.6.9 ; neopixelbus
|
||||||
esphome/Improv@1.0.0 ; improv_serial / esp32_improv
|
esphome/Improv@1.1.0 ; improv_serial / esp32_improv
|
||||||
bblanchon/ArduinoJson@6.18.5 ; json
|
bblanchon/ArduinoJson@6.18.5 ; json
|
||||||
build_flags =
|
build_flags =
|
||||||
-DESPHOME_LOG_LEVEL=ESPHOME_LOG_LEVEL_VERY_VERBOSE
|
-DESPHOME_LOG_LEVEL=ESPHOME_LOG_LEVEL_VERY_VERBOSE
|
||||||
|
|
Loading…
Reference in a new issue