mirror of
https://github.com/esphome/esphome.git
synced 2025-09-28 16:12:24 +01:00
fix: update split_to_int_vector_ to accept string by value and improve delimiter handling
This commit is contained in:
@@ -278,8 +278,7 @@ bool DynamicLampComponent::add_timer(std::string lamp_list_str, bool timer_activ
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::vector<bool> DynamicLampComponent::build_lamp_list_from_list_str_(std::string lamp_list_str) {
|
std::vector<bool> DynamicLampComponent::build_lamp_list_from_list_str_(std::string lamp_list_str) {
|
||||||
std::string delimiter = ",";
|
std::vector<uint8_t> lamp_list_vector = this->split_to_int_vector_(lamp_list_str, ",");
|
||||||
std::vector<uint8_t> lamp_list_vector = this->split_to_int_vector_(lamp_list_str, delimiter);
|
|
||||||
std::vector<bool> lamp_list;
|
std::vector<bool> lamp_list;
|
||||||
memset(&lamp_list, 0, 16);
|
memset(&lamp_list, 0, 16);
|
||||||
if (lamp_list_vector.size() > 16) {
|
if (lamp_list_vector.size() > 16) {
|
||||||
@@ -337,11 +336,12 @@ void DynamicLampComponent::restore_lamp_values_(uint8_t lamp_number) {
|
|||||||
this->active_lamps_[lamp_number].active = false;
|
this->active_lamps_[lamp_number].active = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<uint8_t> DynamicLampComponent::split_to_int_vector_(const std::string& s, const std::string& delimiter) {
|
std::vector<uint8_t> DynamicLampComponent::split_to_int_vector_(std::string lamp_list_str, std::string& delimiter) {
|
||||||
std::vector<uint8_t> tokens;
|
std::vector<uint8_t> tokens;
|
||||||
std::stringstream sstream(s);
|
std::stringstream sstream;
|
||||||
|
sstream << std::string_view(lamp_list_str);
|
||||||
std::string segment;
|
std::string segment;
|
||||||
while(std::getline(test, segment, delimiter)) {
|
while(std::getline(sstream, segment, delimiter)) {
|
||||||
tokens.push_back(static_cast<uint8_t>(atoi(segment.c_str())));
|
tokens.push_back(static_cast<uint8_t>(atoi(segment.c_str())));
|
||||||
}
|
}
|
||||||
return tokens;
|
return tokens;
|
||||||
|
@@ -118,7 +118,7 @@ class DynamicLampComponent : public Component {
|
|||||||
bool write_state_(uint8_t lamp_number, float state);
|
bool write_state_(uint8_t lamp_number, float state);
|
||||||
uint8_t get_lamp_index_by_name_(std::string lamp_name);
|
uint8_t get_lamp_index_by_name_(std::string lamp_name);
|
||||||
std::array<bool, 16> get_lamp_outputs_by_name_(std::string lamp_name);
|
std::array<bool, 16> get_lamp_outputs_by_name_(std::string lamp_name);
|
||||||
std::vector<uint8_t> split_to_int_vector_(const std::string& s, const std::string& delimiter);
|
std::vector<uint8_t> split_to_int_vector_(std::string lamp_list_str, std::string delimiter)
|
||||||
std::vector<bool> build_lamp_list_from_list_str_(std::string lamp_list_str);
|
std::vector<bool> build_lamp_list_from_list_str_(std::string lamp_list_str);
|
||||||
|
|
||||||
CombinedLamp active_lamps_[16];
|
CombinedLamp active_lamps_[16];
|
||||||
|
Reference in New Issue
Block a user