Pulling in the latest SystemK (with new BLE). #2

Merged
Joe merged 16 commits from New_BLE into main 2025-06-08 22:05:06 +00:00
41 changed files with 2107 additions and 1484 deletions
Showing only changes of commit 4d39769ad3 - Show all commits

View file

@ -41,7 +41,7 @@ This software in turn makes use of the following open-source software libraries
| espressif/button | 3.5.0 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/button | espressif/button | 3.5.0 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/button
| espressif/led_strip | 2.5.3 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/led_strip | espressif/led_strip | 2.5.3 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/led_strip
| espressif/usb_host_msc | 1.1.3 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/usb_host_msc | espressif/usb_host_msc | 1.1.3 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/usb_host_msc
| espressif/mdns | 1.4.3 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/mdns | espressif/mdns | 1.8.2 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/espressif/mdns
| chmorgan/esp-audio-player | 1.0.7 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/chmorgan/esp-audio-player | chmorgan/esp-audio-player | 1.0.7 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://components.espressif.com/components/chmorgan/esp-audio-player
| esp-libhelix-mp3 | 1.0.3 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://github.com/chmorgan/esp-libhelix-mp3 | esp-libhelix-mp3 | 1.0.3 | [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) | https://github.com/chmorgan/esp-libhelix-mp3
| libhelix-mp3 | f443079 | [RPSL](https://github.com/chmorgan/libhelix-mp3/blob/master/LICENSE.txt) | https://github.com/chmorgan/libhelix-mp3/ | libhelix-mp3 | f443079 | [RPSL](https://github.com/chmorgan/libhelix-mp3/blob/master/LICENSE.txt) | https://github.com/chmorgan/libhelix-mp3/

@ -1 +1 @@
Subproject commit cb7204269140ba9c6dbe44ca5a5dbaf8c031f685 Subproject commit ba23026d13618bdcbf28717c64059f8229105aab

View file

@ -2,13 +2,13 @@ dependencies:
chmorgan/esp-audio-player: chmorgan/esp-audio-player:
component_hash: c8ac1998e9af863bc41b57e592f88d1a5791a0f891485122336ddabbf7a65033 component_hash: c8ac1998e9af863bc41b57e592f88d1a5791a0f891485122336ddabbf7a65033
dependencies: dependencies:
- name: idf
require: private
version: '>=5.0'
- name: chmorgan/esp-libhelix-mp3 - name: chmorgan/esp-libhelix-mp3
registry_url: https://components.espressif.com registry_url: https://components.espressif.com
require: private require: private
version: '>=1.0.0,<2.0.0' version: '>=1.0.0,<2.0.0'
- name: idf
require: private
version: '>=5.0'
source: source:
registry_url: https://components.espressif.com/ registry_url: https://components.espressif.com/
type: service type: service
@ -48,7 +48,7 @@ dependencies:
type: service type: service
version: 0.5.3 version: 0.5.3
espressif/mdns: espressif/mdns:
component_hash: d36b265164be5139f92de993f08f5ecaa0de0c0acbf84deee1f10bb5902d04ff component_hash: 3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5
dependencies: dependencies:
- name: idf - name: idf
require: private require: private
@ -56,7 +56,7 @@ dependencies:
source: source:
registry_url: https://components.espressif.com/ registry_url: https://components.espressif.com/
type: service type: service
version: 1.4.3 version: 1.8.2
espressif/usb_host_msc: espressif/usb_host_msc:
component_hash: efbf44743b0f1f1f808697a671064531ae4661ccbce84632637261f8f670b375 component_hash: efbf44743b0f1f1f808697a671064531ae4661ccbce84632637261f8f670b375
dependencies: dependencies:
@ -74,7 +74,7 @@ dependencies:
idf: idf:
source: source:
type: idf type: idf
version: 5.4.0 version: 5.4.1
direct_dependencies: direct_dependencies:
- chmorgan/esp-audio-player - chmorgan/esp-audio-player
- chmorgan/esp-libhelix-mp3 - chmorgan/esp-libhelix-mp3
@ -82,6 +82,6 @@ direct_dependencies:
- espressif/mdns - espressif/mdns
- espressif/usb_host_msc - espressif/usb_host_msc
- idf - idf
manifest_hash: 49abffad73ef20c1e9924d5aece4befeab0cbad25b99f353334b089de1f63639 manifest_hash: f5c8d387ca994b2af63c94d058483e5dbc3b25358a7313bd64bae630f91af785
target: esp32s3 target: esp32s3
version: 2.0.0 version: 2.0.0

View file

@ -7,9 +7,9 @@ dependencies:
espressif/usb_host_msc: "^1.1.2" espressif/usb_host_msc: "^1.1.2"
## Required IDF version (>=5.1 is required for the SPI backend of the led-strip component.) ## Required IDF version (>=5.1 is required for the SPI backend of the led-strip component.)
## We tested with 5.4.0. ## We tested with 5.4.1.
idf: idf:
version: ">=5.4.0" version: ">=5.4.1"
# # Put list of dependencies here # # Put list of dependencies here
# # For components maintained by Espressif: # # For components maintained by Espressif:

View file

@ -0,0 +1 @@
{"version": "1.0", "algorithm": "sha256", "created_at": "2025-05-21T14:03:59.451202+00:00", "files": [{"path": "audio_wav.cpp", "size": 2742, "hash": "0173276bfd7155a48bd65097a1f4226332f1cfca0f2f3a2e3991d0263e07c755"}, {"path": "CMakeLists.txt", "size": 562, "hash": "114fe1070608ac262a3cf576474d5d3822c0647752a05b552c2070a39e8f5728"}, {"path": "LICENSE", "size": 11357, "hash": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"}, {"path": "audio_log.h", "size": 576, "hash": "51a7703c4134cfcba1bbb19383040f0746ff63eac808493dae065bcba0c00bec"}, {"path": "idf_component.yml", "size": 235, "hash": "29cf66b0c80f2cd61ca1a4d2c14ce7c1cfc2a41d43769af5fd68d77807455d0c"}, {"path": "Kconfig", "size": 558, "hash": "23ddba45b3ad52d81f5d87d1e3abcda26c7c4ad8a35785238ca547d10ae71f7d"}, {"path": "README.md", "size": 2607, "hash": "3be3b9d978ff3abdaa8cd8807cb188e933899ad8d0b23adeb8804281f8a63e8a"}, {"path": "audio_wav.h", "size": 769, "hash": "1268ee31f5e4634176a02b3edabe7f5aac329a194c8bc1046003e738c1c09710"}, {"path": "audio_mp3.h", "size": 1439, "hash": "e92b93472e5e48a727fb1272fdc5df49909eaf029b57e3735c943e2d5ee33194"}, {"path": "audio_player.cpp", "size": 20981, "hash": "d0dee83848b92c9cee4c1ccf8592ea0a2ff8c557072086b85953faeb06c7f2d4"}, {"path": "audio_decode_types.h", "size": 1495, "hash": "4c1b9ad889d5bf47acaa2a7b2af4dc344dca1930a6e5d66757767771dc9ef036"}, {"path": "audio_mp3.cpp", "size": 6473, "hash": "04323a25c2dffaa786227b325aed1fcf88c62e13e3cbd70625ceea933bb0f29e"}, {"path": "test/CMakeLists.txt", "size": 209, "hash": "1c2a31c6395cf0f6da3c3fa76328c4cb28378ac7c98446cd6bc7de0354f12090"}, {"path": "test/component.mk", "size": 162, "hash": "ed835bf3a13eaa2b23cc2951c05aa95c30e45ea5e10e38fe5f076f56c05e2564"}, {"path": "test/audio_player_test.c", "size": 10163, "hash": "cc80ea420735d269cf556190d8b1f426a06713c0976a775683d22f4ef8ae8a0a"}, {"path": "test/gs-16b-1c-44100hz.mp3", "size": 127329, "hash": "370106381828533c9e2333f98bdcbcfadc4ab8d136a469b6735a69ed8429479a"}, {"path": "include/audio_player.h", "size": 5825, "hash": "1025180854f01a86d742253aad3fb0c2851658646ac01d0081d3b780dcd34243"}]}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"version": "1.0", "algorithm": "sha256", "created_at": "2025-05-21T17:11:18.402865+00:00", "files": [{"path": "CMakeLists.txt", "size": 1116, "hash": "eacdf5693bba590f1074ced12f0e007189cff911fb21d560c7a43f50bc92c507"}, {"path": "CHANGELOG.md", "size": 3981, "hash": "1a63116a793a094eda12821c693eef4cfa527460a1e246e225e3d17dfda25836"}, {"path": "idf_component.yml", "size": 510, "hash": "3a517f9da500b559b9eefd8c51d923a22877244fcb7176828c1234d9884cfc6f"}, {"path": "Kconfig", "size": 1685, "hash": "1757e9b3841620ccbe82aeeb290b56272fe380bb4c9e97dd16e18b9759ef9089"}, {"path": "button_adc.c", "size": 11331, "hash": "1ee57a45cb6159bf0cda302a6d5ea4c1c54dd5eec809b0a1d7d29c2faad27f27"}, {"path": "README.md", "size": 1729, "hash": "adc2c93639fabed0e77ff75b209c13f37bb97a5c09fe0b9d3688376faeda1735"}, {"path": "iot_button.c", "size": 33045, "hash": "277ba6996fde9ab3db5d01653d9e1fe320ff93cb2f02631d8814d250a3fac891"}, {"path": "button_gpio.c", "size": 3925, "hash": "239d7b63787a5202bb405b53f925f3434833b52fa544bb33611a251be15935b0"}, {"path": "button_matrix.c", "size": 1999, "hash": "691e6eb06047560c38380dae8e1c6a94eef20ad86ba6f2213a5d816d5b2ccf1f"}, {"path": "license.txt", "size": 11358, "hash": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30"}, {"path": "include/button_gpio.h", "size": 2452, "hash": "992a6ce6f66b7f94cde1afc92cf5d8fcf920555da0e1c52eb480316b0a936f3c"}, {"path": "include/button_matrix.h", "size": 3180, "hash": "10a723e33904510a2c8b14b8e76a1bb3faa96cf8e817dbf619ee96c9795f3d26"}, {"path": "include/iot_button.h", "size": 10841, "hash": "e7f79b9814b563a76feb0fc5c551180bb622bd9f0b3992b79c99b0943e7454ca"}, {"path": "include/button_adc.h", "size": 2212, "hash": "6bfbe1bca0c2f1f56f1d9df1281a1f8ff79b06bedf5ca4f98ea85fa38d3f46ba"}, {"path": "test_apps/CMakeLists.txt", "size": 350, "hash": "234fd5c4b8c16494d8169c1490c649d23306e4e20f08ae14b128cd56c17893d5"}, {"path": "test_apps/sdkconfig.defaults", "size": 213, "hash": "9a34a6cb08c49ec24007587e0c5d492f44b5a862d9c0f583cf9f6f643669b564"}, {"path": "test_apps/pytest_button.py", "size": 755, "hash": "c5e633c4175f5d6475f1a10cb6fb800629dc82faf86bc6058ac4b90c6e3104d4"}, {"path": "test_apps/sdkconfig.ci.pm", "size": 40, "hash": "8b029cdbfd0be5a83a993d666c113c78c6178ec63f9588db9e1abdd25177b230"}, {"path": "examples/button_power_save/CMakeLists.txt", "size": 246, "hash": "e321ec2107e16cea7753b5c572215f181647ef0472893b2d256e28ed050180fe"}, {"path": "examples/button_power_save/sdkconfig.ci.ls_manually", "size": 42, "hash": "097c0ff2b0685db3ee4bd8f5b24521405b1bac4367096f213e66262ad7561344"}, {"path": "examples/button_power_save/README.md", "size": 1961, "hash": "9ace22e9ed47a4d6e2b7a840aaf0381009a563a51d6d3772498960ffc02952a9"}, {"path": "examples/button_power_save/sdkconfig.defaults", "size": 351, "hash": "86844871a1893fdf8556bce5f8717cc9b3cf02e494500827d94420e4f5139679"}, {"path": "examples/button_power_save/main/CMakeLists.txt", "size": 75, "hash": "27d6d39ef0cb6a9097984b41e080b09f7ff972339a0bb4ddf771db4001cb9782"}, {"path": "examples/button_power_save/main/idf_component.yml", "size": 132, "hash": "2c38ba849171d296b2f88464205379937df88f0905b5c2d28a9c8976e264a4e8"}, {"path": "examples/button_power_save/main/main.c", "size": 3904, "hash": "b97617f77ae05cf880dc2c8a80b787ff6642f884062682ac195885b740bfa839"}, {"path": "examples/button_power_save/main/Kconfig.projbuild", "size": 3514, "hash": "2a755747a11b0257d05b68cfb1adfbede1f6cfeda06f6a8d8ee53822ff9ba8e2"}, {"path": "test_apps/main/CMakeLists.txt", "size": 316, "hash": "8afad4a219b31741c2f8be6682747817b99b993269a7b4f1366bc156cd02f214"}, {"path": "test_apps/main/button_test.c", "size": 28035, "hash": "75c92c63b016c4ac7b47faa2a302c771f6d6eb7e27a2da675cdcc65cc0172118"}]}

View file

@ -0,0 +1 @@
{"version": "1.0", "algorithm": "sha256", "created_at": "2025-05-21T16:40:48.657779+00:00", "files": [{"path": "package_manager.cmake", "size": 2125, "hash": "1e7f6ba9cdcc8fc9f0a7dde5c5e1ec03ef699c210caf381181cc4a35f95f0ca1"}, {"path": "CMakeLists.txt", "size": 25, "hash": "1b07b2a81841a6e12fc589126fca551dfa39cd6db0646f802740972b48a2cf1b"}, {"path": "CHANGELOG.md", "size": 2592, "hash": "4779bc99678035cbd48addd07e6c5246213d7a93fb34ec469eb838fb64840c63"}, {"path": "idf_component.yml", "size": 255, "hash": "8c21ccd7648224f955d0f8e694fca3e5c469db87ceea389ebbf66b6e5c5da239"}, {"path": "Kconfig", "size": 2524, "hash": "e776e604c4395f8aa8d869a363d042e08eeea372887ff0e2b57535455f1bf3c0"}, {"path": "README.md", "size": 1340, "hash": "26229d274cc1e1add77cfe70eab0997059458894aff066ee2e227bf2c1fd9b7e"}, {"path": "project_include.cmake", "size": 354, "hash": "ca2f4fbba0ae2524cabe17844a79021d587cce6ec5fef53b36c21ae4d7257972"}, {"path": "gen_single_bin.cmake", "size": 1104, "hash": "34bc2100e339538edc47e86aa63cbeb7bc98c06a93105027a4603ba7f96b1dc2"}, {"path": "relinker.cmake", "size": 3288, "hash": "52ac755b429ee9cf6a45fd22121485d69f883d56c3b9f5d8eaa325156a070ad3"}, {"path": "license.txt", "size": 11358, "hash": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30"}, {"path": "cmake_utilities.cmake", "size": 137, "hash": "307c1feb59598ff2351967009f1c6424820178b1da6903f40cc01dd52eb703ef"}, {"path": "gen_compressed_ota.cmake", "size": 727, "hash": "8309efee996bd2e5da0f55d26a0df1d199efb9c562eba07e410d49744401659a"}, {"path": "gcc.cmake", "size": 3585, "hash": "47674577242d2be68d6bc1c71bbe664a7e1d0047170ee1fe78f71b987c810620"}, {"path": "test_apps/CMakeLists.txt", "size": 374, "hash": "a851b56d24811c45175a960701596367c9a575b34a6fa8b7ab01bc2c1334c129"}, {"path": "test_apps/pytest_cmake_utilities.py", "size": 583, "hash": "5f60d02cdcaed3503bc259c51cff9af0c267887c86be825c097ed8f57a6a13fa"}, {"path": "docs/gen_compressed_ota.md", "size": 1620, "hash": "c7779477fb4989379898ad18b70af7738ff2bffe624e5d549a3b776aa983ca0b"}, {"path": "docs/gcc.md", "size": 3494, "hash": "908f5108283c7e3d0a046711ab8215fe6ccd59f09924d55cef0bbaf6a5a4ff3a"}, {"path": "docs/relinker.md", "size": 2963, "hash": "0cbffe09354d7e66ac05cf6de02bcdcf76dd2db69072e998e15ee268a5dd2384"}, {"path": "scripts/gen_custom_ota.py", "size": 13418, "hash": "64822db67089a6fdcde610d5ec31369aaa62441441f09d2ed8d4aae2a396e353"}, {"path": "scripts/relinker/configuration.py", "size": 6406, "hash": "7f5c80c0dd3504bcab89b585786b805544a8e39b17b59fc0ef911cb0813fba09"}, {"path": "scripts/relinker/relinker.py", "size": 9978, "hash": "07c1ec82d9f1843d3a12ade88295610ab78cc21c2dd90b02fe314d88d9085eac"}, {"path": "scripts/relinker/examples/esp32c2/object.csv", "size": 6783, "hash": "761467fbbe3adbf544adcfaa50b2fca1a79208786070784b000961c43a23744d"}, {"path": "scripts/relinker/examples/esp32c2/library.csv", "size": 1156, "hash": "5ca43f2ded3f5b3e1d1398949c86080ac1ff7d06e7d147dc5ecf21d0ec034e61"}, {"path": "scripts/relinker/examples/esp32c2/function.csv", "size": 22369, "hash": "5d608e6d35d7a2a6f5ac317ea5e993443b5baef0ce788eb2464aca37246bcb29"}, {"path": "test_apps/main/CMakeLists.txt", "size": 157, "hash": "1b582805eb1d7d515bac70643308b0bacf18dccee565df745051267635b09c1a"}, {"path": "test_apps/main/test_cmake_utilities.c", "size": 1848, "hash": "6ff7025750c8c59bbd379af839def4427c6f59149e19885ac674740e45eccdac"}, {"path": "test_apps/components/TEST-component2/CMakeLists.txt", "size": 285, "hash": "441a6b60573d3146386d56ccbf12cf4451eeef01cac2905b18259bb2a1912b64"}, {"path": "test_apps/components/TEST-component2/idf_component.yml", "size": 230, "hash": "dbbd16387c7b0ea7378126e87cafdf8b3bc58fdcf472e7d853b38ea24d813a2b"}, {"path": "test_apps/components/TEST-component2/test_component2.h", "size": 213, "hash": "42a6a9a527a8b78a6373a432a1d2c8c540bae91d7c604bbc12be5f709a16fb37"}, {"path": "test_apps/components/TEST-component2/test_component2.c", "size": 256, "hash": "d949b85dd1ce045b724cd463ac6549b372db9935ed07dc3dad250660d3b3f27f"}, {"path": "test_apps/components/test_component1/CMakeLists.txt", "size": 285, "hash": "441a6b60573d3146386d56ccbf12cf4451eeef01cac2905b18259bb2a1912b64"}, {"path": "test_apps/components/test_component1/test_component1.h", "size": 213, "hash": "e77976253127f05cbbfae7a635c9455d584b66cceae69ef8f8465fd4ce85aadf"}, {"path": "test_apps/components/test_component1/idf_component.yml", "size": 230, "hash": "70631b0633adbaa92bb26785dee0369f889cc93bc9a22635f1553f864522607b"}, {"path": "test_apps/components/test_component1/test_component1.c", "size": 256, "hash": "fe9ce9a01d53cfbc1970f0a9ee9c8d382c399e0c9aeb93ce843af01bd70b5411"}]}

View file

@ -1 +1 @@
d36b265164be5139f92de993f08f5ecaa0de0c0acbf84deee1f10bb5902d04ff 3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5

View file

@ -3,6 +3,6 @@ commitizen:
bump_message: 'bump(mdns): $current_version -> $new_version' bump_message: 'bump(mdns): $current_version -> $new_version'
pre_bump_hooks: python ../../ci/changelog.py mdns pre_bump_hooks: python ../../ci/changelog.py mdns
tag_format: mdns-v$version tag_format: mdns-v$version
version: 1.4.3 version: 1.8.2
version_files: version_files:
- idf_component.yml - idf_component.yml

View file

@ -1,5 +1,92 @@
# Changelog # Changelog
## [1.8.2](https://github.com/espressif/esp-protocols/commits/mdns-v1.8.2)
### Bug Fixes
- Fix parsing incorrect txt records ([8fd2c99f](https://github.com/espressif/esp-protocols/commit/8fd2c99f))
## [1.8.1](https://github.com/espressif/esp-protocols/commits/mdns-v1.8.1)
### Bug Fixes
- Fix potential task delete race ([8ca45f34](https://github.com/espressif/esp-protocols/commit/8ca45f34))
## [1.8.0](https://github.com/espressif/esp-protocols/commits/mdns-v1.8.0)
### Features
- Add version keys ([e01e67e7](https://github.com/espressif/esp-protocols/commit/e01e67e7))
### Bug Fixes
- Reformat mdns sources per indent-cont=120 ([c7663cde](https://github.com/espressif/esp-protocols/commit/c7663cde))
## [1.7.0](https://github.com/espressif/esp-protocols/commits/mdns-v1.7.0)
### Features
- Support user defined allocators ([88162d1f](https://github.com/espressif/esp-protocols/commit/88162d1f))
- Allow allocate memory with configured caps ([7d29b476](https://github.com/espressif/esp-protocols/commit/7d29b476))
### Bug Fixes
- Adjust some formatting per indent-cont=120 ([5b2077e3](https://github.com/espressif/esp-protocols/commit/5b2077e3))
## [1.6.0](https://github.com/espressif/esp-protocols/commits/mdns-v1.6.0)
### Features
- support allocating mDNS task from SPIRAM ([8fcad10c](https://github.com/espressif/esp-protocols/commit/8fcad10c))
### Bug Fixes
- Use correct task delete function ([eb4ab524](https://github.com/espressif/esp-protocols/commit/eb4ab524))
### Updated
- ci(mdns): Fix mdns host test layers with static task creation ([0690eba3](https://github.com/espressif/esp-protocols/commit/0690eba3))
## [1.5.3](https://github.com/espressif/esp-protocols/commits/mdns-v1.5.3)
### Bug Fixes
- Fix responder to ignore only invalid queries ([cd07228f](https://github.com/espressif/esp-protocols/commit/cd07228f), [#754](https://github.com/espressif/esp-protocols/issues/754))
## [1.5.2](https://github.com/espressif/esp-protocols/commits/mdns-v1.5.2)
### Bug Fixes
- Fix potential NULL deref when sending sub-buy ([e7273c46](https://github.com/espressif/esp-protocols/commit/e7273c46))
- Fix _mdns_append_fqdn excessive stack usage ([bd23c233](https://github.com/espressif/esp-protocols/commit/bd23c233))
## [1.5.1](https://github.com/espressif/esp-protocols/commits/mdns-v1.5.1)
### Bug Fixes
- Fix incorrect memory free for mdns browse ([4451a8c5](https://github.com/espressif/esp-protocols/commit/4451a8c5))
## [1.5.0](https://github.com/espressif/esp-protocols/commits/mdns-v1.5.0)
### Features
- supported removal of subtype when updating service ([4ad88e29](https://github.com/espressif/esp-protocols/commit/4ad88e29))
### Bug Fixes
- Fix zero-sized VLA clang-tidy warnings ([196198ec](https://github.com/espressif/esp-protocols/commit/196198ec))
- Remove dead store to arg variable shared ([e838bf03](https://github.com/espressif/esp-protocols/commit/e838bf03))
- Fix name mangling not to use strcpy() ([99b54ac3](https://github.com/espressif/esp-protocols/commit/99b54ac3))
- Fix potential null derefernce in _mdns_execute_action() ([f5be2f41](https://github.com/espressif/esp-protocols/commit/f5be2f41))
- Fix AFL test mock per espressif/esp-idf@a5bc08fb55c ([3d8835cf](https://github.com/espressif/esp-protocols/commit/3d8835cf))
- Fixed potential out-of-bound interface error ([24f55ce9](https://github.com/espressif/esp-protocols/commit/24f55ce9))
- Fixed incorrect error conversion ([8f8516cc](https://github.com/espressif/esp-protocols/commit/8f8516cc))
- Fixed potential overflow when allocating txt data ([75a8e864](https://github.com/espressif/esp-protocols/commit/75a8e864))
- Move MDNS_NAME_BUF_LEN to public headers ([907087c0](https://github.com/espressif/esp-protocols/commit/907087c0), [#724](https://github.com/espressif/esp-protocols/issues/724))
- Cleanup includes in mdns.c ([68a9e148](https://github.com/espressif/esp-protocols/commit/68a9e148), [#725](https://github.com/espressif/esp-protocols/issues/725))
- Allow advertizing service with port==0 ([827ea65f](https://github.com/espressif/esp-protocols/commit/827ea65f))
- Fixed complier warning if MDNS_MAX_SERVICES==0 ([95377216](https://github.com/espressif/esp-protocols/commit/95377216), [#611](https://github.com/espressif/esp-protocols/issues/611))
## [1.4.3](https://github.com/espressif/esp-protocols/commits/mdns-v1.4.3) ## [1.4.3](https://github.com/espressif/esp-protocols/commits/mdns-v1.4.3)
### Features ### Features

View file

@ -10,15 +10,17 @@ else()
set(MDNS_CONSOLE "") set(MDNS_CONSOLE "")
endif() endif()
set(MDNS_MEMORY "mdns_mem_caps.c")
idf_build_get_property(target IDF_TARGET) idf_build_get_property(target IDF_TARGET)
if(${target} STREQUAL "linux") if(${target} STREQUAL "linux")
set(dependencies esp_netif_linux esp_event) set(dependencies esp_netif_linux esp_event)
set(private_dependencies esp_timer console esp_system) set(private_dependencies esp_timer console esp_system)
set(srcs "mdns.c" ${MDNS_NETWORKING} ${MDNS_CONSOLE}) set(srcs "mdns.c" ${MDNS_MEMORY} ${MDNS_NETWORKING} ${MDNS_CONSOLE})
else() else()
set(dependencies lwip console esp_netif) set(dependencies lwip console esp_netif)
set(private_dependencies esp_timer esp_wifi) set(private_dependencies esp_timer esp_wifi)
set(srcs "mdns.c" ${MDNS_NETWORKING} ${MDNS_CONSOLE}) set(srcs "mdns.c" ${MDNS_MEMORY} ${MDNS_NETWORKING} ${MDNS_CONSOLE})
endif() endif()
idf_component_register( idf_component_register(
@ -32,7 +34,9 @@ if(${target} STREQUAL "linux")
target_link_libraries(${COMPONENT_LIB} PRIVATE "-lbsd") target_link_libraries(${COMPONENT_LIB} PRIVATE "-lbsd")
endif() endif()
if(CONFIG_ETH_ENABLED) if(CONFIG_ETH_ENABLED)
idf_component_optional_requires(PRIVATE esp_eth) idf_component_optional_requires(PRIVATE esp_eth)
endif() endif()
idf_component_get_property(MDNS_VERSION ${COMPONENT_NAME} COMPONENT_VERSION)
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DESP_MDNS_VERSION_NUMBER=\"${MDNS_VERSION}\"")

View file

@ -61,6 +61,48 @@ menu "mDNS"
default 0x0 if MDNS_TASK_AFFINITY_CPU0 default 0x0 if MDNS_TASK_AFFINITY_CPU0
default 0x1 if MDNS_TASK_AFFINITY_CPU1 default 0x1 if MDNS_TASK_AFFINITY_CPU1
menu "MDNS Memory Configuration"
choice MDNS_TASK_MEMORY_ALLOC_FROM
prompt "Select mDNS task create on which type of memory"
default MDNS_TASK_CREATE_FROM_INTERNAL
config MDNS_TASK_CREATE_FROM_SPIRAM
bool "mDNS task creates on the SPIRAM (READ HELP)"
depends on (SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC)
help
mDNS task creates on the SPIRAM.
This option requires FreeRTOS component to allow creating
tasks on the external memory.
Please read the documentation about FREERTOS_TASK_CREATE_ALLOW_EXT_MEM
config MDNS_TASK_CREATE_FROM_INTERNAL
bool "mDNS task creates on the internal RAM"
endchoice
choice MDNS_MEMORY_ALLOC_FROM
prompt "Select mDNS memory allocation type"
default MDNS_MEMORY_ALLOC_INTERNAL
config MDNS_MEMORY_ALLOC_SPIRAM
bool "Allocate mDNS memory from SPIRAM"
depends on (SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC)
config MDNS_MEMORY_ALLOC_INTERNAL
bool "Allocate mDNS memory from internal RAM"
endchoice
config MDNS_MEMORY_CUSTOM_IMPL
bool "Implement custom memory functions"
default n
help
Enable to implement custom memory functions for mDNS library.
This option is useful when the application wants to use custom
memory allocation functions for mDNS library.
endmenu # MDNS Memory Configuration
config MDNS_SERVICE_ADD_TIMEOUT_MS config MDNS_SERVICE_ADD_TIMEOUT_MS
int "mDNS adding service timeout (ms)" int "mDNS adding service timeout (ms)"
range 10 30000 range 10 30000

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Unlicense OR CC0-1.0 * SPDX-License-Identifier: Unlicense OR CC0-1.0
*/ */
@ -44,12 +44,12 @@ static void initialise_mdns(void)
char *hostname = generate_hostname(); char *hostname = generate_hostname();
//initialize mDNS //initialize mDNS
ESP_ERROR_CHECK( mdns_init() ); ESP_ERROR_CHECK(mdns_init());
//set mDNS hostname (required if you want to advertise services) //set mDNS hostname (required if you want to advertise services)
ESP_ERROR_CHECK( mdns_hostname_set(hostname) ); ESP_ERROR_CHECK(mdns_hostname_set(hostname));
ESP_LOGI(TAG, "mdns hostname set to: [%s]", hostname); ESP_LOGI(TAG, "mdns hostname set to: [%s]", hostname);
//set default mDNS instance name //set default mDNS instance name
ESP_ERROR_CHECK( mdns_instance_name_set(EXAMPLE_MDNS_INSTANCE) ); ESP_ERROR_CHECK(mdns_instance_name_set(EXAMPLE_MDNS_INSTANCE));
//structure with TXT records //structure with TXT records
mdns_txt_item_t serviceTxtData[3] = { mdns_txt_item_t serviceTxtData[3] = {
@ -59,10 +59,10 @@ static void initialise_mdns(void)
}; };
//initialize service //initialize service
ESP_ERROR_CHECK( mdns_service_add("ESP32-WebServer", "_http", "_tcp", 80, serviceTxtData, 3) ); ESP_ERROR_CHECK(mdns_service_add("ESP32-WebServer", "_http", "_tcp", 80, serviceTxtData, 3));
ESP_ERROR_CHECK( mdns_service_subtype_add_for_host("ESP32-WebServer", "_http", "_tcp", NULL, "_server") ); ESP_ERROR_CHECK(mdns_service_subtype_add_for_host("ESP32-WebServer", "_http", "_tcp", NULL, "_server"));
#if CONFIG_MDNS_MULTIPLE_INSTANCE #if CONFIG_MDNS_MULTIPLE_INSTANCE
ESP_ERROR_CHECK( mdns_service_add("ESP32-WebServer1", "_http", "_tcp", 80, NULL, 0) ); ESP_ERROR_CHECK(mdns_service_add("ESP32-WebServer1", "_http", "_tcp", 80, NULL, 0));
#endif #endif
#if CONFIG_MDNS_PUBLISH_DELEGATE_HOST #if CONFIG_MDNS_PUBLISH_DELEGATE_HOST
@ -78,15 +78,15 @@ static void initialise_mdns(void)
addr6.addr.type = ESP_IPADDR_TYPE_V6; addr6.addr.type = ESP_IPADDR_TYPE_V6;
addr4.next = &addr6; addr4.next = &addr6;
addr6.next = NULL; addr6.next = NULL;
ESP_ERROR_CHECK( mdns_delegate_hostname_add(delegated_hostname, &addr4) ); ESP_ERROR_CHECK(mdns_delegate_hostname_add(delegated_hostname, &addr4));
ESP_ERROR_CHECK( mdns_service_add_for_host("test0", "_http", "_tcp", delegated_hostname, 1234, serviceTxtData, 3) ); ESP_ERROR_CHECK(mdns_service_add_for_host("test0", "_http", "_tcp", delegated_hostname, 1234, serviceTxtData, 3));
free(delegated_hostname); free(delegated_hostname);
#endif // CONFIG_MDNS_PUBLISH_DELEGATE_HOST #endif // CONFIG_MDNS_PUBLISH_DELEGATE_HOST
//add another TXT item //add another TXT item
ESP_ERROR_CHECK( mdns_service_txt_item_set("_http", "_tcp", "path", "/foobar") ); ESP_ERROR_CHECK(mdns_service_txt_item_set("_http", "_tcp", "path", "/foobar"));
//change TXT item value //change TXT item value
ESP_ERROR_CHECK( mdns_service_txt_item_set_with_explicit_value_len("_http", "_tcp", "u", "admin", strlen("admin")) ); ESP_ERROR_CHECK(mdns_service_txt_item_set_with_explicit_value_len("_http", "_tcp", "u", "admin", strlen("admin")));
free(hostname); free(hostname);
} }
@ -314,6 +314,8 @@ void app_main(void)
ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_netif_init());
ESP_ERROR_CHECK(esp_event_loop_create_default()); ESP_ERROR_CHECK(esp_event_loop_create_default());
ESP_LOGI(TAG, "mDNS Ver: %s", ESP_MDNS_VERSION_NUMBER);
initialise_mdns(); initialise_mdns();
/* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig. /* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
@ -375,12 +377,12 @@ static void query_mdns_host_with_gethostbyname(char *host)
while (res->h_addr_list[i] != NULL) { while (res->h_addr_list[i] != NULL) {
ESP_LOGI(TAG, "gethostbyname: %s resolved to: %s", host, ESP_LOGI(TAG, "gethostbyname: %s resolved to: %s", host,
#if defined(CONFIG_LWIP_IPV6) && defined(CONFIG_LWIP_IPV4) #if defined(CONFIG_LWIP_IPV6) && defined(CONFIG_LWIP_IPV4)
res->h_addrtype == AF_INET ? inet_ntoa(*(struct in_addr *) (res->h_addr_list[i])) : res->h_addrtype == AF_INET ? inet_ntoa(*(struct in_addr *)(res->h_addr_list[i])) :
inet6_ntoa(*(struct in6_addr *) (res->h_addr_list[i])) inet6_ntoa(*(struct in6_addr *)(res->h_addr_list[i]))
#elif defined(CONFIG_LWIP_IPV6) #elif defined(CONFIG_LWIP_IPV6)
inet6_ntoa(*(struct in6_addr *) (res->h_addr_list[i])) inet6_ntoa(*(struct in6_addr *)(res->h_addr_list[i]))
#else #else
inet_ntoa(*(struct in_addr *) (res->h_addr_list[i])) inet_ntoa(*(struct in_addr *)(res->h_addr_list[i]))
#endif #endif
); );
i++; i++;

View file

@ -7,7 +7,7 @@ documentation: https://docs.espressif.com/projects/esp-protocols/mdns/docs/lates
issues: https://github.com/espressif/esp-protocols/issues issues: https://github.com/espressif/esp-protocols/issues
repository: git://github.com/espressif/esp-protocols.git repository: git://github.com/espressif/esp-protocols.git
repository_info: repository_info:
commit_sha: 4394f845fccf93bc49111808c24bbd25fbbb20f4 commit_sha: e9d7350219dfb5e39eb56e5ef60c094190888c55
path: components/mdns path: components/mdns
url: https://github.com/espressif/esp-protocols/tree/master/components/mdns url: https://github.com/espressif/esp-protocols/tree/master/components/mdns
version: 1.4.3 version: 1.8.2

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -10,6 +10,7 @@
extern "C" { extern "C" {
#endif #endif
#include "sdkconfig.h"
#include <esp_netif.h> #include <esp_netif.h>
#define MDNS_TYPE_A 0x0001 #define MDNS_TYPE_A 0x0001
@ -21,6 +22,13 @@ extern "C" {
#define MDNS_TYPE_NSEC 0x002F #define MDNS_TYPE_NSEC 0x002F
#define MDNS_TYPE_ANY 0x00FF #define MDNS_TYPE_ANY 0x00FF
#if defined(CONFIG_LWIP_IPV6) && defined(CONFIG_MDNS_RESPOND_REVERSE_QUERIES)
#define MDNS_NAME_MAX_LEN (64+4) // Need to account for IPv6 reverse queries (64 char address + ".ip6" )
#else
#define MDNS_NAME_MAX_LEN 64 // Maximum string length of hostname, instance, service and proto
#endif
#define MDNS_NAME_BUF_LEN (MDNS_NAME_MAX_LEN+1) // Maximum char buffer size to hold hostname, instance, service or proto
/** /**
* @brief Asynchronous query handle * @brief Asynchronous query handle
*/ */
@ -365,7 +373,7 @@ esp_err_t mdns_service_instance_name_set(const char *service_type, const char *p
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_instance_name_set_for_host(const char *instance_old, const char *service_type, const char *proto, const char *hostname, esp_err_t mdns_service_instance_name_set_for_host(const char *instance_old, const char *service_type, const char *proto, const char *hostname,
const char *instance_name); const char *instance_name);
/** /**
* @brief Set service port * @brief Set service port
@ -399,7 +407,7 @@ esp_err_t mdns_service_port_set(const char *service_type, const char *proto, uin
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_port_set_for_host(const char *instance, const char *service_type, const char *proto, const char *hostname, esp_err_t mdns_service_port_set_for_host(const char *instance, const char *service_type, const char *proto, const char *hostname,
uint16_t port); uint16_t port);
/** /**
* @brief Replace all TXT items for service * @brief Replace all TXT items for service
@ -474,7 +482,7 @@ esp_err_t mdns_service_txt_item_set(const char *service_type, const char *proto,
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service_type, const char *proto, esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service_type, const char *proto,
const char *key, const char *value, uint8_t value_len); const char *key, const char *value, uint8_t value_len);
/** /**
* @brief Set/Add TXT item for service TXT record with hostname * @brief Set/Add TXT item for service TXT record with hostname
@ -495,7 +503,7 @@ esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service_
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_txt_item_set_for_host(const char *instance, const char *service_type, const char *proto, const char *hostname, esp_err_t mdns_service_txt_item_set_for_host(const char *instance, const char *service_type, const char *proto, const char *hostname,
const char *key, const char *value); const char *key, const char *value);
/** /**
* @brief Set/Add TXT item for service TXT record with hostname and txt value length * @brief Set/Add TXT item for service TXT record with hostname and txt value length
@ -515,8 +523,8 @@ esp_err_t mdns_service_txt_item_set_for_host(const char *instance, const char *s
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char *instance, const char *service_type, const char *proto, esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char *instance, const char *service_type, const char *proto,
const char *hostname, const char *key, const char *hostname, const char *key,
const char *value, uint8_t value_len); const char *value, uint8_t value_len);
/** /**
* @brief Remove TXT item for service TXT record * @brief Remove TXT item for service TXT record
@ -549,7 +557,7 @@ esp_err_t mdns_service_txt_item_remove(const char *service_type, const char *pro
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_txt_item_remove_for_host(const char *instance, const char *service_type, const char *proto, const char *hostname, esp_err_t mdns_service_txt_item_remove_for_host(const char *instance, const char *service_type, const char *proto, const char *hostname,
const char *key); const char *key);
/** /**
* @brief Add a subtype for service. * @brief Add a subtype for service.
@ -567,7 +575,7 @@ esp_err_t mdns_service_txt_item_remove_for_host(const char *instance, const char
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_subtype_add_for_host(const char *instance_name, const char *service_type, const char *proto, esp_err_t mdns_service_subtype_add_for_host(const char *instance_name, const char *service_type, const char *proto,
const char *hostname, const char *subtype); const char *hostname, const char *subtype);
/** /**
* @brief Remove a subtype for service. * @brief Remove a subtype for service.
@ -584,7 +592,7 @@ esp_err_t mdns_service_subtype_add_for_host(const char *instance_name, const cha
* - ESP_ERR_NOT_FOUND Service not found * - ESP_ERR_NOT_FOUND Service not found
*/ */
esp_err_t mdns_service_subtype_remove_for_host(const char *instance_name, const char *service_type, const char *proto, esp_err_t mdns_service_subtype_remove_for_host(const char *instance_name, const char *service_type, const char *proto,
const char *hostname, const char *subtype); const char *hostname, const char *subtype);
/** /**
* @brief Add multiple subtypes for service at once. * @brief Add multiple subtypes for service at once.
@ -603,7 +611,7 @@ esp_err_t mdns_service_subtype_remove_for_host(const char *instance_name, const
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_subtype_add_multiple_items_for_host(const char *instance_name, const char *service_type, const char *proto, esp_err_t mdns_service_subtype_add_multiple_items_for_host(const char *instance_name, const char *service_type, const char *proto,
const char *hostname, mdns_subtype_item_t subtype[], uint8_t num_items); const char *hostname, mdns_subtype_item_t subtype[], uint8_t num_items);
/** /**
* @brief Update subtype for service. * @brief Update subtype for service.
@ -624,7 +632,7 @@ esp_err_t mdns_service_subtype_add_multiple_items_for_host(const char *instance_
* - ESP_ERR_NO_MEM memory error * - ESP_ERR_NO_MEM memory error
*/ */
esp_err_t mdns_service_subtype_update_multiple_items_for_host(const char *instance_name, const char *service_type, const char *proto, esp_err_t mdns_service_subtype_update_multiple_items_for_host(const char *instance_name, const char *service_type, const char *proto,
const char *hostname, mdns_subtype_item_t subtype[], uint8_t num_items); const char *hostname, mdns_subtype_item_t subtype[], uint8_t num_items);
/** /**
* @brief Remove and free all services from mDNS server * @brief Remove and free all services from mDNS server
* *
@ -678,7 +686,7 @@ bool mdns_query_async_get_results(mdns_search_once_t *search, uint32_t timeout,
* NULL otherwise. * NULL otherwise.
*/ */
mdns_search_once_t *mdns_query_async_new(const char *name, const char *service_type, const char *proto, uint16_t type, mdns_search_once_t *mdns_query_async_new(const char *name, const char *service_type, const char *proto, uint16_t type,
uint32_t timeout, size_t max_results, mdns_query_notify_t notifier); uint32_t timeout, size_t max_results, mdns_query_notify_t notifier);
/** /**
* @brief Generic mDNS query * @brief Generic mDNS query
@ -817,7 +825,7 @@ esp_err_t mdns_lookup_delegated_service(const char *instance, const char *servic
* - ESP_ERR_INVALID_ARG parameter error * - ESP_ERR_INVALID_ARG parameter error
*/ */
esp_err_t mdns_lookup_selfhosted_service(const char *instance, const char *service_type, const char *proto, size_t max_results, esp_err_t mdns_lookup_selfhosted_service(const char *instance, const char *service_type, const char *proto, size_t max_results,
mdns_result_t **result); mdns_result_t **result);
/** /**
* @brief Query mDNS for A record * @brief Query mDNS for A record

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -10,6 +10,7 @@
#include "mdns.h" #include "mdns.h"
#include "mdns_private.h" #include "mdns_private.h"
#include "inttypes.h" #include "inttypes.h"
#include "mdns_mem_caps.h"
static const char *ip_protocol_str[] = {"V4", "V6", "MAX"}; static const char *ip_protocol_str[] = {"V4", "V6", "MAX"};
@ -110,7 +111,7 @@ static void register_mdns_query_a(void)
.argtable = &mdns_query_a_args .argtable = &mdns_query_a_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
#endif /* CONFIG_LWIP_IPV4 */ #endif /* CONFIG_LWIP_IPV4 */
@ -169,7 +170,7 @@ static void register_mdns_query_aaaa(void)
.argtable = &mdns_query_a_args .argtable = &mdns_query_a_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
#endif /* CONFIG_LWIP_IPV6 */ #endif /* CONFIG_LWIP_IPV6 */
@ -231,7 +232,7 @@ static void register_mdns_query_srv(void)
.argtable = &mdns_query_srv_args .argtable = &mdns_query_srv_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
static struct { static struct {
@ -293,7 +294,7 @@ static void register_mdns_query_txt(void)
.argtable = &mdns_query_txt_args .argtable = &mdns_query_txt_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
static struct { static struct {
@ -359,7 +360,7 @@ static void register_mdns_query_ptr(void)
.argtable = &mdns_query_ptr_args .argtable = &mdns_query_ptr_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
static struct { static struct {
@ -427,7 +428,7 @@ static void register_mdns_query_ip(void)
.argtable = &mdns_query_ip_args .argtable = &mdns_query_ip_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
static struct { static struct {
@ -496,7 +497,7 @@ static void register_mdns_query_svc(void)
.argtable = &mdns_query_svc_args .argtable = &mdns_query_svc_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
static struct { static struct {
@ -513,15 +514,15 @@ static int cmd_mdns_init(int argc, char **argv)
return 1; return 1;
} }
ESP_ERROR_CHECK( mdns_init() ); ESP_ERROR_CHECK(mdns_init());
if (mdns_init_args.hostname->sval[0]) { if (mdns_init_args.hostname->sval[0]) {
ESP_ERROR_CHECK( mdns_hostname_set(mdns_init_args.hostname->sval[0]) ); ESP_ERROR_CHECK(mdns_hostname_set(mdns_init_args.hostname->sval[0]));
printf("MDNS: Hostname: %s\n", mdns_init_args.hostname->sval[0]); printf("MDNS: Hostname: %s\n", mdns_init_args.hostname->sval[0]);
} }
if (mdns_init_args.instance->count) { if (mdns_init_args.instance->count) {
ESP_ERROR_CHECK( mdns_instance_name_set(mdns_init_args.instance->sval[0]) ); ESP_ERROR_CHECK(mdns_instance_name_set(mdns_init_args.instance->sval[0]));
printf("MDNS: Instance: %s\n", mdns_init_args.instance->sval[0]); printf("MDNS: Instance: %s\n", mdns_init_args.instance->sval[0]);
} }
@ -542,7 +543,7 @@ static void register_mdns_init(void)
.argtable = &mdns_init_args .argtable = &mdns_init_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init));
} }
static int cmd_mdns_free(int argc, char **argv) static int cmd_mdns_free(int argc, char **argv)
@ -561,7 +562,7 @@ static void register_mdns_free(void)
.argtable = NULL .argtable = NULL
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_free) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_free));
} }
static struct { static struct {
@ -582,7 +583,7 @@ static int cmd_mdns_set_hostname(int argc, char **argv)
return 1; return 1;
} }
ESP_ERROR_CHECK( mdns_hostname_set(mdns_set_hostname_args.hostname->sval[0]) ); ESP_ERROR_CHECK(mdns_hostname_set(mdns_set_hostname_args.hostname->sval[0]));
return 0; return 0;
} }
@ -599,7 +600,7 @@ static void register_mdns_set_hostname(void)
.argtable = &mdns_set_hostname_args .argtable = &mdns_set_hostname_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_set_hostname) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_set_hostname));
} }
static struct { static struct {
@ -620,7 +621,7 @@ static int cmd_mdns_set_instance(int argc, char **argv)
return 1; return 1;
} }
ESP_ERROR_CHECK( mdns_instance_name_set(mdns_set_instance_args.instance->sval[0]) ); ESP_ERROR_CHECK(mdns_instance_name_set(mdns_set_instance_args.instance->sval[0]));
return 0; return 0;
} }
@ -637,14 +638,14 @@ static void register_mdns_set_instance(void)
.argtable = &mdns_set_instance_args .argtable = &mdns_set_instance_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_set_instance) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_set_instance));
} }
static mdns_txt_item_t *_convert_items(const char **values, int count) static mdns_txt_item_t *_convert_items(const char **values, int count)
{ {
int i = 0, e; int i = 0, e;
const char *value = NULL; const char *value = NULL;
mdns_txt_item_t *items = (mdns_txt_item_t *) malloc(sizeof(mdns_txt_item_t) * count); mdns_txt_item_t *items = (mdns_txt_item_t *) mdns_mem_malloc(sizeof(mdns_txt_item_t) * count);
if (!items) { if (!items) {
printf("ERROR: No Memory!\n"); printf("ERROR: No Memory!\n");
goto fail; goto fail;
@ -661,15 +662,15 @@ static mdns_txt_item_t *_convert_items(const char **values, int count)
} }
int var_len = esign - value; int var_len = esign - value;
int val_len = strlen(value) - var_len - 1; int val_len = strlen(value) - var_len - 1;
char *var = (char *)malloc(var_len + 1); char *var = (char *)mdns_mem_malloc(var_len + 1);
if (var == NULL) { if (var == NULL) {
printf("ERROR: No Memory!\n"); printf("ERROR: No Memory!\n");
goto fail; goto fail;
} }
char *val = (char *)malloc(val_len + 1); char *val = (char *)mdns_mem_malloc(val_len + 1);
if (val == NULL) { if (val == NULL) {
printf("ERROR: No Memory!\n"); printf("ERROR: No Memory!\n");
free(var); mdns_mem_free(var);
goto fail; goto fail;
} }
memcpy(var, value, var_len); memcpy(var, value, var_len);
@ -685,10 +686,10 @@ static mdns_txt_item_t *_convert_items(const char **values, int count)
fail: fail:
for (e = 0; e < i; e++) { for (e = 0; e < i; e++) {
free((char *)items[e].key); mdns_mem_free((char *)items[e].key);
free((char *)items[e].value); mdns_mem_free((char *)items[e].value);
} }
free(items); mdns_mem_free(items);
return NULL; return NULL;
} }
@ -734,9 +735,9 @@ static int cmd_mdns_service_add(int argc, char **argv)
} }
} }
ESP_ERROR_CHECK( mdns_service_add_for_host(instance, mdns_add_args.service->sval[0], mdns_add_args.proto->sval[0], ESP_ERROR_CHECK(mdns_service_add_for_host(instance, mdns_add_args.service->sval[0], mdns_add_args.proto->sval[0],
host, mdns_add_args.port->ival[0], items, mdns_add_args.txt->count) ); host, mdns_add_args.port->ival[0], items, mdns_add_args.txt->count));
free(items); mdns_mem_free(items);
return 0; return 0;
} }
@ -758,7 +759,7 @@ static void register_mdns_service_add(void)
.argtable = &mdns_add_args .argtable = &mdns_add_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_add) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_add));
} }
static struct { static struct {
@ -791,7 +792,7 @@ static int cmd_mdns_service_remove(int argc, char **argv)
host = mdns_remove_args.host->sval[0]; host = mdns_remove_args.host->sval[0];
} }
ESP_ERROR_CHECK( mdns_service_remove_for_host(instance, mdns_remove_args.service->sval[0], mdns_remove_args.proto->sval[0], host) ); ESP_ERROR_CHECK(mdns_service_remove_for_host(instance, mdns_remove_args.service->sval[0], mdns_remove_args.proto->sval[0], host));
return 0; return 0;
} }
@ -811,7 +812,7 @@ static void register_mdns_service_remove(void)
.argtable = &mdns_remove_args .argtable = &mdns_remove_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_remove) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_remove));
} }
static struct { static struct {
@ -869,7 +870,7 @@ static void register_mdns_service_instance_set(void)
.argtable = &mdns_service_instance_set_args .argtable = &mdns_service_instance_set_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_add) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_add));
} }
static struct { static struct {
@ -927,7 +928,7 @@ static void register_mdns_service_port_set(void)
.argtable = &mdns_service_port_set_args .argtable = &mdns_service_port_set_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_add) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_add));
} }
static struct { static struct {
@ -970,8 +971,8 @@ static int cmd_mdns_service_txt_replace(int argc, char **argv)
} }
} }
ESP_ERROR_CHECK( mdns_service_txt_set_for_host(instance, mdns_txt_replace_args.service->sval[0], mdns_txt_replace_args.proto->sval[0], host, items, mdns_txt_replace_args.txt->count) ); ESP_ERROR_CHECK(mdns_service_txt_set_for_host(instance, mdns_txt_replace_args.service->sval[0], mdns_txt_replace_args.proto->sval[0], host, items, mdns_txt_replace_args.txt->count));
free(items); mdns_mem_free(items);
return 0; return 0;
} }
@ -992,7 +993,7 @@ static void register_mdns_service_txt_replace(void)
.argtable = &mdns_txt_replace_args .argtable = &mdns_txt_replace_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_txt_set) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_txt_set));
} }
static struct { static struct {
@ -1028,7 +1029,7 @@ static int cmd_mdns_service_txt_set(int argc, char **argv)
printf("MDNS: Service for delegated host: %s\n", host); printf("MDNS: Service for delegated host: %s\n", host);
} }
ESP_ERROR_CHECK( mdns_service_txt_item_set_for_host(instance, mdns_txt_set_args.service->sval[0], mdns_txt_set_args.proto->sval[0], host, mdns_txt_set_args.var->sval[0], mdns_txt_set_args.value->sval[0]) ); ESP_ERROR_CHECK(mdns_service_txt_item_set_for_host(instance, mdns_txt_set_args.service->sval[0], mdns_txt_set_args.proto->sval[0], host, mdns_txt_set_args.var->sval[0], mdns_txt_set_args.value->sval[0]));
return 0; return 0;
} }
@ -1050,7 +1051,7 @@ static void register_mdns_service_txt_set(void)
.argtable = &mdns_txt_set_args .argtable = &mdns_txt_set_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_txt_set) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_txt_set));
} }
static struct { static struct {
@ -1082,7 +1083,7 @@ static int cmd_mdns_service_txt_remove(int argc, char **argv)
if (mdns_txt_remove_args.host->count && mdns_txt_remove_args.host->sval[0]) { if (mdns_txt_remove_args.host->count && mdns_txt_remove_args.host->sval[0]) {
host = mdns_txt_remove_args.host->sval[0]; host = mdns_txt_remove_args.host->sval[0];
} }
ESP_ERROR_CHECK( mdns_service_txt_item_remove_for_host(instance, mdns_txt_remove_args.service->sval[0], mdns_txt_remove_args.proto->sval[0], host, mdns_txt_remove_args.var->sval[0]) ); ESP_ERROR_CHECK(mdns_service_txt_item_remove_for_host(instance, mdns_txt_remove_args.service->sval[0], mdns_txt_remove_args.proto->sval[0], host, mdns_txt_remove_args.var->sval[0]));
return 0; return 0;
} }
@ -1103,7 +1104,7 @@ static void register_mdns_service_txt_remove(void)
.argtable = &mdns_txt_remove_args .argtable = &mdns_txt_remove_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_txt_remove) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_txt_remove));
} }
static int cmd_mdns_service_remove_all(int argc, char **argv) static int cmd_mdns_service_remove_all(int argc, char **argv)
@ -1122,7 +1123,7 @@ static void register_mdns_service_remove_all(void)
.argtable = NULL .argtable = NULL
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_free) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_free));
} }
#define MDNS_MAX_LOOKUP_RESULTS CONFIG_MDNS_MAX_SERVICES #define MDNS_MAX_LOOKUP_RESULTS CONFIG_MDNS_MAX_SERVICES
@ -1189,7 +1190,7 @@ static void register_mdns_lookup_service(void)
.argtable = &mdns_lookup_service_args .argtable = &mdns_lookup_service_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_lookup_service) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_lookup_service));
} }
static struct { static struct {
@ -1237,7 +1238,7 @@ static void register_mdns_delegate_host(void)
.argtable = &mdns_delegate_host_args .argtable = &mdns_delegate_host_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_delegate_host) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_delegate_host));
} }
static struct { static struct {
@ -1278,7 +1279,7 @@ static void register_mdns_undelegate_host(void)
.argtable = &mdns_undelegate_host_args .argtable = &mdns_undelegate_host_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_undelegate_host) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_undelegate_host));
} }
static struct { static struct {
@ -1310,7 +1311,7 @@ static int cmd_mdns_service_subtype(int argc, char **argv)
if (mdns_service_subtype_args.host->count && mdns_service_subtype_args.host->sval[0]) { if (mdns_service_subtype_args.host->count && mdns_service_subtype_args.host->sval[0]) {
host = mdns_service_subtype_args.host->sval[0]; host = mdns_service_subtype_args.host->sval[0];
} }
ESP_ERROR_CHECK( mdns_service_subtype_add_for_host(instance, mdns_service_subtype_args.service->sval[0], mdns_service_subtype_args.proto->sval[0], host, mdns_service_subtype_args.sub->sval[0]) ); ESP_ERROR_CHECK(mdns_service_subtype_add_for_host(instance, mdns_service_subtype_args.service->sval[0], mdns_service_subtype_args.proto->sval[0], host, mdns_service_subtype_args.sub->sval[0]));
return 0; return 0;
} }
@ -1331,7 +1332,7 @@ static void register_mdns_service_subtype_set(void)
.argtable = &mdns_service_subtype_args .argtable = &mdns_service_subtype_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_service_sub) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_service_sub));
} }
static struct { static struct {
@ -1377,7 +1378,7 @@ static void register_mdns_browse(void)
.argtable = &mdns_browse_args .argtable = &mdns_browse_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_browse) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_browse));
} }
static int cmd_mdns_browse_del(int argc, char **argv) static int cmd_mdns_browse_del(int argc, char **argv)
@ -1410,7 +1411,7 @@ static void register_mdns_browse_del(void)
.argtable = &mdns_browse_args .argtable = &mdns_browse_args
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_browse_del) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_browse_del));
} }
void mdns_console_register(void) void mdns_console_register(void)

View file

@ -0,0 +1,96 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <string.h>
#include "sdkconfig.h"
#include "mdns_private.h"
#include "mdns_mem_caps.h"
#include "esp_heap_caps.h"
#include "esp_log.h"
#if CONFIG_MDNS_MEMORY_CUSTOM_IMPL
#define ALLOW_WEAK __attribute__((weak))
#else
#define ALLOW_WEAK
#endif
#if CONFIG_MDNS_TASK_CREATE_FROM_SPIRAM
#define MDNS_TASK_MEMORY_CAPS (MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT)
#define MDNS_TASK_MEMORY_LOG "SPIRAM"
#endif
#if CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL
#define MDNS_TASK_MEMORY_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT)
#define MDNS_TASK_MEMORY_LOG "internal RAM"
#endif
#if CONFIG_MDNS_MEMORY_ALLOC_SPIRAM
#define MDNS_MEMORY_CAPS (MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT)
#endif
#if CONFIG_MDNS_MEMORY_ALLOC_INTERNAL
#define MDNS_MEMORY_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT)
#endif
// Allocate memory from internal heap as default.
#ifndef MDNS_MEMORY_CAPS
#warning "No memory allocation method defined, using internal memory"
#define MDNS_MEMORY_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT)
#endif
#ifndef MDNS_TASK_MEMORY_CAPS
#define MDNS_TASK_MEMORY_CAPS (MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT)
#define MDNS_TASK_MEMORY_LOG "internal RAM"
#endif
void ALLOW_WEAK *mdns_mem_malloc(size_t size)
{
return heap_caps_malloc(size, MDNS_MEMORY_CAPS);
}
void ALLOW_WEAK *mdns_mem_calloc(size_t num, size_t size)
{
return heap_caps_calloc(num, size, MDNS_MEMORY_CAPS);
}
void ALLOW_WEAK mdns_mem_free(void *ptr)
{
heap_caps_free(ptr);
}
char ALLOW_WEAK *mdns_mem_strdup(const char *s)
{
if (!s) {
return NULL;
}
size_t len = strlen(s) + 1;
char *copy = (char *)heap_caps_malloc(len, MDNS_MEMORY_CAPS);
if (copy) {
memcpy(copy, s, len);
}
return copy;
}
char ALLOW_WEAK *mdns_mem_strndup(const char *s, size_t n)
{
if (!s) {
return NULL;
}
size_t len = strnlen(s, n);
char *copy = (char *)heap_caps_malloc(len + 1, MDNS_MEMORY_CAPS);
if (copy) {
memcpy(copy, s, len);
copy[len] = '\0';
}
return copy;
}
void ALLOW_WEAK *mdns_mem_task_malloc(size_t size)
{
ESP_LOGI("mdns_mem", "mDNS task will be created from %s", MDNS_TASK_MEMORY_LOG);
return heap_caps_malloc(size, MDNS_TASK_MEMORY_CAPS);
}
void ALLOW_WEAK mdns_mem_task_free(void *ptr)
{
heap_caps_free(ptr);
}

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -20,6 +20,7 @@
#include "esp_event.h" #include "esp_event.h"
#include "mdns_networking.h" #include "mdns_networking.h"
#include "esp_netif_net_stack.h" #include "esp_netif_net_stack.h"
#include "mdns_mem_caps.h"
/* /*
* MDNS Server Networking * MDNS Server Networking
@ -143,7 +144,7 @@ static void _udp_recv(void *arg, struct udp_pcb *upcb, struct pbuf *pb, const ip
pb = pb->next; pb = pb->next;
this_pb->next = NULL; this_pb->next = NULL;
mdns_rx_packet_t *packet = (mdns_rx_packet_t *)malloc(sizeof(mdns_rx_packet_t)); mdns_rx_packet_t *packet = (mdns_rx_packet_t *)mdns_mem_malloc(sizeof(mdns_rx_packet_t));
if (!packet) { if (!packet) {
HOOK_MALLOC_FAILED; HOOK_MALLOC_FAILED;
//missed packet - no memory //missed packet - no memory
@ -188,7 +189,7 @@ static void _udp_recv(void *arg, struct udp_pcb *upcb, struct pbuf *pb, const ip
bool found = false; bool found = false;
for (i = 0; i < MDNS_MAX_INTERFACES; i++) { for (i = 0; i < MDNS_MAX_INTERFACES; i++) {
netif = esp_netif_get_netif_impl(_mdns_get_esp_netif(i)); netif = esp_netif_get_netif_impl(_mdns_get_esp_netif(i));
if (s_interfaces[i].proto && netif && netif == ip_current_input_netif ()) { if (s_interfaces[i].proto && netif && netif == ip_current_input_netif()) {
#if LWIP_IPV4 #if LWIP_IPV4
if (packet->src.type == IPADDR_TYPE_V4) { if (packet->src.type == IPADDR_TYPE_V4) {
if ((packet->src.u_addr.ip4.addr & ip_2_ip4(&netif->netmask)->addr) != (ip_2_ip4(&netif->ip_addr)->addr & ip_2_ip4(&netif->netmask)->addr)) { if ((packet->src.u_addr.ip4.addr & ip_2_ip4(&netif->netmask)->addr) != (ip_2_ip4(&netif->ip_addr)->addr & ip_2_ip4(&netif->netmask)->addr)) {
@ -205,7 +206,7 @@ static void _udp_recv(void *arg, struct udp_pcb *upcb, struct pbuf *pb, const ip
if (!found || _mdns_send_rx_action(packet) != ESP_OK) { if (!found || _mdns_send_rx_action(packet) != ESP_OK) {
pbuf_free(this_pb); pbuf_free(this_pb);
free(packet); mdns_mem_free(packet);
} }
} }
@ -288,7 +289,7 @@ typedef struct {
static err_t _mdns_pcb_init_api(struct tcpip_api_call_data *api_call_msg) static err_t _mdns_pcb_init_api(struct tcpip_api_call_data *api_call_msg)
{ {
mdns_api_call_t *msg = (mdns_api_call_t *)api_call_msg; mdns_api_call_t *msg = (mdns_api_call_t *)api_call_msg;
msg->err = _udp_pcb_init(msg->tcpip_if, msg->ip_protocol); msg->err = _udp_pcb_init(msg->tcpip_if, msg->ip_protocol) == ESP_OK ? ERR_OK : ERR_IF;
return msg->err; return msg->err;
} }
@ -338,7 +339,7 @@ static err_t _mdns_udp_pcb_write_api(struct tcpip_api_call_data *api_call_msg)
msg->err = ERR_IF; msg->err = ERR_IF;
return ERR_IF; return ERR_IF;
} }
esp_err_t err = udp_sendto_if (_pcb_main, msg->pbt, msg->ip, msg->port, (struct netif *)nif); esp_err_t err = udp_sendto_if(_pcb_main, msg->pbt, msg->ip, msg->port, (struct netif *)nif);
pbuf_free(msg->pbt); pbuf_free(msg->pbt);
msg->err = err; msg->err = err;
return err; return err;
@ -393,5 +394,5 @@ size_t _mdns_get_packet_len(mdns_rx_packet_t *packet)
void _mdns_packet_free(mdns_rx_packet_t *packet) void _mdns_packet_free(mdns_rx_packet_t *packet)
{ {
pbuf_free(packet->pb); pbuf_free(packet->pb);
free(packet); mdns_mem_free(packet);
} }

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -21,6 +21,7 @@
#include <unistd.h> #include <unistd.h>
#include <sys/param.h> #include <sys/param.h>
#include "esp_log.h" #include "esp_log.h"
#include "mdns_mem_caps.h"
#if defined(CONFIG_IDF_TARGET_LINUX) #if defined(CONFIG_IDF_TARGET_LINUX)
#include <sys/ioctl.h> #include <sys/ioctl.h>
@ -87,9 +88,9 @@ size_t _mdns_get_packet_len(mdns_rx_packet_t *packet)
void _mdns_packet_free(mdns_rx_packet_t *packet) void _mdns_packet_free(mdns_rx_packet_t *packet)
{ {
free(packet->pb->payload); mdns_mem_free(packet->pb->payload);
free(packet->pb); mdns_mem_free(packet->pb);
free(packet); mdns_mem_free(packet);
} }
esp_err_t _mdns_pcb_deinit(mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol) esp_err_t _mdns_pcb_deinit(mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol)
@ -297,13 +298,13 @@ void sock_recv_task(void *arg)
inet_to_espaddr(&raddr, &addr, &port); inet_to_espaddr(&raddr, &addr, &port);
// Allocate the packet structure and pass it to the mdns main engine // Allocate the packet structure and pass it to the mdns main engine
mdns_rx_packet_t *packet = (mdns_rx_packet_t *) calloc(1, sizeof(mdns_rx_packet_t)); mdns_rx_packet_t *packet = (mdns_rx_packet_t *) mdns_mem_calloc(1, sizeof(mdns_rx_packet_t));
struct pbuf *packet_pbuf = calloc(1, sizeof(struct pbuf)); struct pbuf *packet_pbuf = mdns_mem_calloc(1, sizeof(struct pbuf));
uint8_t *buf = malloc(len); uint8_t *buf = mdns_mem_malloc(len);
if (packet == NULL || packet_pbuf == NULL || buf == NULL ) { if (packet == NULL || packet_pbuf == NULL || buf == NULL) {
free(buf); mdns_mem_free(buf);
free(packet_pbuf); mdns_mem_free(packet_pbuf);
free(packet); mdns_mem_free(packet);
HOOK_MALLOC_FAILED; HOOK_MALLOC_FAILED;
ESP_LOGE(TAG, "Failed to allocate the mdns packet"); ESP_LOGE(TAG, "Failed to allocate the mdns packet");
continue; continue;
@ -326,9 +327,9 @@ void sock_recv_task(void *arg)
packet->src.type == ESP_IPADDR_TYPE_V4 ? MDNS_IP_PROTOCOL_V4 : MDNS_IP_PROTOCOL_V6; packet->src.type == ESP_IPADDR_TYPE_V4 ? MDNS_IP_PROTOCOL_V4 : MDNS_IP_PROTOCOL_V6;
if (_mdns_send_rx_action(packet) != ESP_OK) { if (_mdns_send_rx_action(packet) != ESP_OK) {
ESP_LOGE(TAG, "_mdns_send_rx_action failed!"); ESP_LOGE(TAG, "_mdns_send_rx_action failed!");
free(packet->pb->payload); mdns_mem_free(packet->pb->payload);
free(packet->pb); mdns_mem_free(packet->pb);
free(packet); mdns_mem_free(packet);
} }
} }
} }
@ -341,7 +342,7 @@ static void mdns_networking_init(void)
{ {
if (s_run_sock_recv_task == false) { if (s_run_sock_recv_task == false) {
s_run_sock_recv_task = true; s_run_sock_recv_task = true;
xTaskCreate( sock_recv_task, "mdns recv task", 3 * 1024, NULL, 5, NULL ); xTaskCreate(sock_recv_task, "mdns recv task", 3 * 1024, NULL, 5, NULL);
} }
} }
@ -392,7 +393,7 @@ static int create_socket(esp_netif_t *netif)
} }
int on = 1; int on = 1;
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) ) < 0) { if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0) {
ESP_LOGE(TAG, "Failed setsockopt() to set SO_REUSEADDR. errno=%d: %s\n", errno, strerror(errno)); ESP_LOGE(TAG, "Failed setsockopt() to set SO_REUSEADDR. errno=%d: %s\n", errno, strerror(errno));
} }
// Bind the socket to any address // Bind the socket to any address
@ -419,7 +420,7 @@ static int create_socket(esp_netif_t *netif)
#endif // CONFIG_LWIP_IPV6 #endif // CONFIG_LWIP_IPV6
struct ifreq ifr; struct ifreq ifr;
esp_netif_get_netif_impl_name(netif, ifr.ifr_name); esp_netif_get_netif_impl_name(netif, ifr.ifr_name);
int ret = setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(struct ifreq)); int ret = setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(struct ifreq));
if (ret < 0) { if (ret < 0) {
ESP_LOGE(TAG, "\"%s\" Unable to bind socket to specified interface. errno=%d: %s", esp_netif_get_desc(netif), errno, strerror(errno)); ESP_LOGE(TAG, "\"%s\" Unable to bind socket to specified interface. errno=%d: %s", esp_netif_get_desc(netif), errno, strerror(errno));
goto err; goto err;

View file

@ -0,0 +1,54 @@
# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
import re
import sys
# Configurable prefix for memory functions
MDNS_MEM_PREFIX = 'mdns_mem_' # Change this to modify the prefix
def add_prefix_to_mem_funcs(content):
# List of memory functions to prefix
mem_funcs = [
'malloc',
'calloc',
'free',
'strdup',
'strndup'
]
# Create regex pattern matching the memory functions but not already prefixed ones
pattern = fr'(?<!{MDNS_MEM_PREFIX})(?<![\w])(' + '|'.join(mem_funcs) + r')(?=\s*\()'
# Replace all occurrences with configured prefix
modified = re.sub(pattern, fr'{MDNS_MEM_PREFIX}\1', content)
return modified
def process_file(filename):
try:
# Read the file
with open(filename, 'r') as f:
content = f.read()
# Add prefixes
modified = add_prefix_to_mem_funcs(content)
# Write back to file
with open(filename, 'w') as f:
f.write(modified)
print(f'Successfully processed {filename}')
except Exception as e:
print(f'Error processing {filename}: {str(e)}')
sys.exit(1)
if __name__ == '__main__':
if len(sys.argv) != 2:
print('Usage: python script.py <filename>')
sys.exit(1)
process_file(sys.argv[1])

View file

@ -0,0 +1,65 @@
/*
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#pragma once
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Allocate memory.
* @param size Number of bytes to allocate.
* @return Pointer to allocated memory, or NULL on failure.
*/
void *mdns_mem_malloc(size_t size);
/**
* @brief Allocate and zero memory.
* @param num Number of elements.
* @param size Size of each element.
* @return Pointer to allocated memory, or NULL on failure.
*/
void *mdns_mem_calloc(size_t num, size_t size);
/**
* @brief Free allocated memory.
* @param ptr Pointer to memory to free.
*/
void mdns_mem_free(void *ptr);
/**
* @brief Duplicate a string.
* @param s String to duplicate.
* @return Pointer to duplicated string, or NULL on failure.
*/
char *mdns_mem_strdup(const char *s);
/**
* @brief Duplicate a string with length limit.
* @param s String to duplicate.
* @param n Maximum number of characters to copy.
* @return Pointer to duplicated string, or NULL on failure.
*/
char *mdns_mem_strndup(const char *s, size_t n);
/**
* @brief Allocate memory for mDNS task.
* @param size Number of bytes to allocate.
* @return Pointer to allocated memory, or NULL on failure.
*/
void *mdns_mem_task_malloc(size_t size);
/**
* @brief Free allocated memory for mDNS task.
* @param ptr Pointer to memory to free.
*/
void mdns_mem_task_free(void *ptr);
#ifdef __cplusplus
}
#endif

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -103,12 +103,6 @@
#define MDNS_PACKET_QUEUE_LEN 16 // Maximum packets that can be queued for parsing #define MDNS_PACKET_QUEUE_LEN 16 // Maximum packets that can be queued for parsing
#define MDNS_ACTION_QUEUE_LEN CONFIG_MDNS_ACTION_QUEUE_LEN // Maximum actions pending to the server #define MDNS_ACTION_QUEUE_LEN CONFIG_MDNS_ACTION_QUEUE_LEN // Maximum actions pending to the server
#define MDNS_TXT_MAX_LEN 1024 // Maximum string length of text data in TXT record #define MDNS_TXT_MAX_LEN 1024 // Maximum string length of text data in TXT record
#if defined(CONFIG_LWIP_IPV6) && defined(CONFIG_MDNS_RESPOND_REVERSE_QUERIES)
#define MDNS_NAME_MAX_LEN (64+4) // Need to account for IPv6 reverse queries (64 char address + ".ip6" )
#else
#define MDNS_NAME_MAX_LEN 64 // Maximum string length of hostname, instance, service and proto
#endif
#define MDNS_NAME_BUF_LEN (MDNS_NAME_MAX_LEN+1) // Maximum char buffer size to hold hostname, instance, service or proto
#define MDNS_MAX_PACKET_SIZE 1460 // Maximum size of mDNS outgoing packet #define MDNS_MAX_PACKET_SIZE 1460 // Maximum size of mDNS outgoing packet
#define MDNS_HEAD_LEN 12 #define MDNS_HEAD_LEN 12

View file

@ -51,7 +51,7 @@ esp_err_t esp_netif_get_ip_info(esp_netif_t *esp_netif, esp_netif_ip_info_t *ip_
if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET) { if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET) {
char addr[20]; char addr[20];
struct sockaddr_in *pAddr = (struct sockaddr_in *) tmp->ifa_addr; struct sockaddr_in *pAddr = (struct sockaddr_in *) tmp->ifa_addr;
inet_ntop(AF_INET, &pAddr->sin_addr, addr, sizeof(addr) ); inet_ntop(AF_INET, &pAddr->sin_addr, addr, sizeof(addr));
if (strcmp(esp_netif->if_desc, tmp->ifa_name) == 0) { if (strcmp(esp_netif->if_desc, tmp->ifa_name) == 0) {
ESP_LOGD(TAG, "AF_INET4: %s: %s\n", tmp->ifa_name, addr); ESP_LOGD(TAG, "AF_INET4: %s: %s\n", tmp->ifa_name, addr);
memcpy(&ip_info->ip.addr, &pAddr->sin_addr, 4); memcpy(&ip_info->ip.addr, &pAddr->sin_addr, 4);
@ -105,7 +105,7 @@ esp_err_t esp_netif_get_ip6_linklocal(esp_netif_t *esp_netif, esp_ip6_addr_t *if
if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET6) { if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET6) {
char addr[64]; char addr[64];
struct sockaddr_in6 *pAddr = (struct sockaddr_in6 *)tmp->ifa_addr; struct sockaddr_in6 *pAddr = (struct sockaddr_in6 *)tmp->ifa_addr;
inet_ntop(AF_INET6, &pAddr->sin6_addr, addr, sizeof(addr) ); inet_ntop(AF_INET6, &pAddr->sin6_addr, addr, sizeof(addr));
if (strcmp(esp_netif->if_desc, tmp->ifa_name) == 0) { if (strcmp(esp_netif->if_desc, tmp->ifa_name) == 0) {
ESP_LOGD(TAG, "AF_INET6: %s: %s\n", tmp->ifa_name, addr); ESP_LOGD(TAG, "AF_INET6: %s: %s\n", tmp->ifa_name, addr);
memcpy(if_ip6->addr, &pAddr->sin6_addr, 4 * 4); memcpy(if_ip6->addr, &pAddr->sin6_addr, 4 * 4);

View file

@ -111,7 +111,7 @@ static void mdns_test_app(esp_netif_t *interface)
.func = exit_console, .func = exit_console,
.argtable = NULL .argtable = NULL
}; };
ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_exit) ); ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_exit));
mdns_console_register(); mdns_console_register();
ESP_ERROR_CHECK(esp_console_start_repl(repl)); ESP_ERROR_CHECK(esp_console_start_repl(repl));
xEventGroupWaitBits(s_exit_signal, 1, pdTRUE, pdFALSE, portMAX_DELAY); xEventGroupWaitBits(s_exit_signal, 1, pdTRUE, pdFALSE, portMAX_DELAY);

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Unlicense OR CC0-1.0 * SPDX-License-Identifier: Unlicense OR CC0-1.0
*/ */
@ -59,7 +59,7 @@ uint32_t xTaskGetTickCount(void)
} }
/// Queue mock /// Queue mock
QueueHandle_t xQueueCreate( uint32_t uxQueueLength, uint32_t uxItemSize ) QueueHandle_t xQueueCreate(uint32_t uxQueueLength, uint32_t uxItemSize)
{ {
g_size = uxItemSize; g_size = uxItemSize;
g_queue = malloc((uxQueueLength) * (uxItemSize)); g_queue = malloc((uxQueueLength) * (uxItemSize));
@ -67,7 +67,7 @@ QueueHandle_t xQueueCreate( uint32_t uxQueueLength, uint32_t uxItemSize )
} }
void vQueueDelete( QueueHandle_t xQueue ) void vQueueDelete(QueueHandle_t xQueue)
{ {
free(xQueue); free(xQueue);
} }
@ -117,7 +117,46 @@ void esp_log_write(esp_log_level_t level, const char *tag, const char *format, .
{ {
} }
void esp_log(esp_log_config_t config, const char *tag, const char *format, ...)
{
}
uint32_t esp_log_timestamp(void) uint32_t esp_log_timestamp(void)
{ {
return 0; return 0;
} }
void *mdns_mem_malloc(size_t size)
{
return malloc(size);
}
void *mdns_mem_calloc(size_t num, size_t size)
{
return calloc(num, size);
}
void mdns_mem_free(void *ptr)
{
free(ptr);
}
char *mdns_mem_strdup(const char *s)
{
return strdup(s);
}
char *mdns_mem_strndup(const char *s, size_t n)
{
return strndup(s, n);
}
void *mdns_mem_task_malloc(size_t size)
{
return malloc(size);
}
void mdns_mem_task_free(void *ptr)
{
free(ptr);
}

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -38,6 +38,10 @@
#define ESP_ERR_INVALID_RESPONSE 0x108 #define ESP_ERR_INVALID_RESPONSE 0x108
#define ESP_ERR_INVALID_CRC 0x109 #define ESP_ERR_INVALID_CRC 0x109
#define MDNS_TASK_MEMORY_LOG "internal RAM"
#define MALLOC_CAP_8BIT (1<<2)
#define MALLOC_CAP_INTERNAL (1<<11)
#define pdTRUE true #define pdTRUE true
#define pdFALSE false #define pdFALSE false
#define pdPASS ( pdTRUE ) #define pdPASS ( pdTRUE )
@ -62,6 +66,7 @@
#define vSemaphoreDelete(s) free(s) #define vSemaphoreDelete(s) free(s)
#define queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U #define queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U
#define xTaskCreatePinnedToCore(a,b,c,d,e,f,g) *(f) = malloc(1) #define xTaskCreatePinnedToCore(a,b,c,d,e,f,g) *(f) = malloc(1)
#define xTaskCreateStaticPinnedToCore(a,b,c,d,e,f,g,h) true
#define vTaskDelay(m) usleep((m)*0) #define vTaskDelay(m) usleep((m)*0)
#define esp_random() (rand()%UINT32_MAX) #define esp_random() (rand()%UINT32_MAX)
@ -79,7 +84,8 @@ typedef void *QueueHandle_t;
typedef void *TaskHandle_t; typedef void *TaskHandle_t;
typedef int BaseType_t; typedef int BaseType_t;
typedef uint32_t TickType_t; typedef uint32_t TickType_t;
typedef void *StackType_t;
typedef void *StaticTask_t;
struct udp_pcb { struct udp_pcb {
uint8_t dummy; uint8_t dummy;
@ -111,10 +117,10 @@ uint32_t xTaskGetTickCount(void);
typedef void (*esp_timer_cb_t)(void *arg); typedef void (*esp_timer_cb_t)(void *arg);
// Queue mock // Queue mock
QueueHandle_t xQueueCreate( uint32_t uxQueueLength, QueueHandle_t xQueueCreate(uint32_t uxQueueLength,
uint32_t uxItemSize ); uint32_t uxItemSize);
void vQueueDelete( QueueHandle_t xQueue ); void vQueueDelete(QueueHandle_t xQueue);
uint32_t xQueueSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait); uint32_t xQueueSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait);
@ -131,6 +137,6 @@ esp_err_t esp_event_handler_unregister(const char *event_base, int32_t event_id,
TaskHandle_t xTaskGetCurrentTaskHandle(void); TaskHandle_t xTaskGetCurrentTaskHandle(void);
void xTaskNotifyGive(TaskHandle_t task); void xTaskNotifyGive(TaskHandle_t task);
BaseType_t xTaskNotifyWait(uint32_t bits_entry_clear, uint32_t bits_exit_clear, uint32_t *value, TickType_t wait_time ); BaseType_t xTaskNotifyWait(uint32_t bits_entry_clear, uint32_t bits_exit_clear, uint32_t *value, TickType_t wait_time);
#endif //_ESP32_COMPAT_H_ #endif //_ESP32_COMPAT_H_

View file

@ -243,7 +243,7 @@ int main(int argc, char **argv)
// //
// Note: parameter1 is a file (mangled packet) which caused the crash // Note: parameter1 is a file (mangled packet) which caused the crash
file = fopen(argv[1], "r"); file = fopen(argv[1], "r");
assert(file >= 0 ); assert(file >= 0);
len = fread(buf, 1, 1460, file); len = fread(buf, 1, 1460, file);
fclose(file); fclose(file);
} }

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@ -55,17 +55,17 @@ static void initialise_mdns(void)
char *hostname = generate_hostname(); char *hostname = generate_hostname();
//initialize mDNS //initialize mDNS
ESP_ERROR_CHECK( mdns_init() ); ESP_ERROR_CHECK(mdns_init());
//set mDNS hostname (required if you want to advertise services) //set mDNS hostname (required if you want to advertise services)
ESP_ERROR_CHECK( mdns_hostname_set(hostname) ); ESP_ERROR_CHECK(mdns_hostname_set(hostname));
ESP_LOGI(TAG, "mdns hostname set to: [%s]", hostname); ESP_LOGI(TAG, "mdns hostname set to: [%s]", hostname);
//set default mDNS instance name //set default mDNS instance name
ESP_ERROR_CHECK( mdns_instance_name_set(CONFIG_TEST_MDNS_INSTANCE) ); ESP_ERROR_CHECK(mdns_instance_name_set(CONFIG_TEST_MDNS_INSTANCE));
//initialize service //initialize service
ESP_ERROR_CHECK( mdns_service_add("ESP32-WebServer", "_http", "_tcp", 80, NULL, 0) ); ESP_ERROR_CHECK(mdns_service_add("ESP32-WebServer", "_http", "_tcp", 80, NULL, 0));
#if CONFIG_TEST_MDNS_PUBLISH_DELEGATE_HOST #if CONFIG_TEST_MDNS_PUBLISH_DELEGATE_HOST
char *delegated_hostname; char *delegated_hostname;
@ -80,12 +80,12 @@ static void initialise_mdns(void)
addr6.addr.type = ESP_IPADDR_TYPE_V6; addr6.addr.type = ESP_IPADDR_TYPE_V6;
addr4.next = &addr6; addr4.next = &addr6;
addr6.next = NULL; addr6.next = NULL;
ESP_ERROR_CHECK( mdns_delegate_hostname_add(delegated_hostname, &addr4) ); ESP_ERROR_CHECK(mdns_delegate_hostname_add(delegated_hostname, &addr4));
ESP_ERROR_CHECK( mdns_service_add_for_host("test0", "_http", "_tcp", delegated_hostname, 1234, NULL, 0) ); ESP_ERROR_CHECK(mdns_service_add_for_host("test0", "_http", "_tcp", delegated_hostname, 1234, NULL, 0));
free(delegated_hostname); free(delegated_hostname);
#endif // CONFIG_TEST_MDNS_PUBLISH_DELEGATE_HOST #endif // CONFIG_TEST_MDNS_PUBLISH_DELEGATE_HOST
ESP_ERROR_CHECK( mdns_service_subtype_add_for_host("ESP32-WebServer", "_http", "_tcp", NULL, "_server") ); ESP_ERROR_CHECK(mdns_service_subtype_add_for_host("ESP32-WebServer", "_http", "_tcp", NULL, "_server"));
free(hostname); free(hostname);
} }

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Unlicense OR CC0-1.0 * SPDX-License-Identifier: Unlicense OR CC0-1.0
*/ */
@ -45,17 +45,17 @@ static void yield_to_all_priorities(void)
TEST(mdns, api_fails_with_invalid_state) TEST(mdns, api_fails_with_invalid_state)
{ {
TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_init() ); TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_init());
TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME) ); TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME));
TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_instance_name_set(MDNS_INSTANCE) ); TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_instance_name_set(MDNS_INSTANCE));
TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0) ); TEST_ASSERT_NOT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0));
} }
TEST(mdns, init_deinit) TEST(mdns, init_deinit)
{ {
test_case_uses_tcpip(); test_case_uses_tcpip();
TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default()); TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default());
TEST_ASSERT_EQUAL(ESP_OK, mdns_init() ); TEST_ASSERT_EQUAL(ESP_OK, mdns_init());
yield_to_all_priorities(); // Make sure that mdns task has executed to complete initialization yield_to_all_priorities(); // Make sure that mdns task has executed to complete initialization
mdns_free(); mdns_free();
esp_event_loop_delete_default(); esp_event_loop_delete_default();
@ -76,33 +76,33 @@ TEST(mdns, api_fails_with_expected_err)
test_case_uses_tcpip(); test_case_uses_tcpip();
TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default()); TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default());
TEST_ASSERT_EQUAL(ESP_OK, mdns_init() ); TEST_ASSERT_EQUAL(ESP_OK, mdns_init());
TEST_ASSERT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME));
TEST_ASSERT_EQUAL(ESP_OK, mdns_delegate_hostname_add(MDNS_DELEGATE_HOSTNAME, &addr) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_delegate_hostname_add(MDNS_DELEGATE_HOSTNAME, &addr));
yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname
TEST_ASSERT_TRUE(mdns_hostname_exists(MDNS_DELEGATE_HOSTNAME) ); TEST_ASSERT_TRUE(mdns_hostname_exists(MDNS_DELEGATE_HOSTNAME));
TEST_ASSERT_EQUAL(ESP_OK, mdns_instance_name_set(MDNS_INSTANCE) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_instance_name_set(MDNS_INSTANCE));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, serviceTxtData, CONFIG_MDNS_MAX_SERVICES) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, serviceTxtData, CONFIG_MDNS_MAX_SERVICES));
TEST_ASSERT_FALSE(mdns_service_exists(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME) ); TEST_ASSERT_FALSE(mdns_service_exists(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add_for_host(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME, TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add_for_host(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME,
MDNS_SERVICE_PORT, serviceTxtData, CONFIG_MDNS_MAX_SERVICES) ); MDNS_SERVICE_PORT, serviceTxtData, CONFIG_MDNS_MAX_SERVICES));
TEST_ASSERT_TRUE(mdns_service_exists(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME) ); TEST_ASSERT_TRUE(mdns_service_exists(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_txt_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, serviceTxtData, CONFIG_MDNS_MAX_SERVICES) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_txt_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, serviceTxtData, CONFIG_MDNS_MAX_SERVICES));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_txt_item_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, "key1", "value1") ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_txt_item_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, "key1", "value1"));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_txt_item_remove(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, "key1") ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_txt_item_remove(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, "key1"));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_port_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 8080) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_port_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 8080));
yield_to_all_priorities(); // to remove the service with the updated txt records yield_to_all_priorities(); // to remove the service with the updated txt records
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_remove(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_remove(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO));
yield_to_all_priorities(); // Make sure that mdns task has executed to remove the service yield_to_all_priorities(); // Make sure that mdns task has executed to remove the service
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0));
TEST_ASSERT_EQUAL(ESP_OK, mdns_delegate_hostname_remove(MDNS_DELEGATE_HOSTNAME) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_delegate_hostname_remove(MDNS_DELEGATE_HOSTNAME));
yield_to_all_priorities(); // Make sure that mdns task has executed to remove the hostname yield_to_all_priorities(); // Make sure that mdns task has executed to remove the hostname
TEST_ASSERT_FALSE(mdns_service_exists(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME) ); TEST_ASSERT_FALSE(mdns_service_exists(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_remove_all() ); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_remove_all());
yield_to_all_priorities(); // Make sure that mdns task has executed to remove all services yield_to_all_priorities(); // Make sure that mdns task has executed to remove all services
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG, mdns_service_port_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 8080) ); TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG, mdns_service_port_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 8080));
mdns_free(); mdns_free();
esp_event_loop_delete_default(); esp_event_loop_delete_default();
@ -116,7 +116,7 @@ TEST(mdns, query_api_fails_with_expected_err)
test_case_uses_tcpip(); test_case_uses_tcpip();
TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default()); TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default());
TEST_ASSERT_EQUAL(ESP_OK, mdns_init() ); TEST_ASSERT_EQUAL(ESP_OK, mdns_init());
// check it is not possible to register a service or set an instance without configuring the hostname // check it is not possible to register a service or set an instance without configuring the hostname
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0)); TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0));
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG, mdns_instance_name_set(MDNS_INSTANCE)); TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG, mdns_instance_name_set(MDNS_INSTANCE));
@ -125,19 +125,19 @@ TEST(mdns, query_api_fails_with_expected_err)
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0)); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0));
TEST_ASSERT_EQUAL(ESP_OK, mdns_instance_name_set(MDNS_INSTANCE)); TEST_ASSERT_EQUAL(ESP_OK, mdns_instance_name_set(MDNS_INSTANCE));
TEST_ASSERT_EQUAL(ESP_OK, mdns_query_ptr(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 10, CONFIG_MDNS_MAX_SERVICES, &results) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_query_ptr(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 10, CONFIG_MDNS_MAX_SERVICES, &results));
mdns_query_results_free(results); mdns_query_results_free(results);
TEST_ASSERT_EQUAL(ESP_OK, mdns_query_srv(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 10, &results) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_query_srv(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 10, &results));
mdns_query_results_free(results); mdns_query_results_free(results);
TEST_ASSERT_EQUAL(ESP_OK, mdns_query_txt(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 10, &results) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_query_txt(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 10, &results));
mdns_query_results_free(results); mdns_query_results_free(results);
TEST_ASSERT_EQUAL(ESP_ERR_NOT_FOUND, mdns_query_a(MDNS_HOSTNAME, 10, &addr4) ); TEST_ASSERT_EQUAL(ESP_ERR_NOT_FOUND, mdns_query_a(MDNS_HOSTNAME, 10, &addr4));
mdns_query_results_free(results); mdns_query_results_free(results);
TEST_ASSERT_EQUAL(ESP_ERR_NOT_FOUND, mdns_query_aaaa(MDNS_HOSTNAME, 10, &addr6) ); TEST_ASSERT_EQUAL(ESP_ERR_NOT_FOUND, mdns_query_aaaa(MDNS_HOSTNAME, 10, &addr6));
mdns_query_results_free(results); mdns_query_results_free(results);
mdns_free(); mdns_free();
@ -149,7 +149,7 @@ TEST(mdns, add_remove_service)
mdns_result_t *results = NULL; mdns_result_t *results = NULL;
test_case_uses_tcpip(); test_case_uses_tcpip();
TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default()); TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default());
TEST_ASSERT_EQUAL(ESP_OK, mdns_init() ); TEST_ASSERT_EQUAL(ESP_OK, mdns_init());
TEST_ASSERT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME)); TEST_ASSERT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0)); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0));
yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname
@ -170,7 +170,7 @@ TEST(mdns, add_remove_service)
mdns_query_results_free(results); mdns_query_results_free(results);
// Update service properties: instance // Update service properties: instance
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_instance_name_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_INSTANCE "1" )); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_instance_name_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_INSTANCE "1"));
yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname
TEST_ASSERT_EQUAL(ESP_OK, mdns_lookup_selfhosted_service(MDNS_INSTANCE "1", MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 1, &results)); TEST_ASSERT_EQUAL(ESP_OK, mdns_lookup_selfhosted_service(MDNS_INSTANCE "1", MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 1, &results));
TEST_ASSERT_NOT_EQUAL(NULL, results); TEST_ASSERT_NOT_EQUAL(NULL, results);
@ -220,9 +220,9 @@ TEST(mdns, add_remove_deleg_service)
mdns_result_t *results = NULL; mdns_result_t *results = NULL;
test_case_uses_tcpip(); test_case_uses_tcpip();
TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default()); TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default());
TEST_ASSERT_EQUAL(ESP_OK, mdns_init() ); TEST_ASSERT_EQUAL(ESP_OK, mdns_init());
TEST_ASSERT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME)); TEST_ASSERT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME));
TEST_ASSERT_EQUAL(ESP_OK, mdns_delegate_hostname_add(MDNS_DELEGATE_HOSTNAME, &addr) ); TEST_ASSERT_EQUAL(ESP_OK, mdns_delegate_hostname_add(MDNS_DELEGATE_HOSTNAME, &addr));
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add_for_host(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME, MDNS_SERVICE_PORT, NULL, 0)); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_add_for_host(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME, MDNS_SERVICE_PORT, NULL, 0));
yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname
@ -243,7 +243,7 @@ TEST(mdns, add_remove_deleg_service)
mdns_query_results_free(results); mdns_query_results_free(results);
// Update service properties: instance // Update service properties: instance
TEST_ASSERT_EQUAL(ESP_OK, mdns_service_instance_name_set_for_host(NULL, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME, MDNS_INSTANCE "1" )); TEST_ASSERT_EQUAL(ESP_OK, mdns_service_instance_name_set_for_host(NULL, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME, MDNS_INSTANCE "1"));
yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname yield_to_all_priorities(); // Make sure that mdns task has executed to add the hostname
TEST_ASSERT_EQUAL(ESP_OK, mdns_lookup_delegated_service(MDNS_INSTANCE "1", MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 1, &results)); TEST_ASSERT_EQUAL(ESP_OK, mdns_lookup_delegated_service(MDNS_INSTANCE "1", MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 1, &results));
TEST_ASSERT_NOT_EQUAL(NULL, results); TEST_ASSERT_NOT_EQUAL(NULL, results);

View file

@ -0,0 +1 @@
{"version": "1.0", "algorithm": "sha256", "created_at": "2025-05-21T15:48:22.610347+00:00", "files": [{"path": "CMakeLists.txt", "size": 435, "hash": "d73fff7c9a3dc6e5395a6fcd5fd3bff0bfbec03d74ecfd0b362083c1a76e241a"}, {"path": "CHANGELOG.md", "size": 1384, "hash": "f39984104fa64ffc551a90433d6de67ef89812b8a964be90b735df7362cdd1f5"}, {"path": "idf_component.yml", "size": 359, "hash": "ef35cf63f19253055214ede4102a1e442c4f9bd02c8c25843de0005d08452816"}, {"path": "README.md", "size": 2854, "hash": "a0d9c2d833ef216db9317071666d9a79961bef6621388489dcdf5a6443743450"}, {"path": "LICENCE", "size": 11358, "hash": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30"}, {"path": "private_include/diskio_usb.h", "size": 887, "hash": "820c8c5ea9730c1f3cc45f6775cf2ba4a8622ccdf492f3f5f841eb5fb37e6ac5"}, {"path": "private_include/msc_common.h", "size": 2373, "hash": "5cd5b3ceed422598dc0a56ef236adf71c2e7cca0a401b3fc27f0ddfacc635a10"}, {"path": "test_app/CMakeLists.txt", "size": 466, "hash": "67dbf502b9f440c94e3880d3a9bd9d5304fc868768ca81c9806260717fe4b144"}, {"path": "test_app/pytest_usb_host_msc.py", "size": 686, "hash": "77e753f8cb385beb41b669a38547ae6528173a505beb15ecdfd1b85a75d159ad"}, {"path": "test_app/README.md", "size": 461, "hash": "2fc30849d580c0f87b0358d8bab87352b05a3d766a6970222d1b7cbf6ebb3958"}, {"path": "test_app/partitions.csv", "size": 306, "hash": "9afb3c4324fe275c5ac4b129c72f58587e7d75dd30ebd0292ad0b8ac553d329b"}, {"path": "test_app/sdkconfig.defaults", "size": 760, "hash": "368bffb0283915e3e1f17b254c169194c44b7b1eeb009e8e724475ff6eb61e9a"}, {"path": "src/msc_host.c", "size": 25424, "hash": "030e95283dffcc924f22f040c4059e9ae59308f7fe08826787930fdc0cc85ada"}, {"path": "src/msc_host_vfs.c", "size": 3810, "hash": "7ca7a19ffc13fcd468a6894a0362478d36f38bd806ba46a488f5a1a706bb6024"}, {"path": "src/diskio_usb.c", "size": 2641, "hash": "6beeb48e469f0403e2d7af14ea34d46c2c778f259cce836380e6803d23137441"}, {"path": "src/msc_scsi_bot.c", "size": 14183, "hash": "8f400d921b3d64c582b760ada2437a52a96ff5b2b49495937e569ec38f4e5483"}, {"path": "include/usb/msc_host.h", "size": 6593, "hash": "f9927b1a76e1fda940a8c42af734131d257fbb0e6e5b9a916abeb7d84e15a7f5"}, {"path": "include/usb/msc_host_vfs.h", "size": 1293, "hash": "1f2fa51670d8dac1a7caf0a7e763239f25fb9398acb44864b55719d5068b294f"}, {"path": "include/esp_private/msc_scsi_bot.h", "size": 1417, "hash": "ecb09ee1bbf8f1a37f32ee5f978465493d872cd58a9a0ebd83bc80e13c6c5547"}, {"path": "test_app/main/test_common.h", "size": 720, "hash": "a03ed9634cddaa7253bb3d9e9811be01f8c81e61f10a1145417150d3e10a753e"}, {"path": "test_app/main/CMakeLists.txt", "size": 177, "hash": "29e1b13254f395f2e3273dc9c36913145c67267832b6d15af74940b92601b067"}, {"path": "test_app/main/test_msc.c", "size": 16093, "hash": "e034c5eabca8d532f9b084bc9ae83e3e327e88d82884a2aff68ef006423f7ad1"}, {"path": "test_app/main/msc_device.c", "size": 18170, "hash": "85953795cf1cbf8dfaf35f48c10c7e23cad74733953f17c08496f750236c088a"}, {"path": "test_app/main/test_app_main.c", "size": 2135, "hash": "7523acd84ba8037be90b7b6376f613e5a909ab38c557640d45504e8a6efceebc"}]}

View file

@ -1,6 +1,6 @@
# #
# Automatically generated file. DO NOT EDIT. # Automatically generated file. DO NOT EDIT.
# Espressif IoT Development Framework (ESP-IDF) 5.4.0 Project Configuration # Espressif IoT Development Framework (ESP-IDF) 5.4.1 Project Configuration
# #
CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000
CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 CONFIG_SOC_MPU_REGIONS_MAX_NUM=8
@ -64,6 +64,7 @@ CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y
CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y
CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y
CONFIG_SOC_PM_SUPPORTED=y CONFIG_SOC_PM_SUPPORTED=y
CONFIG_SOC_SIMD_INSTRUCTION_SUPPORTED=y
CONFIG_SOC_XTAL_SUPPORT_40M=y CONFIG_SOC_XTAL_SUPPORT_40M=y
CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=y
CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y
@ -101,6 +102,7 @@ CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y
CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 CONFIG_SOC_CPU_BREAKPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 CONFIG_SOC_CPU_WATCHPOINTS_NUM=2
CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64
CONFIG_SOC_SIMD_PREFERRED_DATA_ALIGNMENT=16
CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096 CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=4096
CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16
CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100
@ -205,6 +207,7 @@ CONFIG_SOC_RTCIO_PIN_COUNT=22
CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y
CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y
CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y
CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y
CONFIG_SOC_SDM_GROUPS=y CONFIG_SOC_SDM_GROUPS=y
CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8
CONFIG_SOC_SDM_CLK_SUPPORT_APB=y CONFIG_SOC_SDM_CLK_SUPPORT_APB=y
@ -245,6 +248,8 @@ CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54
CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y
CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y
CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4
CONFIG_SOC_LP_TIMER_BIT_WIDTH_LO=32
CONFIG_SOC_LP_TIMER_BIT_WIDTH_HI=16
CONFIG_SOC_TOUCH_SENSOR_VERSION=2 CONFIG_SOC_TOUCH_SENSOR_VERSION=2
CONFIG_SOC_TOUCH_SENSOR_NUM=15 CONFIG_SOC_TOUCH_SENSOR_NUM=15
CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y CONFIG_SOC_TOUCH_SUPPORT_SLEEP_WAKEUP=y
@ -370,7 +375,7 @@ CONFIG_IDF_TOOLCHAIN_GCC=y
CONFIG_IDF_TARGET_ARCH_XTENSA=y CONFIG_IDF_TARGET_ARCH_XTENSA=y
CONFIG_IDF_TARGET_ARCH="xtensa" CONFIG_IDF_TARGET_ARCH="xtensa"
CONFIG_IDF_TARGET="esp32s3" CONFIG_IDF_TARGET="esp32s3"
CONFIG_IDF_INIT_VERSION="5.3.1" CONFIG_IDF_INIT_VERSION="5.4.1"
CONFIG_IDF_TARGET_ESP32S3=y CONFIG_IDF_TARGET_ESP32S3=y
CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009 CONFIG_IDF_FIRMWARE_CHIP_ID=0x0009
@ -647,6 +652,7 @@ CONFIG_BT_NIMBLE_SM_SC=y
# CONFIG_BT_NIMBLE_SM_SC_DEBUG_KEYS is not set # CONFIG_BT_NIMBLE_SM_SC_DEBUG_KEYS is not set
CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION=y CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION=y
CONFIG_BT_NIMBLE_SM_LVL=0 CONFIG_BT_NIMBLE_SM_LVL=0
CONFIG_BT_NIMBLE_SM_SC_ONLY=0
# CONFIG_BT_NIMBLE_DEBUG is not set # CONFIG_BT_NIMBLE_DEBUG is not set
# CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set # CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="KTag 32ESPecial" CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="KTag 32ESPecial"
@ -725,12 +731,27 @@ CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=0
CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=0
CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0
CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0 CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0
# CONFIG_BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL is not set
# end of GAP Service # end of GAP Service
# #
# BLE Services # BLE Services
# #
# CONFIG_BT_NIMBLE_HID_SERVICE is not set # CONFIG_BT_NIMBLE_HID_SERVICE is not set
# CONFIG_BT_NIMBLE_SVC_BAS_BATTERY_LEVEL_NOTIFY is not set
#
# Device Information Service
#
# CONFIG_BT_NIMBLE_SVC_DIS_MANUFACTURER_NAME is not set
# CONFIG_BT_NIMBLE_SVC_DIS_SERIAL_NUMBER is not set
# CONFIG_BT_NIMBLE_SVC_DIS_HARDWARE_REVISION is not set
# CONFIG_BT_NIMBLE_SVC_DIS_FIRMWARE_REVISION is not set
# CONFIG_BT_NIMBLE_SVC_DIS_SOFTWARE_REVISION is not set
# CONFIG_BT_NIMBLE_SVC_DIS_SYSTEM_ID is not set
# CONFIG_BT_NIMBLE_SVC_DIS_PNP_ID is not set
# CONFIG_BT_NIMBLE_SVC_DIS_INCLUDED is not set
# end of Device Information Service
# end of BLE Services # end of BLE Services
# CONFIG_BT_NIMBLE_VS_SUPPORT is not set # CONFIG_BT_NIMBLE_VS_SUPPORT is not set
@ -738,6 +759,7 @@ CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=0
CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL=y CONFIG_BT_NIMBLE_HIGH_DUTY_ADV_ITVL=y
# CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set # CONFIG_BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN is not set
# CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set # CONFIG_BT_NIMBLE_HOST_QUEUE_CONG_CHECK is not set
# CONFIG_BT_NIMBLE_GATTC_PROC_PREEMPTION_PROTECT is not set
# #
# Host-controller Transport # Host-controller Transport
@ -748,6 +770,9 @@ CONFIG_BT_NIMBLE_HCI_UART_FLOW_CTRL=0
CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19 CONFIG_BT_NIMBLE_HCI_UART_RTS_PIN=19
CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23 CONFIG_BT_NIMBLE_HCI_UART_CTS_PIN=23
# end of Host-controller Transport # end of Host-controller Transport
CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0
# CONFIG_BT_NIMBLE_SUBRATE is not set
# end of NimBLE Options # end of NimBLE Options
# #
@ -828,20 +853,22 @@ CONFIG_BT_CTRL_CHAN_ASS_EN=y
CONFIG_BT_CTRL_LE_PING_EN=y CONFIG_BT_CTRL_LE_PING_EN=y
# #
# BLE disconnect when instant passed # BLE disconnects when Instant Passed (0x28) occurs
# #
# CONFIG_BT_CTRL_BLE_LLCP_CONN_UPDATE is not set # CONFIG_BT_CTRL_BLE_LLCP_CONN_UPDATE is not set
# CONFIG_BT_CTRL_BLE_LLCP_CHAN_MAP_UPDATE is not set # CONFIG_BT_CTRL_BLE_LLCP_CHAN_MAP_UPDATE is not set
# CONFIG_BT_CTRL_BLE_LLCP_PHY_UPDATE is not set # CONFIG_BT_CTRL_BLE_LLCP_PHY_UPDATE is not set
# end of BLE disconnect when instant passed # end of BLE disconnects when Instant Passed (0x28) occurs
# CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY is not set # CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY is not set
# CONFIG_BT_CTRL_CHECK_CONNECT_IND_ACCESS_ADDRESS is not set
# end of Controller Options # end of Controller Options
# #
# Common Options # Common Options
# #
CONFIG_BT_ALARM_MAX_NUM=50 CONFIG_BT_ALARM_MAX_NUM=50
# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set
# end of Common Options # end of Common Options
# CONFIG_BT_HCI_LOG_DEBUG_EN is not set # CONFIG_BT_HCI_LOG_DEBUG_EN is not set
@ -870,6 +897,7 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
# Legacy ADC Driver Configuration # Legacy ADC Driver Configuration
# #
# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set
# #
# Legacy ADC Calibration Configuration # Legacy ADC Calibration Configuration
@ -882,42 +910,49 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
# Legacy MCPWM Driver Configurations # Legacy MCPWM Driver Configurations
# #
# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy MCPWM Driver Configurations # end of Legacy MCPWM Driver Configurations
# #
# Legacy Timer Group Driver Configurations # Legacy Timer Group Driver Configurations
# #
# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy Timer Group Driver Configurations # end of Legacy Timer Group Driver Configurations
# #
# Legacy RMT Driver Configurations # Legacy RMT Driver Configurations
# #
# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy RMT Driver Configurations # end of Legacy RMT Driver Configurations
# #
# Legacy I2S Driver Configurations # Legacy I2S Driver Configurations
# #
# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy I2S Driver Configurations # end of Legacy I2S Driver Configurations
# #
# Legacy PCNT Driver Configurations # Legacy PCNT Driver Configurations
# #
# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy PCNT Driver Configurations # end of Legacy PCNT Driver Configurations
# #
# Legacy SDM Driver Configurations # Legacy SDM Driver Configurations
# #
# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy SDM Driver Configurations # end of Legacy SDM Driver Configurations
# #
# Legacy Temperature Sensor Driver Configurations # Legacy Temperature Sensor Driver Configurations
# #
# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set # CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set
# CONFIG_TEMP_SENSOR_SKIP_LEGACY_CONFLICT_CHECK is not set
# end of Legacy Temperature Sensor Driver Configurations # end of Legacy Temperature Sensor Driver Configurations
# end of Driver Configurations # end of Driver Configurations
@ -1097,6 +1132,13 @@ CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y
CONFIG_ESP_GDBSTUB_MAX_TASKS=32 CONFIG_ESP_GDBSTUB_MAX_TASKS=32
# end of GDB Stub # end of GDB Stub
#
# ESP HID
#
CONFIG_ESPHID_TASK_SIZE_BT=2048
CONFIG_ESPHID_TASK_SIZE_BLE=4096
# end of ESP HID
# #
# ESP HTTP client # ESP HTTP client
# #
@ -1681,7 +1723,6 @@ CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
CONFIG_HAL_WDT_USE_ROM_IMPL=y CONFIG_HAL_WDT_USE_ROM_IMPL=y
CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y
CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y
# CONFIG_HAL_ECDSA_GEN_SIG_CM is not set
# end of Hardware Abstraction Layer (HAL) and Low Level (LL) # end of Hardware Abstraction Layer (HAL) and Low Level (LL)
# #
@ -2125,6 +2166,7 @@ CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y
CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y
# end of Protocomm # end of Protocomm
# #
@ -2417,6 +2459,17 @@ CONFIG_MDNS_TASK_STACK_SIZE=4096
CONFIG_MDNS_TASK_AFFINITY_CPU0=y CONFIG_MDNS_TASK_AFFINITY_CPU0=y
# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set # CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set
CONFIG_MDNS_TASK_AFFINITY=0x0 CONFIG_MDNS_TASK_AFFINITY=0x0
#
# MDNS Memory Configuration
#
# CONFIG_MDNS_TASK_CREATE_FROM_SPIRAM is not set
CONFIG_MDNS_TASK_CREATE_FROM_INTERNAL=y
# CONFIG_MDNS_MEMORY_ALLOC_SPIRAM is not set
CONFIG_MDNS_MEMORY_ALLOC_INTERNAL=y
# CONFIG_MDNS_MEMORY_CUSTOM_IMPL is not set
# end of MDNS Memory Configuration
CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000
CONFIG_MDNS_TIMER_PERIOD_MS=100 CONFIG_MDNS_TIMER_PERIOD_MS=100
# CONFIG_MDNS_NETWORKING_SOCKET is not set # CONFIG_MDNS_NETWORKING_SOCKET is not set
@ -2567,7 +2620,6 @@ CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
CONFIG_ESP32S3_DEBUG_OCDAWARE=y CONFIG_ESP32S3_DEBUG_OCDAWARE=y
CONFIG_BROWNOUT_DET=y CONFIG_BROWNOUT_DET=y
CONFIG_ESP32S3_BROWNOUT_DET=y CONFIG_ESP32S3_BROWNOUT_DET=y
CONFIG_ESP32S3_BROWNOUT_DET=y
CONFIG_BROWNOUT_DET_LVL_SEL_7=y CONFIG_BROWNOUT_DET_LVL_SEL_7=y
CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y
# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set # CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
@ -2597,8 +2649,6 @@ CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
CONFIG_ESP32_WIFI_TX_BA_WIN=6 CONFIG_ESP32_WIFI_TX_BA_WIN=6
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
CONFIG_ESP32_WIFI_RX_BA_WIN=6
CONFIG_ESP32_WIFI_RX_BA_WIN=6 CONFIG_ESP32_WIFI_RX_BA_WIN=6
# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set # CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set
CONFIG_ESP32_WIFI_NVS_ENABLED=y CONFIG_ESP32_WIFI_NVS_ENABLED=y