Skip to content

Commit 23817fd

Browse files
jamesharrowhastyrestyled-commitsandreilitvinbzbarsky-apple
authored
[EnergyGatewayApp] Add build examples for host and ESP32 (project-chip#38502)
* Basic energy-gateway-app framework for Linux and ESP32 - linking issue due to device type problems bringing in expected clusters. * Initial attempt to add new clusters based of PR 10815 - ZAP is raising error 'Unable to find cluster extension by component' * Added missing xml files to zcl.json. Added regen of global-structs.xml and global-enums.xml (NOTE: ApparentPowerThresholds SHOULD be power_mva! but Zap does not recognise this yet. * Temporary change of "money" to int64s whilst waiting for a ZAP change. * Added Meter Identification cluster XML * Updated tests.yaml and rules.matterlint to include new clusters * .matter file updates caused by new enums * Updated files after zap_regen_all * New files after zap_regen_all * Add support for money and new electrical data types * Added new attributes for structs to attributeAccessInterfaceAttributes. Removed legacy measurement-and-sensing.xml in favour of new global-structs/global-enums.xml * Updated .matter files after subsequent regen_all * code autogen after moving to global structs/enums and updating structs in attributes- regen_all * Backed out change to support SetVidVerificationStatement etc * Enabled Commodity Price in data_model/contoller-clusters.zap. Added stub basic-type Currency. Disabled Ember in config-data.yaml. Linux now builds but aborts at start-up. * Update chip-types.xml with new energy types and money * Changed to use correct global struct CurrencyStruct * Revert changes to generated attribute-type.h file * regen_all after merging in Hasty's new types PR: project-chip#37980 * Further zap_regen_all updates after picking up fix from Hasty#s project-chip#37980 * Revert reversion of generated attribute-type.h * Fix build issue due to moving MeasurementAccuracyStruct to global-structs. * Restyled by whitespace * Restyled by clang-format * Restyled by gn * Update attribute-type.h * Fix EEM/EPM clusters which use new global MeasurementAccuracyRangeStruct and MeasurementTypeEnum * Restyled by clang-format * Generated XML files from Alchemy for new clusters and refreshed older EM clusters with latest Alchemy. * Added missing zap_cluster_list.json * Added missing CurrencyStruct * zap_regen_all * Fix-up EEM/EPM and apps that use them because the Structs and Enums have moved to Globals:: namespace * Fix CI issue - Re-did bootstrap to pick up new ZAP, and regen_all. Updated ChipStructs.java which was different in CI * Reverted back to using existing measurement-and-sensing-.xml to avoid API backwards compatibility change. * Regen_all to revert all .matter files back to remove global MeasurementType enum * Another regen_all * Manually added missing description to the clusters to hopefully fix the IDL parsing errors. * Regen_all to include description tag from XML. * Updated ChipStructs.java after previous regen_all * Revert bad merge * Reverted removal of measurement and sensing xml * regen_all * Moved MatterCommodityPricePluginServerInitCallback() to util.cpp to resolve linker error * Reverted ElectricalPowermeasurementDelegate use of global struct * Added basic test steps for TC_SEPR_2.1/2/3.py * Bump zap to 2025.3.25 * Partial regen-all to update .matter files (zap-regen-all still crashes!) * Support non-nightly versions * Another update for logic * Fix bad update * Update one more extra extension * Reverted some of the xml files that were updated by alchemy and not really needed in this pr * Reverted EEM/EPM xml files * Zap regen all finally fixed with increased timeout * Merge of .github/workflows/tests.yaml had screwed up * Fixed Linux crash on startup by adding an empty cmd handler function for now and calling ChipLinuxAppInit() * Revert "Merge remote-tracking branch 'andrei/zap_update' into energy-gateway-app" This reverts commit 0cc1dea, reversing changes made to 2fd6786. * Syncd back to Master after reverting Andrei's zap changes * Initial stab at CommodityPriceDelegate.cpp/.h * moved files * Basic delegate added with ability and setting of Descriptor tags for this endpoint * Added CommodityPriceTestEventTriggerHandler.h * Added hooks to enable/disable chip_enable_commodity_price_trigger to Linux build * Used TestEvent Trigger to set a Price into CurrentPrice. Needs more work but is basically working. * Per review comment - changed copyright to only 2025 * Updated more copyright to 2025 * Update copyright commodity-price-server.cpp * Merged Hasty's PR 38226 into TC_SEPR_2_1.py * Currently returns a valid empty list for PriceForecast. * Updated test case to not complain if list is empty and to check that the description and components must not be included. * New proposed ElectricalGridConditions (EGC) * Fixed issue in spec which caused 2nd event not to generate correctly * Manually added new cluster to tests.yaml, rules.matterlint, zcl.json since Alchemy didn't work for some reason * Ran zap_regen_all * Updated XML based on Rene's PR review comments. * Initial attempt to add a Forecast with list and sub-list and memory management * Updated CommodityPrice XML based on Spec PR to add PriceLevel and make Events have nullable fields to match attributes. * ZAP Regen all * Restyled by whitespace * Restyled by clang-format * Restyled by gn * Restyled by isort * Fix build issue caused by new spec update to make price optional * Updated test script to allow for optional price or price level in both CommodityPrice and CommodityPriceComponent structs * Updated test steps after spec update and test plan update. * Moved common code into TC_SEPRTestBase. Some additional checks added to 2.2 test * Update test scripts so that they use TestBase * ruff fixes in python tests * Restyled by autopep8 * Restyled by isort * regen_all update * Refactor - made cluster server handle 'set' operations so that it sends out a Matter Reporting callback for each attribute if it is changed. Started making commands work but needs more work * Refactoring to allow cluster server to retrieve a copy of the Forecast based on bitmap * Slightly buggy version but sort of works if there is enough memory * An update to get per entry component values. Currently had to reduce the forecast to 4 entries to get it to fit * Clean up and fix some issues in the data and SetCurrentPrice. Removed unnecessary files now that delegate isn't really holding the data. * More clean-up * More clean up * Updated zcl.json with AttributeInterface handling. * Zap regen all once zcl.json was updated * Had accidentally turned off FeatureMap in CommodityPrice. Now back on. * Update commodity-price-cluster.xml based on spec PR 11569 * zap regen all * Marked TC_SEPRTestBase as shared code (not a script) * Update EntryToText.cpp - restore newline at EOF * Update EntryToText.h - restore newline at EOF * Update EntryToText.cpp - restore newline at EOF * Update EntryToText.h - restore newline at EOF * Align structures to corrected Price as Money type. * Fixed IncorrectState when running commands caused by AddStatus after AddResponse * Made the ReadAttribute and GetDetailedForecastCommand dynamically size the response to avoid packet overflow. * Deleted unused java files so CI passes * Completed and fixed test case TC_SEPR_2_2. * Fixed bug introduced in last commit. TC_SEPR_2_1 now passes again * Updated SDK to send PriceForecast events. Note that events have an overhead so not as many entries can be sent. * Implemented TC_SEPR_2_3 and fixed other issues with test scripts. * Restyled by isort * Fix Lint error * Made local copy of EnergyTimeUtils.h * Updated linux to use local copy of EnergyTimeUtils.cpp * Removed Python Tests so that they don't trigger build check failure. * Revert test_metadata.yaml since we're backing out Python scripts from this PR. * Added changes to build targets to enable top level build_example for enabling testing. * Restyled by clang-format * Restyled by clang-format * Changed GetDetailedForecastRequest to take a ScopedMemoryBuffer * Improved Memory management for GetDetailedPriceRequest() * Restyled by whitespace * Restyled by clang-format * Restyled by gn * Update all_targets_linux_x64.txt * Apply suggestions from code review Co-authored-by: Boris Zbarsky <[email protected]> * Remove Forecast Changed Event * Addressing most of code review comments * More review comment changes * removing chip:: and moving to CharSpan::fromCharString() * Refactored SetCurrentPrice to save a local copy into the cluster server. * Fixed issue with wrong variable in SetCurrentPrice - removed unused variable now - seen when sending multiple triggers. * Apply suggestions from code review Co-authored-by: Boris Zbarsky <[email protected]> * Further review comments fixed in SetCurrentPrice() * Further refinement on SetCurrentPrice deep copy * Fixed issues with wrong buffer and a bug in the .component.Value() called without checking .HasValue() first * Removed byte counting nonsense now we have Large Message support * Renamed function * Avoid error when it is ok not to have allocated sub-elements * Missing .matter file after regen_all after merge causing CI issues. * Update src/app/clusters/commodity-price-server/commodity-price-server.h Co-authored-by: Boris Zbarsky <[email protected]> * Merge from Master * Revert "Merge from Master" This reverts commit bf42fda. * Tidy up AppMain.cpp after merge * Fixed another merge error * Removed VerifyOrDie when checking that memory should already be free'd. Free it if allocated. * Fixed GetEpochTS (again) - merge issue? * Added Electrical Grid Conditions & test event flags to ESP32 * Missed Kconfig.projbuild --------- Co-authored-by: Hasty Granbery <[email protected]> Co-authored-by: Hasty Granbery <[email protected]> Co-authored-by: Restyled.io <[email protected]> Co-authored-by: Andrei Litvin <[email protected]> Co-authored-by: Boris Zbarsky <[email protected]>
1 parent 9b7b7f1 commit 23817fd

File tree

17 files changed

+85
-9
lines changed

17 files changed

+85
-9
lines changed

.github/workflows/examples-esp32.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ jobs:
168168
- name: Build example Lighting App (external platform)
169169
run: scripts/examples/esp_example.sh lighting-app sdkconfig.ext_plat.defaults
170170

171+
- name: Build example Energy Gateway App
172+
run: scripts/examples/esp_example.sh energy-gateway-app sdkconfig.defaults
173+
171174
- name: Build example Energy Management App
172175
run: scripts/examples/esp_example.sh energy-management-app sdkconfig.defaults
173176

.github/workflows/tests.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,7 @@ jobs:
524524
echo "CHIP_LOCK_APP: out/linux-x64-lock-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-lock-app" >> /tmp/test_env.yaml
525525
echo "CAMERA_APP: out/linux-x64-camera/chip-camera-app" >> /tmp/test_env.yaml
526526
echo "ENERGY_MANAGEMENT_APP: out/linux-x64-energy-management-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-energy-management-app" >> /tmp/test_env.yaml
527+
echo "ENERGY_GATEWAY_APP: out/linux-x64-energy-gateway-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-energy-gateway-app" >> /tmp/test_env.yaml
527528
echo "LIT_ICD_APP: out/linux-x64-lit-icd-ipv6only-no-ble-no-wifi-tsan-clang-test/lit-icd-app" >> /tmp/test_env.yaml
528529
echo "AIR_PURIFIER_APP: out/linux-x64-air-purifier-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-air-purifier-app" >> /tmp/test_env.yaml
529530
echo "CHIP_MICROWAVE_OVEN_APP: out/linux-x64-microwave-oven-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-microwave-oven-app" >> /tmp/test_env.yaml

examples/energy-gateway-app/esp32/main/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
1818

1919
get_filename_component(CHIP_ROOT ${CMAKE_SOURCE_DIR}/third_party/connectedhomeip REALPATH)
20-
get_filename_component(ENERGY_GATEWAY_COMMON_DIR ${CHIP_ROOT}/examples/energy-gateway-app/energy-gateway-common/ REALPATH)
20+
get_filename_component(ENERGY_GATEWAY_DIR ${CHIP_ROOT}/examples/energy-gateway-app/ REALPATH)
2121
get_filename_component(APP_COMMON_GEN_DIR ${CHIP_ROOT}/zzz_generated/app-common/app-common/zap-generated REALPATH)
2222

2323
set(PRIV_INCLUDE_DIRS_LIST
2424
"${CHIP_ROOT}/examples/providers"
25-
"${ENERGY_GATEWAY_COMMON_DIR}/common/include"
25+
"${ENERGY_GATEWAY_DIR}/commodity-price/include"
26+
"${ENERGY_GATEWAY_DIR}/common/include"
27+
"${ENERGY_GATEWAY_DIR}/electrical-grid-conditions/include"
2628
"${CMAKE_CURRENT_LIST_DIR}/include"
2729
"${CHIP_ROOT}/examples/platform/esp32"
2830
)
@@ -31,7 +33,9 @@ set(SRC_DIRS_LIST
3133
"${APP_COMMON_GEN_DIR}/attributes"
3234
"${APP_COMMON_GEN_DIR}"
3335
"${CHIP_ROOT}/examples/providers"
34-
"${ENERGY_GATEWAY_COMMON_DIR}/common/src"
36+
"${ENERGY_GATEWAY_DIR}/commodity-price/src"
37+
"${ENERGY_GATEWAY_DIR}/common/src"
38+
"${ENERGY_GATEWAY_DIR}/electrical-grid-conditions/src"
3539
"${CHIP_ROOT}/examples/platform/esp32/ota"
3640
"${CHIP_ROOT}/examples/platform/esp32/common"
3741
"${CHIP_ROOT}/examples/platform/esp32/time"
@@ -66,7 +70,7 @@ idf_component_register(PRIV_INCLUDE_DIRS ${PRIV_INCLUDE_DIRS_LIST}
6670

6771
include(${CHIP_ROOT}/src/app/chip_data_model.cmake)
6872
chip_configure_data_model(${COMPONENT_LIB}
69-
ZAP_FILE ${ENERGY_GATEWAY_COMMON_DIR}/energy-gateway-app.zap
73+
ZAP_FILE ${ENERGY_GATEWAY_DIR}/energy-gateway-common/energy-gateway-app.zap
7074
)
7175

7276
if(CONFIG_ENABLE_ESP_INSIGHTS_TRACE)

examples/energy-gateway-app/esp32/main/DeviceCallbacks.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include <app/ConcreteAttributePath.h>
2626
#include <lib/support/logging/CHIPLogging.h>
2727

28-
static const char * TAG = "energy-management-app-callbacks";
28+
static const char * TAG = "energy-gateway-app-callbacks";
2929

3030
using namespace chip;
3131
using namespace chip::Inet;

examples/energy-gateway-app/esp32/main/Kconfig.projbuild

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,3 +185,19 @@ depends on ENABLE_PW_RPC
185185
about available pin numbers for UART.
186186

187187
endmenu
188+
189+
menu "Energy Gateway Example App Configuration"
190+
191+
config CHIP_DEVICE_CONFIG_ENABLE_COMMODITY_PRICE_TRIGGER
192+
bool "Enable SEPR (CommodityPrice) triggers"
193+
default "n"
194+
help
195+
Enable test triggers used by the Commodity Price tests
196+
197+
config CHIP_DEVICE_CONFIG_ENABLE_ELECTRICAL_GRID_CONDITIONS_TRIGGER
198+
bool "Enable EGC (ElectricalGridConditions) triggers"
199+
default "n"
200+
help
201+
Enable test triggers used by the Electrical Grid Conditions tests
202+
203+
endmenu

examples/energy-gateway-app/esp32/main/main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,14 @@ void ApplicationInit()
118118
{
119119
ESP_LOGD(TAG, "Energy Gateway App: ApplicationInit()");
120120

121-
ElectricalPriceApplicationInit();
121+
ElectricalEnergyTariffInit();
122122
}
123123

124124
void ApplicationShutdown()
125125
{
126126
ESP_LOGD(TAG, "Energy Gateway App: ApplicationShutdown()");
127127

128-
ElectricalPriceApplicationShutdown();
128+
ElectricalEnergyTariffShutdown();
129129
}
130130

131131
static void InitServer(intptr_t context)

examples/energy-gateway-app/esp32/sdkconfig.defaults

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,9 @@ CONFIG_ENABLE_SNTP_TIME_SYNC=y
6363

6464
# Enable OTA Requestor
6565
CONFIG_ENABLE_OTA_REQUESTOR=y
66+
67+
# Enable test triggers used by the CommidityPrice tests
68+
CONFIG_CHIP_DEVICE_CONFIG_ENABLE_COMMODITY_PRICE_TRIGGER=y
69+
70+
# Enable test triggers used by the ElectricalGridConditions tests
71+
CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ELECTRICAL_GRID_CONDITIONS_TRIGGER=y

examples/platform/esp32/common/Esp32AppServer.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@
4141
#if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_DEVICE_ENERGY_MANAGEMENT_TRIGGER
4242
#include <app/clusters/device-energy-management-server/DeviceEnergyManagementTestEventTriggerHandler.h>
4343
#endif
44+
#if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_COMMODITY_PRICE_TRIGGER
45+
#include <app/clusters/commodity-price-server/CommodityPriceTestEventTriggerHandler.h>
46+
#endif
47+
#if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ELECTRICAL_GRID_CONDITIONS_TRIGGER
48+
#include <app/clusters/electrical-grid-conditions-server/ElectricalGridConditionsTestEventTriggerHandler.h>
49+
#endif
4450

4551
#ifdef CONFIG_ENABLE_CHIP_SHELL
4652
#include <lib/shell/commands/WiFi.h>
@@ -145,6 +151,14 @@ void Esp32AppServer::Init(AppDelegate * sAppDelegate)
145151
static DeviceEnergyManagementTestEventTriggerHandler sDeviceEnergyManagementTestEventTriggerHandler;
146152
sTestEventTriggerDelegate.AddHandler(&sDeviceEnergyManagementTestEventTriggerHandler);
147153
#endif
154+
#if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_COMMODITY_PRICE_TRIGGER
155+
static CommodityPriceTestEventTriggerHandler sCommodityPriceTestEventTriggerHandler;
156+
sTestEventTriggerDelegate.AddHandler(&sCommodityPriceTestEventTriggerHandler);
157+
#endif
158+
#if CONFIG_CHIP_DEVICE_CONFIG_ENABLE_ELECTRICAL_GRID_CONDITIONS_TRIGGER
159+
static ElectricalGridConditionsTestEventTriggerHandler sElectricalGridConditionsTestEventTriggerHandler;
160+
sTestEventTriggerDelegate.AddHandler(&sElectricalGridConditionsTestEventTriggerHandler);
161+
#endif
148162

149163
#if CONFIG_ENABLE_OTA_REQUESTOR
150164
static OTATestEventTriggerHandler sOtaTestEventTriggerHandler{};

examples/platform/linux/BUILD.gn

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ source_set("boolean-state-configuration-test-event-trigger") {
6363
sources = [ "${chip_root}/src/app/clusters/boolean-state-configuration-server/BooleanStateConfigurationTestEventTriggerHandler.h" ]
6464
}
6565

66+
source_set("commodity-price-test-event-trigger") {
67+
sources = [ "${chip_root}/src/app/clusters/commodity-price-server/CommodityPriceTestEventTriggerHandler.h" ]
68+
}
69+
6670
source_set("energy-evse-test-event-trigger") {
6771
sources = [ "${chip_root}/src/app/clusters/energy-evse-server/EnergyEvseTestEventTriggerHandler.h" ]
6872
}
@@ -105,6 +109,7 @@ source_set("app-main") {
105109
public_deps = [
106110
":boolean-state-configuration-test-event-trigger",
107111
":commissioner-main",
112+
":commodity-price-test-event-trigger",
108113
":device-energy-management-test-event-trigger",
109114
":energy-evse-test-event-trigger",
110115
":energy-reporting-test-event-trigger",

integrations/docker/images/chip-cert-bins/Dockerfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ RUN case ${TARGETPLATFORM} in \
161161
--target linux-x64-lock-ipv6only \
162162
--target linux-x64-simulated-app1-ipv6only \
163163
--target linux-x64-lit-icd-ipv6only \
164+
--target linux-x64-energy-gateway-ipv6only \
164165
--target linux-x64-energy-management-ipv6only \
165166
--target linux-x64-microwave-oven-ipv6only \
166167
--target linux-x64-rvc-ipv6only \
@@ -186,6 +187,7 @@ RUN case ${TARGETPLATFORM} in \
186187
&& mv out/linux-x64-lock-ipv6only/chip-lock-app out/chip-lock-app \
187188
&& mv out/linux-x64-simulated-app1-ipv6only/chip-app1 out/chip-app1 \
188189
&& mv out/linux-x64-lit-icd-ipv6only/lit-icd-app out/lit-icd-app \
190+
&& mv out/linux-x64-energy-gateway-ipv6only/chip-energy-gateway-app out/chip-energy-gateway-app \
189191
&& mv out/linux-x64-energy-management-ipv6only/chip-energy-management-app out/chip-energy-management-app \
190192
&& mv out/linux-x64-microwave-oven-ipv6only/chip-microwave-oven-app out/chip-microwave-oven-app \
191193
&& mv out/linux-x64-rvc-ipv6only/chip-rvc-app out/chip-rvc-app \
@@ -215,6 +217,7 @@ RUN case ${TARGETPLATFORM} in \
215217
--target linux-arm64-lock-ipv6only \
216218
--target linux-arm64-simulated-app1-ipv6only \
217219
--target linux-arm64-lit-icd-ipv6only \
220+
--target linux-arm64-energy-gateway-ipv6only \
218221
--target linux-arm64-energy-management-ipv6only \
219222
--target linux-arm64-microwave-oven-ipv6only \
220223
--target linux-arm64-rvc-ipv6only \
@@ -240,6 +243,7 @@ RUN case ${TARGETPLATFORM} in \
240243
&& mv out/linux-arm64-lock-ipv6only/chip-lock-app out/chip-lock-app \
241244
&& mv out/linux-arm64-simulated-app1-ipv6only/chip-app1 out/chip-app1 \
242245
&& mv out/linux-arm64-lit-icd-ipv6only/lit-icd-app out/lit-icd-app \
246+
&& mv out/linux-arm64-energy-gateway-ipv6only/chip-energy-gateway-app out/chip-energy-gateway-app \
243247
&& mv out/linux-arm64-energy-management-ipv6only/chip-energy-management-app out/chip-energy-management-app \
244248
&& mv out/linux-arm64-microwave-oven-ipv6only/chip-microwave-oven-app out/chip-microwave-oven-app \
245249
&& mv out/linux-arm64-rvc-ipv6only/chip-rvc-app out/chip-rvc-app \
@@ -279,6 +283,7 @@ COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-ota-requestor-ap
279283
COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-lock-app apps/chip-lock-app
280284
COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-app1 apps/chip-app1
281285
COPY --from=chip-build-cert-bins /root/connectedhomeip/out/lit-icd-app apps/lit-icd-app
286+
COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-energy-gateway-app apps/chip-energy-gateway-app
282287
COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-energy-management-app apps/chip-energy-management-app
283288
COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-microwave-oven-app apps/chip-microwave-oven-app
284289
COPY --from=chip-build-cert-bins /root/connectedhomeip/out/chip-rvc-app apps/chip-rvc-app

0 commit comments

Comments
 (0)