<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def probe_async(self, callback):
 """Send advertisements for all connected devices. Args: callback (callable):
 A callback for when the probe operation has completed. callback should have signature callback(adapter_id, success, failure_reason) where: success: bool failure_reason: None if success is True, otherwise a reason for why we could not probe """


        def _on_finished(_name, control_info, exception):
            if exception is not None:
                callback(self.id, False, str(exception))
                return

            self._control_info = control_info

            try:
                info = {
                    'connection_string': "direct",
                    'uuid': control_info.uuid,
                    'signal_strength': 100
                }

                self._trigger_callback('on_scan', self.id, info, self.ExpirationTime)
            finally:
                callback(self.id, True, None)

        self._control_thread.command(JLinkControlThread.FIND_CONTROL, _on_finished, self._device_info.ram_start, self._device_info.ram_size)