Skip to content

Mbed CHIP device layer and build system files

Filip Jagodziński edited this page Feb 3, 2021 · 1 revision

This is a rough estimate of what we need, to have a functional CHIP library that works with an Mbed application.

# (useful) CI setup.
./.github/workflows/examples-mbed.yaml

# (useful) vscode tasks for easier develoment.
./.vscode/tasks.json

# (?) GN arg overrides.
./build_overrides/mbed.gni

# (mandatory) Config files necessary to build the CHIP lib
# with the Mbed toolchain. This is built with GN & ninja.
./config/mbed/
# (mandatory) The GN project root for Mbed builds.
./config/mbed/chip-gn/.gn
./config/mbed/chip-gn/args.gni
./config/mbed/chip-gn/BUILD.gn
./config/mbed/chip-gn/toolchain
./config/mbed/chip-gn/toolchain/BUILD.gn

# (?) GN arg overrides.
./examples/build_overrides/mbed.gni

# (?) GN args for the examples.
./examples/platform/mbed/args.gni

# (mandatory) Shell example -- Mbed sources with CMake build
# files and JSON configs.
./examples/shell/mbed/

# (mandatory) Docker env for Mbed.
./integrations/docker/images/chip-build-mbed/Dockerfile

# (useful) Utility script for building examples. This seems
# to be a GN convention.
./scripts/examples/mbed_example.sh

# (mandatory) Generic PlatformManager implementation for Mbed.
./src/include/platform/internal/GenericPlatformManagerImpl_Mbed.cpp
./src/include/platform/internal/GenericPlatformManagerImpl_Mbed.h

# (mandatory) CHIP Device Layer adaptation for Mbed platform.
./src/platform/BUILD.gn
./src/platform/device.gni
./src/platform/mbed/args.gni
# (mandatory) Platform-specific configuration overrides.
./src/platform/mbed/BlePlatformConfig.h
./src/platform/mbed/CHIPDevicePlatformConfig.h
./src/platform/mbed/CHIPDevicePlatformEvent.h
./src/platform/mbed/CHIPPlatformConfig.h
./src/platform/mbed/InetPlatformConfig.h
./src/platform/mbed/SystemPlatformConfig.h
# (mandatory) Platform-specific implementations.
./src/platform/mbed/BLEManagerImpl.cpp
./src/platform/mbed/BLEManagerImpl.h
./src/platform/mbed/ConfigurationManagerImpl.cpp
./src/platform/mbed/ConfigurationManagerImpl.h
./src/platform/mbed/ConnectivityManagerImpl.cpp
./src/platform/mbed/ConnectivityManagerImpl.h
./src/platform/mbed/DeviceNetworkProvisioningDelegateImpl.cpp
./src/platform/mbed/DeviceNetworkProvisioningDelegateImpl.h
./src/platform/mbed/Logging.cpp
./src/platform/mbed/mbedConfig.cpp
./src/platform/mbed/mbedConfig.h
./src/platform/mbed/PlatformManagerImpl.cpp
./src/platform/mbed/PlatformManagerImpl.h
./src/platform/mbed/SystemTimeSupport.cpp

# The following files need to be examined if needed for Mbed port:
# (?) BSD socket API extension. Zephyr needs this.
./src/inet/ZephyrSocket.h
# (?) IO Stream implementation. Zephyr needs this.
./src/lib/shell/streamer_zephyr.cpp
# (?) LWIP compile-time config for various platforms that build
# their code with GN. FreeRTOS concurrency.
./src/lwip/
# (?) Additional platform components. 
./src/platform/mbed/GroupKeyStoreImpl.cpp
./src/platform/mbed/GroupKeyStoreImpl.h
./src/platform/mbed/SoftwareUpdateManagerImpl.cpp