Hi Luiz, On Thu, Sep 10, 2020 at 10:43 AM Luiz Augusto von Dentz <luiz.dentz@xxxxxxxxx> wrote: > > Hi Miao, > > On Wed, Sep 9, 2020 at 9:53 PM Miao-chen Chou <mcchou@xxxxxxxxxxxx> wrote: > > > > Hi Luiz, > > > > On Tue, Sep 8, 2020 at 10:40 AM Luiz Augusto von Dentz > > <luiz.dentz@xxxxxxxxx> wrote: > > > > > > Hi Miao, > > > > > > On Tue, Aug 18, 2020 at 3:34 PM Miao-chen Chou <mcchou@xxxxxxxxxxxx> wrote: > > > > > > > > This modifies the following description to Advertisement Monitor API. > > > > - Add org.bluez.Error.Failed to RegisterMonitor() method. > > > > - Add more description about the usage of RegisterMonitor() and > > > > UnregisterMonitor() methods. > > > > - Add description about the ranges for the fields in property > > > > RSSIThresholdsAndTimers. > > > > > > > > Reviewed-by: Yun-Hao Chung <howardchung@xxxxxxxxxx> > > > > Reviewed-by: Manish Mandlik <mmandlik@xxxxxxxxxxxx> > > > > --- > > > > > > > > doc/advertisement-monitor-api.txt | 34 +++++++++++++++++++++++-------- > > > > 1 file changed, 25 insertions(+), 9 deletions(-) > > > > > > > > diff --git a/doc/advertisement-monitor-api.txt b/doc/advertisement-monitor-api.txt > > > > index 74adbfae9..e09b6fd25 100644 > > > > --- a/doc/advertisement-monitor-api.txt > > > > +++ b/doc/advertisement-monitor-api.txt > > > > @@ -49,7 +49,7 @@ Properties string Type [read-only] > > > > org.bluez.AdvertisementMonitorManager1 for the available > > > > options. > > > > > > > > - (Int16, Uint16, Int16, Uint16) RSSIThreshholdsAndTimers [read-only, optional] > > > > + (Int16, Uint16, Int16, Uint16) RSSIThresholdsAndTimers [read-only, optional] > > > > > > > > This contains HighRSSIThreshold, HighRSSIThresholdTimer, > > > > LowRSSIThreshold, LowRSSIThresholdTimer in order. The > > > > @@ -66,7 +66,11 @@ Properties string Type [read-only] > > > > RSSIs of the received advertisement(s) during > > > > LowRSSIThresholdTimer do not reach LowRSSIThreshold. > > > > > > > > - array{(uint8, uint8, string)} Patterns [read-only, optional] > > > > + The valid range of a RSSI is -127 to +20 dBm while 127 > > > > + dBm indicates unset. The valid range of a timer is 1 to > > > > + 300 seconds while 0 indicates unset. > > > > + > > > > + array{(uint8, uint8, array{byte})} Patterns [read-only, optional] > > > > > > > > If Type is set to 0x01, this must exist and has at least > > > > one entry in the array. > > > > @@ -80,8 +84,9 @@ Properties string Type [read-only] > > > > See https://www.bluetooth.com/specifications/ > > > > assigned-numbers/generic-access-profile/ for > > > > the possible allowed value. > > > > - string content_of_pattern > > > > - This is the value of the pattern. > > > > + array{byte} content_of_pattern > > > > + This is the value of the pattern. The maximum > > > > + length of the bytes is 31. > > > > > > > > Advertisement Monitor Manager hierarchy > > > > ======================================= > > > > @@ -91,20 +96,31 @@ Object path /org/bluez/{hci0,hci1,...} > > > > > > > > Methods void RegisterMonitor(object application) > > > > > > > > - This registers a hierarchy of advertisement monitors. > > > > + This registers the root path of a hierarchy of > > > > + advertisement monitors. > > > > The application object path together with the D-Bus > > > > system bus connection ID define the identification of > > > > the application registering advertisement monitors. > > > > + Once a root path is registered by a client via this > > > > + method, the client can freely expose/unexpose > > > > + advertisement monitors without re-registering the root > > > > + path again. After use, the client should call > > > > + UnregisterMonitor() method to invalidate the > > > > + advertisement monitors. > > > > > > > > Possible errors: org.bluez.Error.InvalidArguments > > > > org.bluez.Error.AlreadyExists > > > > + org.bluez.Error.Failed > > > > > > > > void UnregisterMonitor(object application) > > > > > > > > - This unregisters advertisement monitors that have been > > > > - previously registered. The object path parameter must > > > > - match the same value that has been used on > > > > - registration. > > > > + This unregisters a hierarchy of advertisement monitors > > > > + that has been previously registered. The object path > > > > + parameter must match the same value that has been used > > > > + on registration. Upon unregistration, the advertisement > > > > + monitor(s) should expect to receive Release() method as > > > > + the signal that the advertisement monitor(s) has been > > > > + deactivated. > > > > > > > > Possible errors: org.bluez.Error.InvalidArguments > > > > org.bluez.Error.DoesNotExist > > > > -- > > > > 2.26.2 > > > > > > These are still experimental so you will need to use EXPERIMENTAL > > > version when declaring the methods/properties so it only gets enabled > > > when the experimental flag is passed to bluetoothd. > > g_dbus_register_interface() does not allow to have all methods and > > properties marked as experimental, so at least SupportedFeatures > > should be non-experimental. > > You will need to do something like the following: > > if (g_dbus_get_flags() & G_DBUS_FLAG_ENABLE_EXPERIMENTAL) > > You can see how it was used in adv_manager: > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=d6e9539e31c6bb5afd39ec6f09c518d232e6345d > Thanks for the pointer. Please see v4 for the changes. > > > > > > > > > -- > > > Luiz Augusto von Dentz > > > > Thanks, > > Miao > > > > -- > Luiz Augusto von Dentz Regards, Miao