mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
read command checks device id - #184
This commit is contained in:
@@ -242,12 +242,18 @@ void EMSESPShell::add_console_commands() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
commands->add_command(ShellContext::MAIN,
|
commands->add_command(ShellContext::MAIN,
|
||||||
CommandFlags::ADMIN,
|
CommandFlags::USER,
|
||||||
flash_string_vector{F_(read)},
|
flash_string_vector{F_(read)},
|
||||||
flash_string_vector{F_(deviceid_mandatory), F_(typeid_mandatory), F_(offset_optional)},
|
flash_string_vector{F_(deviceid_mandatory), F_(typeid_mandatory), F_(offset_optional)},
|
||||||
[=](Shell & shell __attribute__((unused)), const std::vector<std::string> & arguments) {
|
[=](Shell & shell __attribute__((unused)), const std::vector<std::string> & arguments) {
|
||||||
uint8_t device_id = Helpers::hextoint(arguments.front().c_str());
|
uint8_t device_id = Helpers::hextoint(arguments.front().c_str());
|
||||||
uint16_t type_id = Helpers::hextoint(arguments[1].c_str());
|
|
||||||
|
if (!EMSESP::valid_device(device_id)) {
|
||||||
|
shell.printfln(F("Invalid device ID"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t type_id = Helpers::hextoint(arguments[1].c_str());
|
||||||
if (arguments.size() == 4) {
|
if (arguments.size() == 4) {
|
||||||
uint16_t offset = Helpers::hextoint(arguments[2].c_str());
|
uint16_t offset = Helpers::hextoint(arguments[2].c_str());
|
||||||
uint8_t length = Helpers::hextoint(arguments.back().c_str());
|
uint8_t length = Helpers::hextoint(arguments.back().c_str());
|
||||||
|
|||||||
@@ -94,6 +94,18 @@ void EMSESP::fetch_device_values(const uint8_t device_id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// see if the device ID exists
|
||||||
|
bool EMSESP::valid_device(const uint8_t device_id) {
|
||||||
|
for (const auto & emsdevice : emsdevices) {
|
||||||
|
if (emsdevice) {
|
||||||
|
if (emsdevice->is_device_id(device_id)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false; // can't find it
|
||||||
|
}
|
||||||
|
|
||||||
// for a specific EMS device type go and request data values
|
// for a specific EMS device type go and request data values
|
||||||
void EMSESP::fetch_device_values_type(const uint8_t device_type) {
|
void EMSESP::fetch_device_values_type(const uint8_t device_type) {
|
||||||
for (const auto & emsdevice : emsdevices) {
|
for (const auto & emsdevice : emsdevices) {
|
||||||
|
|||||||
@@ -212,6 +212,7 @@ class EMSESP {
|
|||||||
|
|
||||||
static void fetch_device_values(const uint8_t device_id = 0);
|
static void fetch_device_values(const uint8_t device_id = 0);
|
||||||
static void fetch_device_values_type(const uint8_t device_type);
|
static void fetch_device_values_type(const uint8_t device_type);
|
||||||
|
static bool valid_device(const uint8_t device_id);
|
||||||
|
|
||||||
static bool add_device(const uint8_t device_id, const uint8_t product_id, std::string & version, const uint8_t brand);
|
static bool add_device(const uint8_t device_id, const uint8_t product_id, std::string & version, const uint8_t brand);
|
||||||
static void scan_devices();
|
static void scan_devices();
|
||||||
|
|||||||
Reference in New Issue
Block a user