def request_response(self):
        """Verify that a card is still present and get its operating mode.

        The Request Response command returns the current operating
        state of the card. The operating state changes with the
        authentication process, a card is in Mode 0 after power-up or
        a Polling command, transitions to Mode 1 with Authentication1,
        to Mode 2 with Authentication2, and Mode 3 with any of the
        card issuance commands. The :meth:`request_response` method
        returns the mode as an integer.

        Command execution errors raise
        :exc:`~nfc.tag.TagCommandError`.

        """
        a, b, e = self.pmm[3] & 7, self.pmm[3] >> 3 & 7, self.pmm[3] >> 6
        timeout = 302E-6 * (b + 1 + a + 1) * 4**e
        data = self.send_cmd_recv_rsp(0x04, '', timeout, check_status=False)
        if len(data) != 1:
            log.debug("insufficient data received from tag")
            raise tt3.Type3TagCommandError(tt3.DATA_SIZE_ERROR)
        return data[0]
Verify that a card is still present and get its operating mode.

        The Request Response command returns the current operating
        state of the card. The operating state changes with the
        authentication process, a card is in Mode 0 after power-up or
        a Polling command, transitions to Mode 1 with Authentication1,
        to Mode 2 with Authentication2, and Mode 3 with any of the
        card issuance commands. The :meth:`request_response` method
        returns the mode as an integer.

        Command execution errors raise
        :exc:`~nfc.tag.TagCommandError`.