Skip to content

Commit 7f257f1

Browse files
mDNS support for other platforms (openshwprojects#2018)
* mDNS support for other platforms * add mDNS support for BK7238 * add mDNS support for W600 * add mDNS support for W800 * add mDNS support for BL602 * add mDNS support for ESP8266 * enable mDNS driver by default on ESP8266 * add mDNS support for ESP32 (ESP-IDF) * add mDNS support for ESP32-C3 (ESP-IDF) * add mDNS support for ESP32-C6 and gate ESP32-C3 to 4M * document ESP32-C3 2M mDNS gating rationale * add mDNS support for ESP32-S3 (ESP-IDF) * rtl87x0c: add mdns support and ota upload heap guard * add mDNS support for TR6260 * add mDNS support for BK7231U - untested * add mDNS support for BK7252 - untested * add mDNS support for BK7252N - untested * add mDNS support for LN8825 - untested * expand mDNS support for ESP-IDF C2/C5/C61/S2 - untested * add mDNS support for ECR6600 - untested * add mDNS support for XR806/XR809 - untested * enable mDNS by default for ESP8266 * RTL cleanup Removed RTL-specific code for OTA uploads and client management. * RTL cleanup Removed Realtek-specific OTA guard code and related logging. * RTL cleanup --------- Co-authored-by: openshwprojects <85486843+openshwprojects@users.noreply.github.com>
1 parent f070313 commit 7f257f1

31 files changed

+567
-9
lines changed

platforms/BK723x/OpenBeken.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,18 @@ ifeq ($(SOC_BK7231T), 1)
1212
CCFLAGS += -DPLATFORM_BK7231T
1313
else
1414
CCFLAGS += -DPLATFORM_BK7231U
15+
CCFLAGS += -DENABLE_DRIVER_MDNS=1 -DLWIP_MDNS_RESPONDER=1 -DLWIP_NUM_NETIF_CLIENT_DATA=1
1516
endif
1617
else ifeq ($(CFG_SOC_NAME), 3)
1718
CCFLAGS += -DPLATFORM_BK7252
19+
CCFLAGS += -DENABLE_DRIVER_MDNS=1 -DLWIP_MDNS_RESPONDER=1 -DLWIP_NUM_NETIF_CLIENT_DATA=1
1820
else ifeq ($(CFG_SOC_NAME), 5)
1921
CCFLAGS += -DPLATFORM_BK7231N
2022
else ifeq ($(CFG_SOC_NAME), 7)
2123
CCFLAGS += -DPLATFORM_BK7238
2224
else ifeq ($(CFG_SOC_NAME), 8)
2325
CCFLAGS += -DPLATFORM_BK7252N
26+
CCFLAGS += -DENABLE_DRIVER_MDNS=1 -DLWIP_MDNS_RESPONDER=1 -DLWIP_NUM_NETIF_CLIENT_DATA=1
2427
endif
2528

2629
SRC_C += ./fixes/blank.c
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
3+
BEKEN_SRC_MK="sdk/beken_freertos_sdk/beken378/beken_src.mk"
4+
LWIPOPTS_20="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.0.2/port/lwipopts.h"
5+
LWIPOPTS_21="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.1.3/port/lwipopts.h"
6+
7+
patch_lwipopts() {
8+
LWIPOPTS="$1"
9+
10+
if [ ! -f "$LWIPOPTS" ]; then
11+
return
12+
fi
13+
14+
echo "PREBUILD BK7231U: enabling lwIP mDNS options in $LWIPOPTS"
15+
16+
if grep -q '^[[:space:]]*#define LWIP_MDNS_RESPONDER' "$LWIPOPTS"; then
17+
sed -i 's/^[[:space:]]*#define LWIP_MDNS_RESPONDER.*/#define LWIP_MDNS_RESPONDER 1/' "$LWIPOPTS"
18+
else
19+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_MDNS_RESPONDER 1' "$LWIPOPTS"
20+
fi
21+
22+
if grep -q '^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA' "$LWIPOPTS"; then
23+
sed -i 's/^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA.*/#define LWIP_NUM_NETIF_CLIENT_DATA 1/' "$LWIPOPTS"
24+
else
25+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_NUM_NETIF_CLIENT_DATA 1' "$LWIPOPTS"
26+
fi
27+
}
28+
29+
patch_lwipopts "$LWIPOPTS_20"
30+
patch_lwipopts "$LWIPOPTS_21"
31+
32+
if [ ! -f "$LWIPOPTS_20" ] && [ ! -f "$LWIPOPTS_21" ]; then
33+
echo "PREBUILD BK7231U: WARN no lwipopts.h found for known lwIP paths"
34+
fi
35+
36+
if [ -f "$BEKEN_SRC_MK" ]; then
37+
if grep -q 'src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"; then
38+
echo "PREBUILD BK7231U: mdns.c already present in beken_src.mk"
39+
else
40+
echo "PREBUILD BK7231U: adding mdns.c to lwIP source list"
41+
sed -i '/src\/apps\/mqtt\/mqtt\.c/a SRC_LWIP_C += ./beken378/func/lwip_intf/$(LWIP_VERSION)/src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"
42+
fi
43+
else
44+
echo "PREBUILD BK7231U: WARN beken_src.mk not found: $BEKEN_SRC_MK"
45+
fi

platforms/BK723x/pre_build_7238.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
3+
BEKEN_SRC_MK="sdk/beken_freertos_sdk/beken378/beken_src.mk"
4+
LWIPOPTS_20="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.0.2/port/lwipopts.h"
5+
LWIPOPTS_21="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.1.3/port/lwipopts.h"
6+
7+
patch_lwipopts() {
8+
LWIPOPTS="$1"
9+
10+
if [ ! -f "$LWIPOPTS" ]; then
11+
return
12+
fi
13+
14+
echo "PREBUILD BK7238: enabling lwIP mDNS options in $LWIPOPTS"
15+
16+
if grep -q '^[[:space:]]*#define LWIP_MDNS_RESPONDER' "$LWIPOPTS"; then
17+
sed -i 's/^[[:space:]]*#define LWIP_MDNS_RESPONDER.*/#define LWIP_MDNS_RESPONDER 1/' "$LWIPOPTS"
18+
else
19+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_MDNS_RESPONDER 1' "$LWIPOPTS"
20+
fi
21+
22+
if grep -q '^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA' "$LWIPOPTS"; then
23+
sed -i 's/^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA.*/#define LWIP_NUM_NETIF_CLIENT_DATA 1/' "$LWIPOPTS"
24+
else
25+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_NUM_NETIF_CLIENT_DATA 1' "$LWIPOPTS"
26+
fi
27+
}
28+
29+
patch_lwipopts "$LWIPOPTS_20"
30+
patch_lwipopts "$LWIPOPTS_21"
31+
32+
if [ ! -f "$LWIPOPTS_20" ] && [ ! -f "$LWIPOPTS_21" ]; then
33+
echo "PREBUILD BK7238: WARN no lwipopts.h found for known lwIP paths"
34+
fi
35+
36+
if [ -f "$BEKEN_SRC_MK" ]; then
37+
if grep -q 'src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"; then
38+
echo "PREBUILD BK7238: mdns.c already present in beken_src.mk"
39+
else
40+
echo "PREBUILD BK7238: adding mdns.c to lwIP source list"
41+
sed -i '/src\/apps\/mqtt\/mqtt\.c/a SRC_LWIP_C += ./beken378/func/lwip_intf/$(LWIP_VERSION)/src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"
42+
fi
43+
else
44+
echo "PREBUILD BK7238: WARN beken_src.mk not found: $BEKEN_SRC_MK"
45+
fi

platforms/BK723x/pre_build_7252.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
3+
BEKEN_SRC_MK="sdk/beken_freertos_sdk/beken378/beken_src.mk"
4+
LWIPOPTS_20="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.0.2/port/lwipopts.h"
5+
LWIPOPTS_21="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.1.3/port/lwipopts.h"
6+
7+
patch_lwipopts() {
8+
LWIPOPTS="$1"
9+
10+
if [ ! -f "$LWIPOPTS" ]; then
11+
return
12+
fi
13+
14+
echo "PREBUILD BK7252: enabling lwIP mDNS options in $LWIPOPTS"
15+
16+
if grep -q '^[[:space:]]*#define LWIP_MDNS_RESPONDER' "$LWIPOPTS"; then
17+
sed -i 's/^[[:space:]]*#define LWIP_MDNS_RESPONDER.*/#define LWIP_MDNS_RESPONDER 1/' "$LWIPOPTS"
18+
else
19+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_MDNS_RESPONDER 1' "$LWIPOPTS"
20+
fi
21+
22+
if grep -q '^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA' "$LWIPOPTS"; then
23+
sed -i 's/^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA.*/#define LWIP_NUM_NETIF_CLIENT_DATA 1/' "$LWIPOPTS"
24+
else
25+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_NUM_NETIF_CLIENT_DATA 1' "$LWIPOPTS"
26+
fi
27+
}
28+
29+
patch_lwipopts "$LWIPOPTS_20"
30+
patch_lwipopts "$LWIPOPTS_21"
31+
32+
if [ ! -f "$LWIPOPTS_20" ] && [ ! -f "$LWIPOPTS_21" ]; then
33+
echo "PREBUILD BK7252: WARN no lwipopts.h found for known lwIP paths"
34+
fi
35+
36+
if [ -f "$BEKEN_SRC_MK" ]; then
37+
if grep -q 'src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"; then
38+
echo "PREBUILD BK7252: mdns.c already present in beken_src.mk"
39+
else
40+
echo "PREBUILD BK7252: adding mdns.c to lwIP source list"
41+
sed -i '/src\/apps\/mqtt\/mqtt\.c/a SRC_LWIP_C += ./beken378/func/lwip_intf/$(LWIP_VERSION)/src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"
42+
fi
43+
else
44+
echo "PREBUILD BK7252: WARN beken_src.mk not found: $BEKEN_SRC_MK"
45+
fi
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
3+
BEKEN_SRC_MK="sdk/beken_freertos_sdk/beken378/beken_src.mk"
4+
LWIPOPTS_20="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.0.2/port/lwipopts.h"
5+
LWIPOPTS_21="sdk/beken_freertos_sdk/beken378/func/lwip_intf/lwip-2.1.3/port/lwipopts.h"
6+
7+
patch_lwipopts() {
8+
LWIPOPTS="$1"
9+
10+
if [ ! -f "$LWIPOPTS" ]; then
11+
return
12+
fi
13+
14+
echo "PREBUILD BK7252N: enabling lwIP mDNS options in $LWIPOPTS"
15+
16+
if grep -q '^[[:space:]]*#define LWIP_MDNS_RESPONDER' "$LWIPOPTS"; then
17+
sed -i 's/^[[:space:]]*#define LWIP_MDNS_RESPONDER.*/#define LWIP_MDNS_RESPONDER 1/' "$LWIPOPTS"
18+
else
19+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_MDNS_RESPONDER 1' "$LWIPOPTS"
20+
fi
21+
22+
if grep -q '^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA' "$LWIPOPTS"; then
23+
sed -i 's/^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA.*/#define LWIP_NUM_NETIF_CLIENT_DATA 1/' "$LWIPOPTS"
24+
else
25+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_NUM_NETIF_CLIENT_DATA 1' "$LWIPOPTS"
26+
fi
27+
}
28+
29+
patch_lwipopts "$LWIPOPTS_20"
30+
patch_lwipopts "$LWIPOPTS_21"
31+
32+
if [ ! -f "$LWIPOPTS_20" ] && [ ! -f "$LWIPOPTS_21" ]; then
33+
echo "PREBUILD BK7252N: WARN no lwipopts.h found for known lwIP paths"
34+
fi
35+
36+
if [ -f "$BEKEN_SRC_MK" ]; then
37+
if grep -q 'src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"; then
38+
echo "PREBUILD BK7252N: mdns.c already present in beken_src.mk"
39+
else
40+
echo "PREBUILD BK7252N: adding mdns.c to lwIP source list"
41+
sed -i '/src\/apps\/mqtt\/mqtt\.c/a SRC_LWIP_C += ./beken378/func/lwip_intf/$(LWIP_VERSION)/src/apps/mdns/mdns.c' "$BEKEN_SRC_MK"
42+
fi
43+
else
44+
echo "PREBUILD BK7252N: WARN beken_src.mk not found: $BEKEN_SRC_MK"
45+
fi

platforms/BL602/pre_build.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,16 @@
3636
# and then in pre_build.sh you apply this patch with:
3737
#
3838
# patch -p 1 -d sdk/OpenBL602 < platforms/BL602/my_change.diff
39+
40+
LWIP_MK="sdk/OpenBL602/components/network/lwip/bouffalo.mk"
41+
42+
if [ -f "$LWIP_MK" ]; then
43+
if grep -q 'src/apps/mdns' "$LWIP_MK"; then
44+
echo "PREBUILD BL602: lwIP mdns source already enabled"
45+
else
46+
echo "PREBUILD BL602: enabling lwIP mdns source"
47+
sed -i 's@src/apps/mqtt@src/apps/mqtt src/apps/mdns@' "$LWIP_MK"
48+
fi
49+
else
50+
echo "PREBUILD BL602: WARN lwip component makefile not found: $LWIP_MK"
51+
fi

platforms/ECR6600/OpenBeken.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
CFLAGS += -DPLATFORM_ECR6600 -Wno-error -DTCP_MSL=3000
2+
CFLAGS += -DENABLE_DRIVER_MDNS=1
23
VPATH += $(TOPDIR)/../../src
34
VPATH += $(TOPDIR)/../../platforms/ECR6600
45

platforms/ECR6600/pre_build.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/bin/sh
2+
3+
LWIP_MAKEDEFS="sdk/OpenECR6600/components/lwip/Make.defs"
4+
LWIPOPTS="sdk/OpenECR6600/components/lwip/contrib/port/lwipopts.h"
5+
6+
if [ -f "$LWIPOPTS" ]; then
7+
echo "PREBUILD ECR6600: enabling lwIP mDNS options"
8+
9+
if grep -q '^[[:space:]]*#define LWIP_MDNS_RESPONDER' "$LWIPOPTS"; then
10+
sed -i 's/^[[:space:]]*#define LWIP_MDNS_RESPONDER.*/#define LWIP_MDNS_RESPONDER 1/' "$LWIPOPTS"
11+
else
12+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_MDNS_RESPONDER 1' "$LWIPOPTS"
13+
fi
14+
15+
if grep -q '^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA' "$LWIPOPTS"; then
16+
sed -i 's/^[[:space:]]*#define LWIP_NUM_NETIF_CLIENT_DATA.*/#define LWIP_NUM_NETIF_CLIENT_DATA 1/' "$LWIPOPTS"
17+
else
18+
sed -i '/^[[:space:]]*#define LWIP_IGMP[[:space:]]\+1/a #define LWIP_NUM_NETIF_CLIENT_DATA 1' "$LWIPOPTS"
19+
fi
20+
else
21+
echo "PREBUILD ECR6600: WARN lwipopts not found: $LWIPOPTS"
22+
fi
23+
24+
if [ -f "$LWIP_MAKEDEFS" ]; then
25+
if grep -q 'src/apps/mdns' "$LWIP_MAKEDEFS"; then
26+
echo "PREBUILD ECR6600: lwIP mdns source path already present"
27+
else
28+
echo "PREBUILD ECR6600: adding lwIP mdns source path"
29+
sed -i '/:lwip\/lwip-2.1.0\/src\/apps\/sntp \\/a \ :lwip/lwip-2.1.0/src/apps/mdns \\' "$LWIP_MAKEDEFS"
30+
fi
31+
32+
if grep -q '[[:space:]]mdns\.c' "$LWIP_MAKEDEFS"; then
33+
echo "PREBUILD ECR6600: mdns.c already present in lwIP source list"
34+
else
35+
echo "PREBUILD ECR6600: adding mdns.c to lwIP source list"
36+
sed -i 's/mqtt\.c sntp\.c \\/mqtt.c sntp.c mdns.c \\/' "$LWIP_MAKEDEFS"
37+
fi
38+
else
39+
echo "PREBUILD ECR6600: WARN lwip Make.defs not found: $LWIP_MAKEDEFS"
40+
fi

platforms/ESP-IDF/CMakeLists.txt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,19 @@ cmake_minimum_required(VERSION 3.16.0)
22
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
33
add_compile_definitions(PLATFORM_ESPIDF=1)
44
add_compile_definitions(LWIP_NOASSERT=1)
5-
#add_definitions( -DUSER_SW_VER="$ENV{APP_VERSION}" )
6-
#add_definitions( -DOBK_VARIANT=$ENV{OBK_VARIANT} )
5+
set(ENABLE_MDNS_ESPIDF 0)
6+
if("$ENV{IDF_TARGET}" STREQUAL "esp32" OR "$ENV{IDF_TARGET}" STREQUAL "esp32c6" OR "$ENV{IDF_TARGET}" STREQUAL "esp32s3")
7+
set(ENABLE_MDNS_ESPIDF 1)
8+
# C3 2M CI image overflows app partition; keep mDNS enabled only for 4M variant for now.
9+
elseif("$ENV{IDF_TARGET}" STREQUAL "esp32c3" AND "$ENV{OBK_VARIANT}" STREQUAL "2")
10+
set(ENABLE_MDNS_ESPIDF 1)
11+
endif()
12+
if(ENABLE_MDNS_ESPIDF)
13+
idf_build_set_property(COMPILE_OPTIONS "-DENABLE_DRIVER_MDNS=1" APPEND)
14+
idf_build_set_property(COMPILE_OPTIONS "-DLWIP_MDNS_RESPONDER=1" APPEND)
15+
endif()
16+
add_definitions( -DUSER_SW_VER="$ENV{APP_VERSION}" )
17+
add_definitions( -DOBK_VARIANT=$ENV{OBK_VARIANT} )
718
include_directories("$ENV{IDF_PATH}/../../libraries/berry/src")
819
include_directories("$ENV{IDF_PATH}/../../include")
920

platforms/ESP-IDF/main/CMakeLists.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,20 @@ set(PROJ_ALL_SRC
2121
${BERRY_SRC_C}
2222
../../../libraries/mqtt_patched.c
2323
)
24+
set(ENABLE_MDNS_ESPIDF 0)
25+
if("$ENV{IDF_TARGET}" STREQUAL "esp32" OR "$ENV{IDF_TARGET}" STREQUAL "esp32c6" OR "$ENV{IDF_TARGET}" STREQUAL "esp32s3")
26+
set(ENABLE_MDNS_ESPIDF 1)
27+
# C3 2M CI image overflows app partition; keep mDNS sources only for 4M variant for now.
28+
elseif("$ENV{IDF_TARGET}" STREQUAL "esp32c3" AND "$ENV{OBK_VARIANT}" STREQUAL "2")
29+
set(ENABLE_MDNS_ESPIDF 1)
30+
endif()
31+
if(ENABLE_MDNS_ESPIDF)
32+
list(APPEND PROJ_ALL_SRC
33+
../../../sdk/esp-idf/components/lwip/lwip/src/apps/mdns/mdns.c
34+
../../../sdk/esp-idf/components/lwip/lwip/src/apps/mdns/mdns_domain.c
35+
../../../sdk/esp-idf/components/lwip/lwip/src/apps/mdns/mdns_out.c
36+
)
37+
endif()
2438
idf_component_register(SRCS ${PROJ_ALL_SRC} WHOLE_ARCHIVE
2539
PRIV_REQUIRES mqtt lwip esp_wifi nvs_flash esp_driver_tsens esp_driver_gpio esp_pm esp_partition app_update esp_adc esp_driver_uart esp_driver_ledc spi_flash esp_driver_spi esp_driver_gptimer)
2640

0 commit comments

Comments
 (0)