thingsboard / thingsboard-client-sdk

Client SDK to connect with ThingsBoard IoT Platform from IoT devices (Arduino, Espressif, etc.)
MIT License
142 stars 117 forks source link

RPC Error: #205

Open 31670253 opened 1 week ago

31670253 commented 1 week ago

Hi, If recently updated Thingsboard Library on Arduino and I now get the following issue when compiling, any suggestions? If I do a roleback to version 12.2 it does not give any errors.

`/Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:70:1: error: 'RPC_Response' does not name a type 70 | RPC_Response processSetCycleTime1(const RPC_Data &data){ | ^~~~ /Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:81:1: error: 'RPC_Response' does not name a type 81 | RPC_Response processSetCycleTime2(const RPC_Data &data){ | ^~~~ /Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:70:1: error: 'RPC_Response' does not name a type 70 | RPC_Response processSetCycleTime1(const RPC_Data &data){ | ^~~~ /Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:81:1: error: 'RPC_Response' does not name a type 81 | RPC_Response processSetCycleTime2(const RPC_Data &data){ | ^~~~ /Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:90:34: error: 'processSetCycleTime1' was not declared in this scope 90 | RPC_Callback{ "setCycleTime1", processSetCycleTime1}, | ^~~~~~~~ /Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:90:54: error: no matching function for call to 'RPC_Callback::RPC_Callback()' 90 | RPC_Callback{ "setCycleTime1", processSetCycleTime1}, | ^ In file included from /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/ThingsBoard.h:7, from /Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:9: /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:34:5: note: candidate: 'RPC_Callback::RPC_Callback(const char, Callback<void, const ArduinoJson::V704PB2::JsonVariantConst&, ArduinoJson::V704PB2::JsonDocument&>::function)' 34 | RPC_Callback(char const const methodName, function cb) | ^~~~ /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:34:5: note: conversion of argument 2 would be ill-formed: /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:22:5: note: candidate: 'RPC_Callback::RPC_Callback()' 22 | RPC_Callback() = default; | ^~~~ /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:22:5: note: candidate expects 0 arguments, 2 provided /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate: 'RPC_Callback::RPC_Callback(const RPC_Callback&)' 19 | class RPC_Callback : public Callback<void, JsonVariantConst const &, JsonDocument &> { | ^~~~ /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate expects 1 argument, 2 provided /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate: 'RPC_Callback::RPC_Callback(RPC_Callback&&)' /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate expects 1 argument, 2 provided /Users/nieljoubert/Desktop/Work/Arduino/End Product/ThingsboardRPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:91:34: error: 'processSetCycleTime2' was not declared in this scope 91 | RPC_Callback{ "setCycleTime2", processSetCycleTime2} | ^~~~~~~~ /Users/nieljoubert/Desktop/Work/Arduino/End Product/Thingsboard__RPC_DEMO_MESH_TIPPING/ThingsboardRPC_DEMO_MESH/ThingsboardRPC_DEMO_MESH.ino:91:54: error: no matching function for call to 'RPC_Callback::RPC_Callback()' 91 | RPC_Callback{ "setCycleTime2", processSetCycleTime2} | ^ /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:34:5: note: candidate: 'RPC_Callback::RPC_Callback(const char, Callback<void, const ArduinoJson::V704PB2::JsonVariantConst&, ArduinoJson::V704PB2::JsonDocument&>::function)' 34 | RPC_Callback(char const const methodName, function cb) | ^~~~ /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:34:5: note: conversion of argument 2 would be ill-formed: /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:22:5: note: candidate: 'RPC_Callback::RPC_Callback()' 22 | RPC_Callback() = default; | ^~~~ /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:22:5: note: candidate expects 0 arguments, 2 provided /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate: 'RPC_Callback::RPC_Callback(const RPC_Callback&)' 19 | class RPC_Callback : public Callback<void, JsonVariantConst const &, JsonDocument &> { | ^~~~ /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate expects 1 argument, 2 provided /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate: 'RPC_Callback::RPC_Callback(RPC_Callback&&)' /Users/nieljoubert/Documents/Arduino/libraries/ThingsBoard/src/RPC_Callback.h:19:7: note: candidate expects 1 argument, 2 provided Multiple libraries were found for "PubSubClient.h" Used: /Users/nieljoubert/Documents/Arduino/libraries/PubSubClient Not used: /Users/nieljoubert/Documents/Arduino/libraries/TBPubSubClient exit status 1

Compilation error: 'RPC_Response' does not name a type`

MathewHDYT commented 1 week ago

The API on how to use the RPC_Callback has changed. Have a look at this example.

This had to be done to fix issues where we passed references to locally created objects. Which caused major issues, because we now handled an already deleted reference.