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.
