From 0527344d37ec4eb3d991eb58549ea2da72bf405d Mon Sep 17 00:00:00 2001 From: Chris Hatton Date: Fri, 10 Apr 2020 22:35:29 +1000 Subject: [PATCH 01/11] Add support for using std::function callbacks instead of C-pointers --- src/MqttClient.cpp | 15 +++++++++++++++ src/MqttClient.h | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 8e2684e..1bd0eb2 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -97,10 +97,17 @@ MqttClient::~MqttClient() } } +#ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK +void MqttClient::onMessage(MqttMessageCallback callback) +{ + _onMessage = callback; +} +#else void MqttClient::onMessage(void(*callback)(int)) { _onMessage = callback; } +#endif int MqttClient::parseMessage() { @@ -550,7 +557,11 @@ void MqttClient::poll() _rxState = MQTT_CLIENT_RX_STATE_READ_PUBLISH_PAYLOAD; if (_onMessage) { +#ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK + _onMessage(this,_rxLength); +#else _onMessage(_rxLength); +#endif if (_rxLength == 0) { _rxState = MQTT_CLIENT_RX_STATE_READ_TYPE; @@ -573,7 +584,11 @@ void MqttClient::poll() _rxState = MQTT_CLIENT_RX_STATE_READ_PUBLISH_PAYLOAD; if (_onMessage) { +#ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK + _onMessage(this,_rxLength); +#else _onMessage(_rxLength); +#endif } if (_rxLength == 0) { diff --git a/src/MqttClient.h b/src/MqttClient.h index e0e9d63..4382e3b 100644 --- a/src/MqttClient.h +++ b/src/MqttClient.h @@ -32,12 +32,24 @@ #define MQTT_BAD_USER_NAME_OR_PASSWORD 4 #define MQTT_NOT_AUTHORIZED 5 +// Make this definition in your application code to use std::functions for onMessage callbacks instead of C-pointers: +// #define MQTT_CLIENT_STD_FUNCTION_CALLBACK + +#ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK +#include +#endif + class MqttClient : public Client { public: MqttClient(Client& client); virtual ~MqttClient(); +#ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK + typedef std::function MessageCallback; + void onMessage(MessageCallback callback); +#else void onMessage(void(*)(int)); +#endif int parseMessage(); String messageTopic() const; @@ -128,7 +140,11 @@ class MqttClient : public Client { private: Client* _client; +#ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK + MqttClient::MessageCallback _onMessage; +#else void (*_onMessage)(int); +#endif String _id; String _username; From 9d22ef1a2f9d197cba2fa0873abe97f13f9bdc7c Mon Sep 17 00:00:00 2001 From: Chris Hatton Date: Fri, 10 Apr 2020 22:52:23 +1000 Subject: [PATCH 02/11] Remove some redundancy --- src/MqttClient.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 1bd0eb2..ff7cf61 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -99,15 +99,12 @@ MqttClient::~MqttClient() #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK void MqttClient::onMessage(MqttMessageCallback callback) -{ - _onMessage = callback; -} #else void MqttClient::onMessage(void(*callback)(int)) +#endif { _onMessage = callback; } -#endif int MqttClient::parseMessage() { From 0179fcdc5a9f789b3b12b8bd52579bb9f180671c Mon Sep 17 00:00:00 2001 From: Chris Hatton Date: Sat, 11 Apr 2020 00:46:50 +1000 Subject: [PATCH 03/11] Fix compile error & redundant class qualifier. --- src/MqttClient.cpp | 2 +- src/MqttClient.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index ff7cf61..0ab6863 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -98,7 +98,7 @@ MqttClient::~MqttClient() } #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK -void MqttClient::onMessage(MqttMessageCallback callback) +void MqttClient::onMessage(MessageCallback callback) #else void MqttClient::onMessage(void(*callback)(int)) #endif diff --git a/src/MqttClient.h b/src/MqttClient.h index 4382e3b..27c1787 100644 --- a/src/MqttClient.h +++ b/src/MqttClient.h @@ -141,7 +141,7 @@ class MqttClient : public Client { Client* _client; #ifdef MQTT_CLIENT_STD_FUNCTION_CALLBACK - MqttClient::MessageCallback _onMessage; + MessageCallback _onMessage; #else void (*_onMessage)(int); #endif From c04fc705326d37f9ee827abeb85fe755462f3541 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 22 Jul 2022 14:34:19 +0200 Subject: [PATCH 04/11] Add Portenta H7 and Nicla Vision boards to compile examples workflow --- .github/workflows/compile-examples.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index fdd0de7..641866a 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -51,6 +51,14 @@ jobs: - name: arduino:samd libraries: | - name: WiFiNINA + - fqbn: arduino:mbed:envie_m7 + platforms: | + - name: arduino:mbed + libraries: "" + - fqbn: arduino:mbed_nicla:nicla_vision + platforms: | + - name: arduino:mbed_nicla + libraries: "" - fqbn: esp8266:esp8266:huzzah platforms: | - name: esp8266:esp8266 From 52a7393a0d2bb2768d7735a46afbfb3c2c63126a Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 22 Jul 2022 14:46:45 +0200 Subject: [PATCH 05/11] Fix examples to build correctly for PORTENTA_H7_M7 and NICLA_VISION --- examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino | 2 +- examples/WiFiEcho/WiFiEcho.ino | 2 +- examples/WiFiEchoCallback/WiFiEchoCallback.ino | 2 +- examples/WiFiSimpleReceive/WiFiSimpleReceive.ino | 2 +- .../WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino | 2 +- examples/WiFiSimpleSender/WiFiSimpleSender.ino | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino b/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino index c4bec66..3aed2c6 100644 --- a/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino +++ b/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino @@ -22,7 +22,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) #include #endif diff --git a/examples/WiFiEcho/WiFiEcho.ino b/examples/WiFiEcho/WiFiEcho.ino index 53ad4e3..840f088 100644 --- a/examples/WiFiEcho/WiFiEcho.ino +++ b/examples/WiFiEcho/WiFiEcho.ino @@ -18,7 +18,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) #include #endif diff --git a/examples/WiFiEchoCallback/WiFiEchoCallback.ino b/examples/WiFiEchoCallback/WiFiEchoCallback.ino index ef17c54..8438be3 100644 --- a/examples/WiFiEchoCallback/WiFiEchoCallback.ino +++ b/examples/WiFiEchoCallback/WiFiEchoCallback.ino @@ -19,7 +19,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) #include #endif diff --git a/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino b/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino index 753989b..4cb406a 100644 --- a/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino +++ b/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino @@ -17,7 +17,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) #include #endif diff --git a/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino b/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino index 4dc4b96..77a4d93 100644 --- a/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino +++ b/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino @@ -18,7 +18,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) #include #endif diff --git a/examples/WiFiSimpleSender/WiFiSimpleSender.ino b/examples/WiFiSimpleSender/WiFiSimpleSender.ino index b7f94bd..2513609 100644 --- a/examples/WiFiSimpleSender/WiFiSimpleSender.ino +++ b/examples/WiFiSimpleSender/WiFiSimpleSender.ino @@ -17,7 +17,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) #include #endif From d0d99ee1a9b04d77186562e439eccb7d6dbc6bcb Mon Sep 17 00:00:00 2001 From: Mattia Pennasilico Date: Mon, 8 Aug 2022 09:10:50 +0200 Subject: [PATCH 06/11] Use mbed_portenta platform Co-authored-by: per1234 --- .github/workflows/compile-examples.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index 641866a..1b3a6ca 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -51,9 +51,9 @@ jobs: - name: arduino:samd libraries: | - name: WiFiNINA - - fqbn: arduino:mbed:envie_m7 + - fqbn: arduino:mbed_portenta:envie_m7 platforms: | - - name: arduino:mbed + - name: arduino:mbed_portenta libraries: "" - fqbn: arduino:mbed_nicla:nicla_vision platforms: | From bc3675c4a3ee07e1a81fb7249c5e7ae5a6501c12 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:11:28 +0000 Subject: [PATCH 07/11] Bump geekyeggo/delete-artifact from 1 to 2 Bumps [geekyeggo/delete-artifact](https://github.com/geekyeggo/delete-artifact) from 1 to 2. - [Release notes](https://github.com/geekyeggo/delete-artifact/releases) - [Commits](https://github.com/geekyeggo/delete-artifact/compare/v1...v2) --- updated-dependencies: - dependency-name: geekyeggo/delete-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/sync-labels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 986bda6..10abaea 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -114,7 +114,7 @@ jobs: path: ${{ env.CONFIGURATIONS_FOLDER }} - name: Remove unneeded artifact - uses: geekyeggo/delete-artifact@v1 + uses: geekyeggo/delete-artifact@v2 with: name: ${{ env.CONFIGURATIONS_ARTIFACT }} From 63ba82983b8c1f01e410f9b83c1100ea30202e67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 22:11:33 +0000 Subject: [PATCH 08/11] Bump carlosperate/download-file-action from 1 to 2 Bumps [carlosperate/download-file-action](https://github.com/carlosperate/download-file-action) from 1 to 2. - [Release notes](https://github.com/carlosperate/download-file-action/releases) - [Commits](https://github.com/carlosperate/download-file-action/compare/v1...v2) --- updated-dependencies: - dependency-name: carlosperate/download-file-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/sync-labels.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 10abaea..94938f3 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -31,7 +31,7 @@ jobs: - name: Download JSON schema for labels configuration file id: download-schema - uses: carlosperate/download-file-action@v1 + uses: carlosperate/download-file-action@v2 with: file-url: https://raw.githubusercontent.com/arduino/tooling-project-assets/main/workflow-templates/assets/sync-labels/arduino-tooling-gh-label-configuration-schema.json location: ${{ runner.temp }}/label-configuration-schema @@ -65,7 +65,7 @@ jobs: steps: - name: Download - uses: carlosperate/download-file-action@v1 + uses: carlosperate/download-file-action@v2 with: file-url: https://raw.githubusercontent.com/arduino/tooling-project-assets/main/workflow-templates/assets/sync-labels/${{ matrix.filename }} From ad35618f15aa8d74307a340b06f4b9002dfdabbf Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 27 Mar 2023 06:12:31 +0200 Subject: [PATCH 09/11] CI: Add Arduino Giga as CI build target. --- .github/workflows/compile-examples.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/compile-examples.yml b/.github/workflows/compile-examples.yml index 1b3a6ca..c1bfe9b 100644 --- a/.github/workflows/compile-examples.yml +++ b/.github/workflows/compile-examples.yml @@ -59,6 +59,9 @@ jobs: platforms: | - name: arduino:mbed_nicla libraries: "" + - fqbn: arduino:mbed_giga:giga + platforms: | + - name: arduino:mbed_giga - fqbn: esp8266:esp8266:huzzah platforms: | - name: esp8266:esp8266 From d783a2f36317386ade6dd8dab56365bedc63ff00 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 27 Mar 2023 06:20:47 +0200 Subject: [PATCH 10/11] Add missing #define in order to select correct WiFi library. --- examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino | 2 +- examples/WiFiEcho/WiFiEcho.ino | 2 +- examples/WiFiEchoCallback/WiFiEchoCallback.ino | 2 +- examples/WiFiSimpleReceive/WiFiSimpleReceive.ino | 2 +- .../WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino | 2 +- examples/WiFiSimpleSender/WiFiSimpleSender.ino | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino b/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino index 3aed2c6..5cf2b58 100644 --- a/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino +++ b/examples/WiFiAdvancedCallback/WiFiAdvancedCallback.ino @@ -22,7 +22,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) #include #endif diff --git a/examples/WiFiEcho/WiFiEcho.ino b/examples/WiFiEcho/WiFiEcho.ino index 840f088..e5e47ee 100644 --- a/examples/WiFiEcho/WiFiEcho.ino +++ b/examples/WiFiEcho/WiFiEcho.ino @@ -18,7 +18,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) #include #endif diff --git a/examples/WiFiEchoCallback/WiFiEchoCallback.ino b/examples/WiFiEchoCallback/WiFiEchoCallback.ino index 8438be3..7f1afa9 100644 --- a/examples/WiFiEchoCallback/WiFiEchoCallback.ino +++ b/examples/WiFiEchoCallback/WiFiEchoCallback.ino @@ -19,7 +19,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) #include #endif diff --git a/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino b/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino index 4cb406a..6af92a3 100644 --- a/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino +++ b/examples/WiFiSimpleReceive/WiFiSimpleReceive.ino @@ -17,7 +17,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) #include #endif diff --git a/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino b/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino index 77a4d93..5f6c47a 100644 --- a/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino +++ b/examples/WiFiSimpleReceiveCallback/WiFiSimpleReceiveCallback.ino @@ -18,7 +18,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) #include #endif diff --git a/examples/WiFiSimpleSender/WiFiSimpleSender.ino b/examples/WiFiSimpleSender/WiFiSimpleSender.ino index 2513609..236a6e8 100644 --- a/examples/WiFiSimpleSender/WiFiSimpleSender.ino +++ b/examples/WiFiSimpleSender/WiFiSimpleSender.ino @@ -17,7 +17,7 @@ #include #elif defined(ARDUINO_ARCH_ESP8266) #include -#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) +#elif defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_NICLA_VISION) || defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_GIGA) #include #endif From 03d2faff0520f34a0734e2e7a5588f68bccd1fc5 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 27 Mar 2023 06:49:58 +0200 Subject: [PATCH 11/11] Release v0.1.7. --- library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.properties b/library.properties index 79e24de..47629db 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=ArduinoMqttClient -version=0.1.6 +version=0.1.7 author=Arduino maintainer=Arduino sentence=[BETA] Allows you to send and receive MQTT messages using Arduino.