title: Can not UnregisterAdvertisement() with the Beacon advertisement
body: <p>I'm using BlueZ and Python to implement Bluetooth service. We have the requirement to be able to enable and disable the service and the Beacon. The idea is, we listen to some MQTT messages. If the message is to enable or disable the service/Beacon, we'll call the function to enable or disable it.
  Here is the code of the advertisement:</p>
  <pre><code>class BluetoothAdvert(Advertisement):
  def __init__(self, bus, index, name, MacAddress):
      Advertisement.__init__(self, bus, index, 'peripheral')
  
      if 0 == index:
          self.add_service_uuid('1234')
          self.add_manufacturer_data(0x1234, '123456789012')
      elif 1 == index:
          frame_type = [0x00]
          power = [0x00]
          id = [0x25, 0x33, 0x96, 0x2B, 0x17, 0xCD, 0xA2, 0x53, 
                0x77, 0x98, 0x22, 0x2A, 0x89, 0x12, 0x36, 0xF5]
          beacon_data = frame_type + power + id
          self.add_service_uuid('FEAA')
          self.add_service_data('FEAA', beacon_data)
  </code></pre>
  <p>Here is the code of the enable/disable the bluetooth service and the beacon advertisement:</p>
  <pre><code>def enableBluetoothService():
      service_manager.RegisterApplication(
          bluetooth_service.get_path(), 
          {},
          reply_handler=reg_callback, 
          error_handler=reg_error_callback)
      advert_manager.RegisterAdvertisement(
          bluetooth_advert.get_path(), 
          {},
          reply_handler=reg_callback, 
          error_handler=reg_error_callback)
  
  
  def disableBluetoothService():
      service_manager.UnregisterApplication(
          bluetooth_service.get_path(),
          reply_handler=unreg_callback_func, 
          error_handler=unreg_error_callback)
      advert_manager.UnregisterAdvertisement(bluetooth_advert)
  
  
  def enableBeacon():
      advert_manager.RegisterAdvertisement(
          beacon_advert.get_path(), 
          {},
          reply_handler=reg_advert_callback, 
          error_handler=reg_advert_error_callback)
  
  
  def disableBeacon():
      advert_manager.UnregisterAdvertisement(beacon_advert)
  </code></pre>
  <p>Here is the main function:</p>
  <pre><code>def main():
  
      '''
      Other code ...
      '''
      
      service_manager.RegisterApplication(
          bluetooth_service.get_path(), 
          {},
          reply_handler=reg_callback, 
          error_handler=reg_error_callback)
  
      bluetooth_advert = BluetoothAdvert(bus, 0)
      beacon_advert = BluetoothAdvert(bus, 1)
      advert_manager.RegisterAdvertisement(
          bluetooth_advert.get_path(), 
          {},
          reply_handler=reg_advert_callback, 
          error_handler=reg_advert_error_callback)
      advert_manager.RegisterAdvertisement(
          beacon_advert.get_path(), 
          {},
          reply_handler=reg_advert_callback, 
          error_handler=reg_advert_error_callback)
  
      '''
      Other code ...
      '''
  </code></pre>
  <p>For the testing, it seems we can call enableBluetoothService() and disableBluetoothService() many times. The bluetooth service will be enabled or disabled. Is there any problems by calling enableBluetoothService() and disableBluetoothService() many times?</p>
  <p>By calling UnregisterAdvertisement() with some data seems okay. But we can't call disableBeacon() then call enableBeacon(). Otherwise, we'll get &quot;Failed to register advertisement: org.bluez.Error.AlreadyExists: Already Exists&quot;. Why can't we call UnregisterAdvertisement() with the Beacon advertisement?</p>