|  | WiFi P2P Functionality [experimental] | 
|  | ************************************* | 
|  |  | 
|  | Note: Nothing about WiFi P2P Services is exposed, this is yet to be specified. | 
|  |  | 
|  | Summary | 
|  | ======= | 
|  |  | 
|  | WiFi P2P is supported as follows: | 
|  | - if hardware and wpa_supplicant supports it, a "p2p" technology will appear | 
|  | in the technology list | 
|  | - "p2p" technology, as for "wifi" technology, supports a Scan() method. Such | 
|  | method will trigger a P2P find process. The results will be available | 
|  | through the Manager interface, comparable to services being available | 
|  | through this same interface after a Scan() on "wifi" technology. | 
|  | - the result of a "p2p" Scan() consists into a list of "peer" objects | 
|  | - it is then possible to access peer information, connecting and disconnecting | 
|  | it via the Peer API. | 
|  |  | 
|  |  | 
|  | API Usage | 
|  | ========= | 
|  |  | 
|  | The UI willing to access to WiFi P2P technology should proceed this way: | 
|  | - Request Manager.GetTechnologies() and figure out from the result if "p2p" | 
|  | technology is provided. What comes next implies this successful case. | 
|  | - Add a listener to signal Manager.PeersChanged(): this signal will provide | 
|  | the results of a "p2p" technology Scan(). | 
|  | - From the "p2p" technology object, request a Technology.Scan() method. This | 
|  | will run for a while a P2P find process. | 
|  | - If P2P peers are found, it will be signaled through Manager.PeersChanged(). | 
|  | Objects are "Peer" objects. UI might use Manager.GetPeers() instead, if | 
|  | listening to a signal is not the preferred way. | 
|  | - Once selected the proper Peer object, request a Peer.Connect() method on it | 
|  | so it will connect to it. Peer.Disconnect() will disconnect. | 
|  |  | 
|  | Internals | 
|  | ========= | 
|  |  | 
|  | Through such API, everything is made to hide irrelevant informations for the | 
|  | applications, which are: | 
|  |  | 
|  | - Everything related to the P2P group and the Group Owner (GO) | 
|  | - All low level peer settings | 
|  | - All Service Request Discovery mechanism | 
|  |  | 
|  | Hiding this mean ConnMan will handle it properly behind. | 
|  |  | 
|  | For instance, if you connect to a Peer which happens to be a persistent GO | 
|  | ConnMan will notice it and store the Group information for a later connection | 
|  | to speed up such connection. | 
|  |  | 
|  | For Service Discovery (SD), this will be handled the same way: silently | 
|  | behind, by ConnMan. |