-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Restyle Commissioning State Machine #14741
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add a central session ID allocator in mSystemState so aware consumers can avoid collision.
The Commissioning state machine can work without dependence on DevciceCommissioner, CASESessionManager, CASEClient or OperationalDeviceProxy. But for compatibility with chip-tool, this commit adds interfaces to emplace already-commissioned devices into a device proxy, CASE session manager, and controller.
The commissioning state machine is a short-lived object that is instantiated to commission a given device, and then may be disposed when this succeeds or fails. The design uses the StateMachine utility in src/lib to provide an extensible framework to consuming apps. And it minimizes memory footprint by maintaining only that state in memory that is currently needed. The state machine is provided as these primary resources: * State.h, Event.h: common state and event templates * Discoverer: a commissionable node discoverer * ExampleCommissioningStateMachine.h: a concrete implementation that uses the states, events and discoverer to provide an example that apps can copy, modify, and extend App implementations can add, remove and reorder states as needed. Arbitrarily complex async UI logic can be realized with this design without the need to define callback delegate interfaces in the sdk. ExampleCommissioningStateMachine is integrated into chip-tool, providing feature parity. chip-tool uses the code to commission devices, and on success then places them into a DeviceController for persistence and subsequent interaction. Fixes #7951
For clarity, rename objects that have been changed to chip::Controller::DeviceController type to reflect this.
…tions to their own files
This requires that we allocate the exchanges right before calling PASESesion::Pair / CASESession::EstablishSession. An equivalent problem is reported in #13422 for similar code in CHIPDeviceController.cpp.
Instead of injecting all State and Event types into the ExampleCommissioningStateMachine namespace directly, this commit separates them into SdkEvent, AppEvent, SdkState and AppState namespaces. Then when the types are referenced with these namespace qualifiers, it much clearer what they are and where they came from. This makes the separation between core SDK code and App-specific code more obvious.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
A duplicate of #13294 with additional commits that automatically address
incorrect style, created by Restyled.
Please review accordingly.
Since the original Pull Request was opened as a fork in a contributor's
repository, we are unable to create a Pull Request branching from it with only
the style fixes.
The following Restylers made fixes:
To incorporate these changes, you can either:
Merge this Pull Request instead of the original, or
Ask your contributor to locally incorporate these commits and push them to
the original Pull Request
Expand for example instructions
NOTE: As work continues on the original Pull Request, this process will
re-run and update (force-push) this Pull Request with updated style fixes as
necessary. If the style is fixed manually at any point (i.e. this process finds
no fixes to make), this Pull Request will be closed automatically.
Sorry if this was unexpected. To disable it, see our documentation.