mirror of
https://github.com/espressif/esp-matter.git
synced 2026-04-27 19:13:13 +00:00
fix(cluster_select): gate Thread clusters on OPENTHREAD_ENABLED
The three Thread-related clusters (Thread Network Diagnostics, Thread Border Router Management, Thread Network Directory) default to enabled regardless of whether OpenThread is present. On WiFi-only devices this causes the clusters to be registered on the root node endpoint, but read requests fail with CHIP_ERROR_NOT_IMPLEMENTED because CHIP_DEVICE_CONFIG_ENABLE_THREAD is disabled, producing noisy DMG errors like: E chip[DMG]: Fail to retrieve data ... clusterId: 0x0000_0035 err = 2d Add `depends on OPENTHREAD_ENABLED` so these clusters are only available when the Thread stack is actually present.
This commit is contained in:
@@ -431,14 +431,17 @@ config SUPPORT_THERMOSTAT_USER_INTERFACE_CONFIGURATION_CLUSTER
|
|||||||
|
|
||||||
config SUPPORT_THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER
|
config SUPPORT_THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER
|
||||||
bool "Support THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER"
|
bool "Support THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER"
|
||||||
|
depends on OPENTHREAD_ENABLED
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config SUPPORT_THREAD_NETWORK_DIAGNOSTICS_CLUSTER
|
config SUPPORT_THREAD_NETWORK_DIAGNOSTICS_CLUSTER
|
||||||
bool "Support THREAD_NETWORK_DIAGNOSTICS_CLUSTER"
|
bool "Support THREAD_NETWORK_DIAGNOSTICS_CLUSTER"
|
||||||
|
depends on OPENTHREAD_ENABLED
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config SUPPORT_THREAD_NETWORK_DIRECTORY_CLUSTER
|
config SUPPORT_THREAD_NETWORK_DIRECTORY_CLUSTER
|
||||||
bool "Support THREAD_NETWORK_DIRECTORY_CLUSTER"
|
bool "Support THREAD_NETWORK_DIRECTORY_CLUSTER"
|
||||||
|
depends on OPENTHREAD_ENABLED
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config SUPPORT_TIME_FORMAT_LOCALIZATION_CLUSTER
|
config SUPPORT_TIME_FORMAT_LOCALIZATION_CLUSTER
|
||||||
|
|||||||
@@ -46,15 +46,25 @@ def load_json(json_file):
|
|||||||
return {key: value for key, value in server_dirs.items() if value}
|
return {key: value for key, value in server_dirs.items() if value}
|
||||||
|
|
||||||
|
|
||||||
|
# Clusters that require OpenThread support
|
||||||
|
OPENTHREAD_CLUSTERS = {
|
||||||
|
'THREAD_BORDER_ROUTER_MANAGEMENT_CLUSTER',
|
||||||
|
'THREAD_NETWORK_DIAGNOSTICS_CLUSTER',
|
||||||
|
'THREAD_NETWORK_DIRECTORY_CLUSTER',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def generate_cluster_select_kconfig(cluster_list, output_dir):
|
def generate_cluster_select_kconfig(cluster_list, output_dir):
|
||||||
with open(os.path.join(output_dir, 'Kconfig.in'), 'w') as kconfig_file:
|
with open(os.path.join(output_dir, 'Kconfig.in'), 'w') as kconfig_file:
|
||||||
write_file_header(kconfig_file)
|
write_file_header(kconfig_file)
|
||||||
for cluster in cluster_list.keys():
|
for cluster in cluster_list.keys():
|
||||||
kconfig_file.writelines(
|
lines = [f'config SUPPORT_{cluster}\n',
|
||||||
[f'config SUPPORT_{cluster}\n',
|
f'\tbool "Support {cluster}"\n']
|
||||||
f'\tbool "Support {cluster}"\n',
|
if cluster in OPENTHREAD_CLUSTERS:
|
||||||
'\tdefault y\n'
|
lines.append('\tdepends on OPENTHREAD_ENABLED\n')
|
||||||
'\n'])
|
lines.append('\tdefault y\n')
|
||||||
|
lines.append('\n')
|
||||||
|
kconfig_file.writelines(lines)
|
||||||
|
|
||||||
|
|
||||||
def generate_cluster_select_cmake(cluster_list, output_dir):
|
def generate_cluster_select_cmake(cluster_list, output_dir):
|
||||||
|
|||||||
Reference in New Issue
Block a user