This repository was archived by the owner on Aug 5, 2022. It is now read-only.
Conversation
IWD doesn't accept or export raw IEs on the DBus interface, instead it takes individual parameter values and only a subset of all the ones that the IEs contain. Make the connman-specific Client class build the IE locally from an abstract parameters struct. For now the struct contains the values that source-app.cpp and sink-app.cpp use, if they need to indicate support for any of the extended WFD capabilities or other parameters, this struct will have to be extended too. This might also be a step in supporting Miracast over Ethernet (MICE?) if ever needed -- I think this is the name used for the R2-specific connection method where parameters are exposed as mDNS records.
In order to support other clients than Connman, rename P2P::Client to P2P::ConnmanClient and P2P::Peer to P2P::ConnmanPeer while making them subclasses of new base clases P2P::Client and P2P::Peer. Those base classes are abstract and only have what is expected to be common between Connman and IWD.
Make the struct global within the P2P namespace so it can be used in the Peer class as a utility struct.
Similar to the DBus-based Connman client add a DBus-based IWD client for managing peer discovery, connection/disconnection and P2P service registation using the IWD DBus-service.
To avoid forcing the source/sink apps to select between one client or another, add the MultiClient class, implementing P2P::Client, so that it can be a drop-in replacement of ConnmanClient that does the right thing depending on which of the two services are available on DBus. Under the hood it hold objects of both ConnmandClient and IWDClient and whichever detects its corresponding daemon is available for use, forwards any callbacks through MultiClient up to the app.
This file contains hidden or 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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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 adds a basic IWD D-Bus client in a new class, P2P::IWDClient in p2p/iwd-client.h. The connman client is renamed to P2P::ConnmanClient and just P2P::Client (the old name of the connman backend) now becomes an abstract base for both classes.
P2P::MultiClient is also added that wraps both of the other DBus clients so that in effect the one which detects it's corresponding service on the bus, becomes active.