Skip to content

Commit 7060b5a

Browse files
Merge branch 'master' into feature/closure_device_type_xml_generation
2 parents e7d8c92 + 5398152 commit 7060b5a

File tree

193 files changed

+22611
-435
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

193 files changed

+22611
-435
lines changed

.github/workflows/examples-linux-standalone.yaml

+11-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,17 @@ jobs:
228228
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
229229
linux debug fabric-sync \
230230
out/linux-x64-fabric-sync-no-ble/fabric-sync \
231-
/tmp/bloat_reports/
231+
/tmp/bloat_reports/
232+
- name: Build example Camera App
233+
run: |
234+
./scripts/run_in_build_env.sh \
235+
"./scripts/build/build_examples.py \
236+
--target linux-x64-camera \
237+
build"
238+
.environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
239+
linux debug camera-app \
240+
out/linux-x64-camera/chip-camera-app \
241+
/tmp/bloat_reports/
232242
- name: Uploading Size Reports
233243
uses: ./.github/actions/upload-size-reports
234244
if: ${{ !env.ACT }}

BUILD.gn

+13
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,10 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {
394394
enable_linux_rvc_app_build =
395395
enable_default_builds && (host_os == "linux" || host_os == "mac")
396396

397+
# Build the Linux Camera app example.
398+
enable_linux_camera_app_build =
399+
enable_default_builds && (host_os == "linux" || host_os == "mac")
400+
397401
# Build the cc13x2x7_26x2x7 lock app example.
398402
enable_cc13x2x7_26x2x7_lock_app_build = enable_ti_simplelink_builds
399403

@@ -783,6 +787,15 @@ if (current_toolchain != "${dir_pw_toolchain}/default:default") {
783787
extra_build_deps += [ ":linux_rvc_app" ]
784788
}
785789

790+
if (enable_linux_camera_app_build) {
791+
group("linux_camera_app") {
792+
deps =
793+
[ "${chip_root}/examples/camera-app/linux(${standalone_toolchain})" ]
794+
}
795+
796+
extra_build_deps += [ ":linux_camera_app" ]
797+
}
798+
786799
group("default") {
787800
deps = extra_build_deps + builds
788801
}

docs/examples/camera.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
## Camera
2+
3+
```{toctree}
4+
:glob:
5+
:maxdepth: 1
6+
7+
camera-app/**/README
8+
```

examples/air-purifier-app/air-purifier-common/air-purifier-app.matter

+25-2
Original file line numberDiff line numberDiff line change
@@ -1228,12 +1228,14 @@ cluster OperationalCredentials = 62 {
12281228
fabric_id fabricID = 3;
12291229
node_id nodeID = 4;
12301230
char_string<32> label = 5;
1231+
optional octet_string<85> vidVerificationStatement = 6;
12311232
fabric_idx fabricIndex = 254;
12321233
}
12331234

12341235
fabric_scoped struct NOCStruct {
1235-
fabric_sensitive octet_string noc = 1;
1236-
nullable fabric_sensitive octet_string icac = 2;
1236+
octet_string noc = 1;
1237+
nullable octet_string icac = 2;
1238+
optional octet_string vvsc = 3;
12371239
fabric_idx fabricIndex = 254;
12381240
}
12391241

@@ -1308,6 +1310,23 @@ cluster OperationalCredentials = 62 {
13081310
octet_string rootCACertificate = 0;
13091311
}
13101312

1313+
request struct SetVidVerificationStatementRequest {
1314+
optional vendor_id vendorID = 0;
1315+
optional octet_string vidVerificationStatement = 1;
1316+
optional octet_string vvsc = 2;
1317+
}
1318+
1319+
request struct SignVidVerificationRequestRequest {
1320+
fabric_idx fabricIndex = 0;
1321+
octet_string<32> clientChallenge = 1;
1322+
}
1323+
1324+
response struct SignVidVerificationResponse = 14 {
1325+
fabric_idx fabricIndex = 0;
1326+
int8u fabricBindingVersion = 1;
1327+
octet_string signature = 2;
1328+
}
1329+
13111330
/** Sender is requesting attestation information from the receiver. */
13121331
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
13131332
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1324,6 +1343,10 @@ cluster OperationalCredentials = 62 {
13241343
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
13251344
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
13261345
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
1346+
/** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
1347+
fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
1348+
/** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
1349+
command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
13271350
}
13281351

13291352
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */

examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter

+25-2
Original file line numberDiff line numberDiff line change
@@ -1503,12 +1503,14 @@ cluster OperationalCredentials = 62 {
15031503
fabric_id fabricID = 3;
15041504
node_id nodeID = 4;
15051505
char_string<32> label = 5;
1506+
optional octet_string<85> vidVerificationStatement = 6;
15061507
fabric_idx fabricIndex = 254;
15071508
}
15081509

15091510
fabric_scoped struct NOCStruct {
1510-
fabric_sensitive octet_string noc = 1;
1511-
nullable fabric_sensitive octet_string icac = 2;
1511+
octet_string noc = 1;
1512+
nullable octet_string icac = 2;
1513+
optional octet_string vvsc = 3;
15121514
fabric_idx fabricIndex = 254;
15131515
}
15141516

@@ -1583,6 +1585,23 @@ cluster OperationalCredentials = 62 {
15831585
octet_string rootCACertificate = 0;
15841586
}
15851587

1588+
request struct SetVidVerificationStatementRequest {
1589+
optional vendor_id vendorID = 0;
1590+
optional octet_string vidVerificationStatement = 1;
1591+
optional octet_string vvsc = 2;
1592+
}
1593+
1594+
request struct SignVidVerificationRequestRequest {
1595+
fabric_idx fabricIndex = 0;
1596+
octet_string<32> clientChallenge = 1;
1597+
}
1598+
1599+
response struct SignVidVerificationResponse = 14 {
1600+
fabric_idx fabricIndex = 0;
1601+
int8u fabricBindingVersion = 1;
1602+
octet_string signature = 2;
1603+
}
1604+
15861605
/** Sender is requesting attestation information from the receiver. */
15871606
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
15881607
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -1599,6 +1618,10 @@ cluster OperationalCredentials = 62 {
15991618
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
16001619
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
16011620
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
1621+
/** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
1622+
fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
1623+
/** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
1624+
command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
16021625
}
16031626

16041627
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */

examples/all-clusters-app/all-clusters-common/all-clusters-app.matter

+25-2
Original file line numberDiff line numberDiff line change
@@ -2657,12 +2657,14 @@ cluster OperationalCredentials = 62 {
26572657
fabric_id fabricID = 3;
26582658
node_id nodeID = 4;
26592659
char_string<32> label = 5;
2660+
optional octet_string<85> vidVerificationStatement = 6;
26602661
fabric_idx fabricIndex = 254;
26612662
}
26622663

26632664
fabric_scoped struct NOCStruct {
2664-
fabric_sensitive octet_string noc = 1;
2665-
nullable fabric_sensitive octet_string icac = 2;
2665+
octet_string noc = 1;
2666+
nullable octet_string icac = 2;
2667+
optional octet_string vvsc = 3;
26662668
fabric_idx fabricIndex = 254;
26672669
}
26682670

@@ -2737,6 +2739,23 @@ cluster OperationalCredentials = 62 {
27372739
octet_string rootCACertificate = 0;
27382740
}
27392741

2742+
request struct SetVidVerificationStatementRequest {
2743+
optional vendor_id vendorID = 0;
2744+
optional octet_string vidVerificationStatement = 1;
2745+
optional octet_string vvsc = 2;
2746+
}
2747+
2748+
request struct SignVidVerificationRequestRequest {
2749+
fabric_idx fabricIndex = 0;
2750+
octet_string<32> clientChallenge = 1;
2751+
}
2752+
2753+
response struct SignVidVerificationResponse = 14 {
2754+
fabric_idx fabricIndex = 0;
2755+
int8u fabricBindingVersion = 1;
2756+
octet_string signature = 2;
2757+
}
2758+
27402759
/** Sender is requesting attestation information from the receiver. */
27412760
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
27422761
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2753,6 +2772,10 @@ cluster OperationalCredentials = 62 {
27532772
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
27542773
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
27552774
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
2775+
/** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
2776+
fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
2777+
/** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
2778+
command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
27562779
}
27572780

27582781
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */

examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter

+25-2
Original file line numberDiff line numberDiff line change
@@ -2424,12 +2424,14 @@ cluster OperationalCredentials = 62 {
24242424
fabric_id fabricID = 3;
24252425
node_id nodeID = 4;
24262426
char_string<32> label = 5;
2427+
optional octet_string<85> vidVerificationStatement = 6;
24272428
fabric_idx fabricIndex = 254;
24282429
}
24292430

24302431
fabric_scoped struct NOCStruct {
2431-
fabric_sensitive octet_string noc = 1;
2432-
nullable fabric_sensitive octet_string icac = 2;
2432+
octet_string noc = 1;
2433+
nullable octet_string icac = 2;
2434+
optional octet_string vvsc = 3;
24332435
fabric_idx fabricIndex = 254;
24342436
}
24352437

@@ -2504,6 +2506,23 @@ cluster OperationalCredentials = 62 {
25042506
octet_string rootCACertificate = 0;
25052507
}
25062508

2509+
request struct SetVidVerificationStatementRequest {
2510+
optional vendor_id vendorID = 0;
2511+
optional octet_string vidVerificationStatement = 1;
2512+
optional octet_string vvsc = 2;
2513+
}
2514+
2515+
request struct SignVidVerificationRequestRequest {
2516+
fabric_idx fabricIndex = 0;
2517+
octet_string<32> clientChallenge = 1;
2518+
}
2519+
2520+
response struct SignVidVerificationResponse = 14 {
2521+
fabric_idx fabricIndex = 0;
2522+
int8u fabricBindingVersion = 1;
2523+
octet_string signature = 2;
2524+
}
2525+
25072526
/** Sender is requesting attestation information from the receiver. */
25082527
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
25092528
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2520,6 +2539,10 @@ cluster OperationalCredentials = 62 {
25202539
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
25212540
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
25222541
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
2542+
/** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
2543+
fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
2544+
/** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
2545+
command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
25232546
}
25242547

25252548
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */

examples/bridge-app/bridge-common/bridge-app.matter

+25-2
Original file line numberDiff line numberDiff line change
@@ -1913,12 +1913,14 @@ cluster OperationalCredentials = 62 {
19131913
fabric_id fabricID = 3;
19141914
node_id nodeID = 4;
19151915
char_string<32> label = 5;
1916+
optional octet_string<85> vidVerificationStatement = 6;
19161917
fabric_idx fabricIndex = 254;
19171918
}
19181919

19191920
fabric_scoped struct NOCStruct {
1920-
fabric_sensitive octet_string noc = 1;
1921-
nullable fabric_sensitive octet_string icac = 2;
1921+
octet_string noc = 1;
1922+
nullable octet_string icac = 2;
1923+
optional octet_string vvsc = 3;
19221924
fabric_idx fabricIndex = 254;
19231925
}
19241926

@@ -1993,6 +1995,23 @@ cluster OperationalCredentials = 62 {
19931995
octet_string rootCACertificate = 0;
19941996
}
19951997

1998+
request struct SetVidVerificationStatementRequest {
1999+
optional vendor_id vendorID = 0;
2000+
optional octet_string vidVerificationStatement = 1;
2001+
optional octet_string vvsc = 2;
2002+
}
2003+
2004+
request struct SignVidVerificationRequestRequest {
2005+
fabric_idx fabricIndex = 0;
2006+
octet_string<32> clientChallenge = 1;
2007+
}
2008+
2009+
response struct SignVidVerificationResponse = 14 {
2010+
fabric_idx fabricIndex = 0;
2011+
int8u fabricBindingVersion = 1;
2012+
octet_string signature = 2;
2013+
}
2014+
19962015
/** Sender is requesting attestation information from the receiver. */
19972016
command access(invoke: administer) AttestationRequest(AttestationRequestRequest): AttestationResponse = 0;
19982017
/** Sender is requesting a device attestation certificate from the receiver. */
@@ -2009,6 +2028,10 @@ cluster OperationalCredentials = 62 {
20092028
command access(invoke: administer) RemoveFabric(RemoveFabricRequest): NOCResponse = 10;
20102029
/** This command SHALL add a Trusted Root CA Certificate, provided as its CHIP Certificate representation. */
20112030
command access(invoke: administer) AddTrustedRootCertificate(AddTrustedRootCertificateRequest): DefaultSuccess = 11;
2031+
/** This command SHALL be used to update any of the accessing fabric's associated VendorID, VidVerificatioNStatement or VVSC (Vendor Verification Signing Certificate). */
2032+
fabric command access(invoke: administer) SetVidVerificationStatement(SetVidVerificationStatementRequest): DefaultSuccess = 12;
2033+
/** This command SHALL be used to request that the server authenticate the fabric associated with the FabricIndex given. */
2034+
command access(invoke: administer) SignVidVerificationRequest(SignVidVerificationRequestRequest): SignVidVerificationResponse = 13;
20122035
}
20132036

20142037
/** The Group Key Management Cluster is the mechanism by which group keys are managed. */
+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Copyright (c) 2025 Project CHIP Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import("//build_overrides/chip.gni")
16+
import("${chip_root}/src/app/chip_data_model.gni")
17+
18+
config("config") {
19+
include_dirs = [ "include" ]
20+
}
21+
22+
chip_data_model("camera-common") {
23+
zap_file = "camera-app.zap"
24+
is_server = true
25+
}
26+
27+
source_set("camera-lib") {
28+
public_configs = [ ":config" ]
29+
30+
sources = [
31+
"include/camera-app.h",
32+
"include/camera-device-interface.h",
33+
"src/camera-app.cpp",
34+
]
35+
36+
deps = [
37+
"${chip_root}/examples/camera-app/camera-common",
38+
"${chip_root}/src/lib",
39+
]
40+
}

0 commit comments

Comments
 (0)