code: def _on_characteristics_probed(self, success, result, failure_reason, context):
          
          connection_id = context['connection_id']
  
          if not success:
              self._logger.error("Error while probing characteristics to the device, err=%s", failure_reason)
              context['failure_reason'] = "Error while probing characteristics"
              self.disconnect_async(connection_id, self._on_connection_failed)
              return
  
          context['services'][TileBusService] = {
              characteristic: characteristic for characteristic in result['characteristics']
          }
  
          total_time = time.time() - context['connect_time']
          self._logger.info("Total time to connect to device: %.3f", total_time)
  
          self.connections.finish_connection(
              connection_id,
              success,
              failure_reason
          )
docs: Callback called when the characteristics has been probed.
          It is executed in the baBLE working thread: should not be blocking.
  
          Args:
              success (bool): A bool indicating that the operation is successful or not
              result (dict): Information probed (if successful)
                - characteristics (list): The list of characteristics probed (bable_interface.Characteristic instances)
              failure_reason (any): An object indicating the reason why the operation is not successful (else None)