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

Restyle Commissioning State Machine #14741

Closed
wants to merge 25 commits into from
Closed

Conversation

restyled-io[bot]
Copy link
Contributor

@restyled-io restyled-io bot commented Feb 3, 2022

A duplicate of #13294 with additional commits that automatically address
incorrect style, created by Restyled.

⚠️ Even though this PR is not a Fork, it contains outside contributions.
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:

  1. Merge this Pull Request instead of the original, or

  2. Ask your contributor to locally incorporate these commits and push them to
    the original Pull Request

    Expand for example instructions
    ```console
    git remote add upstream https://github.com/project-chip/connectedhomeip.git
    git fetch upstream pull/<this PR number>/head
    git merge --ff-only FETCH_HEAD
    git push
    ```
    

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.

msandstedt and others added 25 commits February 1, 2022 13:00
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.
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.
@restyled-io restyled-io bot deleted the restyled/com-fsm branch February 3, 2022 20:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants