Skip to content

Commit d6dd9b6

Browse files
committed
Add Matter over Thread
wip
1 parent 06f2183 commit d6dd9b6

File tree

4 files changed

+131
-135
lines changed

4 files changed

+131
-135
lines changed

CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,3 @@ add_definitions(-DGIT_COMMIT_HASH="${GIT_COMMIT_HASH}")
88

99
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
1010
project(xiao_esp32c6_wifi_sensor)
11-
12-
idf_build_set_property(C_COMPILE_OPTIONS "-Os" APPEND)

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,8 @@ Follow these steps to set up your Smart IoT Sensor:
334334
3. **Build and Flash**
335335

336336
```bash
337-
docker run --rm -t -v $PWD:/opt/esp/project \
337+
docker run --rm -t \
338+
-v $PWD:/opt/esp/project \
338339
-w /opt/esp/project \
339340
esp_idf_xiao_esp32c6_sensor:latest idf.py build
340341
```

ci/docker/Dockerfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ RUN set -x \
3737
&& ./install.sh \
3838
&& : # last line
3939

40+
RUN set -x \
41+
&& git config --global --add safe.directory /opt/esp/project \
42+
&& git config --global --add safe.directory /opt/esp/idf/components/openthread/openthread \
43+
&& : # last line
44+
4045
COPY entrypoint.sh /opt/esp/entrypoint.sh
4146
ENTRYPOINT [ "/opt/esp/entrypoint.sh" ]
4247
CMD [ "/bin/bash" ]

main/CMakeLists.txt

Lines changed: 124 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -339,129 +339,110 @@ if(CONFIG_SENSOR_CONNECTION_MATTER_OVER_THREAD)
339339
"${MATTER_SDK_PATH}/src/tracing/esp32_trace/include")
340340
endif()
341341

342-
if(CONFIG_CHIP_ENABLE_EXTERNAL_PLATFORM)
343-
# check the source file dir if external platform is enable
344-
if((EXISTS ${CONFIG_CHIP_EXTERNAL_PLATFORM_DIR}/external_platform.cmake))
345-
include(${CONFIG_CHIP_EXTERNAL_PLATFORM_DIR}/external_platform.cmake)
346-
list(APPEND SRC_DIRS_LIST ${EXPLANT_SRC_DIRS_LIST})
347-
list(APPEND INCLUDE_DIRS_LIST ${EXPLANT_INCLUDE_DIRS_LIST})
348-
list(APPEND EXCLUDE_SRCS_LIST ${EXPLANT_EXCLUDE_SRCS_LIST})
349-
else()
350-
message(
351-
FATAL_ERROR
352-
"CONFIG_CHIP_ENABLE_EXTERNAL_PLATFORM is set, but CONFIG_CHIP_EXTERNAL_PLATFORM_DIR is not set correctly!"
353-
)
354-
endif()
355-
else()
356-
list(APPEND SRC_DIRS_LIST "${MATTER_SDK_PATH}/src/platform/ESP32"
357-
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook")
342+
list(APPEND SRC_DIRS_LIST "${MATTER_SDK_PATH}/src/platform/ESP32"
343+
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook")
358344

345+
list(
346+
APPEND
347+
INCLUDE_DIRS_LIST
348+
"${MATTER_SDK_PATH}/src/platform/ESP32"
349+
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid"
350+
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble"
351+
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook")
352+
353+
if(CONFIG_USE_MINIMAL_MDNS)
354+
list(APPEND EXCLUDE_SRCS_LIST
355+
"${MATTER_SDK_PATH}/src/platform/ESP32/DnssdImpl.cpp")
356+
endif()
357+
358+
if((CONFIG_USE_MINIMAL_MDNS) OR ((NOT CONFIG_ENABLE_WIFI_STATION)
359+
AND (NOT CONFIG_ENABLE_WIFI_AP)))
360+
list(APPEND EXCLUDE_SRCS_LIST
361+
"${MATTER_SDK_PATH}/src/platform/ESP32/WiFiDnssdImpl.cpp")
362+
endif()
363+
364+
if((NOT CONFIG_ENABLE_WIFI_STATION) AND (NOT CONFIG_ENABLE_WIFI_AP))
359365
list(
360366
APPEND
361-
INCLUDE_DIRS_LIST
362-
"${MATTER_SDK_PATH}/src/platform/ESP32"
363-
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid"
364-
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble"
365-
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook")
367+
EXCLUDE_SRCS_LIST
368+
"${MATTER_SDK_PATH}/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp"
369+
"${MATTER_SDK_PATH}/src/platform/ESP32/NetworkCommissioningDriver.cpp"
370+
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteHook.c"
371+
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteTable.c")
372+
endif()
366373

367-
if(CONFIG_USE_MINIMAL_MDNS)
368-
list(APPEND EXCLUDE_SRCS_LIST
369-
"${MATTER_SDK_PATH}/src/platform/ESP32/DnssdImpl.cpp")
370-
endif()
374+
if(NOT CONFIG_ENABLE_ROUTE_HOOK)
375+
list(APPEND EXCLUDE_SRCS_LIST
376+
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteHook.c"
377+
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteTable.c")
378+
endif()
371379

372-
if((CONFIG_USE_MINIMAL_MDNS) OR ((NOT CONFIG_ENABLE_WIFI_STATION)
373-
AND (NOT CONFIG_ENABLE_WIFI_AP)))
380+
if((CONFIG_BT_ENABLED) AND (CONFIG_ENABLE_CHIPOBLE))
381+
if(CONFIG_BT_NIMBLE_ENABLED)
382+
list(APPEND SRC_DIRS_LIST "${MATTER_SDK_PATH}/src/platform/ESP32/nimble")
374383
list(APPEND EXCLUDE_SRCS_LIST
375-
"${MATTER_SDK_PATH}/src/platform/ESP32/WiFiDnssdImpl.cpp")
376-
endif()
377-
378-
if((NOT CONFIG_ENABLE_WIFI_STATION) AND (NOT CONFIG_ENABLE_WIFI_AP))
379-
list(
380-
APPEND
381-
EXCLUDE_SRCS_LIST
382-
"${MATTER_SDK_PATH}/src/platform/ESP32/ConnectivityManagerImpl_WiFi.cpp"
383-
"${MATTER_SDK_PATH}/src/platform/ESP32/NetworkCommissioningDriver.cpp"
384-
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteHook.c"
385-
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteTable.c")
386-
endif()
387-
388-
if(NOT CONFIG_ENABLE_ROUTE_HOOK)
384+
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid/BLEManagerImpl.cpp")
385+
if(NOT CONFIG_ENABLE_ESP32_BLE_CONTROLLER)
386+
list(
387+
APPEND
388+
EXCLUDE_SRCS_LIST
389+
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid/ChipDeviceScanner.cpp"
390+
)
391+
endif()
392+
else()
393+
list(APPEND SRC_DIRS_LIST
394+
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid")
389395
list(APPEND EXCLUDE_SRCS_LIST
390-
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteHook.c"
391-
"${MATTER_SDK_PATH}/src/platform/ESP32/route_hook/ESP32RouteTable.c")
392-
endif()
393-
394-
if((CONFIG_BT_ENABLED) AND (CONFIG_ENABLE_CHIPOBLE))
395-
if(CONFIG_BT_NIMBLE_ENABLED)
396-
list(APPEND SRC_DIRS_LIST
397-
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble")
396+
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/BLEManagerImpl.cpp")
397+
if(NOT CONFIG_ENABLE_ESP32_BLE_CONTROLLER)
398398
list(
399-
APPEND EXCLUDE_SRCS_LIST
400-
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid/BLEManagerImpl.cpp")
401-
if(NOT CONFIG_ENABLE_ESP32_BLE_CONTROLLER)
402-
list(
403-
APPEND
404-
EXCLUDE_SRCS_LIST
405-
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid/ChipDeviceScanner.cpp"
406-
)
407-
endif()
408-
else()
409-
list(APPEND SRC_DIRS_LIST
410-
"${MATTER_SDK_PATH}/src/platform/ESP32/bluedroid")
411-
list(APPEND EXCLUDE_SRCS_LIST
412-
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/BLEManagerImpl.cpp")
413-
if(NOT CONFIG_ENABLE_ESP32_BLE_CONTROLLER)
414-
list(
415-
APPEND
416-
EXCLUDE_SRCS_LIST
417-
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/ChipDeviceScanner.cpp"
418-
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/misc.c"
419-
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/peer.c")
420-
endif()
399+
APPEND
400+
EXCLUDE_SRCS_LIST
401+
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/ChipDeviceScanner.cpp"
402+
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/misc.c"
403+
"${MATTER_SDK_PATH}/src/platform/ESP32/nimble/peer.c")
421404
endif()
422405
endif()
406+
endif()
423407

424-
if(NOT CONFIG_ENABLE_ETHERNET_TELEMETRY)
425-
list(
426-
APPEND
427-
EXCLUDE_SRCS_LIST
428-
"${MATTER_SDK_PATH}/src/platform/ESP32/ConnectivityManagerImpl_Ethernet.cpp"
429-
"${MATTER_SDK_PATH}/src/platform/ESP32/NetworkCommissioningDriver_Ethernet.cpp"
430-
)
431-
endif()
408+
if(NOT CONFIG_ENABLE_ETHERNET_TELEMETRY)
409+
list(
410+
APPEND
411+
EXCLUDE_SRCS_LIST
412+
"${MATTER_SDK_PATH}/src/platform/ESP32/ConnectivityManagerImpl_Ethernet.cpp"
413+
"${MATTER_SDK_PATH}/src/platform/ESP32/NetworkCommissioningDriver_Ethernet.cpp"
414+
)
415+
endif()
432416

433-
if((NOT CONFIG_OPENTHREAD_ENABLED) OR (NOT CONFIG_ENABLE_MATTER_OVER_THREAD
434-
))
435-
list(APPEND EXCLUDE_SRCS_LIST
436-
"${MATTER_SDK_PATH}/src/platform/ESP32/OpenthreadLauncher.cpp"
437-
"${MATTER_SDK_PATH}/src/platform/ESP32/ThreadStackManagerImpl.cpp")
438-
endif()
417+
if((NOT CONFIG_OPENTHREAD_ENABLED) OR (NOT CONFIG_ENABLE_MATTER_OVER_THREAD))
418+
list(APPEND EXCLUDE_SRCS_LIST
419+
"${MATTER_SDK_PATH}/src/platform/ESP32/OpenthreadLauncher.cpp"
420+
"${MATTER_SDK_PATH}/src/platform/ESP32/ThreadStackManagerImpl.cpp")
421+
endif()
439422

440-
if(NOT CONFIG_ENABLE_OTA_REQUESTOR)
441-
list(APPEND EXCLUDE_SRCS_LIST
442-
"${MATTER_SDK_PATH}/src/platform/ESP32/OTAImageProcessorImpl.cpp")
443-
endif()
423+
if(NOT CONFIG_ENABLE_OTA_REQUESTOR)
424+
list(APPEND EXCLUDE_SRCS_LIST
425+
"${MATTER_SDK_PATH}/src/platform/ESP32/OTAImageProcessorImpl.cpp")
426+
endif()
444427

445-
if(NOT CONFIG_ENABLE_ESP32_FACTORY_DATA_PROVIDER)
446-
list(APPEND EXCLUDE_SRCS_LIST
447-
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32FactoryDataProvider.cpp")
448-
endif()
428+
if(NOT CONFIG_ENABLE_ESP32_FACTORY_DATA_PROVIDER)
429+
list(APPEND EXCLUDE_SRCS_LIST
430+
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32FactoryDataProvider.cpp")
431+
endif()
449432

450-
if(NOT CONFIG_ENABLE_ESP32_DEVICE_INFO_PROVIDER)
451-
list(APPEND EXCLUDE_SRCS_LIST
452-
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32DeviceInfoProvider.cpp")
453-
endif()
433+
if(NOT CONFIG_ENABLE_ESP32_DEVICE_INFO_PROVIDER)
434+
list(APPEND EXCLUDE_SRCS_LIST
435+
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32DeviceInfoProvider.cpp")
436+
endif()
454437

455-
if(NOT CONFIG_SEC_CERT_DAC_PROVIDER)
456-
list(
457-
APPEND EXCLUDE_SRCS_LIST
458-
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32SecureCertDACProvider.cpp")
459-
endif()
438+
if(NOT CONFIG_SEC_CERT_DAC_PROVIDER)
439+
list(APPEND EXCLUDE_SRCS_LIST
440+
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32SecureCertDACProvider.cpp")
441+
endif()
460442

461-
if(NOT CONFIG_USE_ESP32_ECDSA_PERIPHERAL)
462-
list(APPEND EXCLUDE_SRCS_LIST
463-
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32CHIPCryptoPAL.cpp")
464-
endif()
443+
if(NOT CONFIG_USE_ESP32_ECDSA_PERIPHERAL)
444+
list(APPEND EXCLUDE_SRCS_LIST
445+
"${MATTER_SDK_PATH}/src/platform/ESP32/ESP32CHIPCryptoPAL.cpp")
465446
endif()
466447

467448
if(NOT CONFIG_ENABLE_CHIPOBLE)
@@ -478,29 +459,37 @@ if(CONFIG_SENSOR_CONNECTION_MATTER_OVER_THREAD)
478459
if(CONFIG_ENABLE_ICD_SERVER)
479460
list(APPEND SRC_DIRS_LIST "${MATTER_SDK_PATH}/src/app/icd/server/")
480461
endif()
462+
463+
# list(APPEND INCLUDE_DIRS_LIST "${ESP_MATTER_SDK_PATH}/examples/common"
464+
# "${MATTER_SDK_PATH}/config/esp32/components"
465+
# "${ESP_MATTER_SDK_PATH}/components")
466+
467+
set(EXTRA_COMPONENT_DIRS
468+
"${ESP_MATTER_SDK_PATH}/examples/common"
469+
"${MATTER_SDK_PATH}/config/esp32/components"
470+
"${ESP_MATTER_SDK_PATH}/components" ${extra_components_dirs_append})
471+
472+
endif()
473+
474+
if(CONFIG_SENSOR_SGP41)
475+
list(APPEND INCLUDE_DIRS_LIST "../vendor/embedded-i2c-sgp41"
476+
"../vendor/gas-index-algorithm/sensirion_gas_index_algorithm")
477+
478+
list(APPEND SRC_DIRS_LIST "../vendor/embedded-i2c-sgp41"
479+
"../vendor/gas-index-algorithm/sensirion_gas_index_algorithm")
480+
endif()
481+
482+
if(CONFIG_SENSOR_BME280 OR CONFIG_SENSOR_BME680)
483+
list(APPEND INCLUDE_DIRS_LIST "../vendor/boschsensortec/BME280_SensorAPI"
484+
"../vendor/boschsensortec/BME68x_SensorAPI")
485+
486+
list(APPEND SRC_DIRS_LIST "../vendor/boschsensortec/BME280_SensorAPI"
487+
"../vendor/boschsensortec/BME68x_SensorAPI")
481488
endif()
482489

483-
list(APPEND INCLUDE_DIRS_LIST "${ESP_MATTER_SDK_PATH}/examples/common"
484-
"${MATTER_SDK_PATH}/config/esp32/components"
485-
"${ESP_MATTER_SDK_PATH}/components")
486-
487-
list(
488-
APPEND
489-
INCLUDE_DIRS_LIST
490-
"."
491-
"../vendor/embedded-i2c-sgp41"
492-
"../vendor/gas-index-algorithm/sensirion_gas_index_algorithm"
493-
"../vendor/boschsensortec/BME280_SensorAPI"
494-
"../vendor/boschsensortec/BME68x_SensorAPI")
495-
496-
list(
497-
APPEND
498-
SRC_DIRS_LIST
499-
"."
500-
"../vendor/embedded-i2c-sgp41"
501-
"../vendor/gas-index-algorithm/sensirion_gas_index_algorithm"
502-
"../vendor/boschsensortec/BME280_SensorAPI"
503-
"../vendor/boschsensortec/BME68x_SensorAPI")
490+
list(APPEND INCLUDE_DIRS_LIST ".")
491+
492+
list(APPEND SRC_DIRS_LIST ".")
504493

505494
idf_component_register(
506495
INCLUDE_DIRS
@@ -514,8 +503,6 @@ idf_component_register(
514503
REQUIRES
515504
${REQUIRE_COMPONENTS})
516505

517-
set_property(TARGET ${COMPONENT_LIB} PROPERTY CXX_STANDARD 17)
518-
519506
if(CONFIG_SENSOR_CONNECTION_MATTER_OVER_THREAD)
520507
target_compile_options(
521508
${COMPONENT_LIB}
@@ -538,6 +525,14 @@ if(CONFIG_SENSOR_CONNECTION_MATTER_OVER_THREAD)
538525
idf_build_set_property(COMPILE_OPTIONS "-Wno-error=array-bounds" APPEND)
539526
idf_build_set_property(COMPILE_OPTIONS "-Wno-write-strings" APPEND)
540527

528+
# For Xtensa chips, uint32_t was defined as 'unsigned' before v5.0, and after
529+
# IDF v5.0 it is defined as 'unsigned long', same as RISC-V. add this compile
530+
# option to avoid format errors.
531+
# https://github.com/espressif/esp-idf/issues/6906#issuecomment-1207373706
532+
if(CONFIG_IDF_TARGET_ARCH_XTENSA AND (${IDF_VERSION_MAJOR} LESS 5))
533+
idf_build_set_property(COMPILE_OPTIONS "-Wno-format" APPEND)
534+
endif()
535+
541536
# Time sync client feature depends on read client, disable it when read client
542537
# is disabled.
543538
if(CONFIG_DISABLE_READ_CLIENT)
@@ -583,7 +578,4 @@ if(CONFIG_SENSOR_CONNECTION_MATTER_OVER_THREAD)
583578
${COMPONENT_LIB} INTERFACE -Wl,--start-group ${chip_libraries}
584579
-Wl,--end-group)
585580

586-
idf_build_set_property(
587-
CXX_COMPILE_OPTIONS
588-
"-std=gnu++17;-Os;-DCHIP_HAVE_CONFIG_H;-Wno-overloaded-virtual" APPEND)
589581
endif()

0 commit comments

Comments
 (0)