bool Serializer::get_rpc_method_lora(const byte *payload, size_t payloadLength, char *method, uint8_t method_size) {
Serial.println("Estoy buscando el método");
Downlink downlink = Downlink_init_default;
pb_istream_t pb_stream = pb_istream_from_buffer(payload, payloadLength);
// Deserializar los datos
bool status = pb_decode(&pb_stream, Downlink_fields, &downlink);
Serial.println(status);
if (status) {
if (downlink.method.arg != nullptr) {
const pb_byte_t *method_buffer = reinterpret_cast<const pb_byte_t*>(downlink.method.arg);
size_t method_length = pb_stream.bytes_left;
// Verificar que la longitud de la cadena de caracteres sea adecuada
if (method_length < method_size) {
// Copiar la cadena de caracteres en el búfer proporcionado
memcpy(method, method_buffer, method_length);
method[method_length] = '\0';
Serial.println(method);
return true;
} else {
Serial.println("Error al leer la cadena de caracteres: tamaño del búfer insuficiente");
return false;
}
} else {
Serial.println("El método no está presente en el mensaje");
return false;
}
} else {
// Error al deserializar
return false;
}
}