Skip to content

Conversation

@Jc2k
Copy link
Collaborator

@Jc2k Jc2k commented Aug 22, 2019

This will allow me to drop the get_session_keys function 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_keys from 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.

@Jc2k Jc2k force-pushed the get_session_keys_refactor branch from bc3fce1 to 84a2f3d Compare August 23, 2019 07:29
Copy link
Owner

@jlusiardi jlusiardi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just one question ;)



def create_ble_pair_verify_write(characteristic, characteristic_id):
# This is a temporary wrapper until the pairing functions are also migrated to
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what needs to be done to handle the temporary?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When this PR is merged I will raise a similar one for the perform_pair_setup_part1 and perform_pair_setup_part2 functions. At that point this wrapper will go away. It's a fairly mechanical change - if this is merged tomorrow the i will raise the follow up PR Sun evening or Mon morning.

(It's just because the transport is calling TLV.encode_list now, rather than the state machine doing it, and the BLE code path uses the same function for pair_verify and pair_setup. So using the state machine approach for both of them will mean i can get rid of the temporary function, if that makes sense).

@jlusiardi jlusiardi merged commit c3160bd into jlusiardi:master Aug 25, 2019
@Jc2k Jc2k deleted the get_session_keys_refactor branch August 25, 2019 10:57
@Jc2k
Copy link
Collaborator Author

Jc2k commented Aug 25, 2019

\o/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants