ThingsBoard Client SDK 0.16.0
Client SDK to connect with ThingsBoard IoT Platform from IoT devices (Arduino, Espressif, etc.)
Loading...
Searching...
No Matches
IAPI_Implementation.h
Go to the documentation of this file.
1#ifndef IAPI_Implementation_h
2#define IAPI_Implementation_h
3
4// Local include.
5#include "Callback.h"
6#include "Constants.h"
7#include "DefaultLogger.h"
8#include "API_Process_Type.h"
9
10// Library include.
11#if THINGSBOARD_ENABLE_STL
12#include <algorithm>
13#endif // THINGSBOARD_ENABLE_STL
14#if THINGSBOARD_ENABLE_CXX20
15#include <ranges>
16#endif // THINGSBOARD_ENABLE_CXX20
17
18// Log messages.
19#if !THINGSBOARD_ENABLE_DYNAMIC
20char constexpr MAX_SUBSCRIPTIONS_EXCEEDED[] = "Too many (%s) subscriptions, increase (%s) or unsubscribe";
21#endif // !THINGSBOARD_ENABLE_DYNAMIC
22char constexpr MAX_SUBSCRIPTIONS_TEMPLATE_NAME[] = "MaxSubscriptions";
23char constexpr SUBSCRIBE_TOPIC_FAILED[] = "Subscribing the given topic (%s) failed";
24char constexpr REQUEST_ID_NULL[] = "Internal request id is NULL";
25// RPC data keys.
26char constexpr RPC_METHOD_KEY[] = "method";
27char constexpr RPC_PARAMS_KEY[] = "params";
28// Shared attribute update API topics.
29char constexpr ATTRIBUTE_TOPIC[] = "v1/devices/me/attributes";
30// Shared attribute request keys.
31char constexpr SHARED_RESPONSE_KEY[] = "shared";
32// Publish data topics.
33char constexpr TELEMETRY_TOPIC[] = "v1/devices/me/telemetry";
34
35
38 public:
41
47
56 virtual void Process_Response(char const * topic, uint8_t * payload, uint32_t length) = 0;
57
64 virtual void Process_Json_Response(char const * topic, JsonDocument const & data) = 0;
65
75 virtual bool Is_Response_Topic_Matching(char const * topic) const = 0;
76
80 virtual bool Unsubscribe() = 0;
81
86
87#if !THINGSBOARD_USE_ESP_TIMER
91 virtual void loop() = 0;
92#endif // !THINGSBOARD_USE_ESP_TIMER
93
98 virtual void Initialize() = 0;
99
112};
113
114#endif // IAPI_Implementation_h
API_Process_Type
Possible processing types an API Implementation uses to handle responses from the server.
Definition: API_Process_Type.h:19
char constexpr MAX_SUBSCRIPTIONS_TEMPLATE_NAME[]
Definition: IAPI_Implementation.h:22
char constexpr SHARED_RESPONSE_KEY[]
Definition: IAPI_Implementation.h:31
char constexpr RPC_PARAMS_KEY[]
Definition: IAPI_Implementation.h:27
char constexpr SUBSCRIBE_TOPIC_FAILED[]
Definition: IAPI_Implementation.h:23
char constexpr MAX_SUBSCRIPTIONS_EXCEEDED[]
Definition: IAPI_Implementation.h:20
char constexpr ATTRIBUTE_TOPIC[]
Definition: IAPI_Implementation.h:29
char constexpr TELEMETRY_TOPIC[]
Definition: IAPI_Implementation.h:33
char constexpr RPC_METHOD_KEY[]
Definition: IAPI_Implementation.h:26
char constexpr REQUEST_ID_NULL[]
Definition: IAPI_Implementation.h:24
std::function< return_type(argument_types... arguments)> function
Callback signature.
Definition: Callback.h:34
Base functionality required by all API implementation.
Definition: IAPI_Implementation.h:37
virtual bool Resubscribe_Permanent_Subscriptions()=0
Forwards the call to let the API clear up any ongoing single-event subscriptions (Provision,...
virtual void Initialize()=0
Method that allows to construct internal objects, after the required callback member methods have bee...
virtual void Process_Json_Response(char const *topic, JsonDocument const &data)=0
Process callback that will be called upon response arrival.
virtual void Set_Client_Callbacks(Callback< void, IAPI_Implementation & >::function subscribe_api_callback, Callback< bool, char const *const, JsonDocument const & >::function send_json_callback, Callback< bool, char const *const, char const *const >::function send_json_string_callback, Callback< bool, char const *const >::function subscribe_topic_callback, Callback< bool, char const *const >::function unsubscribe_topic_callback, Callback< uint16_t >::function get_receive_size_callback, Callback< uint16_t >::function get_send_size_callback, Callback< bool, uint16_t, uint16_t >::function set_buffer_size_callback, Callback< size_t * >::function get_request_id_callback)=0
Sets the underlying callbacks that are required for the different API Implementation to communicate w...
virtual API_Process_Type Get_Process_Type() const =0
Returns the way the server response should be processed.
virtual bool Is_Response_Topic_Matching(char const *topic) const =0
Compares received response topic and the topic this api implementation handles responses on,...
virtual void Process_Response(char const *topic, uint8_t *payload, uint32_t length)=0
Process callback that will be called upon response arrival.
virtual void loop()=0
Internal loop method to update inernal timers for API calls that can timeout.
virtual ~IAPI_Implementation()
Virtual default destructor, created to ensure that if a pointer to this class is used and deleted,...
Definition: IAPI_Implementation.h:40
virtual bool Unsubscribe()=0
Unsubcribes all callbacks, to clear up any ongoing subscriptions and stop receiving information over ...