Refactor get_session_keys to be a generator based state machine #161
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.
This will allow me to drop the
get_session_keysfunction from here and use the same function for both the sync and non sync code paths.The idea is to seperate the data exchanges involved in
get_session_keysfrom the network/ble transports. The state machine just takes a TLV input and gives a TLV output, it is 'pure' and side effect free and only operates on data. The invoker is responsible for the actual I/O bit. This means we can use the same logic for async and sync code paths.If we can get an approach we are happy with here there will be a very similar PR for the pairing state machine.
This code could be further simplified - I think ultimately we can refactor away the create_write_function functions as this approach isn't passing callables around. But that can be a seperate PR to keep things small and easy to review.