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 information 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.
