@@ -45,8 +45,13 @@ using namespace chip::app::Clusters;
45
45
46
46
namespace {
47
47
48
- constexpr uint8_t kMaxRetries = 10 ;
49
- constexpr int kNodeLabelSize = 32 ;
48
+ constexpr uint8_t kMaxRetries = 10 ;
49
+ constexpr int kNodeLabelSize = 32 ;
50
+ constexpr int kUniqueIdSize = 32 ;
51
+ constexpr int kVendorNameSize = 32 ;
52
+ constexpr int kProductNameSize = 32 ;
53
+ constexpr int kHardwareVersionSize = 32 ;
54
+ constexpr int kSoftwareVersionSize = 32 ;
50
55
51
56
// Current ZCL implementation of Struct uses a max-size array of 254 bytes
52
57
constexpr int kDescriptorAttributeArraySize = 254 ;
@@ -76,27 +81,51 @@ constexpr int kDescriptorAttributeArraySize = 254;
76
81
// - Bridged Device Basic Information
77
82
// - Administrator Commissioning
78
83
84
+ // clang-format off
79
85
// Declare Descriptor cluster attributes
80
86
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN (descriptorAttrs)
81
- DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::DeviceTypeList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* device list */
82
- DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::ServerList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* server list */
83
- DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::ClientList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* client list */
84
- DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::PartsList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* parts list */
85
- DECLARE_DYNAMIC_ATTRIBUTE_LIST_END ();
87
+ DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::DeviceTypeList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* device list */
88
+ DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::ServerList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* server list */
89
+ DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::ClientList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* client list */
90
+ DECLARE_DYNAMIC_ATTRIBUTE (Descriptor::Attributes::PartsList::Id, ARRAY, kDescriptorAttributeArraySize , 0 ), /* parts list */
91
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END ();
86
92
87
93
// Declare Bridged Device Basic Information cluster attributes
88
94
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN (bridgedDeviceBasicAttrs)
89
- DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::NodeLabel::Id, CHAR_STRING, kNodeLabelSize , 0 ), /* NodeLabel */
90
- DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::Reachable::Id, BOOLEAN, 1 , 0 ), /* Reachable */
91
- DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::FeatureMap::Id, BITMAP32, 4 , 0 ), /* feature map */
95
+ // The attributes below are MANDATORY in the Bridged Device Information Cluster
96
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::Reachable::Id, BOOLEAN, 1 , 0 ),
97
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::UniqueID::Id, CHAR_STRING, kUniqueIdSize , 0 ),
98
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::FeatureMap::Id, BITMAP32, 4 , 0 ),
99
+
100
+ // The attributes below are OPTIONAL in the bridged device, however they are MANDATORY in the BasicInformation cluster
101
+ // so they can always be provided if desired
102
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::VendorName::Id, CHAR_STRING, kVendorNameSize , 0 ),
103
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::VendorID::Id, INT16U, 2 , 0 ),
104
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::ProductName::Id, CHAR_STRING, kProductNameSize , 0 ),
105
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::ProductID::Id, INT16U, 2 , 0 ),
106
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::NodeLabel::Id, CHAR_STRING, kNodeLabelSize , 0 ),
107
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::HardwareVersion::Id, INT16U, 2 , 0 ),
108
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::HardwareVersionString::Id, CHAR_STRING,
109
+ kHardwareVersionSize , 0 ),
110
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::SoftwareVersion::Id, INT32U, 4 , 0 ),
111
+ DECLARE_DYNAMIC_ATTRIBUTE (BridgedDeviceBasicInformation::Attributes::SoftwareVersionString::Id, CHAR_STRING,
112
+ kSoftwareVersionSize , 0 ),
113
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END ();
114
+
115
+ // Declare Ecosystem Information cluster attributes
116
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN (ecosystemInformationBasicAttrs)
117
+ DECLARE_DYNAMIC_ATTRIBUTE (EcosystemInformation::Attributes::RemovedOn::Id, EPOCH_US, kNodeLabelSize , ATTRIBUTE_MASK_NULLABLE),
118
+ DECLARE_DYNAMIC_ATTRIBUTE (EcosystemInformation::Attributes::DeviceDirectory::Id, ARRAY, kDescriptorAttributeArraySize , 0 ),
119
+ DECLARE_DYNAMIC_ATTRIBUTE (EcosystemInformation::Attributes::LocationDirectory::Id, ARRAY, kDescriptorAttributeArraySize , 0 ),
92
120
DECLARE_DYNAMIC_ATTRIBUTE_LIST_END ();
93
121
94
122
// Declare Administrator Commissioning cluster attributes
95
123
DECLARE_DYNAMIC_ATTRIBUTE_LIST_BEGIN (AdministratorCommissioningAttrs)
96
- DECLARE_DYNAMIC_ATTRIBUTE (AdministratorCommissioning::Attributes::WindowStatus::Id, ENUM8, 1 , 0 ), /* NodeLabel */
97
- DECLARE_DYNAMIC_ATTRIBUTE (AdministratorCommissioning::Attributes::AdminFabricIndex::Id, FABRIC_IDX, 1 , 0 ), /* Reachable */
98
- DECLARE_DYNAMIC_ATTRIBUTE (AdministratorCommissioning::Attributes::AdminVendorId::Id, VENDOR_ID, 2 , 0 ), /* Reachable */
99
- DECLARE_DYNAMIC_ATTRIBUTE_LIST_END ();
124
+ DECLARE_DYNAMIC_ATTRIBUTE (AdministratorCommissioning::Attributes::WindowStatus::Id, ENUM8, 1 , 0 ),
125
+ DECLARE_DYNAMIC_ATTRIBUTE (AdministratorCommissioning::Attributes::AdminFabricIndex::Id, FABRIC_IDX, 1 , 0 ),
126
+ DECLARE_DYNAMIC_ATTRIBUTE (AdministratorCommissioning::Attributes::AdminVendorId::Id, VENDOR_ID, 2 , 0 ),
127
+ DECLARE_DYNAMIC_ATTRIBUTE_LIST_END ();
128
+ // clang-format on
100
129
101
130
constexpr CommandId administratorCommissioningCommands[] = {
102
131
app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::Id,
@@ -109,6 +138,7 @@ constexpr CommandId administratorCommissioningCommands[] = {
109
138
DECLARE_DYNAMIC_CLUSTER_LIST_BEGIN (bridgedNodeClusters)
110
139
DECLARE_DYNAMIC_CLUSTER (Descriptor::Id, descriptorAttrs, ZAP_CLUSTER_MASK(SERVER), nullptr , nullptr ),
111
140
DECLARE_DYNAMIC_CLUSTER (BridgedDeviceBasicInformation::Id, bridgedDeviceBasicAttrs, ZAP_CLUSTER_MASK(SERVER), nullptr , nullptr ),
141
+ DECLARE_DYNAMIC_CLUSTER (EcosystemInformation::Id, ecosystemInformationBasicAttrs, ZAP_CLUSTER_MASK(SERVER), nullptr , nullptr ),
112
142
DECLARE_DYNAMIC_CLUSTER (AdministratorCommissioning::Id, AdministratorCommissioningAttrs, ZAP_CLUSTER_MASK(SERVER),
113
143
administratorCommissioningCommands, nullptr ) DECLARE_DYNAMIC_CLUSTER_LIST_END;
114
144
0 commit comments