From 4d39769ad35b519cfd6a6e450427a4e214066d91 Mon Sep 17 00:00:00 2001 From: Joe Kearney Date: Thu, 5 Jun 2025 20:09:51 -0500 Subject: [PATCH 1/3] Updated dependencies. --- README.md | 2 +- components/SystemK | 2 +- dependencies.lock | 14 +- main/idf_component.yml | 4 +- .../chmorgan__esp-audio-player/CHECKSUMS.json | 1 + .../chmorgan__esp-libhelix-mp3/CHECKSUMS.json | 1 + .../real/projects/armwince/mp3dec.vcp | 670 ++++++------ .../real/projects/armwince/mp3dec.vcw | 88 +- .../real/projects/armwince/testwrap.vcp | 292 +++--- .../real/projects/visualc/mp3dec.dsp | 316 +++--- .../real/projects/visualc/mp3dec.dsw | 88 +- .../real/projects/visualc/testwrap.dsp | 348 +++---- .../espressif__button/CHECKSUMS.json | 1 + .../espressif__cmake_utilities/CHECKSUMS.json | 1 + .../scripts/gen_custom_ota.py | 0 .../scripts/relinker/relinker.py | 0 .../espressif__mdns/.component_hash | 2 +- managed_components/espressif__mdns/.cz.yaml | 2 +- .../espressif__mdns/CHANGELOG.md | 87 ++ .../espressif__mdns/CMakeLists.txt | 10 +- managed_components/espressif__mdns/Kconfig | 42 + .../query_advertise/main/mdns_example_main.c | 32 +- .../espressif__mdns/idf_component.yml | 4 +- .../espressif__mdns/include/mdns.h | 36 +- managed_components/espressif__mdns/mdns.c | 954 ++++++++++-------- .../espressif__mdns/mdns_console.c | 95 +- .../espressif__mdns/mdns_mem_caps.c | 96 ++ .../espressif__mdns/mdns_networking_lwip.c | 15 +- .../espressif__mdns/mdns_networking_socket.c | 35 +- .../espressif__mdns/mem_prefix_script.py | 54 + .../private_include/mdns_mem_caps.h | 65 ++ .../private_include/mdns_private.h | 8 +- .../esp_netif_linux/esp_netif_linux.c | 4 +- .../tests/host_test/main/main.c | 2 +- .../tests/test_afl_fuzz_host/esp32_mock.c | 45 +- .../tests/test_afl_fuzz_host/esp32_mock.h | 18 +- .../tests/test_afl_fuzz_host/test.c | 2 +- .../tests/test_apps/main/main.c | 16 +- .../tests/unit_test/main/test_mdns.c | 72 +- .../espressif__usb_host_msc/CHECKSUMS.json | 1 + sdkconfig | 66 +- 41 files changed, 2107 insertions(+), 1484 deletions(-) create mode 100644 managed_components/chmorgan__esp-audio-player/CHECKSUMS.json create mode 100644 managed_components/chmorgan__esp-libhelix-mp3/CHECKSUMS.json create mode 100644 managed_components/espressif__button/CHECKSUMS.json create mode 100644 managed_components/espressif__cmake_utilities/CHECKSUMS.json mode change 100755 => 100644 managed_components/espressif__cmake_utilities/scripts/gen_custom_ota.py mode change 100755 => 100644 managed_components/espressif__cmake_utilities/scripts/relinker/relinker.py create mode 100644 managed_components/espressif__mdns/mdns_mem_caps.c create mode 100644 managed_components/espressif__mdns/mem_prefix_script.py create mode 100644 managed_components/espressif__mdns/private_include/mdns_mem_caps.h create mode 100644 managed_components/espressif__usb_host_msc/CHECKSUMS.json diff --git a/README.md b/README.md index 6633470..09f2a88 100644 --- a/README.md +++ b/README.md @@ -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/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/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 | 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/ diff --git a/components/SystemK b/components/SystemK index cb72042..ba23026 160000 --- a/components/SystemK +++ b/components/SystemK @@ -1 +1 @@ -Subproject commit cb7204269140ba9c6dbe44ca5a5dbaf8c031f685 +Subproject commit ba23026d13618bdcbf28717c64059f8229105aab diff --git a/dependencies.lock b/dependencies.lock index 03b4e56..d1d9470 100644 --- a/dependencies.lock +++ b/dependencies.lock @@ -2,13 +2,13 @@ dependencies: chmorgan/esp-audio-player: component_hash: c8ac1998e9af863bc41b57e592f88d1a5791a0f891485122336ddabbf7a65033 dependencies: - - name: idf - require: private - version: '>=5.0' - name: chmorgan/esp-libhelix-mp3 registry_url: https://components.espressif.com require: private version: '>=1.0.0,<2.0.0' + - name: idf + require: private + version: '>=5.0' source: registry_url: https://components.espressif.com/ type: service @@ -48,7 +48,7 @@ dependencies: type: service version: 0.5.3 espressif/mdns: - component_hash: d36b265164be5139f92de993f08f5ecaa0de0c0acbf84deee1f10bb5902d04ff + component_hash: 3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5 dependencies: - name: idf require: private @@ -56,7 +56,7 @@ dependencies: source: registry_url: https://components.espressif.com/ type: service - version: 1.4.3 + version: 1.8.2 espressif/usb_host_msc: component_hash: efbf44743b0f1f1f808697a671064531ae4661ccbce84632637261f8f670b375 dependencies: @@ -74,7 +74,7 @@ dependencies: idf: source: type: idf - version: 5.4.0 + version: 5.4.1 direct_dependencies: - chmorgan/esp-audio-player - chmorgan/esp-libhelix-mp3 @@ -82,6 +82,6 @@ direct_dependencies: - espressif/mdns - espressif/usb_host_msc - idf -manifest_hash: 49abffad73ef20c1e9924d5aece4befeab0cbad25b99f353334b089de1f63639 +manifest_hash: f5c8d387ca994b2af63c94d058483e5dbc3b25358a7313bd64bae630f91af785 target: esp32s3 version: 2.0.0 diff --git a/main/idf_component.yml b/main/idf_component.yml index 7df02e9..cc90bfa 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -7,9 +7,9 @@ dependencies: espressif/usb_host_msc: "^1.1.2" ## 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: - version: ">=5.4.0" + version: ">=5.4.1" # # Put list of dependencies here # # For components maintained by Espressif: diff --git a/managed_components/chmorgan__esp-audio-player/CHECKSUMS.json b/managed_components/chmorgan__esp-audio-player/CHECKSUMS.json new file mode 100644 index 0000000..8b734ee --- /dev/null +++ b/managed_components/chmorgan__esp-audio-player/CHECKSUMS.json @@ -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"}]} \ No newline at end of file diff --git a/managed_components/chmorgan__esp-libhelix-mp3/CHECKSUMS.json b/managed_components/chmorgan__esp-libhelix-mp3/CHECKSUMS.json new file mode 100644 index 0000000..20dd82f --- /dev/null +++ b/managed_components/chmorgan__esp-libhelix-mp3/CHECKSUMS.json @@ -0,0 +1 @@ +{"version": "1.0", "algorithm": "sha256", "created_at": "2025-05-21T14:03:49.637317+00:00", "files": [{"path": "CMakeLists.txt", "size": 297, "hash": "9681530e9532c521636e4dfb03514c5e4573797feb6773cc7b8879dda4ff1a30"}, {"path": "LICENSE", "size": 11357, "hash": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"}, {"path": "idf_component.yml", "size": 159, "hash": "b9ca5eb767751c3a9a2a1d6b10359e29e7fd5a0f0cacaf7a1f66674e723fd02e"}, {"path": ".gitmodules", "size": 100, "hash": "ebcdad20c3e51163c2316d90cc09d53aa633e1e06e0828455df3cda32c1376a2"}, {"path": "README.md", "size": 92, "hash": "49c3ba534593fecf28c9be06762835429b6ee771043ba013a1b599e4171f1d48"}, {"path": "libhelix-mp3/mp3tabs.c", "size": 6890, "hash": "4a3a7cc12063cdfb65fcc91465bff1e20fb9a65c3c51bec6549c4516f68f1cfc"}, {"path": "libhelix-mp3/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/mp3dec.c", "size": 17383, "hash": "12e5812e82e9c2115835860a4629e9438894e83f11ed2301da8abab1080ce700"}, {"path": "libhelix-mp3/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/Umakefil", "size": 3392, "hash": "94075e049115f7752d81a7629ddd6b8dad3aafbc1dbfa82a0c6271395748771e"}, {"path": "libhelix-mp3/readme.txt", "size": 6395, "hash": "8ec9fec7c8e08fb8a3aef9bf419b504a668db3469ee2db5320efa5dff7ccb35e"}, {"path": "libhelix-mp3/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/testwrap/debug.h", "size": 1960, "hash": "7e68bc98e7bbb50063969e70d182475193f03e4a81bce17b5f9bbe2fcf9238fb"}, {"path": "libhelix-mp3/testwrap/timing.h", "size": 2026, "hash": "e8a9f02d528e15eab700167e858a6dc9a909b64333b31ea41ae0e57547083614"}, {"path": "libhelix-mp3/testwrap/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/testwrap/debug.c", "size": 3737, "hash": "7b096fd9ffc9b0d9edbfd08abc2d9db5c102a8de2f842e05eaacbbe3ab45e947"}, {"path": "libhelix-mp3/testwrap/main.c", "size": 6164, "hash": "a0c7af534bfd502b46f4e06c21485ec5add854256ea9914bcf11bbfa17068fac"}, {"path": "libhelix-mp3/testwrap/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/testwrap/winmain.cpp", "size": 5927, "hash": "80def4ff1bfd2659cf2eb9a7cc2a688167d0e8314bb5333adba1fc1cb6ff1b47"}, {"path": "libhelix-mp3/testwrap/Umakefil", "size": 2030, "hash": "e6ccf1aa2ec440f86a33fbf9ff50eb8b479080b914f47b3b90eafab1390ace45"}, {"path": "libhelix-mp3/testwrap/timing.c", "size": 4721, "hash": "8c647e6f1980143683c45646036090990b98a649d018fd8d8d67b8b79f4e96a7"}, {"path": "libhelix-mp3/testwrap/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/real/bitstream.c", "size": 14852, "hash": "32d214fe0827be15a600f9b5c1561e1b8c268eca24155e086bcfce2bb661c6d8"}, {"path": "libhelix-mp3/real/dqchan.c", "size": 11952, "hash": "36076fe55b2cb39303906e7d67e69d2e1384d4525a9664a1bfe822ba35174e3f"}, {"path": "libhelix-mp3/real/assembly.h", "size": 10588, "hash": "6b77482bed1651d427fd1ab487fb5a6ced89eba71b8911fb3cd2e042a9d7ee34"}, {"path": "libhelix-mp3/real/imdct.c", "size": 27763, "hash": "96379a2d2bebd07963d137cf871a90087ef05283747b3e84d5732914edb77778"}, {"path": "libhelix-mp3/real/hufftabs.c", "size": 41605, "hash": "e30301d7b5a82735d347c8544371aa64efa6bef47bb159e518be01805e26da9d"}, {"path": "libhelix-mp3/real/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/real/dequant.c", "size": 6622, "hash": "9c143abfa37e7e4cc09947066f0ed1391b2a1bf7aae88975bca9125f891976a0"}, {"path": "libhelix-mp3/real/stproc.c", "size": 10485, "hash": "96d93d8abf85368047e205740b7acbd07c4a7f2ea7d30ea7a642b5bd684fb0fd"}, {"path": "libhelix-mp3/real/huffman.c", "size": 16640, "hash": "3d1d191eb4fe943d649c7cc0902020ad1f354998aac282d7a9083390c873a40a"}, {"path": "libhelix-mp3/real/buffers.c", "size": 6182, "hash": "c65d4eda21e2134f814e86c46a0f51e9b10cb819f7a394d5191706b03f84fd51"}, {"path": "libhelix-mp3/real/dct32.c", "size": 10442, "hash": "26553106859ecb0081897d8c3754246090d6824bd95ccc227dbb5fc58e07afad"}, {"path": "libhelix-mp3/real/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/real/scalfact.c", "size": 13659, "hash": "a2c69b5d0b6cdb92409d61e7f86e7b29f0bde856f6480b923fab28cbfd641c8a"}, {"path": "libhelix-mp3/real/polyphase.c", "size": 9155, "hash": "30630c48ed81f40b1c93f644742b68f4ee7c2af40203973a5e315109646fc25e"}, {"path": "libhelix-mp3/real/subband.c", "size": 3865, "hash": "6c69ffeb35d9b529b4835d18d34016d442b1d7ef7c58dd2bb17141d81070c1d8"}, {"path": "libhelix-mp3/real/trigtabs.c", "size": 14758, "hash": "f23ef3a16bcae0570978bbd5f2113442d986ca4ee2d1c22e01778a6b92acfbc5"}, {"path": "libhelix-mp3/real/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/real/coder.h", "size": 11506, "hash": "b783839d1bcb5b099a8a56de8aec1ff156fe5dcb77410487631f13d02f2350dc"}, {"path": "libhelix-mp3/docs/cpuusage.xls", "size": 15360, "hash": "becf8145ad6ccf1a2366a2eb6bd8a45c20d780c69119344561b772de0d1f73aa"}, {"path": "libhelix-mp3/docs/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/docs/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/docs/memory.xls", "size": 16896, "hash": "9673f4e0ad5a877728d21b3c41faf9b53cc2610ebf6ee16e1562f870e42be3ac"}, {"path": "libhelix-mp3/docs/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/pub/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/pub/mpadecobjfixpt.h", "size": 4724, "hash": "88f4d6c38642f045990197c6c63e75a8f5996a53dfcfcad1b04865b4faf72aca"}, {"path": "libhelix-mp3/pub/statname.h", "size": 3574, "hash": "542c7f935f06fa3049c2973a6046404f67a81d4e267662a62492165a692c3021"}, {"path": "libhelix-mp3/pub/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/pub/mp3common.h", "size": 4369, "hash": "496e0f2eb520d6a34152530a5ab7c475bdc2c29cc45ca1f60e0e502cdca7574f"}, {"path": "libhelix-mp3/pub/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/pub/mp3dec.h", "size": 4323, "hash": "2119a75476d2a98c3447de28a7771aeb549cc42d5527de029bdea434d7339cec"}, {"path": "libhelix-mp3/real/arm/asmpoly_gcc.S", "size": 14640, "hash": "1491115ae95f417e24a1636da922c479d31cca7ccbdf9ccaf17218fec9af5195"}, {"path": "libhelix-mp3/real/arm/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/real/arm/asmmisc.s", "size": 1875, "hash": "a7cdfea4f83ccd9fb23314e93082ca62e928ac4acdd880ff82dc2047b17c41da"}, {"path": "libhelix-mp3/real/arm/asmpoly.s", "size": 10014, "hash": "bb2a65b31e8429b08f680981222ab5462610ae818e584662aa11da2804ea5144"}, {"path": "libhelix-mp3/real/arm/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/real/arm/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/real/projects/visualc/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/real/projects/visualc/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/real/projects/visualc/testwrap.dsp", "size": 5764, "hash": "a2fdbabd0e22aef976bb16cb427579dea530fc01f1651c7190d2b18fb3038947"}, {"path": "libhelix-mp3/real/projects/visualc/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/real/projects/visualc/mp3dec.dsw", "size": 813, "hash": "4ebda24ead66a635ad349066d1607820fbe80d613b7778399cd7b03549a27b20"}, {"path": "libhelix-mp3/real/projects/visualc/mp3dec.dsp", "size": 4129, "hash": "4cc1b283547a67ec9c5c7aa13ed8f4d3c1b9a1c3d71e9179e6e1129dca6cbe12"}, {"path": "libhelix-mp3/real/projects/armwince/mp3dec.vcw", "size": 818, "hash": "e59a3ac6e452d1d5505c485a990447aa92b643591e66b2cbbe3025e019a89f2a"}, {"path": "libhelix-mp3/real/projects/armwince/mp3dec.vcp", "size": 9319, "hash": "ddd73a4a015dad2b37f702a4dabad600c86a43c4f10601d4af48cd0dcbd3e94f"}, {"path": "libhelix-mp3/real/projects/armwince/testwrap.vcp", "size": 6213, "hash": "bf148164531fb1da9757813d97fdef306a4eb13c5b55fb78ea042e19b88ce22b"}, {"path": "libhelix-mp3/real/projects/armwince/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/real/projects/armwince/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/real/projects/armwince/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}, {"path": "libhelix-mp3/real/projects/armads/testwrap.mcp", "size": 191044, "hash": "30ab7293a0ca94f4578001d1ada5843483000ef40a66168416fe4bf69c1efb26"}, {"path": "libhelix-mp3/real/projects/armads/RCSL.txt", "size": 44006, "hash": "b1b22032413a5918f4157f3a182bd4c72f3642ee4eaa421f7da0f968499755e8"}, {"path": "libhelix-mp3/real/projects/armads/mp3dec.mcp", "size": 190427, "hash": "8ac17a035e982f1c603e19ff5c6a241353adcf023c69671dcecf472ce47b7473"}, {"path": "libhelix-mp3/real/projects/armads/RPSL.txt", "size": 30146, "hash": "6dd3ee442f128b1c4dbbd84f855d662d5127c22d96c3631c0ef89d26407e628a"}, {"path": "libhelix-mp3/real/projects/armads/LICENSE.txt", "size": 1551, "hash": "86cd65f6dd725044f6cd23e8ddab1dd447722d58b74bc6b9a3a13088fa8b44fa"}]} \ No newline at end of file diff --git a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcp b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcp index b0d942d..7f8ab60 100644 --- a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcp +++ b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcp @@ -1,335 +1,335 @@ -# Microsoft eMbedded Visual Tools Project File - Name="mp3dec" - Package Owner=<4> -# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (WCE ARM) Static Library" 0x8504 - -CFG=mp3dec - Win32 (WCE ARM) Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mp3dec.vcn". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mp3dec.vcn" CFG="mp3dec - Win32 (WCE ARM) Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mp3dec - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Static Library") -!MESSAGE "mp3dec - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -# PROP ATL_Project 2 -CPP=xicle3 - -!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "ARMRel" -# PROP BASE Intermediate_Dir "ARMRel" -# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ARMRel" -# PROP Intermediate_Dir "ARMRel_obj" -# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /Oxs /M$(CECrtMT) /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\..\..\..\..\..\..\common\runtime\pub" /I "..\..\..\..\..\..\..\common\include" /I "..\..\..\pub" /D "NDEBUG" /D "_WINDOWS" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Oxs /M$(CECrtMT) /c -# SUBTRACT CPP /YX -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo - -!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "ARMDbg" -# PROP BASE Intermediate_Dir "ARMDbg" -# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ARMDbg" -# PROP Intermediate_Dir "ARMDbg" -# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /M$(CECrtMTDebug) /c -# ADD CPP /nologo /W3 /Zi /Od /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /I "..\..\..\..\..\..\..\common\include" /D "DEBUG" /D "_WINDOWS" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /M$(CECrtMTDebug) /c -# SUBTRACT CPP /YX -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo - -!ENDIF - -# Begin Target - -# Name "mp3dec - Win32 (WCE ARM) Release" -# Name "mp3dec - Win32 (WCE ARM) Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Group "general" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\mp3dec.c -DEP_CPP_MP3DE=\ - "..\..\..\..\..\..\..\common\include\hxbastsd.h"\ - "..\..\..\..\..\..\..\common\include\hxtypes.h"\ - "..\..\..\..\..\..\..\common\include\platform\symbian\symbiantypes.h"\ - "..\..\..\..\..\..\..\common\runtime\pub\hlxclib\stdlib.h"\ - "..\..\..\..\..\..\..\common\runtime\pub\hlxclib\string.h"\ - "..\..\..\..\..\..\..\common\runtime\pub\platform\openwave\hx_op_stdc.h"\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - -NODEP_CPP_MP3DE=\ - "..\..\..\..\..\..\..\common\include\types\vxTypesOld.h"\ - "..\..\..\..\..\..\..\common\include\vxWorks.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\..\mp3tabs.c -DEP_CPP_MP3TA=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - -# End Source File -# End Group -# Begin Group "csource" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\bitstream.c -DEP_CPP_BITST=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\assembly.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\buffers.c -DEP_CPP_BUFFE=\ - "..\..\..\..\..\..\..\common\include\hxbastsd.h"\ - "..\..\..\..\..\..\..\common\include\hxtypes.h"\ - "..\..\..\..\..\..\..\common\include\platform\symbian\symbiantypes.h"\ - "..\..\..\..\..\..\..\common\runtime\pub\hlxclib\stdlib.h"\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\coder.h"\ - -NODEP_CPP_BUFFE=\ - "..\..\..\..\..\..\..\common\include\types\vxTypesOld.h"\ - "..\..\..\..\..\..\..\common\include\vxWorks.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\dct32.c -DEP_CPP_DCT32=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\assembly.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\dequant.c -DEP_CPP_DEQUA=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\assembly.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\dqchan.c -DEP_CPP_DQCHA=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\assembly.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\huffman.c -DEP_CPP_HUFFM=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\hufftabs.c -DEP_CPP_HUFFT=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\imdct.c -DEP_CPP_IMDCT=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\assembly.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\scalfact.c -DEP_CPP_SCALF=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\stproc.c -DEP_CPP_STPRO=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\assembly.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\subband.c -DEP_CPP_SUBBA=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\assembly.h"\ - "..\..\coder.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\trigtabs.c -DEP_CPP_TRIGT=\ - "..\..\..\pub\mp3common.h"\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\statname.h"\ - "..\..\coder.h"\ - -# End Source File -# End Group -# Begin Group "assembly" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\arm\asmmisc.s - -!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release" - -# PROP Ignore_Default_Tool 1 -# Begin Custom Build - Performing Custom Build Step on $(InputPath) -IntDir=.\ARMRel_obj -InputPath=..\..\arm\asmmisc.s -InputName=asmmisc - -"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj - -# End Custom Build - -!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug" - -# PROP Ignore_Default_Tool 1 -# Begin Custom Build - Performing Custom Build Step on $(InputPath) -IntDir=.\ARMDbg -InputPath=..\..\arm\asmmisc.s -InputName=asmmisc - -"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\arm\asmpoly.s - -!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release" - -# PROP Ignore_Default_Tool 1 -# Begin Custom Build -IntDir=.\ARMRel_obj -InputPath=..\..\arm\asmpoly.s -InputName=asmpoly - -"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj - -# End Custom Build - -!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug" - -# PROP Ignore_Default_Tool 1 -# Begin Custom Build -IntDir=.\ARMDbg -InputPath=..\..\arm\asmpoly.s -InputName=asmpoly - -"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj - -# End Custom Build - -!ENDIF - -# End Source File -# End Group -# End Group -# End Target -# End Project +# Microsoft eMbedded Visual Tools Project File - Name="mp3dec" - Package Owner=<4> +# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (WCE ARM) Static Library" 0x8504 + +CFG=mp3dec - Win32 (WCE ARM) Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mp3dec.vcn". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mp3dec.vcn" CFG="mp3dec - Win32 (WCE ARM) Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mp3dec - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Static Library") +!MESSAGE "mp3dec - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +# PROP ATL_Project 2 +CPP=xicle3 + +!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ARMRel" +# PROP BASE Intermediate_Dir "ARMRel" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ARMRel" +# PROP Intermediate_Dir "ARMRel_obj" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /Oxs /M$(CECrtMT) /c +# ADD CPP /nologo /W3 /Zi /O2 /I "..\..\..\..\..\..\..\common\runtime\pub" /I "..\..\..\..\..\..\..\common\include" /I "..\..\..\pub" /D "NDEBUG" /D "_WINDOWS" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /Oxs /M$(CECrtMT) /c +# SUBTRACT CPP /YX +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ARMDbg" +# PROP BASE Intermediate_Dir "ARMDbg" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "ARMDbg" +# PROP Intermediate_Dir "ARMDbg" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /M$(CECrtMTDebug) /c +# ADD CPP /nologo /W3 /Zi /Od /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /I "..\..\..\..\..\..\..\common\include" /D "DEBUG" /D "_WINDOWS" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /M$(CECrtMTDebug) /c +# SUBTRACT CPP /YX +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ENDIF + +# Begin Target + +# Name "mp3dec - Win32 (WCE ARM) Release" +# Name "mp3dec - Win32 (WCE ARM) Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "general" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\mp3dec.c +DEP_CPP_MP3DE=\ + "..\..\..\..\..\..\..\common\include\hxbastsd.h"\ + "..\..\..\..\..\..\..\common\include\hxtypes.h"\ + "..\..\..\..\..\..\..\common\include\platform\symbian\symbiantypes.h"\ + "..\..\..\..\..\..\..\common\runtime\pub\hlxclib\stdlib.h"\ + "..\..\..\..\..\..\..\common\runtime\pub\hlxclib\string.h"\ + "..\..\..\..\..\..\..\common\runtime\pub\platform\openwave\hx_op_stdc.h"\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + +NODEP_CPP_MP3DE=\ + "..\..\..\..\..\..\..\common\include\types\vxTypesOld.h"\ + "..\..\..\..\..\..\..\common\include\vxWorks.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\..\mp3tabs.c +DEP_CPP_MP3TA=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + +# End Source File +# End Group +# Begin Group "csource" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\bitstream.c +DEP_CPP_BITST=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\assembly.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\buffers.c +DEP_CPP_BUFFE=\ + "..\..\..\..\..\..\..\common\include\hxbastsd.h"\ + "..\..\..\..\..\..\..\common\include\hxtypes.h"\ + "..\..\..\..\..\..\..\common\include\platform\symbian\symbiantypes.h"\ + "..\..\..\..\..\..\..\common\runtime\pub\hlxclib\stdlib.h"\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\coder.h"\ + +NODEP_CPP_BUFFE=\ + "..\..\..\..\..\..\..\common\include\types\vxTypesOld.h"\ + "..\..\..\..\..\..\..\common\include\vxWorks.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\dct32.c +DEP_CPP_DCT32=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\assembly.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\dequant.c +DEP_CPP_DEQUA=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\assembly.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\dqchan.c +DEP_CPP_DQCHA=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\assembly.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\huffman.c +DEP_CPP_HUFFM=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\hufftabs.c +DEP_CPP_HUFFT=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\imdct.c +DEP_CPP_IMDCT=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\assembly.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\scalfact.c +DEP_CPP_SCALF=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\stproc.c +DEP_CPP_STPRO=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\assembly.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\subband.c +DEP_CPP_SUBBA=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\assembly.h"\ + "..\..\coder.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\trigtabs.c +DEP_CPP_TRIGT=\ + "..\..\..\pub\mp3common.h"\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\statname.h"\ + "..\..\coder.h"\ + +# End Source File +# End Group +# Begin Group "assembly" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\arm\asmmisc.s + +!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release" + +# PROP Ignore_Default_Tool 1 +# Begin Custom Build - Performing Custom Build Step on $(InputPath) +IntDir=.\ARMRel_obj +InputPath=..\..\arm\asmmisc.s +InputName=asmmisc + +"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug" + +# PROP Ignore_Default_Tool 1 +# Begin Custom Build - Performing Custom Build Step on $(InputPath) +IntDir=.\ARMDbg +InputPath=..\..\arm\asmmisc.s +InputName=asmmisc + +"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\arm\asmpoly.s + +!IF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Release" + +# PROP Ignore_Default_Tool 1 +# Begin Custom Build +IntDir=.\ARMRel_obj +InputPath=..\..\arm\asmpoly.s +InputName=asmpoly + +"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "mp3dec - Win32 (WCE ARM) Debug" + +# PROP Ignore_Default_Tool 1 +# Begin Custom Build +IntDir=.\ARMDbg +InputPath=..\..\arm\asmpoly.s +InputName=asmpoly + +"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + "$(EVCROOT)\wce300\bin\armasm" $(InputPath) $(IntDir)\$(InputName).obj + +# End Custom Build + +!ENDIF + +# End Source File +# End Group +# End Group +# End Target +# End Project diff --git a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcw b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcw index 82b2baf..bec791e 100644 --- a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcw +++ b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/mp3dec.vcw @@ -1,44 +1,44 @@ -Microsoft eMbedded Visual Tools Workspace File, Format Version 3.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "mp3dec"=.\mp3dec.vcp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "testwrap"=.\testwrap.vcp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mp3dec - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft eMbedded Visual Tools Workspace File, Format Version 3.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "mp3dec"=.\mp3dec.vcp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "testwrap"=.\testwrap.vcp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name mp3dec + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/testwrap.vcp b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/testwrap.vcp index 5b36680..8f1a8d5 100644 --- a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/testwrap.vcp +++ b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/armwince/testwrap.vcp @@ -1,146 +1,146 @@ -# Microsoft eMbedded Visual Tools Project File - Name="testwrap" - Package Owner=<4> -# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (WCE ARM) Application" 0x8501 - -CFG=testwrap - Win32 (WCE ARM) Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testwrap.vcn". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testwrap.vcn" CFG="testwrap - Win32 (WCE ARM) Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testwrap - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application") -!MESSAGE "testwrap - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -# PROP ATL_Project 2 -CPP=xicle3 -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testwrap - Win32 (WCE ARM) Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "ARMRel" -# PROP BASE Intermediate_Dir "ARMRel" -# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "ARMRel" -# PROP Intermediate_Dir "ARMRel" -# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r -# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r -# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /YX /Oxs /M$(CECrtMT) /c -# ADD CPP /nologo /W3 /Zi /O2 /I "..\..\..\pub" /I "..\..\..\testwrap" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /YX /Oxs /M$(CECrtMT) /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilinke3 -# ADD BASE LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM -# ADD LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM - -!ELSEIF "$(CFG)" == "testwrap - Win32 (WCE ARM) Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "ARMDbg" -# PROP BASE Intermediate_Dir "ARMDbg" -# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "ARMDbg" -# PROP Intermediate_Dir "ARMDbg" -# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" -# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" -# PROP Target_Dir "" -# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r -# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r -# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /YX /M$(CECrtMTDebug) /c -# ADD CPP /nologo /W3 /Zi /Od /I "..\..\..\pub" /I "..\..\..\testwrap" /D "DEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /YX /M$(CECrtMTDebug) /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=xilinke3 -# ADD BASE LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM -# ADD LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM - -!ENDIF - -# Begin Target - -# Name "testwrap - Win32 (WCE ARM) Release" -# Name "testwrap - Win32 (WCE ARM) Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\..\..\testwrap\debug.c -DEP_CPP_DEBUG=\ - "..\..\..\testwrap\debug.h"\ - -NODEP_CPP_DEBUG=\ - "..\..\..\testwrap\fortify.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\..\mpadecobj.cpp -DEP_CPP_MPADE=\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\mpadecobjfixpt.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\..\testwrap\timing.c -DEP_CPP_TIMIN=\ - "..\..\..\testwrap\timing.h"\ - -# End Source File -# Begin Source File - -SOURCE=..\..\..\testwrap\winmain.cpp -DEP_CPP_WINMA=\ - "..\..\..\pub\mp3dec.h"\ - "..\..\..\pub\mpadecobjfixpt.h"\ - "..\..\..\testwrap\debug.h"\ - "..\..\..\testwrap\timing.h"\ - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project +# Microsoft eMbedded Visual Tools Project File - Name="testwrap" - Package Owner=<4> +# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (WCE ARM) Application" 0x8501 + +CFG=testwrap - Win32 (WCE ARM) Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "testwrap.vcn". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "testwrap.vcn" CFG="testwrap - Win32 (WCE ARM) Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "testwrap - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application") +!MESSAGE "testwrap - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +# PROP ATL_Project 2 +CPP=xicle3 +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "testwrap - Win32 (WCE ARM) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ARMRel" +# PROP BASE Intermediate_Dir "ARMRel" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ARMRel" +# PROP Intermediate_Dir "ARMRel" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "NDEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r +# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /YX /Oxs /M$(CECrtMT) /c +# ADD CPP /nologo /W3 /Zi /O2 /I "..\..\..\pub" /I "..\..\..\testwrap" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /YX /Oxs /M$(CECrtMT) /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=xilinke3 +# ADD BASE LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM +# ADD LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM + +!ELSEIF "$(CFG)" == "testwrap - Win32 (WCE ARM) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ARMDbg" +# PROP BASE Intermediate_Dir "ARMDbg" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "ARMDbg" +# PROP Intermediate_Dir "ARMDbg" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "DEBUG" /d "$(CePlatform)" /d "ARM" /d "_ARM_" /r +# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /YX /M$(CECrtMTDebug) /c +# ADD CPP /nologo /W3 /Zi /Od /I "..\..\..\pub" /I "..\..\..\testwrap" /D "DEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "UNICODE" /D "_UNICODE" /YX /M$(CECrtMTDebug) /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=xilinke3 +# ADD BASE LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM +# ADD LINK32 commctrl.lib coredll.lib aygshell.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /debug /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM + +!ENDIF + +# Begin Target + +# Name "testwrap - Win32 (WCE ARM) Release" +# Name "testwrap - Win32 (WCE ARM) Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\..\testwrap\debug.c +DEP_CPP_DEBUG=\ + "..\..\..\testwrap\debug.h"\ + +NODEP_CPP_DEBUG=\ + "..\..\..\testwrap\fortify.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\..\mpadecobj.cpp +DEP_CPP_MPADE=\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\mpadecobjfixpt.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\..\testwrap\timing.c +DEP_CPP_TIMIN=\ + "..\..\..\testwrap\timing.h"\ + +# End Source File +# Begin Source File + +SOURCE=..\..\..\testwrap\winmain.cpp +DEP_CPP_WINMA=\ + "..\..\..\pub\mp3dec.h"\ + "..\..\..\pub\mpadecobjfixpt.h"\ + "..\..\..\testwrap\debug.h"\ + "..\..\..\testwrap\timing.h"\ + +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsp b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsp index 368124a..f6b3bd9 100644 --- a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsp +++ b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsp @@ -1,158 +1,158 @@ -# Microsoft Developer Studio Project File - Name="mp3dec" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=mp3dec - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "mp3dec.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "mp3dec.mak" CFG="mp3dec - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "mp3dec - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "mp3dec - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "mp3dec - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "rel_obj" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\..\..\common\include" /I "..\.." /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /D "NDEBUG" /D "REL_ENABLE_ASSERTS" /D "_WINDOWS" /D "_LIB" /D "WIN32" /D "_MBCS" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "mp3dec - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\..\..\common\include" /I "..\.." /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /D "_DEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_WINDOWS" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "mp3dec - Win32 Release" -# Name "mp3dec - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Group "general" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\mp3dec.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\mp3tabs.c -# End Source File -# End Group -# Begin Group "csource" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\bitstream.c -# End Source File -# Begin Source File - -SOURCE=..\..\buffers.c -# End Source File -# Begin Source File - -SOURCE=..\..\dct32.c -# End Source File -# Begin Source File - -SOURCE=..\..\dequant.c -# End Source File -# Begin Source File - -SOURCE=..\..\dqchan.c -# End Source File -# Begin Source File - -SOURCE=..\..\huffman.c -# End Source File -# Begin Source File - -SOURCE=..\..\hufftabs.c -# End Source File -# Begin Source File - -SOURCE=..\..\imdct.c -# End Source File -# Begin Source File - -SOURCE=..\..\polyphase.c -# End Source File -# Begin Source File - -SOURCE=..\..\scalfact.c -# End Source File -# Begin Source File - -SOURCE=..\..\stproc.c -# End Source File -# Begin Source File - -SOURCE=..\..\subband.c -# End Source File -# Begin Source File - -SOURCE=..\..\trigtabs.c -# End Source File -# End Group -# End Group -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="mp3dec" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=mp3dec - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mp3dec.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mp3dec.mak" CFG="mp3dec - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mp3dec - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "mp3dec - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mp3dec - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "release" +# PROP Intermediate_Dir "rel_obj" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\..\..\common\include" /I "..\.." /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /D "NDEBUG" /D "REL_ENABLE_ASSERTS" /D "_WINDOWS" /D "_LIB" /D "WIN32" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "mp3dec - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "debug" +# PROP Intermediate_Dir "debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\..\..\common\include" /I "..\.." /I "..\..\..\pub" /I "..\..\..\..\..\..\..\common\runtime\pub" /D "_DEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_WINDOWS" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "mp3dec - Win32 Release" +# Name "mp3dec - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "general" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\mp3dec.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\mp3tabs.c +# End Source File +# End Group +# Begin Group "csource" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\bitstream.c +# End Source File +# Begin Source File + +SOURCE=..\..\buffers.c +# End Source File +# Begin Source File + +SOURCE=..\..\dct32.c +# End Source File +# Begin Source File + +SOURCE=..\..\dequant.c +# End Source File +# Begin Source File + +SOURCE=..\..\dqchan.c +# End Source File +# Begin Source File + +SOURCE=..\..\huffman.c +# End Source File +# Begin Source File + +SOURCE=..\..\hufftabs.c +# End Source File +# Begin Source File + +SOURCE=..\..\imdct.c +# End Source File +# Begin Source File + +SOURCE=..\..\polyphase.c +# End Source File +# Begin Source File + +SOURCE=..\..\scalfact.c +# End Source File +# Begin Source File + +SOURCE=..\..\stproc.c +# End Source File +# Begin Source File + +SOURCE=..\..\subband.c +# End Source File +# Begin Source File + +SOURCE=..\..\trigtabs.c +# End Source File +# End Group +# End Group +# End Target +# End Project diff --git a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsw b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsw index e4fef3d..07eac13 100644 --- a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsw +++ b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/mp3dec.dsw @@ -1,44 +1,44 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "mp3dec"=.\mp3dec.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "testwrap"=.\testwrap.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name mp3dec - End Project Dependency -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "mp3dec"=.\mp3dec.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "testwrap"=.\testwrap.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name mp3dec + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/testwrap.dsp b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/testwrap.dsp index f92b9d6..c149b15 100644 --- a/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/testwrap.dsp +++ b/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/real/projects/visualc/testwrap.dsp @@ -1,174 +1,174 @@ -# Microsoft Developer Studio Project File - Name="testwrap" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=testwrap - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "testwrap.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "testwrap.mak" CFG="testwrap - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "testwrap - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "testwrap - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "testwrap - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "release" -# PROP Intermediate_Dir "rel_obj" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\pub" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HELIX_FEATURE_AUDIO_MPA_LAYER3" /FD /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"release\mp3dec.exe" - -!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "debug" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\pub" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HELIX_FEATURE_AUDIO_MPA_LAYER3" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"debug\mp3dec.exe" /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "testwrap - Win32 Release" -# Name "testwrap - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Group "cppwrapper" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\mpadecobj.cpp - -!IF "$(CFG)" == "testwrap - Win32 Release" - -# ADD CPP /I "..\..\..\testwrap\cppshim" - -!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" - -# PROP Exclude_From_Build 1 -# ADD CPP /I "..\..\..\testwrap\cppshim" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\testwrap\winmain.cpp - -!IF "$(CFG)" == "testwrap - Win32 Release" - -!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" - -# PROP Exclude_From_Build 1 - -!ENDIF - -# End Source File -# End Group -# Begin Group "cwrapper" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=..\..\..\testwrap\main.c - -!IF "$(CFG)" == "testwrap - Win32 Release" - -# PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=..\..\..\testwrap\timing.c - -!IF "$(CFG)" == "testwrap - Win32 Release" - -# PROP Exclude_From_Build 1 - -!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" - -!ENDIF - -# End Source File -# End Group -# Begin Source File - -SOURCE=..\..\..\testwrap\debug.c - -!IF "$(CFG)" == "testwrap - Win32 Release" - -!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" - -!ENDIF - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="testwrap" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=testwrap - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "testwrap.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "testwrap.mak" CFG="testwrap - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "testwrap - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "testwrap - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "testwrap - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "release" +# PROP Intermediate_Dir "rel_obj" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\pub" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HELIX_FEATURE_AUDIO_MPA_LAYER3" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"release\mp3dec.exe" + +!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "debug" +# PROP Intermediate_Dir "debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\pub" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HELIX_FEATURE_AUDIO_MPA_LAYER3" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"debug\mp3dec.exe" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "testwrap - Win32 Release" +# Name "testwrap - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "cppwrapper" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\mpadecobj.cpp + +!IF "$(CFG)" == "testwrap - Win32 Release" + +# ADD CPP /I "..\..\..\testwrap\cppshim" + +!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" + +# PROP Exclude_From_Build 1 +# ADD CPP /I "..\..\..\testwrap\cppshim" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\testwrap\winmain.cpp + +!IF "$(CFG)" == "testwrap - Win32 Release" + +!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" + +# PROP Exclude_From_Build 1 + +!ENDIF + +# End Source File +# End Group +# Begin Group "cwrapper" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\testwrap\main.c + +!IF "$(CFG)" == "testwrap - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\testwrap\timing.c + +!IF "$(CFG)" == "testwrap - Win32 Release" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" + +!ENDIF + +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\..\testwrap\debug.c + +!IF "$(CFG)" == "testwrap - Win32 Release" + +!ELSEIF "$(CFG)" == "testwrap - Win32 Debug" + +!ENDIF + +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/managed_components/espressif__button/CHECKSUMS.json b/managed_components/espressif__button/CHECKSUMS.json new file mode 100644 index 0000000..0e3b10b --- /dev/null +++ b/managed_components/espressif__button/CHECKSUMS.json @@ -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"}]} \ No newline at end of file diff --git a/managed_components/espressif__cmake_utilities/CHECKSUMS.json b/managed_components/espressif__cmake_utilities/CHECKSUMS.json new file mode 100644 index 0000000..5954add --- /dev/null +++ b/managed_components/espressif__cmake_utilities/CHECKSUMS.json @@ -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"}]} \ No newline at end of file diff --git a/managed_components/espressif__cmake_utilities/scripts/gen_custom_ota.py b/managed_components/espressif__cmake_utilities/scripts/gen_custom_ota.py old mode 100755 new mode 100644 diff --git a/managed_components/espressif__cmake_utilities/scripts/relinker/relinker.py b/managed_components/espressif__cmake_utilities/scripts/relinker/relinker.py old mode 100755 new mode 100644 diff --git a/managed_components/espressif__mdns/.component_hash b/managed_components/espressif__mdns/.component_hash index 27bf760..60f4024 100644 --- a/managed_components/espressif__mdns/.component_hash +++ b/managed_components/espressif__mdns/.component_hash @@ -1 +1 @@ -d36b265164be5139f92de993f08f5ecaa0de0c0acbf84deee1f10bb5902d04ff \ No newline at end of file +3ec0af5f6bce310512e90f482388d21cc7c0e99668172d2f895356165fc6f7c5 \ No newline at end of file diff --git a/managed_components/espressif__mdns/.cz.yaml b/managed_components/espressif__mdns/.cz.yaml index a8390ac..2b6a744 100644 --- a/managed_components/espressif__mdns/.cz.yaml +++ b/managed_components/espressif__mdns/.cz.yaml @@ -3,6 +3,6 @@ commitizen: bump_message: 'bump(mdns): $current_version -> $new_version' pre_bump_hooks: python ../../ci/changelog.py mdns tag_format: mdns-v$version - version: 1.4.3 + version: 1.8.2 version_files: - idf_component.yml diff --git a/managed_components/espressif__mdns/CHANGELOG.md b/managed_components/espressif__mdns/CHANGELOG.md index 2fae369..75a81db 100644 --- a/managed_components/espressif__mdns/CHANGELOG.md +++ b/managed_components/espressif__mdns/CHANGELOG.md @@ -1,5 +1,92 @@ # 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) ### Features diff --git a/managed_components/espressif__mdns/CMakeLists.txt b/managed_components/espressif__mdns/CMakeLists.txt index e0b2a4d..5823849 100644 --- a/managed_components/espressif__mdns/CMakeLists.txt +++ b/managed_components/espressif__mdns/CMakeLists.txt @@ -10,15 +10,17 @@ else() set(MDNS_CONSOLE "") endif() +set(MDNS_MEMORY "mdns_mem_caps.c") + idf_build_get_property(target IDF_TARGET) if(${target} STREQUAL "linux") set(dependencies esp_netif_linux esp_event) 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() set(dependencies lwip console esp_netif) 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() idf_component_register( @@ -32,7 +34,9 @@ if(${target} STREQUAL "linux") target_link_libraries(${COMPONENT_LIB} PRIVATE "-lbsd") endif() - if(CONFIG_ETH_ENABLED) idf_component_optional_requires(PRIVATE esp_eth) endif() + +idf_component_get_property(MDNS_VERSION ${COMPONENT_NAME} COMPONENT_VERSION) +target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DESP_MDNS_VERSION_NUMBER=\"${MDNS_VERSION}\"") diff --git a/managed_components/espressif__mdns/Kconfig b/managed_components/espressif__mdns/Kconfig index 3ef88c8..04380a4 100644 --- a/managed_components/espressif__mdns/Kconfig +++ b/managed_components/espressif__mdns/Kconfig @@ -61,6 +61,48 @@ menu "mDNS" default 0x0 if MDNS_TASK_AFFINITY_CPU0 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 int "mDNS adding service timeout (ms)" range 10 30000 diff --git a/managed_components/espressif__mdns/examples/query_advertise/main/mdns_example_main.c b/managed_components/espressif__mdns/examples/query_advertise/main/mdns_example_main.c index a6aaea2..afe256e 100644 --- a/managed_components/espressif__mdns/examples/query_advertise/main/mdns_example_main.c +++ b/managed_components/espressif__mdns/examples/query_advertise/main/mdns_example_main.c @@ -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 */ @@ -44,12 +44,12 @@ static void initialise_mdns(void) char *hostname = generate_hostname(); //initialize mDNS - ESP_ERROR_CHECK( mdns_init() ); + ESP_ERROR_CHECK(mdns_init()); //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); //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 mdns_txt_item_t serviceTxtData[3] = { @@ -59,10 +59,10 @@ static void initialise_mdns(void) }; //initialize service - 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_add("ESP32-WebServer", "_http", "_tcp", 80, serviceTxtData, 3)); + ESP_ERROR_CHECK(mdns_service_subtype_add_for_host("ESP32-WebServer", "_http", "_tcp", NULL, "_server")); #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 #if CONFIG_MDNS_PUBLISH_DELEGATE_HOST @@ -78,15 +78,15 @@ static void initialise_mdns(void) addr6.addr.type = ESP_IPADDR_TYPE_V6; addr4.next = &addr6; addr6.next = NULL; - 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_delegate_hostname_add(delegated_hostname, &addr4)); + ESP_ERROR_CHECK(mdns_service_add_for_host("test0", "_http", "_tcp", delegated_hostname, 1234, serviceTxtData, 3)); free(delegated_hostname); #endif // CONFIG_MDNS_PUBLISH_DELEGATE_HOST //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 - 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); } @@ -314,6 +314,8 @@ void app_main(void) ESP_ERROR_CHECK(esp_netif_init()); ESP_ERROR_CHECK(esp_event_loop_create_default()); + ESP_LOGI(TAG, "mDNS Ver: %s", ESP_MDNS_VERSION_NUMBER); + initialise_mdns(); /* 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) { ESP_LOGI(TAG, "gethostbyname: %s resolved to: %s", host, #if defined(CONFIG_LWIP_IPV6) && defined(CONFIG_LWIP_IPV4) - 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])) + 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])) #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 - inet_ntoa(*(struct in_addr *) (res->h_addr_list[i])) + inet_ntoa(*(struct in_addr *)(res->h_addr_list[i])) #endif ); i++; diff --git a/managed_components/espressif__mdns/idf_component.yml b/managed_components/espressif__mdns/idf_component.yml index 89994b8..c920b72 100644 --- a/managed_components/espressif__mdns/idf_component.yml +++ b/managed_components/espressif__mdns/idf_component.yml @@ -7,7 +7,7 @@ documentation: https://docs.espressif.com/projects/esp-protocols/mdns/docs/lates issues: https://github.com/espressif/esp-protocols/issues repository: git://github.com/espressif/esp-protocols.git repository_info: - commit_sha: 4394f845fccf93bc49111808c24bbd25fbbb20f4 + commit_sha: e9d7350219dfb5e39eb56e5ef60c094190888c55 path: components/mdns url: https://github.com/espressif/esp-protocols/tree/master/components/mdns -version: 1.4.3 +version: 1.8.2 diff --git a/managed_components/espressif__mdns/include/mdns.h b/managed_components/espressif__mdns/include/mdns.h index 8676717..4c89dde 100644 --- a/managed_components/espressif__mdns/include/mdns.h +++ b/managed_components/espressif__mdns/include/mdns.h @@ -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 */ @@ -10,6 +10,7 @@ extern "C" { #endif +#include "sdkconfig.h" #include #define MDNS_TYPE_A 0x0001 @@ -21,6 +22,13 @@ extern "C" { #define MDNS_TYPE_NSEC 0x002F #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 */ @@ -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_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 @@ -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_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 @@ -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_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 @@ -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_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 @@ -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_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 *value, uint8_t value_len); + const char *hostname, const char *key, + const char *value, uint8_t value_len); /** * @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_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. @@ -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_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. @@ -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_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. @@ -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_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. @@ -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_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 * @@ -678,7 +686,7 @@ bool mdns_query_async_get_results(mdns_search_once_t *search, uint32_t timeout, * NULL otherwise. */ 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 @@ -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_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 diff --git a/managed_components/espressif__mdns/mdns.c b/managed_components/espressif__mdns/mdns.c index 0d75836..20ee5ee 100644 --- a/managed_components/espressif__mdns/mdns.c +++ b/managed_components/espressif__mdns/mdns.c @@ -1,23 +1,22 @@ /* - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #include -#include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "freertos/semphr.h" #include "esp_log.h" #include "esp_event.h" +#include "esp_random.h" +#include "esp_check.h" #include "mdns.h" #include "mdns_private.h" #include "mdns_networking.h" -#include "esp_log.h" -#include "esp_random.h" -#include "esp_check.h" +#include "mdns_mem_caps.h" static void _mdns_browse_item_free(mdns_browse_t *browse); static esp_err_t _mdns_send_browse_action(mdns_action_type_t type, mdns_browse_t *browse); @@ -64,6 +63,7 @@ static const char *TAG = "mdns"; static volatile TaskHandle_t _mdns_service_task_handle = NULL; static SemaphoreHandle_t _mdns_service_semaphore = NULL; +static StackType_t *_mdns_stack_buffer; static void _mdns_search_finish_done(void); static mdns_search_once_t *_mdns_search_find_from(mdns_search_once_t *search, mdns_name_t *name, uint16_t type, mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol); @@ -87,8 +87,8 @@ static void _mdns_search_result_add_txt(mdns_search_once_t *search, mdns_txt_ite size_t txt_count, mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol, uint32_t ttl); static mdns_result_t *_mdns_search_result_add_ptr(mdns_search_once_t *search, const char *instance, - const char *service_type, const char *proto, mdns_if_t tcpip_if, - mdns_ip_protocol_t ip_protocol, uint32_t ttl); + const char *service_type, const char *proto, mdns_if_t tcpip_if, + mdns_ip_protocol_t ip_protocol, uint32_t ttl); static bool _mdns_append_host_list_in_services(mdns_out_answer_t **destination, mdns_srv_item_t *services[], size_t services_len, bool flush, bool bye); static bool _mdns_append_host_list(mdns_out_answer_t **destination, bool flush, bool bye); static void _mdns_remap_self_service_hostname(const char *old_hostname, const char *new_hostname); @@ -248,19 +248,20 @@ static char *_mdns_mangle_name(char *in) char *ret; if (p == NULL) { //need to add -2 to string - ret = malloc(strlen(in) + 3); + ret = mdns_mem_malloc(strlen(in) + 3); if (ret == NULL) { HOOK_MALLOC_FAILED; return NULL; } sprintf(ret, "%s-2", in); } else { - ret = malloc(strlen(in) + 2); //one extra byte in case 9-10 or 99-100 etc + size_t in_len = strlen(in); + ret = mdns_mem_malloc(in_len + 2); //one extra byte in case 9-10 or 99-100 etc if (ret == NULL) { HOOK_MALLOC_FAILED; return NULL; } - strcpy(ret, in); + memcpy(ret, in, in_len); int baseLen = p - in; //length of 'bla' in 'bla-123' //overwrite suffix with new suffix sprintf(ret + baseLen, "-%d", suffix + 1); @@ -334,6 +335,9 @@ static mdns_host_item_t *mdns_get_host_item(const char *hostname) static bool _mdns_can_add_more_services(void) { +#if MDNS_MAX_SERVICES == 0 + return false; +#else mdns_srv_item_t *s = _mdns_server->services; uint16_t service_num = 0; while (s) { @@ -343,15 +347,15 @@ static bool _mdns_can_add_more_services(void) return false; } } - return true; +#endif } esp_err_t _mdns_send_rx_action(mdns_rx_packet_t *packet) { mdns_action_t *action = NULL; - action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; return ESP_ERR_NO_MEM; @@ -360,7 +364,7 @@ esp_err_t _mdns_send_rx_action(mdns_rx_packet_t *packet) action->type = ACTION_RX_HANDLE; action->data.rx_handle.packet = packet; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(action); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } return ESP_OK; @@ -403,7 +407,7 @@ static bool _mdns_instance_name_match(const char *lhs, const char *rhs) } static bool _mdns_service_match_instance(const mdns_service_t *srv, const char *instance, const char *service, - const char *proto, const char *hostname) + const char *proto, const char *hostname) { // service and proto must be supplied, if not this instance won't match if (!service || !proto) { @@ -416,7 +420,7 @@ static bool _mdns_service_match_instance(const mdns_service_t *srv, const char * } static mdns_srv_item_t *_mdns_get_service_item_instance(const char *instance, const char *service, const char *proto, - const char *hostname) + const char *hostname) { mdns_srv_item_t *s = _mdns_server->services; while (s) { @@ -749,12 +753,12 @@ static uint16_t _mdns_append_fqdn(uint8_t *packet, uint16_t *index, const char * //empty string so terminate return _mdns_append_u8(packet, index, 0); } - mdns_name_t name; static char buf[MDNS_NAME_BUF_LEN]; uint8_t len = strlen(strings[0]); //try to find first the string length in the packet (if it exists) uint8_t *len_location = (uint8_t *)memchr(packet, (char)len, *index); while (len_location) { + mdns_name_t name; //check if the string after len_location is the string that we are looking for if (memcmp(len_location + 1, strings[0], len)) { //not continuing with our string search_next: @@ -867,8 +871,8 @@ static uint16_t _mdns_append_ptr_record(uint8_t *packet, uint16_t *index, const * @return length of added data: 0 on error or length on success */ static uint16_t _mdns_append_subtype_ptr_record(uint8_t *packet, uint16_t *index, const char *instance, - const char *subtype, const char *service, const char *proto, bool flush, - bool bye) + const char *subtype, const char *service, const char *proto, bool flush, + bool bye) { const char *subtype_str[5] = {subtype, MDNS_SUB_STR, service, proto, MDNS_DEFAULT_DOMAIN}; const char *instance_str[4] = {instance, service, proto, MDNS_DEFAULT_DOMAIN}; @@ -1235,7 +1239,7 @@ static uint16_t _mdns_append_question(uint8_t *packet, uint16_t *index, mdns_out * @brief Helper to get either ETH or STA if the other is provided * Used when two interfaces are on the same subnet */ -static mdns_if_t _mdns_get_other_if (mdns_if_t tcpip_if) +static mdns_if_t _mdns_get_other_if(mdns_if_t tcpip_if) { if (tcpip_if < MDNS_MAX_INTERFACES) { return s_esp_netifs[tcpip_if].duplicate; @@ -1248,7 +1252,7 @@ static mdns_if_t _mdns_get_other_if (mdns_if_t tcpip_if) */ static bool _mdns_if_is_dup(mdns_if_t tcpip_if) { - mdns_if_t other_if = _mdns_get_other_if (tcpip_if); + mdns_if_t other_if = _mdns_get_other_if(tcpip_if); if (other_if == MDNS_MAX_INTERFACES) { return false; } @@ -1321,7 +1325,7 @@ static uint8_t _mdns_append_reverse_ptr_record(uint8_t *packet, uint16_t *index, return 0; } - if (!_mdns_append_type(packet, index, MDNS_ANSWER_PTR, false, 10 /* TTL set to 10s*/ )) { + if (!_mdns_append_type(packet, index, MDNS_ANSWER_PTR, false, 10 /* TTL set to 10s*/)) { return 0; } @@ -1344,7 +1348,7 @@ static uint8_t _mdns_append_reverse_ptr_record(uint8_t *packet, uint16_t *index, * @return number of answers added to the packet */ static uint8_t _mdns_append_service_ptr_answers(uint8_t *packet, uint16_t *index, mdns_service_t *service, bool flush, - bool bye) + bool bye) { uint8_t appended_answers = 0; @@ -1423,7 +1427,7 @@ static uint8_t _mdns_append_answer(uint8_t *packet, uint16_t *index, mdns_out_an if (!_mdns_if_is_dup(tcpip_if)) { return 1; } - mdns_if_t other_if = _mdns_get_other_if (tcpip_if); + mdns_if_t other_if = _mdns_get_other_if(tcpip_if); if (esp_netif_get_ip_info(_mdns_get_esp_netif(other_if), &if_ip_info)) { return 1; } @@ -1561,18 +1565,18 @@ static void _mdns_free_tx_packet(mdns_tx_packet_t *packet) while (q) { mdns_out_question_t *next = q->next; if (q->own_dynamic_memory) { - free((char *)q->host); - free((char *)q->service); - free((char *)q->proto); - free((char *)q->domain); + mdns_mem_free((char *)q->host); + mdns_mem_free((char *)q->service); + mdns_mem_free((char *)q->proto); + mdns_mem_free((char *)q->domain); } - free(q); + mdns_mem_free(q); q = next; } queueFree(mdns_out_answer_t, packet->answers); queueFree(mdns_out_answer_t, packet->servers); queueFree(mdns_out_answer_t, packet->additional); - free(packet); + mdns_mem_free(packet); } /** @@ -1676,13 +1680,13 @@ static void _mdns_remove_scheduled_answer(mdns_if_t tcpip_if, mdns_ip_protocol_t if (a) { if (a->type == type && a->service == service->service) { q->answers = q->answers->next; - free(a); + mdns_mem_free(a); } else { while (a->next) { if (a->next->type == type && a->next->service == service->service) { mdns_out_answer_t *b = a->next; a->next = b->next; - free(b); + mdns_mem_free(b); break; } a = a->next; @@ -1709,14 +1713,14 @@ static void _mdns_dealloc_answer(mdns_out_answer_t **destination, uint16_t type, } if (d->type == type && d->service == service->service) { *destination = d->next; - free(d); + mdns_mem_free(d); return; } while (d->next) { mdns_out_answer_t *a = d->next; if (a->type == type && a->service == service->service) { d->next = a->next; - free(a); + mdns_mem_free(a); return; } d = d->next; @@ -1737,7 +1741,7 @@ static bool _mdns_alloc_answer(mdns_out_answer_t **destination, uint16_t type, m d = d->next; } - mdns_out_answer_t *a = (mdns_out_answer_t *)malloc(sizeof(mdns_out_answer_t)); + mdns_out_answer_t *a = (mdns_out_answer_t *)mdns_mem_malloc(sizeof(mdns_out_answer_t)); if (!a) { HOOK_MALLOC_FAILED; return false; @@ -1758,7 +1762,7 @@ static bool _mdns_alloc_answer(mdns_out_answer_t **destination, uint16_t type, m */ static mdns_tx_packet_t *_mdns_alloc_packet_default(mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol) { - mdns_tx_packet_t *packet = (mdns_tx_packet_t *)malloc(sizeof(mdns_tx_packet_t)); + mdns_tx_packet_t *packet = (mdns_tx_packet_t *)mdns_mem_malloc(sizeof(mdns_tx_packet_t)); if (!packet) { HOOK_MALLOC_FAILED; return NULL; @@ -1783,7 +1787,7 @@ static mdns_tx_packet_t *_mdns_alloc_packet_default(mdns_if_t tcpip_if, mdns_ip_ } static bool _mdns_create_answer_from_service(mdns_tx_packet_t *packet, mdns_service_t *service, - mdns_parsed_question_t *question, bool shared, bool send_flush) + mdns_parsed_question_t *question, bool shared, bool send_flush) { mdns_host_item_t *host = mdns_get_host_item(service->hostname); bool is_delegated = (host != &_mdns_self_host); @@ -1810,7 +1814,6 @@ static bool _mdns_create_answer_from_service(mdns_tx_packet_t *packet, mdns_serv return false; } } else if (question->type == MDNS_TYPE_SDPTR) { - shared = true; if (!_mdns_alloc_answer(&packet->answers, MDNS_TYPE_SDPTR, service, NULL, false, false)) { return false; } @@ -1878,7 +1881,11 @@ static void _mdns_create_answer_from_parsed_packet(mdns_parsed_packet_t *parsed_ shared = q->type == MDNS_TYPE_PTR || q->type == MDNS_TYPE_SDPTR || !parsed_packet->probe; if (q->type == MDNS_TYPE_SRV || q->type == MDNS_TYPE_TXT) { mdns_srv_item_t *service = _mdns_get_service_item_instance(q->host, q->service, q->proto, NULL); - if (service == NULL || !_mdns_create_answer_from_service(packet, service->service, q, shared, send_flush)) { + if (service == NULL) { // Service not found, but we continue to the next question + q = q->next; + continue; + } + if (!_mdns_create_answer_from_service(packet, service->service, q, shared, send_flush)) { _mdns_free_tx_packet(packet); return; } else { @@ -1952,7 +1959,7 @@ static void _mdns_create_answer_from_parsed_packet(mdns_parsed_packet_t *parsed_ || q->type == MDNS_TYPE_PTR #endif /* CONFIG_MDNS_RESPOND_REVERSE_QUERIES */ )) { - mdns_out_question_t *out_question = malloc(sizeof(mdns_out_question_t)); + mdns_out_question_t *out_question = mdns_mem_malloc(sizeof(mdns_out_question_t)); if (out_question == NULL) { HOOK_MALLOC_FAILED; _mdns_free_tx_packet(packet); @@ -2025,7 +2032,7 @@ static bool _mdns_append_host(mdns_out_answer_t **destination, mdns_host_item_t } static bool _mdns_append_host_list_in_services(mdns_out_answer_t **destination, mdns_srv_item_t *services[], - size_t services_len, bool flush, bool bye) + size_t services_len, bool flush, bool bye) { if (services == NULL) { mdns_host_item_t *host = mdns_get_host_item(_mdns_server->hostname); @@ -2063,7 +2070,7 @@ static bool _mdns_append_host_list(mdns_out_answer_t **destination, bool flush, static bool _mdns_append_host_question(mdns_out_question_t **questions, const char *hostname, bool unicast) { - mdns_out_question_t *q = (mdns_out_question_t *)malloc(sizeof(mdns_out_question_t)); + mdns_out_question_t *q = (mdns_out_question_t *)mdns_mem_malloc(sizeof(mdns_out_question_t)); if (!q) { HOOK_MALLOC_FAILED; return false; @@ -2077,7 +2084,7 @@ static bool _mdns_append_host_question(mdns_out_question_t **questions, const ch q->domain = MDNS_DEFAULT_DOMAIN; q->own_dynamic_memory = false; if (_mdns_question_exists(q, *questions)) { - free(q); + mdns_mem_free(q); } else { queueToEnd(mdns_out_question_t, *questions, q); } @@ -2085,7 +2092,7 @@ static bool _mdns_append_host_question(mdns_out_question_t **questions, const ch } static bool _mdns_append_host_questions_for_services(mdns_out_question_t **questions, mdns_srv_item_t *services[], - size_t len, bool unicast) + size_t len, bool unicast) { if (!_str_null_or_empty(_mdns_server->hostname) && !_mdns_append_host_question(questions, _mdns_server->hostname, unicast)) { @@ -2111,7 +2118,7 @@ static mdns_tx_packet_t *_mdns_create_probe_packet(mdns_if_t tcpip_if, mdns_ip_p size_t i; for (i = 0; i < len; i++) { - mdns_out_question_t *q = (mdns_out_question_t *)malloc(sizeof(mdns_out_question_t)); + mdns_out_question_t *q = (mdns_out_question_t *)mdns_mem_malloc(sizeof(mdns_out_question_t)); if (!q) { HOOK_MALLOC_FAILED; _mdns_free_tx_packet(packet); @@ -2126,7 +2133,7 @@ static mdns_tx_packet_t *_mdns_create_probe_packet(mdns_if_t tcpip_if, mdns_ip_p q->domain = MDNS_DEFAULT_DOMAIN; q->own_dynamic_memory = false; if (!q->host || _mdns_question_exists(q, packet->questions)) { - free(q); + mdns_mem_free(q); continue; } else { queueToEnd(mdns_out_question_t, packet->questions, q); @@ -2260,7 +2267,7 @@ static void _mdns_init_pcb_probe_new_service(mdns_if_t tcpip_if, mdns_ip_protoco } mdns_srv_item_t **_services = NULL; if (services_final_len) { - _services = (mdns_srv_item_t **)malloc(sizeof(mdns_srv_item_t *) * services_final_len); + _services = (mdns_srv_item_t **)mdns_mem_malloc(sizeof(mdns_srv_item_t *) * services_final_len); if (!_services) { HOOK_MALLOC_FAILED; return; @@ -2274,7 +2281,7 @@ static void _mdns_init_pcb_probe_new_service(mdns_if_t tcpip_if, mdns_ip_protoco for (i = 0; i < pcb->probe_services_len; i++) { _services[len + i] = pcb->probe_services[i]; } - free(pcb->probe_services); + mdns_mem_free(pcb->probe_services); } } @@ -2287,7 +2294,7 @@ static void _mdns_init_pcb_probe_new_service(mdns_if_t tcpip_if, mdns_ip_protoco mdns_tx_packet_t *packet = _mdns_create_probe_packet(tcpip_if, ip_protocol, _services, services_final_len, true, probe_ip); if (!packet) { - free(_services); + mdns_mem_free(_services); return; } @@ -2354,6 +2361,11 @@ static void _mdns_restart_pcb(mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol srv_count++; a = a->next; } + if (srv_count == 0) { + // proble only IP + _mdns_init_pcb_probe(tcpip_if, ip_protocol, NULL, 0, true); + return; + } mdns_srv_item_t *services[srv_count]; size_t i = 0; a = _mdns_server->services; @@ -2383,6 +2395,56 @@ static void _mdns_send_bye(mdns_srv_item_t **services, size_t len, bool include_ } } +/** + * @brief Send bye for particular subtypes + */ +static void _mdns_send_bye_subtype(mdns_srv_item_t *service, const char *instance_name, mdns_subtype_t *remove_subtypes) +{ + uint8_t i, j; + for (i = 0; i < MDNS_MAX_INTERFACES; i++) { + for (j = 0; j < MDNS_IP_PROTOCOL_MAX; j++) { + if (mdns_is_netif_ready(i, j)) { + mdns_tx_packet_t *packet = _mdns_alloc_packet_default((mdns_if_t)i, (mdns_ip_protocol_t)j); + if (packet == NULL) { + return; + } + packet->flags = MDNS_FLAGS_QR_AUTHORITATIVE; + if (!_mdns_alloc_answer(&packet->answers, MDNS_TYPE_PTR, service->service, NULL, true, true)) { + _mdns_free_tx_packet(packet); + return; + } + + static uint8_t pkt[MDNS_MAX_PACKET_SIZE]; + uint16_t index = MDNS_HEAD_LEN; + memset(pkt, 0, MDNS_HEAD_LEN); + mdns_out_answer_t *a; + uint8_t count; + + _mdns_set_u16(pkt, MDNS_HEAD_FLAGS_OFFSET, packet->flags); + _mdns_set_u16(pkt, MDNS_HEAD_ID_OFFSET, packet->id); + + count = 0; + a = packet->answers; + while (a) { + if (a->type == MDNS_TYPE_PTR && a->service) { + const mdns_subtype_t *current_subtype = remove_subtypes; + while (current_subtype) { + count += (_mdns_append_subtype_ptr_record(pkt, &index, instance_name, current_subtype->subtype, a->service->service, a->service->proto, a->flush, a->bye) > 0); + current_subtype = current_subtype->next; + } + } + a = a->next; + } + _mdns_set_u16(pkt, MDNS_HEAD_ANSWERS_OFFSET, count); + + _mdns_udp_pcb_write(packet->tcpip_if, packet->ip_protocol, &packet->dst, packet->port, pkt, index); + + _mdns_free_tx_packet(packet); + } + } + } +} + /** * @brief Send announcement on particular PCB */ @@ -2437,7 +2499,7 @@ static void _mdns_probe_all_pcbs(mdns_srv_item_t **services, size_t len, bool pr if (mdns_is_netif_ready(i, j)) { mdns_pcb_t *_pcb = &_mdns_server->interfaces[i].pcbs[j]; if (clear_old_probe) { - free(_pcb->probe_services); + mdns_mem_free(_pcb->probe_services); _pcb->probe_services = NULL; _pcb->probe_services_len = 0; _pcb->probe_running = false; @@ -2554,6 +2616,10 @@ static void _mdns_restart_all_pcbs(void) srv_count++; a = a->next; } + if (srv_count == 0) { + _mdns_probe_all_pcbs(NULL, 0, true, true); + return; + } mdns_srv_item_t *services[srv_count]; size_t l = 0; a = _mdns_server->services; @@ -2580,20 +2646,20 @@ static mdns_txt_linked_item_t *_mdns_allocate_txt(size_t num_items, mdns_txt_ite size_t i = 0; if (num_items) { for (i = 0; i < num_items; i++) { - mdns_txt_linked_item_t *new_item = (mdns_txt_linked_item_t *)malloc(sizeof(mdns_txt_linked_item_t)); + mdns_txt_linked_item_t *new_item = (mdns_txt_linked_item_t *)mdns_mem_malloc(sizeof(mdns_txt_linked_item_t)); if (!new_item) { HOOK_MALLOC_FAILED; break; } - new_item->key = strdup(txt[i].key); + new_item->key = mdns_mem_strdup(txt[i].key); if (!new_item->key) { - free(new_item); + mdns_mem_free(new_item); break; } - new_item->value = strdup(txt[i].value); + new_item->value = mdns_mem_strdup(txt[i].value); if (!new_item->value) { - free((char *)new_item->key); - free(new_item); + mdns_mem_free((char *)new_item->key); + mdns_mem_free(new_item); break; } new_item->value_len = strlen(new_item->value); @@ -2614,9 +2680,9 @@ static void _mdns_free_linked_txt(mdns_txt_linked_item_t *txt) while (txt) { t = txt; txt = txt->next; - free((char *)t->value); - free((char *)t->key); - free(t); + mdns_mem_free((char *)t->value); + mdns_mem_free((char *)t->key); + mdns_mem_free(t); } } @@ -2633,10 +2699,10 @@ static void _mdns_free_linked_txt(mdns_txt_linked_item_t *txt) * @return pointer to the service or NULL on error */ static mdns_service_t *_mdns_create_service(const char *service, const char *proto, const char *hostname, - uint16_t port, const char *instance, size_t num_items, - mdns_txt_item_t txt[]) + uint16_t port, const char *instance, size_t num_items, + mdns_txt_item_t txt[]) { - mdns_service_t *s = (mdns_service_t *)calloc(1, sizeof(mdns_service_t)); + mdns_service_t *s = (mdns_service_t *)mdns_mem_calloc(1, sizeof(mdns_service_t)); if (!s) { HOOK_MALLOC_FAILED; return NULL; @@ -2649,13 +2715,13 @@ static mdns_service_t *_mdns_create_service(const char *service, const char *pro s->priority = 0; s->weight = 0; - s->instance = instance ? strndup(instance, MDNS_NAME_BUF_LEN - 1) : NULL; + s->instance = instance ? mdns_mem_strndup(instance, MDNS_NAME_BUF_LEN - 1) : NULL; s->txt = new_txt; s->port = port; s->subtype = NULL; if (hostname) { - s->hostname = strndup(hostname, MDNS_NAME_BUF_LEN - 1); + s->hostname = mdns_mem_strndup(hostname, MDNS_NAME_BUF_LEN - 1); if (!s->hostname) { goto fail; } @@ -2663,12 +2729,12 @@ static mdns_service_t *_mdns_create_service(const char *service, const char *pro s->hostname = NULL; } - s->service = strndup(service, MDNS_NAME_BUF_LEN - 1); + s->service = mdns_mem_strndup(service, MDNS_NAME_BUF_LEN - 1); if (!s->service) { goto fail; } - s->proto = strndup(proto, MDNS_NAME_BUF_LEN - 1); + s->proto = mdns_mem_strndup(proto, MDNS_NAME_BUF_LEN - 1); if (!s->proto) { goto fail; } @@ -2676,11 +2742,11 @@ static mdns_service_t *_mdns_create_service(const char *service, const char *pro fail: _mdns_free_linked_txt(s->txt); - free((char *)s->instance); - free((char *)s->service); - free((char *)s->proto); - free((char *)s->hostname); - free(s); + mdns_mem_free((char *)s->instance); + mdns_mem_free((char *)s->service); + mdns_mem_free((char *)s->proto); + mdns_mem_free((char *)s->hostname); + mdns_mem_free(s); return NULL; } @@ -2696,14 +2762,14 @@ static void _mdns_dealloc_scheduled_service_answers(mdns_out_answer_t **destinat } while (d && d->service == service) { *destination = d->next; - free(d); + mdns_mem_free(d); d = *destination; } while (d && d->next) { mdns_out_answer_t *a = d->next; if (a->service == service) { d->next = a->next; - free(a); + mdns_mem_free(a); } else { d = d->next; } @@ -2748,7 +2814,7 @@ static void _mdns_remove_scheduled_service_packets(mdns_service_t *service) _pcb->probe_services_len--; } else { _pcb->probe_services_len = 0; - free(_pcb->probe_services); + mdns_mem_free(_pcb->probe_services); _pcb->probe_services = NULL; if (!_pcb->probe_ip) { _pcb->probe_running = false; @@ -2763,14 +2829,14 @@ static void _mdns_remove_scheduled_service_packets(mdns_service_t *service) && qs->service && strcmp(qs->service, service->service) == 0 && qs->proto && strcmp(qs->proto, service->proto) == 0) { q->questions = q->questions->next; - free(qs); + mdns_mem_free(qs); } else while (qs->next) { qsn = qs->next; if (qsn->type == MDNS_TYPE_ANY && qsn->service && strcmp(qsn->service, service->service) == 0 && qsn->proto && strcmp(qsn->proto, service->proto) == 0) { qs->next = qsn->next; - free(qsn); + mdns_mem_free(qsn); break; } qs = qs->next; @@ -2794,14 +2860,20 @@ static void _mdns_remove_scheduled_service_packets(mdns_service_t *service) } } +static void _mdns_free_subtype(mdns_subtype_t *subtype) +{ + while (subtype) { + mdns_subtype_t *next = subtype->next; + mdns_mem_free((char *)subtype->subtype); + mdns_mem_free(subtype); + subtype = next; + } +} + static void _mdns_free_service_subtype(mdns_service_t *service) { - while (service->subtype) { - mdns_subtype_t *next = service->subtype->next; - free((char *)service->subtype->subtype); - free(service->subtype); - service->subtype = next; - } + _mdns_free_subtype(service->subtype); + service->subtype = NULL; } /** @@ -2814,19 +2886,19 @@ static void _mdns_free_service(mdns_service_t *service) if (!service) { return; } - free((char *)service->instance); - free((char *)service->service); - free((char *)service->proto); - free((char *)service->hostname); + mdns_mem_free((char *)service->instance); + mdns_mem_free((char *)service->service); + mdns_mem_free((char *)service->proto); + mdns_mem_free((char *)service->hostname); while (service->txt) { mdns_txt_linked_item_t *s = service->txt; service->txt = service->txt->next; - free((char *)s->key); - free((char *)s->value); - free(s); + mdns_mem_free((char *)s->key); + mdns_mem_free((char *)s->value); + mdns_mem_free(s); } _mdns_free_service_subtype(service); - free(service); + mdns_mem_free(service); } @@ -2897,11 +2969,12 @@ static int _mdns_check_srv_collision(mdns_service_t *service, uint16_t priority, static int _mdns_check_txt_collision(mdns_service_t *service, const uint8_t *data, size_t len) { size_t data_len = 0; - if (len == 1 && service->txt) { + if (len <= 1 && service->txt) { // len==0 means incorrect packet (and handled by the packet parser) + // but handled here again to fix clang-tidy warning on VLA "uint8_t our[0];" return -1;//we win } else if (len > 1 && !service->txt) { return 1;//they win - } else if (len == 1 && !service->txt) { + } else if (len <= 1 && !service->txt) { return 0;//same } @@ -2942,7 +3015,7 @@ static esp_err_t mdns_pcb_deinit_local(mdns_if_t tcpip_if, mdns_ip_protocol_t ip if (_pcb == NULL || err != ESP_OK) { return err; } - free(_pcb->probe_services); + mdns_mem_free(_pcb->probe_services); _pcb->state = PCB_OFF; _pcb->probe_ip = false; _pcb->probe_services = NULL; @@ -2957,7 +3030,7 @@ static esp_err_t mdns_pcb_deinit_local(mdns_if_t tcpip_if, mdns_ip_protocol_t ip static void _mdns_dup_interface(mdns_if_t tcpip_if) { uint8_t i; - mdns_if_t other_if = _mdns_get_other_if (tcpip_if); + mdns_if_t other_if = _mdns_get_other_if(tcpip_if); if (other_if == MDNS_MAX_INTERFACES) { return; // no other interface found } @@ -2993,7 +3066,7 @@ static int _mdns_check_a_collision(esp_ip4_addr_t *ip, mdns_if_t tcpip_if) return -1;//we win } else if (ret < 0) { //is it the other interface? - mdns_if_t other_if = _mdns_get_other_if (tcpip_if); + mdns_if_t other_if = _mdns_get_other_if(tcpip_if); if (other_if == MDNS_MAX_INTERFACES) { return 1;//AP interface! They win } @@ -3029,7 +3102,7 @@ static int _mdns_check_aaaa_collision(esp_ip6_addr_t *ip, mdns_if_t tcpip_if) return -1;//we win } else if (ret < 0) { //is it the other interface? - mdns_if_t other_if = _mdns_get_other_if (tcpip_if); + mdns_if_t other_if = _mdns_get_other_if(tcpip_if); if (other_if == MDNS_MAX_INTERFACES) { return 1;//AP interface! They win } @@ -3075,7 +3148,7 @@ static bool _mdns_delegate_hostname_add(const char *hostname, mdns_ip_addr_t *ad return false; } - mdns_host_item_t *host = (mdns_host_item_t *)malloc(sizeof(mdns_host_item_t)); + mdns_host_item_t *host = (mdns_host_item_t *)mdns_mem_malloc(sizeof(mdns_host_item_t)); if (host == NULL) { return false; @@ -3091,7 +3164,7 @@ static void free_address_list(mdns_ip_addr_t *address_list) { while (address_list != NULL) { mdns_ip_addr_t *next = address_list->next; - free(address_list); + mdns_mem_free(address_list); address_list = next; } } @@ -3122,7 +3195,7 @@ static mdns_ip_addr_t *copy_address_list(const mdns_ip_addr_t *address_list) mdns_ip_addr_t *head = NULL; mdns_ip_addr_t *tail = NULL; while (address_list != NULL) { - mdns_ip_addr_t *addr = (mdns_ip_addr_t *)malloc(sizeof(mdns_ip_addr_t)); + mdns_ip_addr_t *addr = (mdns_ip_addr_t *)mdns_mem_malloc(sizeof(mdns_ip_addr_t)); if (addr == NULL) { free_address_list(head); return NULL; @@ -3146,10 +3219,10 @@ static void free_delegated_hostnames(void) mdns_host_item_t *host = _mdns_host_list; while (host != NULL) { free_address_list(host->address_list); - free((char *)host->hostname); + mdns_mem_free((char *)host->hostname); mdns_host_item_t *item = host; host = host->next; - free(item); + mdns_mem_free(item); } _mdns_host_list = NULL; } @@ -3171,7 +3244,7 @@ static bool _mdns_delegate_hostname_remove(const char *hostname) srv = srv->next; } _mdns_free_service(to_free->service); - free(to_free); + mdns_mem_free(to_free); } else { prev_srv = srv; srv = srv->next; @@ -3187,8 +3260,8 @@ static bool _mdns_delegate_hostname_remove(const char *hostname) prev_host->next = host->next; } free_address_list(host->address_list); - free((char *)host->hostname); - free(host); + mdns_mem_free((char *)host->hostname); + mdns_mem_free(host); break; } else { prev_host = host; @@ -3223,7 +3296,7 @@ static bool _mdns_name_is_selfhosted(mdns_name_t *name) // hostname only -- check if selfhosted name if (_str_null_or_empty(name->service) && _str_null_or_empty(name->proto) && - strcasecmp(name->host, _mdns_server->hostname) == 0 ) { + strcasecmp(name->host, _mdns_server->hostname) == 0) { return true; } @@ -3241,11 +3314,11 @@ static bool _mdns_name_is_selfhosted(mdns_name_t *name) static bool _mdns_name_is_ours(mdns_name_t *name) { //domain have to be "local" - if (_str_null_or_empty(name->domain) || ( strcasecmp(name->domain, MDNS_DEFAULT_DOMAIN) + if (_str_null_or_empty(name->domain) || (strcasecmp(name->domain, MDNS_DEFAULT_DOMAIN) #ifdef CONFIG_MDNS_RESPOND_REVERSE_QUERIES - && strcasecmp(name->domain, "arpa") + && strcasecmp(name->domain, "arpa") #endif /* CONFIG_MDNS_RESPOND_REVERSE_QUERIES */ - ) ) { + )) { return false; } @@ -3379,7 +3452,7 @@ static bool _mdns_question_matches(mdns_parsed_question_t *question, uint16_t ty && !strcasecmp(service->service->service, question->service) && !strcasecmp(service->service->proto, question->proto) && !strcasecmp(MDNS_DEFAULT_DOMAIN, question->domain)) { - if (!service->service->instance) { + if (!service->service->instance) { return true; } else if (service->service->instance && question->host && !strcasecmp(service->service->instance, question->host)) { return true; @@ -3408,11 +3481,11 @@ static void _mdns_remove_parsed_question(mdns_parsed_packet_t *parsed_packet, ui if (_mdns_question_matches(q, type, service)) { parsed_packet->questions = q->next; - free(q->host); - free(q->service); - free(q->proto); - free(q->domain); - free(q); + mdns_mem_free(q->host); + mdns_mem_free(q->service); + mdns_mem_free(q->proto); + mdns_mem_free(q->domain); + mdns_mem_free(q); return; } @@ -3420,11 +3493,11 @@ static void _mdns_remove_parsed_question(mdns_parsed_packet_t *parsed_packet, ui mdns_parsed_question_t *p = q->next; if (_mdns_question_matches(p, type, service)) { q->next = p->next; - free(p->host); - free(p->service); - free(p->proto); - free(p->domain); - free(p); + mdns_mem_free(p->host); + mdns_mem_free(p->service); + mdns_mem_free(p->proto); + mdns_mem_free(p->domain); + mdns_mem_free(p); return; } q = q->next; @@ -3485,22 +3558,23 @@ static void _mdns_result_txt_create(const uint8_t *data, size_t len, mdns_txt_it uint16_t i = 0, y; size_t partLen = 0; int num_items = _mdns_txt_items_count_get(data, len); - if (num_items < 0) { - return;//error + if (num_items < 0 || num_items > SIZE_MAX / sizeof(mdns_txt_item_t)) { + // Error: num_items is incorrect (or too large to allocate) + return; } if (!num_items) { return; } - mdns_txt_item_t *txt = (mdns_txt_item_t *)malloc(sizeof(mdns_txt_item_t) * num_items); + mdns_txt_item_t *txt = (mdns_txt_item_t *)mdns_mem_malloc(sizeof(mdns_txt_item_t) * num_items); if (!txt) { HOOK_MALLOC_FAILED; return; } - uint8_t *txt_value_len = (uint8_t *)malloc(num_items); + uint8_t *txt_value_len = (uint8_t *)mdns_mem_malloc(num_items); if (!txt_value_len) { - free(txt); + mdns_mem_free(txt); HOOK_MALLOC_FAILED; return; } @@ -3519,16 +3593,15 @@ static void _mdns_result_txt_create(const uint8_t *data, size_t len, mdns_txt_it } int name_len = _mdns_txt_item_name_get_len(data + i, partLen); - if (name_len < 0) {//invalid item (no name) + if (name_len < 0 || txt_num >= num_items) {//invalid item (no name or more items than expected) i += partLen; continue; } - char *key = (char *)malloc(name_len + 1); + char *key = (char *)mdns_mem_malloc(name_len + 1); if (!key) { HOOK_MALLOC_FAILED; goto handle_error;//error } - mdns_txt_item_t *t = &txt[txt_num]; uint8_t *value_len = &txt_value_len[txt_num]; txt_num++; @@ -3540,7 +3613,7 @@ static void _mdns_result_txt_create(const uint8_t *data, size_t len, mdns_txt_it int new_value_len = partLen - name_len - 1; if (new_value_len > 0) { - char *value = (char *)malloc(new_value_len + 1); + char *value = (char *)mdns_mem_malloc(new_value_len + 1); if (!value) { HOOK_MALLOC_FAILED; goto handle_error;//error @@ -3550,6 +3623,8 @@ static void _mdns_result_txt_create(const uint8_t *data, size_t len, mdns_txt_it *value_len = new_value_len; i += new_value_len; t->value = value; + } else { + t->value = NULL; } } @@ -3561,11 +3636,11 @@ static void _mdns_result_txt_create(const uint8_t *data, size_t len, mdns_txt_it handle_error : for (y = 0; y < txt_num; y++) { mdns_txt_item_t *t = &txt[y]; - free((char *)t->key); - free((char *)t->value); + mdns_mem_free((char *)t->key); + mdns_mem_free((char *)t->value); } - free(txt_value_len); - free(txt); + mdns_mem_free(txt_value_len); + mdns_mem_free(txt); } /** @@ -3574,7 +3649,7 @@ handle_error : static esp_err_t _mdns_strdup_check(char **out, char *in) { if (in && in[0]) { - *out = strdup(in); + *out = mdns_mem_strdup(in); if (!*out) { return ESP_FAIL; } @@ -3646,7 +3721,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) return; } - mdns_parsed_packet_t *parsed_packet = (mdns_parsed_packet_t *)malloc(sizeof(mdns_parsed_packet_t)); + mdns_parsed_packet_t *parsed_packet = (mdns_parsed_packet_t *)mdns_mem_malloc(sizeof(mdns_parsed_packet_t)); if (!parsed_packet) { HOOK_MALLOC_FAILED; return; @@ -3664,13 +3739,13 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) header.additional = _mdns_read_u16(data, MDNS_HEAD_ADDITIONAL_OFFSET); if (header.flags == MDNS_FLAGS_QR_AUTHORITATIVE && packet->src_port != MDNS_SERVICE_PORT) { - free(parsed_packet); + mdns_mem_free(parsed_packet); return; } //if we have not set the hostname, we can not answer questions if (header.questions && !header.answers && _str_null_or_empty(_mdns_server->hostname)) { - free(parsed_packet); + mdns_mem_free(parsed_packet); return; } @@ -3714,7 +3789,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) parsed_packet->discovery = true; mdns_srv_item_t *a = _mdns_server->services; while (a) { - mdns_parsed_question_t *question = (mdns_parsed_question_t *)calloc(1, sizeof(mdns_parsed_question_t)); + mdns_parsed_question_t *question = (mdns_parsed_question_t *)mdns_mem_calloc(1, sizeof(mdns_parsed_question_t)); if (!question) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3725,9 +3800,9 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) question->unicast = unicast; question->type = MDNS_TYPE_SDPTR; question->host = NULL; - question->service = strdup(a->service->service); - question->proto = strdup(a->service->proto); - question->domain = strdup(MDNS_DEFAULT_DOMAIN); + question->service = mdns_mem_strdup(a->service->service); + question->proto = mdns_mem_strdup(a->service->proto); + question->domain = mdns_mem_strdup(MDNS_DEFAULT_DOMAIN); if (!question->service || !question->proto || !question->domain) { goto clear_rx_packet; } @@ -3743,7 +3818,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) parsed_packet->probe = true; } - mdns_parsed_question_t *question = (mdns_parsed_question_t *)calloc(1, sizeof(mdns_parsed_question_t)); + mdns_parsed_question_t *question = (mdns_parsed_question_t *)mdns_mem_calloc(1, sizeof(mdns_parsed_question_t)); if (!question) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3786,7 +3861,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) mdns_class &= 0x7FFF; content = data_ptr + data_len; - if (content > (data + len)) { + if (content > (data + len) || data_len == 0) { goto clear_rx_packet; } @@ -3824,7 +3899,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) if (browse_result) { if (!out_sync_browse) { // will be freed in function `_mdns_browse_sync` - out_sync_browse = (mdns_browse_sync_t *)malloc(sizeof(mdns_browse_sync_t)); + out_sync_browse = (mdns_browse_sync_t *)mdns_mem_malloc(sizeof(mdns_browse_sync_t)); if (!out_sync_browse) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3833,7 +3908,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) out_sync_browse->sync_result = NULL; } if (!browse_result_service) { - browse_result_service = (char *)malloc(MDNS_NAME_BUF_LEN); + browse_result_service = (char *)mdns_mem_malloc(MDNS_NAME_BUF_LEN); if (!browse_result_service) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3841,7 +3916,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) } memcpy(browse_result_service, browse_result->service, MDNS_NAME_BUF_LEN); if (!browse_result_proto) { - browse_result_proto = (char *)malloc(MDNS_NAME_BUF_LEN); + browse_result_proto = (char *)mdns_mem_malloc(MDNS_NAME_BUF_LEN); if (!browse_result_proto) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3850,7 +3925,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) memcpy(browse_result_proto, browse_result->proto, MDNS_NAME_BUF_LEN); if (type == MDNS_TYPE_SRV || type == MDNS_TYPE_TXT) { if (!browse_result_instance) { - browse_result_instance = (char *)malloc(MDNS_NAME_BUF_LEN); + browse_result_instance = (char *)mdns_mem_malloc(MDNS_NAME_BUF_LEN); if (!browse_result_instance) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3885,7 +3960,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) } } if (service) { - mdns_parsed_record_t *record = malloc(sizeof(mdns_parsed_record_t)); + mdns_parsed_record_t *record = mdns_mem_malloc(sizeof(mdns_parsed_record_t)); if (!record) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3899,7 +3974,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) record->service = NULL; record->proto = NULL; if (name->host[0]) { - record->host = malloc(MDNS_NAME_BUF_LEN); + record->host = mdns_mem_malloc(MDNS_NAME_BUF_LEN); if (!record->host) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3907,7 +3982,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) memcpy(record->host, name->host, MDNS_NAME_BUF_LEN); } if (name->service[0]) { - record->service = malloc(MDNS_NAME_BUF_LEN); + record->service = mdns_mem_malloc(MDNS_NAME_BUF_LEN); if (!record->service) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3915,7 +3990,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) memcpy(record->service, name->service, MDNS_NAME_BUF_LEN); } if (name->proto[0]) { - record->proto = malloc(MDNS_NAME_BUF_LEN); + record->proto = mdns_mem_malloc(MDNS_NAME_BUF_LEN); if (!record->proto) { HOOK_MALLOC_FAILED; goto clear_rx_packet; @@ -3963,7 +4038,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) if (search_result->type == MDNS_TYPE_PTR) { if (!result->hostname) { // assign host/port for this entry only if not previously set result->port = port; - result->hostname = strdup(name->host); + result->hostname = mdns_mem_strdup(name->host); } } else { _mdns_search_result_add_srv(search_result, name->host, port, packet->tcpip_if, packet->ip_protocol, ttl); @@ -3996,14 +4071,14 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) if (!_str_null_or_empty(service->service->instance)) { char *new_instance = _mdns_mangle_name((char *)service->service->instance); if (new_instance) { - free((char *)service->service->instance); + mdns_mem_free((char *)service->service->instance); service->service->instance = new_instance; } _mdns_probe_all_pcbs(&service, 1, false, false); } else if (!_str_null_or_empty(_mdns_server->instance)) { char *new_instance = _mdns_mangle_name((char *)_mdns_server->instance); if (new_instance) { - free((char *)_mdns_server->instance); + mdns_mem_free((char *)_mdns_server->instance); _mdns_server->instance = new_instance; } _mdns_restart_all_pcbs_no_instance(); @@ -4011,7 +4086,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) char *new_host = _mdns_mangle_name((char *)_mdns_server->hostname); if (new_host) { _mdns_remap_self_service_hostname(_mdns_server->hostname, new_host); - free((char *)_mdns_server->hostname); + mdns_mem_free((char *)_mdns_server->hostname); _mdns_server->hostname = new_host; _mdns_self_host.hostname = new_host; } @@ -4136,7 +4211,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) char *new_host = _mdns_mangle_name((char *)_mdns_server->hostname); if (new_host) { _mdns_remap_self_service_hostname(_mdns_server->hostname, new_host); - free((char *)_mdns_server->hostname); + mdns_mem_free((char *)_mdns_server->hostname); _mdns_server->hostname = new_host; _mdns_self_host.hostname = new_host; } @@ -4193,7 +4268,7 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) char *new_host = _mdns_mangle_name((char *)_mdns_server->hostname); if (new_host) { _mdns_remap_self_service_hostname(_mdns_server->hostname, new_host); - free((char *)_mdns_server->hostname); + mdns_mem_free((char *)_mdns_server->hostname); _mdns_server->hostname = new_host; _mdns_self_host.hostname = new_host; } @@ -4231,8 +4306,9 @@ void mdns_parse_packet(mdns_rx_packet_t *packet) #endif // MDNS_ENABLE_DEBUG _mdns_sync_browse_action(ACTION_BROWSE_SYNC, out_sync_browse); } else { - free(out_sync_browse); + mdns_mem_free(out_sync_browse); } + out_sync_browse = NULL; } clear_rx_packet: @@ -4240,44 +4316,39 @@ clear_rx_packet: mdns_parsed_question_t *question = parsed_packet->questions; parsed_packet->questions = parsed_packet->questions->next; if (question->host) { - free(question->host); + mdns_mem_free(question->host); } if (question->service) { - free(question->service); + mdns_mem_free(question->service); } if (question->proto) { - free(question->proto); + mdns_mem_free(question->proto); } if (question->domain) { - free(question->domain); + mdns_mem_free(question->domain); } - free(question); + mdns_mem_free(question); } while (parsed_packet->records) { mdns_parsed_record_t *record = parsed_packet->records; parsed_packet->records = parsed_packet->records->next; if (record->host) { - free(record->host); + mdns_mem_free(record->host); } if (record->service) { - free(record->service); + mdns_mem_free(record->service); } if (record->proto) { - free(record->proto); + mdns_mem_free(record->proto); } record->next = NULL; - free(record); - } - free(parsed_packet); - if (browse_result_instance) { - free(browse_result_instance); - } - if (browse_result_service) { - free(browse_result_service); - } - if (browse_result_proto) { - free(browse_result_proto); + mdns_mem_free(record); } + mdns_mem_free(parsed_packet); + mdns_mem_free(browse_result_instance); + mdns_mem_free(browse_result_service); + mdns_mem_free(browse_result_proto); + mdns_mem_free(out_sync_browse); } /** @@ -4304,7 +4375,7 @@ void _mdns_disable_pcb(mdns_if_t tcpip_if, mdns_ip_protocol_t ip_protocol) if (mdns_is_netif_ready(tcpip_if, ip_protocol)) { _mdns_clear_pcb_tx_queue_head(tcpip_if, ip_protocol); mdns_pcb_deinit_local(tcpip_if, ip_protocol); - mdns_if_t other_if = _mdns_get_other_if (tcpip_if); + mdns_if_t other_if = _mdns_get_other_if(tcpip_if); if (other_if != MDNS_MAX_INTERFACES && _mdns_server->interfaces[other_if].pcbs[ip_protocol].state == PCB_DUP) { _mdns_server->interfaces[other_if].pcbs[ip_protocol].state = PCB_OFF; _mdns_enable_pcb(other_if, ip_protocol); @@ -4370,7 +4441,7 @@ static void perform_event_action(mdns_if_t mdns_if, mdns_event_actions_t action) uint8_t *paddr = (uint8_t *)&addr6.addr; const char sub[] = "ip6"; const size_t query_name_size = 4 * sizeof(addr6.addr) /* (2 nibbles + 2 dots)/per byte of IP address */ + sizeof(sub); - char *reverse_query_name = malloc(query_name_size); + char *reverse_query_name = mdns_mem_malloc(query_name_size); if (reverse_query_name) { char *ptr = &reverse_query_name[query_name_size]; // point to the end memcpy(ptr - sizeof(sub), sub, sizeof(sub)); // copy the IP sub-domain @@ -4477,10 +4548,11 @@ void mdns_preset_if_handle_system_event(void *arg, esp_event_base_t event_base, case IP_EVENT_GOT_IP6: { ip_event_got_ip6_t *event = (ip_event_got_ip6_t *) event_data; mdns_if_t mdns_if = _mdns_get_if_from_esp_netif(event->esp_netif); - if (mdns_if < MDNS_MAX_INTERFACES) { - post_mdns_enable_pcb(mdns_if, MDNS_IP_PROTOCOL_V6); - post_mdns_announce_pcb(mdns_if, MDNS_IP_PROTOCOL_V4); + if (mdns_if >= MDNS_MAX_INTERFACES) { + return; } + post_mdns_enable_pcb(mdns_if, MDNS_IP_PROTOCOL_V6); + post_mdns_announce_pcb(mdns_if, MDNS_IP_PROTOCOL_V4); mdns_browse_t *browse = _mdns_server->browse; while (browse) { _mdns_browse_send(browse, mdns_if); @@ -4504,20 +4576,20 @@ void mdns_preset_if_handle_system_event(void *arg, esp_event_base_t event_base, */ static void _mdns_search_free(mdns_search_once_t *search) { - free(search->instance); - free(search->service); - free(search->proto); + mdns_mem_free(search->instance); + mdns_mem_free(search->service); + mdns_mem_free(search->proto); vSemaphoreDelete(search->done_semaphore); - free(search); + mdns_mem_free(search); } /** * @brief Allocate new search structure */ static mdns_search_once_t *_mdns_search_init(const char *name, const char *service, const char *proto, uint16_t type, bool unicast, - uint32_t timeout, uint8_t max_results, mdns_query_notify_t notifier) + uint32_t timeout, uint8_t max_results, mdns_query_notify_t notifier) { - mdns_search_once_t *search = (mdns_search_once_t *)malloc(sizeof(mdns_search_once_t)); + mdns_search_once_t *search = (mdns_search_once_t *)mdns_mem_malloc(sizeof(mdns_search_once_t)); if (!search) { HOOK_MALLOC_FAILED; return NULL; @@ -4526,12 +4598,12 @@ static mdns_search_once_t *_mdns_search_init(const char *name, const char *servi search->done_semaphore = xSemaphoreCreateBinary(); if (!search->done_semaphore) { - free(search); + mdns_mem_free(search); return NULL; } if (!_str_null_or_empty(name)) { - search->instance = strndup(name, MDNS_NAME_BUF_LEN - 1); + search->instance = mdns_mem_strndup(name, MDNS_NAME_BUF_LEN - 1); if (!search->instance) { _mdns_search_free(search); return NULL; @@ -4539,7 +4611,7 @@ static mdns_search_once_t *_mdns_search_init(const char *name, const char *servi } if (!_str_null_or_empty(service)) { - search->service = strndup(service, MDNS_NAME_BUF_LEN - 1); + search->service = mdns_mem_strndup(service, MDNS_NAME_BUF_LEN - 1); if (!search->service) { _mdns_search_free(search); return NULL; @@ -4547,7 +4619,7 @@ static mdns_search_once_t *_mdns_search_init(const char *name, const char *servi } if (!_str_null_or_empty(proto)) { - search->proto = strndup(proto, MDNS_NAME_BUF_LEN - 1); + search->proto = mdns_mem_strndup(proto, MDNS_NAME_BUF_LEN - 1); if (!search->proto) { _mdns_search_free(search); return NULL; @@ -4612,7 +4684,7 @@ static void _mdns_search_finish_done(void) */ static mdns_ip_addr_t *_mdns_result_addr_create_ip(esp_ip_addr_t *ip) { - mdns_ip_addr_t *a = (mdns_ip_addr_t *)malloc(sizeof(mdns_ip_addr_t)); + mdns_ip_addr_t *a = (mdns_ip_addr_t *)mdns_mem_malloc(sizeof(mdns_ip_addr_t)); if (!a) { HOOK_MALLOC_FAILED; return NULL; @@ -4683,7 +4755,7 @@ static void _mdns_search_result_add_ip(mdns_search_once_t *search, const char *h r = r->next; } if (!search->max_results || search->num_results < search->max_results) { - r = (mdns_result_t *)malloc(sizeof(mdns_result_t)); + r = (mdns_result_t *)mdns_mem_malloc(sizeof(mdns_result_t)); if (!r) { HOOK_MALLOC_FAILED; return; @@ -4693,11 +4765,11 @@ static void _mdns_search_result_add_ip(mdns_search_once_t *search, const char *h a = _mdns_result_addr_create_ip(ip); if (!a) { - free(r); + mdns_mem_free(r); return; } a->next = r->addr; - r->hostname = strdup(hostname); + r->hostname = mdns_mem_strdup(hostname); r->addr = a; r->esp_netif = _mdns_get_esp_netif(tcpip_if); r->ip_protocol = ip_protocol; @@ -4723,8 +4795,8 @@ static void _mdns_search_result_add_ip(mdns_search_once_t *search, const char *h * @brief Called from parser to add PTR data to search result */ static mdns_result_t *_mdns_search_result_add_ptr(mdns_search_once_t *search, const char *instance, - const char *service_type, const char *proto, mdns_if_t tcpip_if, - mdns_ip_protocol_t ip_protocol, uint32_t ttl) + const char *service_type, const char *proto, mdns_if_t tcpip_if, + mdns_ip_protocol_t ip_protocol, uint32_t ttl) { mdns_result_t *r = search->result; while (r) { @@ -4735,18 +4807,18 @@ static mdns_result_t *_mdns_search_result_add_ptr(mdns_search_once_t *search, co r = r->next; } if (!search->max_results || search->num_results < search->max_results) { - r = (mdns_result_t *)malloc(sizeof(mdns_result_t)); + r = (mdns_result_t *)mdns_mem_malloc(sizeof(mdns_result_t)); if (!r) { HOOK_MALLOC_FAILED; return NULL; } memset(r, 0, sizeof(mdns_result_t)); - r->instance_name = strdup(instance); - r->service_type = strdup(service_type); - r->proto = strdup(proto); + r->instance_name = mdns_mem_strdup(instance); + r->service_type = mdns_mem_strdup(service_type); + r->proto = mdns_mem_strdup(proto); if (!r->instance_name) { - free(r); + mdns_mem_free(r); return NULL; } @@ -4776,23 +4848,23 @@ static void _mdns_search_result_add_srv(mdns_search_once_t *search, const char * r = r->next; } if (!search->max_results || search->num_results < search->max_results) { - r = (mdns_result_t *)malloc(sizeof(mdns_result_t)); + r = (mdns_result_t *)mdns_mem_malloc(sizeof(mdns_result_t)); if (!r) { HOOK_MALLOC_FAILED; return; } memset(r, 0, sizeof(mdns_result_t)); - r->hostname = strdup(hostname); + r->hostname = mdns_mem_strdup(hostname); if (!r->hostname) { - free(r); + mdns_mem_free(r); return; } if (search->instance) { - r->instance_name = strdup(search->instance); + r->instance_name = mdns_mem_strdup(search->instance); } - r->service_type = strdup(search->service); - r->proto = strdup(search->proto); + r->service_type = mdns_mem_strdup(search->service); + r->proto = mdns_mem_strdup(search->proto); r->port = port; r->esp_netif = _mdns_get_esp_netif(tcpip_if); r->ip_protocol = ip_protocol; @@ -4825,7 +4897,7 @@ static void _mdns_search_result_add_txt(mdns_search_once_t *search, mdns_txt_ite r = r->next; } if (!search->max_results || search->num_results < search->max_results) { - r = (mdns_result_t *)malloc(sizeof(mdns_result_t)); + r = (mdns_result_t *)mdns_mem_malloc(sizeof(mdns_result_t)); if (!r) { HOOK_MALLOC_FAILED; goto free_txt; @@ -4846,11 +4918,11 @@ static void _mdns_search_result_add_txt(mdns_search_once_t *search, mdns_txt_ite free_txt: for (size_t i = 0; i < txt_count; i++) { - free((char *)(txt[i].key)); - free((char *)(txt[i].value)); + mdns_mem_free((char *)(txt[i].key)); + mdns_mem_free((char *)(txt[i].value)); } - free(txt); - free(txt_value_len); + mdns_mem_free(txt); + mdns_mem_free(txt_value_len); } /** @@ -4931,7 +5003,7 @@ static mdns_tx_packet_t *_mdns_create_search_packet(mdns_search_once_t *search, return NULL; } - mdns_out_question_t *q = (mdns_out_question_t *)malloc(sizeof(mdns_out_question_t)); + mdns_out_question_t *q = (mdns_out_question_t *)mdns_mem_malloc(sizeof(mdns_out_question_t)); if (!q) { HOOK_MALLOC_FAILED; _mdns_free_tx_packet(packet); @@ -4955,7 +5027,7 @@ static mdns_tx_packet_t *_mdns_create_search_packet(mdns_search_once_t *search, r = r->next; continue; } - mdns_out_answer_t *a = (mdns_out_answer_t *)malloc(sizeof(mdns_out_answer_t)); + mdns_out_answer_t *a = (mdns_out_answer_t *)mdns_mem_malloc(sizeof(mdns_out_answer_t)); if (!a) { HOOK_MALLOC_FAILED; _mdns_free_tx_packet(packet); @@ -5057,7 +5129,7 @@ static void _mdns_tx_handle_packet(mdns_tx_packet_t *p) pcb->probe_ip = false; pcb->probe_services_len = 0; pcb->failed_probes = 0; - free(pcb->probe_services); + mdns_mem_free(pcb->probe_services); pcb->probe_services = NULL; _mdns_free_tx_packet(p); p = a; @@ -5086,8 +5158,8 @@ static void _mdns_remap_self_service_hostname(const char *old_hostname, const ch while (service) { if (service->service->hostname && strcmp(service->service->hostname, old_hostname) == 0) { - free((char *)service->service->hostname); - service->service->hostname = strdup(new_hostname); + mdns_mem_free((char *)service->service->hostname); + service->service->hostname = mdns_mem_strdup(new_hostname); } service = service->next; } @@ -5100,9 +5172,9 @@ static void _mdns_sync_browse_result_link_free(mdns_browse_sync_t *browse_sync) while (current) { need_free = current; current = current->next; - free(need_free); + mdns_mem_free(need_free); } - free(browse_sync); + mdns_mem_free(browse_sync); } /** @@ -5112,10 +5184,10 @@ static void _mdns_free_action(mdns_action_t *action) { switch (action->type) { case ACTION_HOSTNAME_SET: - free(action->data.hostname_set.hostname); + mdns_mem_free(action->data.hostname_set.hostname); break; case ACTION_INSTANCE_SET: - free(action->data.instance); + mdns_mem_free(action->data.instance); break; case ACTION_SEARCH_ADD: //fallthrough @@ -5140,16 +5212,16 @@ static void _mdns_free_action(mdns_action_t *action) break; case ACTION_DELEGATE_HOSTNAME_SET_ADDR: case ACTION_DELEGATE_HOSTNAME_ADD: - free((char *)action->data.delegate_hostname.hostname); + mdns_mem_free((char *)action->data.delegate_hostname.hostname); free_address_list(action->data.delegate_hostname.address_list); break; case ACTION_DELEGATE_HOSTNAME_REMOVE: - free((char *)action->data.delegate_hostname.hostname); + mdns_mem_free((char *)action->data.delegate_hostname.hostname); break; default: break; } - free(action); + mdns_mem_free(action); } /** @@ -5164,7 +5236,7 @@ static void _mdns_execute_action(mdns_action_t *action) case ACTION_HOSTNAME_SET: _mdns_send_bye_all_pcbs_no_instance(true); _mdns_remap_self_service_hostname(_mdns_server->hostname, action->data.hostname_set.hostname); - free((char *)_mdns_server->hostname); + mdns_mem_free((char *)_mdns_server->hostname); _mdns_server->hostname = action->data.hostname_set.hostname; _mdns_self_host.hostname = action->data.hostname_set.hostname; _mdns_restart_all_pcbs(); @@ -5172,7 +5244,7 @@ static void _mdns_execute_action(mdns_action_t *action) break; case ACTION_INSTANCE_SET: _mdns_send_bye_all_pcbs_no_instance(false); - free((char *)_mdns_server->instance); + mdns_mem_free((char *)_mdns_server->instance); _mdns_server->instance = action->data.instance; _mdns_restart_all_pcbs_no_instance(); @@ -5217,26 +5289,26 @@ static void _mdns_execute_action(mdns_action_t *action) case ACTION_DELEGATE_HOSTNAME_ADD: if (!_mdns_delegate_hostname_add(action->data.delegate_hostname.hostname, action->data.delegate_hostname.address_list)) { - free((char *)action->data.delegate_hostname.hostname); + mdns_mem_free((char *)action->data.delegate_hostname.hostname); free_address_list(action->data.delegate_hostname.address_list); } xSemaphoreGive(_mdns_server->action_sema); break; case ACTION_DELEGATE_HOSTNAME_SET_ADDR: if (!_mdns_delegate_hostname_set_address(action->data.delegate_hostname.hostname, - action->data.delegate_hostname.address_list)) { + action->data.delegate_hostname.address_list)) { free_address_list(action->data.delegate_hostname.address_list); } - free((char *)action->data.delegate_hostname.hostname); + mdns_mem_free((char *)action->data.delegate_hostname.hostname); break; case ACTION_DELEGATE_HOSTNAME_REMOVE: _mdns_delegate_hostname_remove(action->data.delegate_hostname.hostname); - free((char *)action->data.delegate_hostname.hostname); + mdns_mem_free((char *)action->data.delegate_hostname.hostname); break; default: break; } - free(action); + mdns_mem_free(action); } /** @@ -5246,7 +5318,7 @@ static esp_err_t _mdns_send_search_action(mdns_action_type_t type, mdns_search_o { mdns_action_t *action = NULL; - action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; return ESP_ERR_NO_MEM; @@ -5255,7 +5327,7 @@ static esp_err_t _mdns_send_search_action(mdns_action_type_t type, mdns_search_o action->type = type; action->data.search_add.search = search; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(action); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } return ESP_OK; @@ -5283,13 +5355,13 @@ static void _mdns_scheduler_run(void) return; } while (p && (int32_t)(p->send_at - (xTaskGetTickCount() * portTICK_PERIOD_MS)) < 0) { - action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (action) { action->type = ACTION_TX_HANDLE; action->data.tx_handle.packet = p; p->queued = true; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(action); + mdns_mem_free(action); p->queued = false; } } else { @@ -5343,7 +5415,8 @@ static void _mdns_service_task(void *pvParameters) for (;;) { if (_mdns_server && _mdns_server->action_queue) { if (xQueueReceive(_mdns_server->action_queue, &a, portMAX_DELAY) == pdTRUE) { - if (a && a->type == ACTION_TASK_STOP) { + assert(a); + if (a->type == ACTION_TASK_STOP) { break; } MDNS_SERVICE_LOCK(); @@ -5355,7 +5428,7 @@ static void _mdns_service_task(void *pvParameters) } } _mdns_service_task_handle = NULL; - vTaskDelete(NULL); + vTaskDelay(portMAX_DELAY); } static void _mdns_timer_cb(void *arg) @@ -5392,6 +5465,24 @@ static esp_err_t _mdns_stop_timer(void) return err; } +static esp_err_t _mdns_task_create_with_caps(void) +{ + esp_err_t ret = ESP_OK; + static StaticTask_t mdns_task_buffer; + + _mdns_stack_buffer = mdns_mem_task_malloc(MDNS_SERVICE_STACK_DEPTH); + ESP_GOTO_ON_FALSE(_mdns_stack_buffer != NULL, ESP_FAIL, err, TAG, "failed to allocate memory for the mDNS task's stack"); + + _mdns_service_task_handle = xTaskCreateStaticPinnedToCore(_mdns_service_task, "mdns", MDNS_SERVICE_STACK_DEPTH, NULL, MDNS_TASK_PRIORITY, _mdns_stack_buffer, &mdns_task_buffer, MDNS_TASK_AFFINITY); + ESP_GOTO_ON_FALSE(_mdns_service_task_handle != NULL, ESP_FAIL, err, TAG, "failed to create task for the mDNS"); + + return ret; + +err: + mdns_mem_task_free(_mdns_stack_buffer); + return ret; +} + /** * @brief Start the service thread if not running * @@ -5401,30 +5492,35 @@ static esp_err_t _mdns_stop_timer(void) */ static esp_err_t _mdns_service_task_start(void) { + esp_err_t ret = ESP_OK; if (!_mdns_service_semaphore) { _mdns_service_semaphore = xSemaphoreCreateMutex(); - if (!_mdns_service_semaphore) { - return ESP_FAIL; - } + ESP_RETURN_ON_FALSE(_mdns_service_semaphore != NULL, ESP_FAIL, TAG, "Failed to create the mDNS service lock"); } MDNS_SERVICE_LOCK(); - if (_mdns_start_timer()) { - MDNS_SERVICE_UNLOCK(); - return ESP_FAIL; - } + ESP_GOTO_ON_ERROR(_mdns_start_timer(), err, TAG, "Failed to start the mDNS service timer"); + if (!_mdns_service_task_handle) { - xTaskCreatePinnedToCore(_mdns_service_task, "mdns", MDNS_SERVICE_STACK_DEPTH, NULL, MDNS_TASK_PRIORITY, - (TaskHandle_t *const)(&_mdns_service_task_handle), MDNS_TASK_AFFINITY); - if (!_mdns_service_task_handle) { - _mdns_stop_timer(); - MDNS_SERVICE_UNLOCK(); - vSemaphoreDelete(_mdns_service_semaphore); - _mdns_service_semaphore = NULL; - return ESP_FAIL; - } + ESP_GOTO_ON_ERROR(_mdns_task_create_with_caps(), err_stop_timer, TAG, "Failed to start the mDNS service task"); +#ifdef MDNS_ENABLE_DEBUG +#if !CONFIG_IDF_TARGET_LINUX + StackType_t *mdns_debug_stack_buffer; + StaticTask_t *mdns_debug_task_buffer; + xTaskGetStaticBuffers(_mdns_service_task_handle, &mdns_debug_stack_buffer, &mdns_debug_task_buffer); + _mdns_dbg_printf("mdns_debug_stack_buffer:%p mdns_debug_task_buffer:%p\n", mdns_debug_stack_buffer, mdns_debug_task_buffer); +#endif // CONFIG_IDF_TARGET_LINUX +#endif // MDNS_ENABLE_DEBUG } MDNS_SERVICE_UNLOCK(); - return ESP_OK; + return ret; + +err_stop_timer: + _mdns_stop_timer(); +err: + MDNS_SERVICE_UNLOCK(); + vSemaphoreDelete(_mdns_service_semaphore); + _mdns_service_semaphore = NULL; + return ret; } /** @@ -5437,16 +5533,17 @@ static esp_err_t _mdns_service_task_stop(void) { _mdns_stop_timer(); if (_mdns_service_task_handle) { + TaskHandle_t task_handle = _mdns_service_task_handle; mdns_action_t action; mdns_action_t *a = &action; action.type = ACTION_TASK_STOP; if (xQueueSend(_mdns_server->action_queue, &a, (TickType_t)0) != pdPASS) { - vTaskDelete(_mdns_service_task_handle); _mdns_service_task_handle = NULL; } while (_mdns_service_task_handle) { vTaskDelay(10 / portTICK_PERIOD_MS); } + vTaskDelete(task_handle); } vSemaphoreDelete(_mdns_service_semaphore); _mdns_service_semaphore = NULL; @@ -5459,7 +5556,7 @@ static esp_err_t mdns_post_custom_action_tcpip_if(mdns_if_t mdns_if, mdns_event_ return ESP_ERR_INVALID_STATE; } - mdns_action_t *action = (mdns_action_t *)calloc(1, sizeof(mdns_action_t)); + mdns_action_t *action = (mdns_action_t *)mdns_mem_calloc(1, sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; return ESP_ERR_NO_MEM; @@ -5469,7 +5566,7 @@ static esp_err_t mdns_post_custom_action_tcpip_if(mdns_if_t mdns_if, mdns_event_ action->data.sys_event.interface = mdns_if; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(action); + mdns_mem_free(action); } return ESP_OK; } @@ -5568,7 +5665,7 @@ esp_err_t mdns_init(void) return err; } - _mdns_server = (mdns_server_t *)malloc(sizeof(mdns_server_t)); + _mdns_server = (mdns_server_t *)mdns_mem_malloc(sizeof(mdns_server_t)); if (!_mdns_server) { HOOK_MALLOC_FAILED; return ESP_ERR_NO_MEM; @@ -5653,7 +5750,7 @@ free_event_handlers: free_queue: vQueueDelete(_mdns_server->action_queue); free_server: - free(_mdns_server); + mdns_mem_free(_mdns_server); _mdns_server = NULL; return err; } @@ -5671,13 +5768,15 @@ void mdns_free(void) mdns_service_remove_all(); free_delegated_hostnames(); _mdns_service_task_stop(); + // at this point, the service task is deleted, so we can destroy the stack size + mdns_mem_task_free(_mdns_stack_buffer); for (i = 0; i < MDNS_MAX_INTERFACES; i++) { for (j = 0; j < MDNS_IP_PROTOCOL_MAX; j++) { mdns_pcb_deinit_local(i, j); } } - free((char *)_mdns_server->hostname); - free((char *)_mdns_server->instance); + mdns_mem_free((char *)_mdns_server->hostname); + mdns_mem_free((char *)_mdns_server->instance); if (_mdns_server->action_queue) { mdns_action_t *c; while (xQueueReceive(_mdns_server->action_queue, &c, 0) == pdTRUE) { @@ -5689,14 +5788,14 @@ void mdns_free(void) while (_mdns_server->search_once) { mdns_search_once_t *h = _mdns_server->search_once; _mdns_server->search_once = h->next; - free(h->instance); - free(h->service); - free(h->proto); + mdns_mem_free(h->instance); + mdns_mem_free(h->service); + mdns_mem_free(h->proto); vSemaphoreDelete(h->done_semaphore); if (h->result) { _mdns_query_results_free(h->result); } - free(h); + mdns_mem_free(h); } while (_mdns_server->browse) { mdns_browse_t *b = _mdns_server->browse; @@ -5705,7 +5804,7 @@ void mdns_free(void) } vSemaphoreDelete(_mdns_server->action_sema); - free(_mdns_server); + mdns_mem_free(_mdns_server); _mdns_server = NULL; } @@ -5717,22 +5816,22 @@ esp_err_t mdns_hostname_set(const char *hostname) if (_str_null_or_empty(hostname) || strlen(hostname) > (MDNS_NAME_BUF_LEN - 1)) { return ESP_ERR_INVALID_ARG; } - char *new_hostname = strndup(hostname, MDNS_NAME_BUF_LEN - 1); + char *new_hostname = mdns_mem_strndup(hostname, MDNS_NAME_BUF_LEN - 1); if (!new_hostname) { return ESP_ERR_NO_MEM; } - mdns_action_t *action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + mdns_action_t *action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; - free(new_hostname); + mdns_mem_free(new_hostname); return ESP_ERR_NO_MEM; } action->type = ACTION_HOSTNAME_SET; action->data.hostname_set.hostname = new_hostname; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(new_hostname); - free(action); + mdns_mem_free(new_hostname); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } xSemaphoreTake(_mdns_server->action_sema, portMAX_DELAY); @@ -5765,23 +5864,23 @@ esp_err_t mdns_delegate_hostname_add(const char *hostname, const mdns_ip_addr_t if (_str_null_or_empty(hostname) || strlen(hostname) > (MDNS_NAME_BUF_LEN - 1)) { return ESP_ERR_INVALID_ARG; } - char *new_hostname = strndup(hostname, MDNS_NAME_BUF_LEN - 1); + char *new_hostname = mdns_mem_strndup(hostname, MDNS_NAME_BUF_LEN - 1); if (!new_hostname) { return ESP_ERR_NO_MEM; } - mdns_action_t *action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + mdns_action_t *action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; - free(new_hostname); + mdns_mem_free(new_hostname); return ESP_ERR_NO_MEM; } action->type = ACTION_DELEGATE_HOSTNAME_ADD; action->data.delegate_hostname.hostname = new_hostname; action->data.delegate_hostname.address_list = copy_address_list(address_list); if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(new_hostname); - free(action); + mdns_mem_free(new_hostname); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } xSemaphoreTake(_mdns_server->action_sema, portMAX_DELAY); @@ -5796,22 +5895,22 @@ esp_err_t mdns_delegate_hostname_remove(const char *hostname) if (_str_null_or_empty(hostname) || strlen(hostname) > (MDNS_NAME_BUF_LEN - 1)) { return ESP_ERR_INVALID_ARG; } - char *new_hostname = strndup(hostname, MDNS_NAME_BUF_LEN - 1); + char *new_hostname = mdns_mem_strndup(hostname, MDNS_NAME_BUF_LEN - 1); if (!new_hostname) { return ESP_ERR_NO_MEM; } - mdns_action_t *action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + mdns_action_t *action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; - free(new_hostname); + mdns_mem_free(new_hostname); return ESP_ERR_NO_MEM; } action->type = ACTION_DELEGATE_HOSTNAME_REMOVE; action->data.delegate_hostname.hostname = new_hostname; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(new_hostname); - free(action); + mdns_mem_free(new_hostname); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } return ESP_OK; @@ -5825,23 +5924,23 @@ esp_err_t mdns_delegate_hostname_set_address(const char *hostname, const mdns_ip if (_str_null_or_empty(hostname) || strlen(hostname) > (MDNS_NAME_BUF_LEN - 1)) { return ESP_ERR_INVALID_ARG; } - char *new_hostname = strndup(hostname, MDNS_NAME_BUF_LEN - 1); + char *new_hostname = mdns_mem_strndup(hostname, MDNS_NAME_BUF_LEN - 1); if (!new_hostname) { return ESP_ERR_NO_MEM; } - mdns_action_t *action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + mdns_action_t *action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; - free(new_hostname); + mdns_mem_free(new_hostname); return ESP_ERR_NO_MEM; } action->type = ACTION_DELEGATE_HOSTNAME_SET_ADDR; action->data.delegate_hostname.hostname = new_hostname; action->data.delegate_hostname.address_list = copy_address_list(address_list); if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(new_hostname); - free(action); + mdns_mem_free(new_hostname); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } return ESP_OK; @@ -5864,22 +5963,22 @@ esp_err_t mdns_instance_name_set(const char *instance) if (_str_null_or_empty(instance) || _mdns_server->hostname == NULL || strlen(instance) > (MDNS_NAME_BUF_LEN - 1)) { return ESP_ERR_INVALID_ARG; } - char *new_instance = strndup(instance, MDNS_NAME_BUF_LEN - 1); + char *new_instance = mdns_mem_strndup(instance, MDNS_NAME_BUF_LEN - 1); if (!new_instance) { return ESP_ERR_NO_MEM; } - mdns_action_t *action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + mdns_action_t *action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; - free(new_instance); + mdns_mem_free(new_instance); return ESP_ERR_NO_MEM; } action->type = ACTION_INSTANCE_SET; action->data.instance = new_instance; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(new_instance); - free(action); + mdns_mem_free(new_instance); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } return ESP_OK; @@ -5892,7 +5991,7 @@ esp_err_t mdns_instance_name_set(const char *instance) esp_err_t mdns_service_add_for_host(const char *instance, const char *service, const char *proto, const char *host, uint16_t port, mdns_txt_item_t txt[], size_t num_items) { - if (!_mdns_server || _str_null_or_empty(service) || _str_null_or_empty(proto) || !port || !_mdns_server->hostname) { + if (!_mdns_server || _str_null_or_empty(service) || _str_null_or_empty(proto) || !_mdns_server->hostname) { return ESP_ERR_INVALID_ARG; } @@ -5901,7 +6000,8 @@ esp_err_t mdns_service_add_for_host(const char *instance, const char *service, c const char *hostname = host ? host : _mdns_server->hostname; mdns_service_t *s = NULL; - ESP_GOTO_ON_FALSE(_mdns_can_add_more_services(), ESP_ERR_NO_MEM, err, TAG, "Cannot add more services"); + ESP_GOTO_ON_FALSE(_mdns_can_add_more_services(), ESP_ERR_NO_MEM, err, TAG, + "Cannot add more services, please increase CONFIG_MDNS_MAX_SERVICES (%d)", CONFIG_MDNS_MAX_SERVICES); mdns_srv_item_t *item = _mdns_get_service_item_instance(instance, service, proto, hostname); ESP_GOTO_ON_FALSE(!item, ESP_ERR_INVALID_ARG, err, TAG, "Service already exists"); @@ -5909,7 +6009,7 @@ esp_err_t mdns_service_add_for_host(const char *instance, const char *service, c s = _mdns_create_service(service, proto, hostname, port, instance, num_items, txt); ESP_GOTO_ON_FALSE(s, ESP_ERR_NO_MEM, err, TAG, "Cannot create service: Out of memory"); - item = (mdns_srv_item_t *)malloc(sizeof(mdns_srv_item_t)); + item = (mdns_srv_item_t *)mdns_mem_malloc(sizeof(mdns_srv_item_t)); ESP_GOTO_ON_FALSE(item, ESP_ERR_NO_MEM, err, TAG, "Cannot create service: Out of memory"); item->service = s; @@ -5970,8 +6070,8 @@ static mdns_txt_item_t *_copy_mdns_txt_items(mdns_txt_linked_item_t *items, uint *txt_value_len = NULL; return NULL; } - ret = (mdns_txt_item_t *)calloc(ret_index, sizeof(mdns_txt_item_t)); - *txt_value_len = (uint8_t *)calloc(ret_index, sizeof(uint8_t)); + ret = (mdns_txt_item_t *)mdns_mem_calloc(ret_index, sizeof(mdns_txt_item_t)); + *txt_value_len = (uint8_t *)mdns_mem_calloc(ret_index, sizeof(uint8_t)); if (!ret || !(*txt_value_len)) { HOOK_MALLOC_FAILED; goto handle_error; @@ -5979,7 +6079,7 @@ static mdns_txt_item_t *_copy_mdns_txt_items(mdns_txt_linked_item_t *items, uint ret_index = 0; for (mdns_txt_linked_item_t *tmp = items; tmp != NULL; tmp = tmp->next) { size_t key_len = strlen(tmp->key); - char *key = (char *)malloc(key_len + 1); + char *key = (char *)mdns_mem_malloc(key_len + 1); if (!key) { HOOK_MALLOC_FAILED; goto handle_error; @@ -5987,7 +6087,7 @@ static mdns_txt_item_t *_copy_mdns_txt_items(mdns_txt_linked_item_t *items, uint memcpy(key, tmp->key, key_len); key[key_len] = 0; ret[ret_index].key = key; - char *value = (char *)malloc(tmp->value_len + 1); + char *value = (char *)mdns_mem_malloc(tmp->value_len + 1); if (!value) { HOOK_MALLOC_FAILED; goto handle_error; @@ -6003,11 +6103,11 @@ static mdns_txt_item_t *_copy_mdns_txt_items(mdns_txt_linked_item_t *items, uint handle_error: for (size_t y = 0; y < ret_index + 1 && ret != NULL; y++) { mdns_txt_item_t *t = &ret[y]; - free((char *)t->key); - free((char *)t->value); + mdns_mem_free((char *)t->key); + mdns_mem_free((char *)t->value); } - free(*txt_value_len); - free(ret); + mdns_mem_free(*txt_value_len); + mdns_mem_free(ret); return NULL; } @@ -6042,7 +6142,7 @@ static mdns_result_t *_mdns_lookup_service(const char *instance, const char *ser if ((selfhost && is_service_selfhosted) || (!selfhost && is_service_delegated)) { if (!strcasecmp(srv->service, service) && !strcasecmp(srv->proto, proto) && (_str_null_or_empty(instance) || _mdns_instance_name_match(srv->instance, instance))) { - mdns_result_t *item = (mdns_result_t *)malloc(sizeof(mdns_result_t)); + mdns_result_t *item = (mdns_result_t *)mdns_mem_malloc(sizeof(mdns_result_t)); if (!item) { HOOK_MALLOC_FAILED; goto handle_error; @@ -6053,7 +6153,7 @@ static mdns_result_t *_mdns_lookup_service(const char *instance, const char *ser item->ttl = _str_null_or_empty(instance) ? MDNS_ANSWER_PTR_TTL : MDNS_ANSWER_SRV_TTL; item->ip_protocol = MDNS_IP_PROTOCOL_MAX; if (srv->instance) { - item->instance_name = strndup(srv->instance, MDNS_NAME_BUF_LEN - 1); + item->instance_name = mdns_mem_strndup(srv->instance, MDNS_NAME_BUF_LEN - 1); if (!item->instance_name) { HOOK_MALLOC_FAILED; goto handle_error; @@ -6061,17 +6161,17 @@ static mdns_result_t *_mdns_lookup_service(const char *instance, const char *ser } else { item->instance_name = NULL; } - item->service_type = strndup(srv->service, MDNS_NAME_BUF_LEN - 1); + item->service_type = mdns_mem_strndup(srv->service, MDNS_NAME_BUF_LEN - 1); if (!item->service_type) { HOOK_MALLOC_FAILED; goto handle_error; } - item->proto = strndup(srv->proto, MDNS_NAME_BUF_LEN - 1); + item->proto = mdns_mem_strndup(srv->proto, MDNS_NAME_BUF_LEN - 1); if (!item->proto) { HOOK_MALLOC_FAILED; goto handle_error; } - item->hostname = strndup(srv->hostname, MDNS_NAME_BUF_LEN - 1); + item->hostname = mdns_mem_strndup(srv->hostname, MDNS_NAME_BUF_LEN - 1); if (!item->hostname) { HOOK_MALLOC_FAILED; goto handle_error; @@ -6168,7 +6268,7 @@ esp_err_t mdns_service_txt_set(const char *service, const char *proto, mdns_txt_ } esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char *instance, const char *service, const char *proto, - const char *host, const char *key, const char *value_arg, uint8_t value_len) + const char *host, const char *key, const char *value_arg, uint8_t value_len) { MDNS_SERVICE_LOCK(); esp_err_t ret = ESP_OK; @@ -6183,7 +6283,7 @@ esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char mdns_service_t *srv = s->service; if (value_len > 0) { - value = (char *) malloc(value_len); + value = (char *) mdns_mem_malloc(value_len); ESP_GOTO_ON_FALSE(value, ESP_ERR_NO_MEM, out_of_mem, TAG, "Out of memory"); memcpy(value, value_arg, value_len); } else { @@ -6192,7 +6292,7 @@ esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char mdns_txt_linked_item_t *txt = srv->txt; while (txt) { if (strcmp(txt->key, key) == 0) { - free((char *)txt->value); + mdns_mem_free((char *)txt->value); txt->value = value; txt->value_len = value_len; break; @@ -6200,9 +6300,9 @@ esp_err_t mdns_service_txt_item_set_for_host_with_explicit_value_len(const char txt = txt->next; } if (!txt) { - new_txt = (mdns_txt_linked_item_t *)malloc(sizeof(mdns_txt_linked_item_t)); + new_txt = (mdns_txt_linked_item_t *)mdns_mem_malloc(sizeof(mdns_txt_linked_item_t)); ESP_GOTO_ON_FALSE(new_txt, ESP_ERR_NO_MEM, out_of_mem, TAG, "Out of memory"); - new_txt->key = strdup(key); + new_txt->key = mdns_mem_strdup(key); ESP_GOTO_ON_FALSE(new_txt->key, ESP_ERR_NO_MEM, out_of_mem, TAG, "Out of memory"); new_txt->value = value; new_txt->value_len = value_len; @@ -6218,16 +6318,16 @@ err: out_of_mem: MDNS_SERVICE_UNLOCK(); HOOK_MALLOC_FAILED; - free(value); - free(new_txt); + mdns_mem_free(value); + mdns_mem_free(new_txt); return ret; } esp_err_t mdns_service_txt_item_set_for_host(const char *instance, const char *service, const char *proto, const char *hostname, - const char *key, const char *value) + const char *key, const char *value) { return mdns_service_txt_item_set_for_host_with_explicit_value_len(instance, service, proto, hostname, key, value, - strlen(value)); + strlen(value)); } @@ -6237,11 +6337,11 @@ esp_err_t mdns_service_txt_item_set(const char *service, const char *proto, cons return ESP_ERR_INVALID_STATE; } return mdns_service_txt_item_set_for_host_with_explicit_value_len(NULL, service, proto, NULL, key, - value, strlen(value)); + value, strlen(value)); } esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service, const char *proto, const char *key, - const char *value, uint8_t value_len) + const char *value, uint8_t value_len) { if (!_mdns_server) { return ESP_ERR_INVALID_STATE; @@ -6250,7 +6350,7 @@ esp_err_t mdns_service_txt_item_set_with_explicit_value_len(const char *service, } esp_err_t mdns_service_txt_item_remove_for_host(const char *instance, const char *service, const char *proto, const char *host, - const char *key) + const char *key) { MDNS_SERVICE_LOCK(); esp_err_t ret = ESP_OK; @@ -6268,17 +6368,17 @@ esp_err_t mdns_service_txt_item_remove_for_host(const char *instance, const char } if (strcmp(txt->key, key) == 0) { srv->txt = txt->next; - free((char *)txt->key); - free((char *)txt->value); - free(txt); + mdns_mem_free((char *)txt->key); + mdns_mem_free((char *)txt->value); + mdns_mem_free(txt); } else { while (txt->next) { if (strcmp(txt->next->key, key) == 0) { mdns_txt_linked_item_t *t = txt->next; txt->next = t->next; - free((char *)t->key); - free((char *)t->value); - free(t); + mdns_mem_free((char *)t->key); + mdns_mem_free((char *)t->value); + mdns_mem_free(t); break; } else { txt = txt->next; @@ -6318,8 +6418,8 @@ static esp_err_t _mdns_service_subtype_remove_for_host(mdns_srv_item_t *service, } else { pre->next = srv_subtype->next; } - free((char *)srv_subtype->subtype); - free(srv_subtype); + mdns_mem_free((char *)srv_subtype->subtype); + mdns_mem_free(srv_subtype); ret = ESP_OK; break; } @@ -6334,7 +6434,7 @@ static esp_err_t _mdns_service_subtype_remove_for_host(mdns_srv_item_t *service, } esp_err_t mdns_service_subtype_remove_for_host(const char *instance_name, const char *service, const char *proto, - const char *hostname, const char *subtype) + const char *hostname, const char *subtype) { MDNS_SERVICE_LOCK(); esp_err_t ret = ESP_OK; @@ -6347,11 +6447,23 @@ esp_err_t mdns_service_subtype_remove_for_host(const char *instance_name, const ret = _mdns_service_subtype_remove_for_host(s, subtype); ESP_GOTO_ON_ERROR(ret, err, TAG, "Failed to remove the subtype: %s", subtype); - // TODO: Need to transmit a sendbye message for the removed subtype. - // TODO: Need to remove this subtype answer from the scheduled answer list. + // Transmit a sendbye message for the removed subtype. + mdns_subtype_t *remove_subtypes = (mdns_subtype_t *)mdns_mem_malloc(sizeof(mdns_subtype_t)); + ESP_GOTO_ON_FALSE(remove_subtypes, ESP_ERR_NO_MEM, out_of_mem, TAG, "Out of memory"); + remove_subtypes->subtype = mdns_mem_strdup(subtype); + ESP_GOTO_ON_FALSE(remove_subtypes->subtype, ESP_ERR_NO_MEM, out_of_mem, TAG, "Out of memory"); + remove_subtypes->next = NULL; + + _mdns_send_bye_subtype(s, instance_name, remove_subtypes); + _mdns_free_subtype(remove_subtypes); err: MDNS_SERVICE_UNLOCK(); return ret; +out_of_mem: + HOOK_MALLOC_FAILED; + mdns_mem_free(remove_subtypes); + MDNS_SERVICE_UNLOCK(); + return ret; } static esp_err_t _mdns_service_subtype_add_for_host(mdns_srv_item_t *service, const char *subtype) @@ -6363,9 +6475,9 @@ static esp_err_t _mdns_service_subtype_add_for_host(mdns_srv_item_t *service, co srv_subtype = srv_subtype->next; } - mdns_subtype_t *subtype_item = (mdns_subtype_t *)malloc(sizeof(mdns_subtype_t)); + mdns_subtype_t *subtype_item = (mdns_subtype_t *)mdns_mem_malloc(sizeof(mdns_subtype_t)); ESP_GOTO_ON_FALSE(subtype_item, ESP_ERR_NO_MEM, out_of_mem, TAG, "Out of memory"); - subtype_item->subtype = strdup(subtype); + subtype_item->subtype = mdns_mem_strdup(subtype); ESP_GOTO_ON_FALSE(subtype_item->subtype, ESP_ERR_NO_MEM, out_of_mem, TAG, "Out of memory"); subtype_item->next = service->service->subtype; service->service->subtype = subtype_item; @@ -6374,12 +6486,12 @@ err: return ret; out_of_mem: HOOK_MALLOC_FAILED; - free(subtype_item); + mdns_mem_free(subtype_item); return ret; } esp_err_t mdns_service_subtype_add_multiple_items_for_host(const char *instance_name, const char *service, 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) { MDNS_SERVICE_LOCK(); esp_err_t ret = ESP_OK; @@ -6416,15 +6528,65 @@ exit: } 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) { mdns_subtype_item_t _subtype[1]; _subtype[0].subtype = subtype; return mdns_service_subtype_add_multiple_items_for_host(instance_name, service_type, proto, hostname, _subtype, 1); } +static mdns_subtype_t *_mdns_service_find_subtype_needed_sendbye(mdns_service_t *service, mdns_subtype_item_t subtype[], + uint8_t num_items) +{ + if (!service) { + return NULL; + } + + mdns_subtype_t *current = service->subtype; + mdns_subtype_t *prev = NULL; + mdns_subtype_t *prev_goodbye = NULL; + mdns_subtype_t *out_goodbye_subtype = NULL; + + while (current) { + bool subtype_in_update = false; + + for (int i = 0; i < num_items; i++) { + if (strcmp(subtype[i].subtype, current->subtype) == 0) { + subtype_in_update = true; + break; + } + } + + if (!subtype_in_update) { + // Remove from original list + if (prev) { + prev->next = current->next; + } else { + service->subtype = current->next; + } + + mdns_subtype_t *to_move = current; + current = current->next; + + // Add to goodbye list + to_move->next = NULL; + if (prev_goodbye) { + prev_goodbye->next = to_move; + } else { + out_goodbye_subtype = to_move; + } + prev_goodbye = to_move; + } else { + prev = current; + current = current->next; + } + } + + return out_goodbye_subtype; +} + 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) { MDNS_SERVICE_LOCK(); esp_err_t ret = ESP_OK; @@ -6435,7 +6597,13 @@ esp_err_t mdns_service_subtype_update_multiple_items_for_host(const char *instan mdns_srv_item_t *s = _mdns_get_service_item_instance(instance_name, service_type, proto, hostname); ESP_GOTO_ON_FALSE(s, ESP_ERR_NOT_FOUND, err, TAG, "Service doesn't exist"); - // TODO: find subtype needs to say sendbye + mdns_subtype_t *goodbye_subtype = _mdns_service_find_subtype_needed_sendbye(s->service, subtype, num_items); + + if (goodbye_subtype) { + _mdns_send_bye_subtype(s, instance_name, goodbye_subtype); + } + + _mdns_free_subtype(goodbye_subtype); _mdns_free_service_subtype(s->service); for (; cur_index < num_items; cur_index++) { @@ -6465,7 +6633,7 @@ exit: } esp_err_t mdns_service_instance_name_set_for_host(const char *instance_old, const char *service, const char *proto, const char *host, - const char *instance) + const char *instance) { MDNS_SERVICE_LOCK(); esp_err_t ret = ESP_OK; @@ -6479,9 +6647,9 @@ esp_err_t mdns_service_instance_name_set_for_host(const char *instance_old, cons if (s->service->instance) { _mdns_send_bye(&s, 1, false); - free((char *)s->service->instance); + mdns_mem_free((char *)s->service->instance); } - s->service->instance = strndup(instance, MDNS_NAME_BUF_LEN - 1); + s->service->instance = mdns_mem_strndup(instance, MDNS_NAME_BUF_LEN - 1); ESP_GOTO_ON_FALSE(s->service->instance, ESP_ERR_NO_MEM, err, TAG, "Out of memory"); _mdns_probe_all_pcbs(&s, 1, false, false); @@ -6521,7 +6689,7 @@ esp_err_t mdns_service_remove_for_host(const char *instance, const char *service _mdns_send_bye(&a, 1, false); _mdns_remove_scheduled_service_packets(a->service); _mdns_free_service(a->service); - free(a); + mdns_mem_free(a); break; } b = a; @@ -6538,7 +6706,7 @@ esp_err_t mdns_service_remove_for_host(const char *instance, const char *service _mdns_send_bye(&a, 1, false); _mdns_remove_scheduled_service_packets(a->service); _mdns_free_service(a->service); - free(a); + mdns_mem_free(a); break; } b = a; @@ -6576,7 +6744,7 @@ esp_err_t mdns_service_remove_all(void) services = services->next; _mdns_remove_scheduled_service_packets(s->service); _mdns_free_service(s->service); - free(s); + mdns_mem_free(s); } done: @@ -6602,26 +6770,26 @@ static void _mdns_query_results_free(mdns_result_t *results) while (results) { r = results; - free((char *)(r->hostname)); - free((char *)(r->instance_name)); - free((char *)(r->service_type)); - free((char *)(r->proto)); + mdns_mem_free((char *)(r->hostname)); + mdns_mem_free((char *)(r->instance_name)); + mdns_mem_free((char *)(r->service_type)); + mdns_mem_free((char *)(r->proto)); for (size_t i = 0; i < r->txt_count; i++) { - free((char *)(r->txt[i].key)); - free((char *)(r->txt[i].value)); + mdns_mem_free((char *)(r->txt[i].key)); + mdns_mem_free((char *)(r->txt[i].value)); } - free(r->txt); - free(r->txt_value_len); + mdns_mem_free(r->txt); + mdns_mem_free(r->txt_value_len); while (r->addr) { a = r->addr; r->addr = r->addr->next; - free(a); + mdns_mem_free(a); } results = results->next; - free(r); + mdns_mem_free(r); } } @@ -6656,7 +6824,7 @@ bool mdns_query_async_get_results(mdns_search_once_t *search, uint32_t timeout, } mdns_search_once_t *mdns_query_async_new(const char *name, const char *service, 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) { mdns_search_once_t *search = NULL; @@ -6756,7 +6924,7 @@ esp_err_t mdns_lookup_delegated_service(const char *instance, const char *servic } esp_err_t mdns_lookup_selfhosted_service(const char *instance, const char *service, const char *proto, size_t max_results, - mdns_result_t **result) + mdns_result_t **result) { if (!_mdns_server) { return ESP_ERR_INVALID_STATE; @@ -7084,7 +7252,7 @@ static esp_err_t _mdns_sync_browse_action(mdns_action_type_t type, mdns_browse_s { mdns_action_t *action = NULL; - action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; return ESP_ERR_NO_MEM; @@ -7093,7 +7261,7 @@ static esp_err_t _mdns_sync_browse_action(mdns_action_type_t type, mdns_browse_s action->type = type; action->data.browse_sync.browse_sync = browse_sync; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(action); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } return ESP_OK; @@ -7106,7 +7274,7 @@ static esp_err_t _mdns_send_browse_action(mdns_action_type_t type, mdns_browse_t { mdns_action_t *action = NULL; - action = (mdns_action_t *)malloc(sizeof(mdns_action_t)); + action = (mdns_action_t *)mdns_mem_malloc(sizeof(mdns_action_t)); if (!action) { HOOK_MALLOC_FAILED; @@ -7116,7 +7284,7 @@ static esp_err_t _mdns_send_browse_action(mdns_action_type_t type, mdns_browse_t action->type = type; action->data.browse_add.browse = browse; if (xQueueSend(_mdns_server->action_queue, &action, (TickType_t)0) != pdPASS) { - free(action); + mdns_mem_free(action); return ESP_ERR_NO_MEM; } return ESP_OK; @@ -7127,12 +7295,12 @@ static esp_err_t _mdns_send_browse_action(mdns_action_type_t type, mdns_browse_t */ static void _mdns_browse_item_free(mdns_browse_t *browse) { - free(browse->service); - free(browse->proto); + mdns_mem_free(browse->service); + mdns_mem_free(browse->proto); if (browse->result) { _mdns_query_results_free(browse->result); } - free(browse); + mdns_mem_free(browse); } /** @@ -7140,7 +7308,7 @@ static void _mdns_browse_item_free(mdns_browse_t *browse) */ static mdns_browse_t *_mdns_browse_init(const char *service, const char *proto, mdns_browse_notify_t notifier) { - mdns_browse_t *browse = (mdns_browse_t *)malloc(sizeof(mdns_browse_t)); + mdns_browse_t *browse = (mdns_browse_t *)mdns_mem_malloc(sizeof(mdns_browse_t)); if (!browse) { HOOK_MALLOC_FAILED; @@ -7150,7 +7318,7 @@ static mdns_browse_t *_mdns_browse_init(const char *service, const char *proto, browse->state = BROWSE_INIT; if (!_str_null_or_empty(service)) { - browse->service = strndup(service, MDNS_NAME_BUF_LEN - 1); + browse->service = mdns_mem_strndup(service, MDNS_NAME_BUF_LEN - 1); if (!browse->service) { _mdns_browse_item_free(browse); return NULL; @@ -7158,7 +7326,7 @@ static mdns_browse_t *_mdns_browse_init(const char *service, const char *proto, } if (!_str_null_or_empty(proto)) { - browse->proto = strndup(proto, MDNS_NAME_BUF_LEN - 1); + browse->proto = mdns_mem_strndup(proto, MDNS_NAME_BUF_LEN - 1); if (!browse->proto) { _mdns_browse_item_free(browse); return NULL; @@ -7296,7 +7464,7 @@ static esp_err_t _mdns_add_browse_result(mdns_browse_sync_t *sync_browse, mdns_r } if (!sync_r) { // Do not find, need to add the result to the list - mdns_browse_result_sync_t *new = (mdns_browse_result_sync_t *)malloc(sizeof(mdns_browse_result_sync_t)); + mdns_browse_result_sync_t *new = (mdns_browse_result_sync_t *)mdns_mem_malloc(sizeof(mdns_browse_result_sync_t)); if (!new) { HOOK_MALLOC_FAILED; @@ -7457,11 +7625,11 @@ static void _mdns_browse_result_add_txt(mdns_browse_t *browse, const char *insta } // If the result has a previous txt entry, we delete it and re-add. for (size_t i = 0; i < r->txt_count; i++) { - free((char *)(r->txt[i].key)); - free((char *)(r->txt[i].value)); + mdns_mem_free((char *)(r->txt[i].key)); + mdns_mem_free((char *)(r->txt[i].value)); } - free(r->txt); - free(r->txt_value_len); + mdns_mem_free(r->txt); + mdns_mem_free(r->txt_value_len); } r->txt = txt; r->txt_value_len = txt_value_len; @@ -7486,20 +7654,20 @@ static void _mdns_browse_result_add_txt(mdns_browse_t *browse, const char *insta } r = r->next; } - r = (mdns_result_t *)malloc(sizeof(mdns_result_t)); + r = (mdns_result_t *)mdns_mem_malloc(sizeof(mdns_result_t)); if (!r) { HOOK_MALLOC_FAILED; goto free_txt; } memset(r, 0, sizeof(mdns_result_t)); - r->instance_name = strdup(instance); - r->service_type = strdup(service); - r->proto = strdup(proto); + r->instance_name = mdns_mem_strdup(instance); + r->service_type = mdns_mem_strdup(service); + r->proto = mdns_mem_strdup(proto); if (!r->instance_name || !r->service_type || !r->proto) { - free(r->instance_name); - free(r->service_type); - free(r->proto); - free(r); + mdns_mem_free(r->instance_name); + mdns_mem_free(r->service_type); + mdns_mem_free(r->proto); + mdns_mem_free(r); return; } r->txt = txt; @@ -7515,11 +7683,11 @@ static void _mdns_browse_result_add_txt(mdns_browse_t *browse, const char *insta free_txt: for (size_t i = 0; i < txt_count; i++) { - free((char *)(txt[i].key)); - free((char *)(txt[i].value)); + mdns_mem_free((char *)(txt[i].key)); + mdns_mem_free((char *)(txt[i].value)); } - free(txt); - free(txt_value_len); + mdns_mem_free(txt); + mdns_mem_free(txt_value_len); return; } @@ -7561,7 +7729,7 @@ static void _mdns_browse_result_add_srv(mdns_browse_t *browse, const char *hostn !_str_null_or_empty(r->service_type) && !strcasecmp(service, r->service_type) && !_str_null_or_empty(r->proto) && !strcasecmp(proto, r->proto)) { if (_str_null_or_empty(r->hostname) || strcasecmp(hostname, r->hostname)) { - r->hostname = strdup(hostname); + r->hostname = mdns_mem_strdup(hostname); r->port = port; if (!r->hostname) { HOOK_MALLOC_FAILED; @@ -7594,24 +7762,24 @@ static void _mdns_browse_result_add_srv(mdns_browse_t *browse, const char *hostn } r = r->next; } - r = (mdns_result_t *)malloc(sizeof(mdns_result_t)); + r = (mdns_result_t *)mdns_mem_malloc(sizeof(mdns_result_t)); if (!r) { HOOK_MALLOC_FAILED; return; } memset(r, 0, sizeof(mdns_result_t)); - r->hostname = strdup(hostname); - r->instance_name = strdup(instance); - r->service_type = strdup(service); - r->proto = strdup(proto); + r->hostname = mdns_mem_strdup(hostname); + r->instance_name = mdns_mem_strdup(instance); + r->service_type = mdns_mem_strdup(service); + r->proto = mdns_mem_strdup(proto); if (!r->hostname || !r->instance_name || !r->service_type || !r->proto) { HOOK_MALLOC_FAILED; - free(r->hostname); - free(r->instance_name); - free(r->service_type); - free(r->proto); - free(r); + mdns_mem_free(r->hostname); + mdns_mem_free(r->instance_name); + mdns_mem_free(r->service_type); + mdns_mem_free(r->proto); + mdns_mem_free(r); return; } r->port = port; diff --git a/managed_components/espressif__mdns/mdns_console.c b/managed_components/espressif__mdns/mdns_console.c index 80f009a..b3448ff 100644 --- a/managed_components/espressif__mdns/mdns_console.c +++ b/managed_components/espressif__mdns/mdns_console.c @@ -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 */ @@ -10,6 +10,7 @@ #include "mdns.h" #include "mdns_private.h" #include "inttypes.h" +#include "mdns_mem_caps.h" 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 }; - ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_init) ); + ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_init)); } #endif /* CONFIG_LWIP_IPV4 */ @@ -169,7 +170,7 @@ static void register_mdns_query_aaaa(void) .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 */ @@ -231,7 +232,7 @@ static void register_mdns_query_srv(void) .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 { @@ -293,7 +294,7 @@ static void register_mdns_query_txt(void) .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 { @@ -359,7 +360,7 @@ static void register_mdns_query_ptr(void) .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 { @@ -427,7 +428,7 @@ static void register_mdns_query_ip(void) .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 { @@ -496,7 +497,7 @@ static void register_mdns_query_svc(void) .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 { @@ -513,15 +514,15 @@ static int cmd_mdns_init(int argc, char **argv) return 1; } - ESP_ERROR_CHECK( mdns_init() ); + ESP_ERROR_CHECK(mdns_init()); 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]); } 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]); } @@ -542,7 +543,7 @@ static void register_mdns_init(void) .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) @@ -561,7 +562,7 @@ static void register_mdns_free(void) .argtable = NULL }; - ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_free) ); + ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_free)); } static struct { @@ -582,7 +583,7 @@ static int cmd_mdns_set_hostname(int argc, char **argv) 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; } @@ -599,7 +600,7 @@ static void register_mdns_set_hostname(void) .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 { @@ -620,7 +621,7 @@ static int cmd_mdns_set_instance(int argc, char **argv) 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; } @@ -637,14 +638,14 @@ static void register_mdns_set_instance(void) .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) { int i = 0, e; 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) { printf("ERROR: No Memory!\n"); goto fail; @@ -661,15 +662,15 @@ static mdns_txt_item_t *_convert_items(const char **values, int count) } int var_len = esign - value; 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) { printf("ERROR: No Memory!\n"); goto fail; } - char *val = (char *)malloc(val_len + 1); + char *val = (char *)mdns_mem_malloc(val_len + 1); if (val == NULL) { printf("ERROR: No Memory!\n"); - free(var); + mdns_mem_free(var); goto fail; } memcpy(var, value, var_len); @@ -685,10 +686,10 @@ static mdns_txt_item_t *_convert_items(const char **values, int count) fail: for (e = 0; e < i; e++) { - free((char *)items[e].key); - free((char *)items[e].value); + mdns_mem_free((char *)items[e].key); + mdns_mem_free((char *)items[e].value); } - free(items); + mdns_mem_free(items); 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], - host, mdns_add_args.port->ival[0], items, mdns_add_args.txt->count) ); - free(items); + 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)); + mdns_mem_free(items); return 0; } @@ -758,7 +759,7 @@ static void register_mdns_service_add(void) .argtable = &mdns_add_args }; - ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_add) ); + ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_add)); } static struct { @@ -791,7 +792,7 @@ static int cmd_mdns_service_remove(int argc, char **argv) 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; } @@ -811,7 +812,7 @@ static void register_mdns_service_remove(void) .argtable = &mdns_remove_args }; - ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_remove) ); + ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_remove)); } static struct { @@ -869,7 +870,7 @@ static void register_mdns_service_instance_set(void) .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 { @@ -927,7 +928,7 @@ static void register_mdns_service_port_set(void) .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 { @@ -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) ); - free(items); + 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)); + mdns_mem_free(items); return 0; } @@ -992,7 +993,7 @@ static void register_mdns_service_txt_replace(void) .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 { @@ -1028,7 +1029,7 @@ static int cmd_mdns_service_txt_set(int argc, char **argv) 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; } @@ -1050,7 +1051,7 @@ static void register_mdns_service_txt_set(void) .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 { @@ -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]) { 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; } @@ -1103,7 +1104,7 @@ static void register_mdns_service_txt_remove(void) .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) @@ -1122,7 +1123,7 @@ static void register_mdns_service_remove_all(void) .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 @@ -1189,7 +1190,7 @@ static void register_mdns_lookup_service(void) .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 { @@ -1237,7 +1238,7 @@ static void register_mdns_delegate_host(void) .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 { @@ -1278,7 +1279,7 @@ static void register_mdns_undelegate_host(void) .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 { @@ -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]) { 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; } @@ -1331,7 +1332,7 @@ static void register_mdns_service_subtype_set(void) .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 { @@ -1377,7 +1378,7 @@ static void register_mdns_browse(void) .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) @@ -1410,7 +1411,7 @@ static void register_mdns_browse_del(void) .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) diff --git a/managed_components/espressif__mdns/mdns_mem_caps.c b/managed_components/espressif__mdns/mdns_mem_caps.c new file mode 100644 index 0000000..78bdbc1 --- /dev/null +++ b/managed_components/espressif__mdns/mdns_mem_caps.c @@ -0,0 +1,96 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include +#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); +} diff --git a/managed_components/espressif__mdns/mdns_networking_lwip.c b/managed_components/espressif__mdns/mdns_networking_lwip.c index 635f7e3..a686727 100644 --- a/managed_components/espressif__mdns/mdns_networking_lwip.c +++ b/managed_components/espressif__mdns/mdns_networking_lwip.c @@ -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 */ @@ -20,6 +20,7 @@ #include "esp_event.h" #include "mdns_networking.h" #include "esp_netif_net_stack.h" +#include "mdns_mem_caps.h" /* * 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; 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) { HOOK_MALLOC_FAILED; //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; for (i = 0; i < MDNS_MAX_INTERFACES; 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 (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)) { @@ -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) { 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) { 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; } @@ -338,7 +339,7 @@ static err_t _mdns_udp_pcb_write_api(struct tcpip_api_call_data *api_call_msg) msg->err = 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); msg->err = 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) { pbuf_free(packet->pb); - free(packet); + mdns_mem_free(packet); } diff --git a/managed_components/espressif__mdns/mdns_networking_socket.c b/managed_components/espressif__mdns/mdns_networking_socket.c index a99a9cc..7bcafbb 100644 --- a/managed_components/espressif__mdns/mdns_networking_socket.c +++ b/managed_components/espressif__mdns/mdns_networking_socket.c @@ -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 */ @@ -21,6 +21,7 @@ #include #include #include "esp_log.h" +#include "mdns_mem_caps.h" #if defined(CONFIG_IDF_TARGET_LINUX) #include @@ -87,9 +88,9 @@ size_t _mdns_get_packet_len(mdns_rx_packet_t *packet) void _mdns_packet_free(mdns_rx_packet_t *packet) { - free(packet->pb->payload); - free(packet->pb); - free(packet); + mdns_mem_free(packet->pb->payload); + mdns_mem_free(packet->pb); + mdns_mem_free(packet); } 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); // 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)); - struct pbuf *packet_pbuf = calloc(1, sizeof(struct pbuf)); - uint8_t *buf = malloc(len); - if (packet == NULL || packet_pbuf == NULL || buf == NULL ) { - free(buf); - free(packet_pbuf); - free(packet); + mdns_rx_packet_t *packet = (mdns_rx_packet_t *) mdns_mem_calloc(1, sizeof(mdns_rx_packet_t)); + struct pbuf *packet_pbuf = mdns_mem_calloc(1, sizeof(struct pbuf)); + uint8_t *buf = mdns_mem_malloc(len); + if (packet == NULL || packet_pbuf == NULL || buf == NULL) { + mdns_mem_free(buf); + mdns_mem_free(packet_pbuf); + mdns_mem_free(packet); HOOK_MALLOC_FAILED; ESP_LOGE(TAG, "Failed to allocate the mdns packet"); 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; if (_mdns_send_rx_action(packet) != ESP_OK) { ESP_LOGE(TAG, "_mdns_send_rx_action failed!"); - free(packet->pb->payload); - free(packet->pb); - free(packet); + mdns_mem_free(packet->pb->payload); + mdns_mem_free(packet->pb); + mdns_mem_free(packet); } } } @@ -341,7 +342,7 @@ static void mdns_networking_init(void) { if (s_run_sock_recv_task == false) { 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; - 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)); } // Bind the socket to any address @@ -419,7 +420,7 @@ static int create_socket(esp_netif_t *netif) #endif // CONFIG_LWIP_IPV6 struct ifreq ifr; 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) { ESP_LOGE(TAG, "\"%s\" Unable to bind socket to specified interface. errno=%d: %s", esp_netif_get_desc(netif), errno, strerror(errno)); goto err; diff --git a/managed_components/espressif__mdns/mem_prefix_script.py b/managed_components/espressif__mdns/mem_prefix_script.py new file mode 100644 index 0000000..b9af09d --- /dev/null +++ b/managed_components/espressif__mdns/mem_prefix_script.py @@ -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'(?') + sys.exit(1) + + process_file(sys.argv[1]) diff --git a/managed_components/espressif__mdns/private_include/mdns_mem_caps.h b/managed_components/espressif__mdns/private_include/mdns_mem_caps.h new file mode 100644 index 0000000..2d63390 --- /dev/null +++ b/managed_components/espressif__mdns/private_include/mdns_mem_caps.h @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +#include + +#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 diff --git a/managed_components/espressif__mdns/private_include/mdns_private.h b/managed_components/espressif__mdns/private_include/mdns_private.h index 381bd4b..ce4c96b 100644 --- a/managed_components/espressif__mdns/private_include/mdns_private.h +++ b/managed_components/espressif__mdns/private_include/mdns_private.h @@ -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 */ @@ -103,12 +103,6 @@ #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_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_HEAD_LEN 12 diff --git a/managed_components/espressif__mdns/tests/host_test/components/esp_netif_linux/esp_netif_linux.c b/managed_components/espressif__mdns/tests/host_test/components/esp_netif_linux/esp_netif_linux.c index 93e4386..13cf412 100644 --- a/managed_components/espressif__mdns/tests/host_test/components/esp_netif_linux/esp_netif_linux.c +++ b/managed_components/espressif__mdns/tests/host_test/components/esp_netif_linux/esp_netif_linux.c @@ -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) { char addr[20]; 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) { ESP_LOGD(TAG, "AF_INET4: %s: %s\n", tmp->ifa_name, addr); 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) { char addr[64]; 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) { ESP_LOGD(TAG, "AF_INET6: %s: %s\n", tmp->ifa_name, addr); memcpy(if_ip6->addr, &pAddr->sin6_addr, 4 * 4); diff --git a/managed_components/espressif__mdns/tests/host_test/main/main.c b/managed_components/espressif__mdns/tests/host_test/main/main.c index 581231f..a02b8e1 100644 --- a/managed_components/espressif__mdns/tests/host_test/main/main.c +++ b/managed_components/espressif__mdns/tests/host_test/main/main.c @@ -111,7 +111,7 @@ static void mdns_test_app(esp_netif_t *interface) .func = exit_console, .argtable = NULL }; - ESP_ERROR_CHECK( esp_console_cmd_register(&cmd_exit) ); + ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_exit)); mdns_console_register(); ESP_ERROR_CHECK(esp_console_start_repl(repl)); xEventGroupWaitBits(s_exit_signal, 1, pdTRUE, pdFALSE, portMAX_DELAY); diff --git a/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.c b/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.c index 14b9134..7f14dc6 100644 --- a/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.c +++ b/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.c @@ -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 */ @@ -59,7 +59,7 @@ uint32_t xTaskGetTickCount(void) } /// Queue mock -QueueHandle_t xQueueCreate( uint32_t uxQueueLength, uint32_t uxItemSize ) +QueueHandle_t xQueueCreate(uint32_t uxQueueLength, uint32_t uxItemSize) { g_size = 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); } @@ -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) { 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); +} diff --git a/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.h b/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.h index e8e84ce..68a3461 100644 --- a/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.h +++ b/managed_components/espressif__mdns/tests/test_afl_fuzz_host/esp32_mock.h @@ -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 */ @@ -38,6 +38,10 @@ #define ESP_ERR_INVALID_RESPONSE 0x108 #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 pdFALSE false #define pdPASS ( pdTRUE ) @@ -62,6 +66,7 @@ #define vSemaphoreDelete(s) free(s) #define queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U #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 esp_random() (rand()%UINT32_MAX) @@ -79,7 +84,8 @@ typedef void *QueueHandle_t; typedef void *TaskHandle_t; typedef int BaseType_t; typedef uint32_t TickType_t; - +typedef void *StackType_t; +typedef void *StaticTask_t; struct udp_pcb { uint8_t dummy; @@ -111,10 +117,10 @@ uint32_t xTaskGetTickCount(void); typedef void (*esp_timer_cb_t)(void *arg); // Queue mock -QueueHandle_t xQueueCreate( uint32_t uxQueueLength, - uint32_t uxItemSize ); +QueueHandle_t xQueueCreate(uint32_t uxQueueLength, + 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); @@ -131,6 +137,6 @@ esp_err_t esp_event_handler_unregister(const char *event_base, int32_t event_id, TaskHandle_t xTaskGetCurrentTaskHandle(void); 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_ diff --git a/managed_components/espressif__mdns/tests/test_afl_fuzz_host/test.c b/managed_components/espressif__mdns/tests/test_afl_fuzz_host/test.c index 5556c56..afbf023 100644 --- a/managed_components/espressif__mdns/tests/test_afl_fuzz_host/test.c +++ b/managed_components/espressif__mdns/tests/test_afl_fuzz_host/test.c @@ -243,7 +243,7 @@ int main(int argc, char **argv) // // Note: parameter1 is a file (mangled packet) which caused the crash file = fopen(argv[1], "r"); - assert(file >= 0 ); + assert(file >= 0); len = fread(buf, 1, 1460, file); fclose(file); } diff --git a/managed_components/espressif__mdns/tests/test_apps/main/main.c b/managed_components/espressif__mdns/tests/test_apps/main/main.c index e67014c..1ff0cc1 100644 --- a/managed_components/espressif__mdns/tests/test_apps/main/main.c +++ b/managed_components/espressif__mdns/tests/test_apps/main/main.c @@ -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 */ @@ -55,17 +55,17 @@ static void initialise_mdns(void) char *hostname = generate_hostname(); //initialize mDNS - ESP_ERROR_CHECK( mdns_init() ); + ESP_ERROR_CHECK(mdns_init()); //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); //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 - 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 char *delegated_hostname; @@ -80,12 +80,12 @@ static void initialise_mdns(void) addr6.addr.type = ESP_IPADDR_TYPE_V6; addr4.next = &addr6; addr6.next = NULL; - 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_delegate_hostname_add(delegated_hostname, &addr4)); + ESP_ERROR_CHECK(mdns_service_add_for_host("test0", "_http", "_tcp", delegated_hostname, 1234, NULL, 0)); free(delegated_hostname); #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); } diff --git a/managed_components/espressif__mdns/tests/unit_test/main/test_mdns.c b/managed_components/espressif__mdns/tests/unit_test/main/test_mdns.c index ff024e2..6b9bfbe 100644 --- a/managed_components/espressif__mdns/tests/unit_test/main/test_mdns.c +++ b/managed_components/espressif__mdns/tests/unit_test/main/test_mdns.c @@ -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 */ @@ -45,17 +45,17 @@ static void yield_to_all_priorities(void) TEST(mdns, api_fails_with_invalid_state) { - 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_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_init()); + 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_service_add(MDNS_INSTANCE, MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_SERVICE_PORT, NULL, 0)); } TEST(mdns, init_deinit) { test_case_uses_tcpip(); 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 mdns_free(); esp_event_loop_delete_default(); @@ -76,33 +76,33 @@ TEST(mdns, api_fails_with_expected_err) test_case_uses_tcpip(); TEST_ASSERT_EQUAL(ESP_OK, esp_event_loop_create_default()); - TEST_ASSERT_EQUAL(ESP_OK, mdns_init() ); - 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_init()); + TEST_ASSERT_EQUAL(ESP_OK, mdns_hostname_set(MDNS_HOSTNAME)); + 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 - 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_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_TRUE(mdns_hostname_exists(MDNS_DELEGATE_HOSTNAME)); + 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_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, - 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_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_remove(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, "key1") ); - TEST_ASSERT_EQUAL(ESP_OK, mdns_service_port_set(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, 8080) ); + 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_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_remove(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, "key1")); + 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 - 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 - 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_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)); 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_EQUAL(ESP_OK, mdns_service_remove_all() ); + TEST_ASSERT_FALSE(mdns_service_exists(MDNS_SERVICE_NAME, MDNS_SERVICE_PROTO, MDNS_DELEGATE_HOSTNAME)); + TEST_ASSERT_EQUAL(ESP_OK, mdns_service_remove_all()); 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(); esp_event_loop_delete_default(); @@ -116,7 +116,7 @@ TEST(mdns, query_api_fails_with_expected_err) test_case_uses_tcpip(); 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 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)); @@ -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_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); - 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); - 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); - 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); - 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_free(); @@ -149,7 +149,7 @@ TEST(mdns, add_remove_service) mdns_result_t *results = NULL; test_case_uses_tcpip(); 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_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 @@ -170,7 +170,7 @@ TEST(mdns, add_remove_service) mdns_query_results_free(results); // 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 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); @@ -220,9 +220,9 @@ TEST(mdns, add_remove_deleg_service) mdns_result_t *results = NULL; test_case_uses_tcpip(); 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_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)); 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); // 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 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); diff --git a/managed_components/espressif__usb_host_msc/CHECKSUMS.json b/managed_components/espressif__usb_host_msc/CHECKSUMS.json new file mode 100644 index 0000000..204d655 --- /dev/null +++ b/managed_components/espressif__usb_host_msc/CHECKSUMS.json @@ -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"}]} \ No newline at end of file diff --git a/sdkconfig b/sdkconfig index 04d56ff..9821488 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1,6 +1,6 @@ # # 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_REGIONS_MAX_NUM=8 @@ -64,6 +64,7 @@ CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y CONFIG_SOC_PM_SUPPORTED=y +CONFIG_SOC_SIMD_INSTRUCTION_SUPPORTED=y CONFIG_SOC_XTAL_SUPPORT_40M=y CONFIG_SOC_APPCPU_HAS_CLOCK_GATING_BUG=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_WATCHPOINTS_NUM=2 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_KEY_PARAM_MD_IV_LENGTH=16 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_HOLD_SUPPORTED=y CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_LP_IO_CLOCK_IS_INDEPENDENT=y CONFIG_SOC_SDM_GROUPS=y CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 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_APB=y 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_NUM=15 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" 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_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_LL_CFG_FEAT_LE_ENCRYPTION=y CONFIG_BT_NIMBLE_SM_LVL=0 +CONFIG_BT_NIMBLE_SM_SC_ONLY=0 # CONFIG_BT_NIMBLE_DEBUG is not set # CONFIG_BT_NIMBLE_DYNAMIC_SERVICE is not set 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_SLAVE_LATENCY=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 # # BLE Services # # 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 # 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_HOST_ALLOW_CONNECT_WITH_SCAN 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 @@ -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_CTS_PIN=23 # end of Host-controller Transport + +CONFIG_BT_NIMBLE_EATT_CHAN_NUM=0 +# CONFIG_BT_NIMBLE_SUBRATE is not set # end of NimBLE Options # @@ -828,20 +853,22 @@ CONFIG_BT_CTRL_CHAN_ASS_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_CHAN_MAP_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_CHECK_CONNECT_IND_ACCESS_ADDRESS is not set # end of Controller Options # # Common Options # CONFIG_BT_ALARM_MAX_NUM=50 +# CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED is not set # end of Common Options # 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 # # CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK is not set # # Legacy ADC Calibration Configuration @@ -882,42 +910,49 @@ CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y # Legacy MCPWM Driver Configurations # # CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_MCPWM_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy MCPWM Driver Configurations # # Legacy Timer Group Driver Configurations # # CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_GPTIMER_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy Timer Group Driver Configurations # # Legacy RMT Driver Configurations # # CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_RMT_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy RMT Driver Configurations # # Legacy I2S Driver Configurations # # CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_I2S_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy I2S Driver Configurations # # Legacy PCNT Driver Configurations # # CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_PCNT_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy PCNT Driver Configurations # # Legacy SDM Driver Configurations # # CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# CONFIG_SDM_SKIP_LEGACY_CONFLICT_CHECK is not set # end of Legacy SDM Driver Configurations # # Legacy Temperature Sensor Driver Configurations # # 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 Driver Configurations @@ -1097,6 +1132,13 @@ CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y CONFIG_ESP_GDBSTUB_MAX_TASKS=32 # 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 # @@ -1681,7 +1723,6 @@ CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 CONFIG_HAL_WDT_USE_ROM_IMPL=y CONFIG_HAL_SPI_MASTER_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) # @@ -2125,6 +2166,7 @@ CONFIG_STDATOMIC_S32C1I_SPIRAM_WORKAROUND=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_PATCH_VERSION=y # end of Protocomm # @@ -2417,6 +2459,17 @@ CONFIG_MDNS_TASK_STACK_SIZE=4096 CONFIG_MDNS_TASK_AFFINITY_CPU0=y # CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set 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_TIMER_PERIOD_MS=100 # 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_BROWNOUT_DET=y CONFIG_ESP32S3_BROWNOUT_DET=y -CONFIG_ESP32S3_BROWNOUT_DET=y CONFIG_BROWNOUT_DET_LVL_SEL_7=y CONFIG_ESP32S3_BROWNOUT_DET_LVL_SEL_7=y # 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_TX_BA_WIN=6 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_AMSDU_TX_ENABLED is not set CONFIG_ESP32_WIFI_NVS_ENABLED=y From 100db358f54e92dc9f782fe729a6b353b286ad5a Mon Sep 17 00:00:00 2001 From: Joe Kearney Date: Thu, 5 Jun 2025 20:15:20 -0500 Subject: [PATCH 2/3] Updated SystemK --- components/SystemK | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/SystemK b/components/SystemK index ba23026..257f0b7 160000 --- a/components/SystemK +++ b/components/SystemK @@ -1 +1 @@ -Subproject commit ba23026d13618bdcbf28717c64059f8229105aab +Subproject commit 257f0b7cde3780deea4992e7448704475f13c23c From 25a46b54e0a871d44aac631b62a76f585dfc4f2b Mon Sep 17 00:00:00 2001 From: Joe Kearney Date: Thu, 5 Jun 2025 20:19:39 -0500 Subject: [PATCH 3/3] Updated SystemK --- components/SystemK | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/SystemK b/components/SystemK index 6382526..257f0b7 160000 --- a/components/SystemK +++ b/components/SystemK @@ -1 +1 @@ -Subproject commit 63825263911578804866ec4b34310248b8074f17 +Subproject commit 257f0b7cde3780deea4992e7448704475f13c23c