NewBlue D-Bus Adapter API description
*************************************


Adapter hierarchy
=================

Service         org.chromium.Newblue
Interface       org.bluez.Adapter1
Object path     [variable prefix]/{hci0,hci1,...}
Note            Currently we support only one adapter in NewBlue, hci0.

Methods         void StartDiscovery()

                        This method starts the LE device scanning session.

                void StopDiscovery()

                // NOT IMPLEMENTED
                void PauseDiscovery(boolean system_suspend_resume)

                // NOT IMPLEMENTED
                void UnpauseDiscovery(boolean system_suspend_resume)

                void RemoveDevice(object device)

                        Possible errors: org.bluez.Error.Failed

                // NOT IMPLEMENTED
                void SetDiscoveryFilter(dict filter)

                // NOT IMPLEMENTED AS INTENDED
                uint32 CreateServiceRecord(dict record)

                // NOT IMPLEMENTED AS INTENDED
                void RemoveServiceRecord(uint32 handle)

Properties
                // NOT IMPLEMENTED AS INTENDED
                string Address [readonly]

                // NOT IMPLEMENTED AS INTENDED
                string Name [readonly]

                // NOT IMPLEMENTED AS INTENDED
                string Alias [readwrite]

                // NOT IMPLEMENTED
                uint32 Class [readonly]

                boolean Powered [readwrite]

                // NOT IMPLEMENTED AS INTENDED
                boolean Discoverable [readwrite]

                // NOT IMPLEMENTED
                boolean Pairable [readwrite]

                // NOT IMPLEMENTED
                uint32 PairableTimeout [readwrite]

                // NOT IMPLEMENTED AS INTENDED
                uint32 DiscoverableTimeout [readwrite]

                // NOT IMPLEMENTED

                // NOT IMPLEMENTED
                array{string} UUIDs [readonly]

                // NOT IMPLEMENTED
                string Modalias [readonly, optional]

                bool StackSyncQuitting [readonly]
