code: def wait_callback(self, callback, msg_type=None, timeout=1.0):
          
          event = threading.Event()
  
          def cb(msg, **metadata):
              callback(msg, **metadata)
              event.set()
  
          self.add_callback(cb, msg_type)
          event.wait(timeout)
          self.remove_callback(cb, msg_type)
docs: Wait for a SBP message with a callback.
  
          Parameters
          ----------
          callback : fn
            Callback function
          msg_type : int | iterable
            Message type to register callback against. Default `None` means global callback.
            Iterable type adds the callback to all the message types.
          timeout : float
            Waiting period