Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert cluster implementations to be unit testable and have a consistent design #36538

Open
3 tasks
andy31415 opened this issue Nov 18, 2024 · 0 comments
Open
3 tasks

Comments

@andy31415
Copy link
Contributor

andy31415 commented Nov 18, 2024

In #35631 we are preparing the Valve cluster to have a code-driven unit testable layout.

For consistency, eventually all clusters should follow the same pattern. Priority wise we should start with cluster on Endpoint 0, so that we prepare the way for purely code driven examples (without compile-time configuration selection) so that we can minimize the number of examples and ensure examples are actually unit tested.

We need:

  • clusters to use code-driven interfaces (AttributeAccessInterface and CommandHandlerInterface to start, over time we likely need a single interface that represents a "cluster" along with any necessary metadata on it)
  • Do not depend on compile-time constant selections (like cluster in endpoint counts and dynamic endpoint counts)
  • Have unit tests for cluster functionality (besides/instead of integration-level python tests that currently exist)

The cluster list is quite long, here is a status as of today:

Root node clusters

Updated Cluster Details
🔲 access-control-server Uses AAI, Uses EMBER commands
🔲 administrator-commissioning-server Uses AAI, Uses EMBER commands
🔲 basic-information Uses AAI
🔲 diagnostic-logs-server Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_DIAGNOSTIC_LOGS_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 ethernet-network-diagnostics-server Uses AAI, Uses EMBER commands
🔲 general-commissioning-server Uses AAI, Uses EMBER commands
🔲 general-diagnostics-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses ZCL_USING_TIME_SYNCHRONIZATION_CLUSTER_SERVER
🔲 group-key-mgmt-server Uses AAI, Uses EMBER commands
🔲 icd-management-server Uses AAI, Uses EMBER commands
🔲 localization-configuration-server Uses AAI, Uses EMBER commands, Uses EMBER (other)
🔲 network-commissioning Uses AAI, Uses CHI
🔲 operational-credentials-server Uses AAI, Uses EMBER commands
🔲 power-source-configuration-server Uses AAI
🔲 software-diagnostics-server Uses AAI, Uses CHI, Uses EMBER commands
🔲 thread-network-diagnostics-server Uses AAI, Uses EMBER commands, Uses EMBER (other)
🔲 time-format-localization-server Uses AAI, Uses EMBER commands, Uses EMBER (other)
🔲 time-synchronization-server Uses AAI, Uses EMBER commands
🔲 wifi-network-diagnostics-server Uses AAI, Uses EMBER commands

Remaining clusters

Updated Cluster Details
🔲 account-login-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_ACCOUNT_LOGIN_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 air-quality-server Uses AAI, Uses EMBER (other)
🔲 application-basic-server Uses AAI, Uses EMBER (other), Uses MATTER_DM_APPLICATION_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 application-launcher-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_APPLICATION_LAUNCHER_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 audio-output-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_AUDIO_OUTPUT_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 bindings Uses AAI, Uses EMBER (other)
🔲 boolean-state-configuration-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_BOOLEAN_STATE_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 bridged-device-basic-information-server
🔲 channel-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_CHANNEL_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 chime-server Uses AAI, Uses CHI
🔲 color-control-server Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_COLOR_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 commissioner-control-server Uses EMBER commands, Uses EMBER (other)
🔲 concentration-measurement-server Uses AAI, Uses EMBER (other)
🔲 content-app-observer Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_CONTENT_APP_OBSERVER_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 content-control-server Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_CONTENT_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 content-launch-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_CONTENT_LAUNCHER_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 descriptor Uses AAI, Uses EMBER (other)
🔲 device-energy-management-server Uses AAI, Uses CHI
🔲 dishwasher-alarm-server Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_DISHWASHER_ALARM_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 door-lock-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_DOOR_LOCK_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 ecosystem-information-server Uses AAI, Uses EMBER (other)
🔲 electrical-energy-measurement-server Uses AAI, Uses EMBER (other), Uses MATTER_DM_ELECTRICAL_ENERGY_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 electrical-power-measurement-server Uses AAI
🔲 energy-evse-server Uses AAI, Uses CHI
🔲 energy-preference-server Uses AAI
🔲 fan-control-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_FAN_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 fault-injection-server Uses EMBER commands
🔲 fixed-label-server Uses AAI
🔲 groups-server Uses EMBER commands, Uses EMBER (other), Uses ZCL_USING_IDENTIFY_CLUSTER_SERVER
🔲 identify-server Uses EMBER commands
🔲 keypad-input-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_KEYPAD_INPUT_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 laundry-dryer-controls-server Uses AAI, Uses EMBER (other), Uses MATTER_DM_LAUNDRY_DRYER_CONTROLS_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 laundry-washer-controls-server Uses AAI, Uses EMBER (other), Uses MATTER_DM_LAUNDRY_WASHER_CONTROLS_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 level-control Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 low-power-server Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_LOW_POWER_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 media-input-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_MEDIA_INPUT_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 media-playback-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_MEDIA_PLAYBACK_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 messages-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_MESSAGES_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 microwave-oven-control-server Uses AAI, Uses CHI, Uses EMBER (other)
🔲 mode-base-server Uses AAI, Uses CHI, Uses EMBER (other)
🔲 mode-select-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_MODE_SELECT_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 occupancy-sensor-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_OCCUPANCY_SENSING_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 on-off-server Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 operational-state-server Uses AAI, Uses CHI, Uses EMBER (other)
🔲 ota-provider Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 ota-requestor Uses AAI, Uses EMBER commands
🔲 power-source-server Uses AAI, Uses EMBER (other), Uses MATTER_DM_POWER_SOURCE_CLUSTER_SERVER_ENDPOINT_COUNT, Uses ZCL_USING_POWER_SOURCE_CLUSTER_SERVER
🔲 power-topology-server Uses AAI
🔲 pump-configuration-and-control-client Uses EMBER commands
🔲 pump-configuration-and-control-server Uses EMBER commands, Uses EMBER (other)
🔲 refrigerator-alarm-server
🔲 resource-monitoring-server Uses AAI, Uses CHI, Uses EMBER (other)
🔲 sample-mei-server Uses AAI, Uses CHI, Uses EMBER commands, Uses MATTER_DM_SAMPLE_MEI_CLUSTER_SERVER_ENDPOINT_COUNT, Uses ZCL_USING_SAMPLE_MEI_CLUSTER_SERVER
🔲 scenes-server Uses AAI, Uses CHI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 service-area-server Uses AAI, Uses CHI, Uses EMBER (other)
🔲 smoke-co-alarm-server Uses EMBER commands, Uses EMBER (other)
🔲 switch-server
🔲 target-navigator-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_TARGET_NAVIGATOR_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 temperature-control-server Uses AAI, Uses EMBER commands
🔲 test-cluster-server Uses AAI, Uses EMBER commands, Uses EMBER (other)
🔲 thermostat-client Uses EMBER commands
🔲 thermostat-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_THERMOSTAT_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 thermostat-user-interface-configuration-server
🔲 thread-border-router-management-server Uses AAI, Uses CHI
🔲 thread-network-directory-server Uses AAI, Uses CHI
🔲 user-label-server Uses AAI
valve-configuration-and-control-server Uses AAI, Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_VALVE_CONFIGURATION_AND_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT, Uses ZCL_USING_TIME_SYNCHRONIZATION_CLUSTER_SERVER
🔲 wake-on-lan-server Uses AAI, Uses EMBER (other), Uses MATTER_DM_WAKE_ON_LAN_CLUSTER_SERVER_ENDPOINT_COUNT
🔲 water-heater-management-server Uses AAI, Uses CHI
🔲 wifi-network-management-server Uses AAI, Uses CHI, Uses EMBER commands
🔲 window-covering-server Uses EMBER commands, Uses EMBER (other), Uses MATTER_DM_WINDOW_COVERING_CLUSTER_SERVER_ENDPOINT_COUNT

Inter-cluster references:

  • groups-server | Identify
  • level-control | ScenesManagement
  • media-playback-server | AccountLogin
  • media-playback-server | ContentLauncher
  • microwave-oven-control-server | ModeBase
  • microwave-oven-control-server | OperationalState
  • on-off-server | ScenesManagement
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

No branches or pull requests

1 participant