@@ -101,8 +101,8 @@ static void MQTTClientHandler(lwmqtt_client_t * /*client*/, void *ref, lwmqtt_st
101
101
return ;
102
102
}
103
103
104
- // return if simple callback is not set
105
- if (cb->simple == nullptr ) {
104
+ // return if simple and lambda callbacks are not set
105
+ if (cb->simple == nullptr && cb-> lambda == nullptr ) {
106
106
return ;
107
107
}
108
108
@@ -115,6 +115,12 @@ static void MQTTClientHandler(lwmqtt_client_t * /*client*/, void *ref, lwmqtt_st
115
115
str_payload = String ((const char *)message.payload );
116
116
}
117
117
118
+ // call the lambda callback and return if available
119
+ if (cb->lambda != nullptr ) {
120
+ cb->lambda (str_topic, str_payload);
121
+ return ;
122
+ }
123
+
118
124
// call simple callback
119
125
cb->simple (str_topic, str_payload);
120
126
}
@@ -163,17 +169,27 @@ void MQTTClient::begin(const char _hostname[], int _port, Client &_client) {
163
169
lwmqtt_set_callback (&this ->client , (void *)&this ->callback , MQTTClientHandler);
164
170
}
165
171
172
+ void MQTTClient::onMessage (MQTTClientCallbackLambda cb) {
173
+ // set callback
174
+ this ->callback .client = this ;
175
+ this ->callback .simple = nullptr ;
176
+ this ->callback .lambda = cb;
177
+ this ->callback .advanced = nullptr ;
178
+ }
179
+
166
180
void MQTTClient::onMessage (MQTTClientCallbackSimple cb) {
167
181
// set callback
168
182
this ->callback .client = this ;
169
183
this ->callback .simple = cb;
184
+ this ->callback .lambda = nullptr ;
170
185
this ->callback .advanced = nullptr ;
171
186
}
172
187
173
188
void MQTTClient::onMessageAdvanced (MQTTClientCallbackAdvanced cb) {
174
189
// set callback
175
190
this ->callback .client = this ;
176
191
this ->callback .simple = nullptr ;
192
+ this ->callback .lambda = nullptr ;
177
193
this ->callback .advanced = cb;
178
194
}
179
195
0 commit comments