error setting Interval property of BLE thermometer
<p>I'm trying to set the Interval property of a BLE thermometer, and running into some issues.</p>

<p>I've tested setting properties such as the WimaxEnabled property in NetworkManager:</p>

<pre><code>$ gdbus call --system --dest org.freedesktop.NetworkManager \
--object-path /org/freedesktop/NetworkManager \
--method org.freedesktop.DBus.Properties.Set \
 "org.freedesktop.NetworkManager" "WimaxEnabled" "&lt;boolean false&gt;"
()

$ gdbus call --system --dest org.freedesktop.NetworkManager \
--object-path /org/freedesktop/NetworkManager \
--method org.freedesktop.DBus.Properties.Set \
"org.freedesktop.NetworkManager" "WimaxEnabled" "&lt;boolean true&gt;"
()
</code></pre>

<p>I can verify that these functions do indeed work as advertised.  When I try to set the property of the Interval, things get weird.  I can clear the Interval without an issue</p>

<pre><code>$bgdbus call --system --dest org.bluez \
--object-path /org/bluez/hci0/dev_00_07_80_A6_3A_CA \
--method org.freedesktop.DBus.Properties.Set \
"org.bluez.Thermometer1" "Interval" "&lt;uint16 0&gt;"
()
</code></pre>

<p>but trying to set the interval as any other value results in an error.  I've tried every possible uint16 value with the same result.</p>

<pre><code>$ gdbus call --system --dest org.bluez \
--object-path /org/bluez/hci0/dev_00_07_80_A6_3A_CA \
--method org.freedesktop.DBus.Properties.Set \
"org.bluez.Thermometer1" "Interval" "&lt;uint16 1&gt;"
Error: GDBus.Error:org.bluez.Error.InvalidArguments: Invalid arguments in method call
(According to introspection data, you need to pass 'ssv')
</code></pre>

<p>The Interval property is set up as a read/write</p>

<pre><code>$ gdbus introspect --system --dest org.bluez --object-path /org/bluez/hci0/dev_00_07_80_A6_3A_CA
node /org/bluez/hci0/dev_00_07_80_A6_3A_CA {
  interface org.freedesktop.DBus.Introspectable {
methods:
  Introspect(out s xml);
signals:
properties:
  };
  interface org.bluez.Device1 {
    methods:
  Disconnect();
  Connect();
  ConnectProfile(in  s UUID);
  DisconnectProfile(in  s UUID);
  Pair();
  CancelPairing();
signals:
properties:
  readonly s Address = '00:07:80:A6:3A:CA';
  readonly s Name = 'test';
  readwrite s Alias = 'test';
  readonly u Class;
  readonly q Appearance = 24585;
  readonly s Icon;
  readonly b Paired = true;
  readwrite b Trusted = false;
  readwrite b Blocked = false;
  readonly b LegacyPairing = false;
  readonly n RSSI;
  readonly b Connected = true;
  readonly as UUIDs = ['00001809-0000-1000-8000-00805f9b34fb'];
  readonly s Modalias;
  readonly o Adapter = '/org/bluez/hci0';
  };
  interface org.freedesktop.DBus.Properties {
methods:
  Get(in  s interface,
      in  s name,
      out v value);
  Set(in  s interface,
      in  s name,
      in  v value);
  GetAll(in  s interface,
         out a{sv} properties);
signals:
  PropertiesChanged(s interface,
                    a{sv} changed_properties,
                    as invalidated_properties);
properties:
  };
  interface org.bluez.Thermometer1 {
methods:
signals:
properties:
  readonly b Intermediate = false;
  readwrite q Interval = 0;
  readonly q Maximum = 0;
  readonly q Minimum = 0;
  };
};
</code></pre>

<p>I also wrote a C program to do this and have the exact same results, 0 works, every other value fails.  Anyone seen this before?  Have any suggestions?</p>

<p>EDIT:</p>

<p>As will invariably happen, I realize the problem soon after I post.  I think the Minimum and Maximum properties are the range of Interval.  Since both are set to 0, I obviously won't be able to set the Interval property to anything other than 0.</p>