From 5dcc33300ffe1e64b0830f592020d010f4820772 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Fri, 20 Dec 2024 12:09:48 +0100 Subject: [PATCH 1/4] fix(mosq): Update API docs adding on-message callback --- components/mosquitto/api.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/mosquitto/api.md b/components/mosquitto/api.md index f010cbb241..aea93fdfea 100644 --- a/components/mosquitto/api.md +++ b/components/mosquitto/api.md @@ -15,6 +15,7 @@ | Type | Name | | ---: | :--- | | struct | [**mosq\_broker\_config**](#struct-mosq_broker_config)
_Mosquitto configuration structure._ | +| typedef void(\* | [**mosq\_message\_cb\_t**](#typedef-mosq_message_cb_t)
| ## Functions @@ -34,12 +35,20 @@ ESP port of mosquittto supports only the options in this configuration structure Variables: +- void(\* handle_message_cb
On message callback. If configured, user function is called whenever mosquitto processes a message. + - char \* host
Address on which the broker is listening for connections - int port
Port number of the broker to listen to - esp\_tls\_cfg\_server\_t \* tls_cfg
ESP-TLS configuration (if TLS transport used) Please refer to the ESP-TLS official documentation for more details on configuring the TLS options. You can open the respective docs with this idf.py command: `idf.py docs -sp api-reference/protocols/esp_tls.html` +### typedef `mosq_message_cb_t` + +```c +typedef void(* mosq_message_cb_t) (char *client, char *topic, char *data, int len, int qos, int retain); +``` + ## Functions Documentation From 95294f5f89400827f4e336ccec8fff916e86f212 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Fri, 20 Dec 2024 12:35:02 +0100 Subject: [PATCH 2/4] fix(mosq): Add consistency check for api docs and versions --- .github/workflows/mosq__build.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/mosq__build.yml b/.github/workflows/mosq__build.yml index 27ff2581c1..4534408b61 100644 --- a/.github/workflows/mosq__build.yml +++ b/.github/workflows/mosq__build.yml @@ -73,3 +73,30 @@ jobs: mv $dir build python -m pytest --log-cli-level DEBUG --junit-xml=./results_esp32_${{ matrix.idf_ver }}_${dir#"ci/build_"}.xml --target=esp32 done + + check_consistency: + name: Checks that API docs and versions are consistent + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Checks API Docs and versions + run: | + sudo apt-get update + sudo apt-get -y install doxygen + pip install esp-doxybook + cd components/mosquitto + cp api.md api_orig.md + ./generate_api_docs.sh + diff -wB api.md api_orig.md + # check version consistency + CONFIG_VERSION=$(grep -Po '(?<=#define VERSION ")[^"]*' port/priv_include/config.h) + CZ_VERSION=$(grep -Po '(?<=version: )[^"]*' .cz.yaml) + COMP_VERSION=$(grep -Po '(?<=version: ")[^"]*' idf_component.yml) + if [ "$CONFIG_VERSION" != "v$CZ_VERSION" ] || [ "$CONFIG_VERSION" != "v$COMP_VERSION" ]; then + echo "Version mismatch detected:" + echo "config.h: $CONFIG_VERSION" + echo ".cz.yaml: $CZ_VERSION" + echo "idf_component.yml: $COMP_VERSION" + exit 1 + fi + echo "Versions are consistent: $CONFIG_VERSION" From 3cd0ed377b749735408045c5cd68e5550c576560 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Fri, 20 Dec 2024 13:47:33 +0100 Subject: [PATCH 3/4] fix(mosq): Use sock_utils instead of func stubs --- components/mosquitto/CMakeLists.txt | 5 ++--- components/mosquitto/idf_component.yml | 2 ++ components/mosquitto/port/ifaddrs.c | 20 ------------------- .../mosquitto/port/priv_include/config.h | 13 ++---------- .../mosquitto/port/priv_include/ifaddrs.h | 17 ---------------- components/mosquitto/port/priv_include/poll.h | 8 -------- components/mosquitto/port/sysconf.c | 18 +++++++++++++++++ 7 files changed, 24 insertions(+), 59 deletions(-) delete mode 100644 components/mosquitto/port/ifaddrs.c delete mode 100644 components/mosquitto/port/priv_include/ifaddrs.h delete mode 100644 components/mosquitto/port/priv_include/poll.h create mode 100644 components/mosquitto/port/sysconf.c diff --git a/components/mosquitto/CMakeLists.txt b/components/mosquitto/CMakeLists.txt index 47e5d551d9..a7e337009e 100644 --- a/components/mosquitto/CMakeLists.txt +++ b/components/mosquitto/CMakeLists.txt @@ -74,16 +74,15 @@ idf_component_register(SRCS ${m_srcs} port/callbacks.c port/config.c port/signals.c - port/ifaddrs.c port/broker.c port/files.c port/net__esp_tls.c + port/sysconf.c PRIV_INCLUDE_DIRS port/priv_include port/priv_include/sys ${m_dir} ${m_src_dir} ${m_incl_dir} ${m_lib_dir} ${m_deps_dir} INCLUDE_DIRS ${m_incl_dir} port/include REQUIRES esp-tls - PRIV_REQUIRES newlib - ) + PRIV_REQUIRES newlib sock_utils) target_compile_definitions(${COMPONENT_LIB} PRIVATE "WITH_BROKER") target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format") diff --git a/components/mosquitto/idf_component.yml b/components/mosquitto/idf_component.yml index d8aee0e68a..7514a882fe 100644 --- a/components/mosquitto/idf_component.yml +++ b/components/mosquitto/idf_component.yml @@ -3,3 +3,5 @@ url: https://github.com/espressif/esp-protocols/tree/master/components/mosquitto description: The component provides a simple ESP32 port of mosquitto broker dependencies: idf: '>=5.1' + espressif/sock_utils: + version: '^0.2' diff --git a/components/mosquitto/port/ifaddrs.c b/components/mosquitto/port/ifaddrs.c deleted file mode 100644 index 1e746416bd..0000000000 --- a/components/mosquitto/port/ifaddrs.c +++ /dev/null @@ -1,20 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2024 Roger Light - * - * SPDX-License-Identifier: EPL-2.0 - * - * SPDX-FileContributor: 2024 Espressif Systems (Shanghai) CO LTD - */ -#include "ifaddrs.h" - -// Dummy implementation of getifaddrs() -// TODO: Implement this if we need to use bind_interface option of listener's config -int getifaddrs(struct ifaddrs **ifap) -{ - return -1; -} - -void freeifaddrs(struct ifaddrs *ifa) -{ - -} diff --git a/components/mosquitto/port/priv_include/config.h b/components/mosquitto/port/priv_include/config.h index 8680e88f75..bf7cb619b9 100644 --- a/components/mosquitto/port/priv_include/config.h +++ b/components/mosquitto/port/priv_include/config.h @@ -5,20 +5,11 @@ */ #pragma once #include +#include "net/if.h" #undef isspace #define isspace(__c) (__ctype_lookup((int)__c)&_S) #include_next "config.h" -#define VERSION "v2.0.18~0" -#define _SC_OPEN_MAX_OVERRIDE 4 - -// used to override syscall for obtaining max open fds -static inline long sysconf(int arg) -{ - if (arg == _SC_OPEN_MAX_OVERRIDE) { - return 64; - } - return -1; -} +#define VERSION "v2.0.20~1" diff --git a/components/mosquitto/port/priv_include/ifaddrs.h b/components/mosquitto/port/priv_include/ifaddrs.h deleted file mode 100644 index 604628cbac..0000000000 --- a/components/mosquitto/port/priv_include/ifaddrs.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ -#pragma once - -#define gai_strerror(x) "gai_strerror() not supported" - -struct ifaddrs { - struct ifaddrs *ifa_next; /* Next item in list */ - char *ifa_name; /* Name of interface */ - struct sockaddr *ifa_addr; /* Address of interface */ -}; - -int getifaddrs(struct ifaddrs **ifap); -void freeifaddrs(struct ifaddrs *ifa); diff --git a/components/mosquitto/port/priv_include/poll.h b/components/mosquitto/port/priv_include/poll.h deleted file mode 100644 index 1ac76a5b4f..0000000000 --- a/components/mosquitto/port/priv_include/poll.h +++ /dev/null @@ -1,8 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD - * - * SPDX-License-Identifier: Apache-2.0 - */ -#pragma once - -#include_next "sys/poll.h" diff --git a/components/mosquitto/port/sysconf.c b/components/mosquitto/port/sysconf.c new file mode 100644 index 0000000000..80a1d92318 --- /dev/null +++ b/components/mosquitto/port/sysconf.c @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include +#include + +#define _SC_OPEN_MAX_OVERRIDE 4 + +// used to override syscall for obtaining max open fds +long sysconf(int arg) +{ + if (arg == _SC_OPEN_MAX_OVERRIDE) { + return 64; + } + return -1; +} From 73e523e736987e493d02564cc45e3d8a33fc53ed Mon Sep 17 00:00:00 2001 From: David Cermak Date: Fri, 20 Dec 2024 15:08:18 +0100 Subject: [PATCH 4/4] bump(mosq): 2.0.20 -> 2.0.20~1 2.0.20~1 Bug Fixes - Use sock_utils instead of func stubs (3cd0ed37) - Update API docs adding on-message callback (5dcc3330) --- components/mosquitto/.cz.yaml | 2 +- components/mosquitto/CHANGELOG.md | 7 +++++++ components/mosquitto/idf_component.yml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/components/mosquitto/.cz.yaml b/components/mosquitto/.cz.yaml index 0b6507a505..b74ae209d7 100644 --- a/components/mosquitto/.cz.yaml +++ b/components/mosquitto/.cz.yaml @@ -3,6 +3,6 @@ commitizen: bump_message: 'bump(mosq): $current_version -> $new_version' pre_bump_hooks: python ../../ci/changelog.py mosquitto tag_format: mosq-v$version - version: 2.0.20 + version: 2.0.20~1 version_files: - idf_component.yml diff --git a/components/mosquitto/CHANGELOG.md b/components/mosquitto/CHANGELOG.md index 5c24047c45..954ccc8ee5 100644 --- a/components/mosquitto/CHANGELOG.md +++ b/components/mosquitto/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.0.20~1](https://github.com/espressif/esp-protocols/commits/mosq-v2.0.20_1) + +### Bug Fixes + +- Use sock_utils instead of func stubs ([3cd0ed37](https://github.com/espressif/esp-protocols/commit/3cd0ed37)) +- Update API docs adding on-message callback ([5dcc3330](https://github.com/espressif/esp-protocols/commit/5dcc3330)) + ## [2.0.20](https://github.com/espressif/esp-protocols/commits/mosq-v2.0.20) ### Features diff --git a/components/mosquitto/idf_component.yml b/components/mosquitto/idf_component.yml index 7514a882fe..6dda14b8f1 100644 --- a/components/mosquitto/idf_component.yml +++ b/components/mosquitto/idf_component.yml @@ -1,4 +1,4 @@ -version: "2.0.20~0" +version: "2.0.20~1" url: https://github.com/espressif/esp-protocols/tree/master/components/mosquitto description: The component provides a simple ESP32 port of mosquitto broker dependencies: