title: BlueZ example gatt server
body: <p>I'm learning about BlueZ and BLE. In the bluez/test directory there is a python 'example gatt server'. I've read the code and almost understood how it works, but something is not clear. For example there's this method which notifies when a characteristic's value changes (in this example is the battery level value):</p>
  
  <pre><code>    def notify_battery_level(self):
      if not self.notifying:
          return
      self.PropertiesChanged(
              GATT_CHRC_IFACE,
              { 'Value': [dbus.Byte(self.battery_lvl)] }, [])
  </code></pre>
  
  <p>The method PropertiesChanged is so defined:</p>
  
  <pre><code>@dbus.service.signal(DBUS_PROP_IFACE,
                       signature='sa{sv}as')
  def PropertiesChanged(self, interface, changed, invalidated):
      pass
  </code></pre>
  
  <p>I'm starting advertising and running this example, then i'm using the BLE scanner app on my smartphone for reading the characteristic (the battery level in this case). Well, the self.battery_lvl is an integer number (24 for example), but on ble scanner as the value of characteristic i see "24 % battery level". The problem is that nowhere in the code is added '% battery level' to the self.battery_lvl (simply 24). So where are this additional informations added?
  Sorry for my english. If you need additional informations please tell me</p>