def METHOD_NAME(self, wait=True):
    # Receive a packet from the sender, including sending an ACK.
    #
    # Returns a tuple of the 16-bit sender id and the sensor data payload.
    #
    # This function should be called very frequently from the main loop (at
    # least every ACK_DELAY_MS milliseconds), to avoid not sending ACKs in time.
    #
    # If 'wait' argument is True (default), the function blocks indefinitely
    # until a packet is received. If False then it will return None
    # if no packet is available.
    #
    # Note that because we called start_recv(continuous=True), the modem
    # will keep receiving on its own - even if when we call send() to
    # send an ACK.
    while True:
        rx = self.modem.poll_recv(rx_packet=self.rx_packet)
        if isinstance(rx, RxPacket):  # value will be True or an RxPacket instance
            decoded = self._handle_rx(rx)
            if decoded:
                return decoded  # valid LoRa packet and valid for this application
        if not wait:
            return None
        # Otherwise, wait for an IRQ (or have a short sleep) and then poll recv again
        # (receiver is not a low power node, so don't bother with sleep modes.)
        if self.will_irq:
            while not self.modem.irq_triggered():
                machine.idle()
        else:
            time.sleep_ms(1)