Starts the SWD transaction.

        Steps for a Read Transaction:
          1.  First phase in which the request is sent.
          2.  Second phase in which an ACK is received.  This phase consists of
              three bits. An OK response has the value ``1``.
          3.  Once the ACK is received, the data phase can begin.  Consists of
              ``32`` data bits followed by ``1`` parity bit calclulated based
              on all ``32`` data bits.
          4.  After the data phase, the interface must be clocked for at least
              eight cycles to clock the transaction through the SW-DP; this is
              done by reading an additional eight bits (eight clocks).

        Args:
          self (ReadRequest): the ``ReadRequest`` instance
          jlink (JLink): the ``JLink`` instance to use for write/read

        Returns:
          An ``Response`` instance.

def send(self, jlink):
        """Starts the SWD transaction.

        Steps for a Read Transaction:
          1.  First phase in which the request is sent.
          2.  Second phase in which an ACK is received.  This phase consists of
              three bits. An OK response has the value ``1``.
          3.  Once the ACK is received, the data phase can begin.  Consists of
              ``32`` data bits followed by ``1`` parity bit calclulated based
              on all ``32`` data bits.
          4.  After the data phase, the interface must be clocked for at least
              eight cycles to clock the transaction through the SW-DP; this is
              done by reading an additional eight bits (eight clocks).

        Args:
          self (ReadRequest): the ``ReadRequest`` instance
          jlink (JLink): the ``JLink`` instance to use for write/read

        Returns:
          An ``Response`` instance.
        """
        ack = super(ReadRequest, self).send(jlink)

        # Write the read command, then read the data and status.
        jlink.swd_write32(0x0, 0x0)
        jlink.swd_write8(0xFC, 0x0)
        status = jlink.swd_read8(ack) & 7
        data = jlink.swd_read32(ack + 3)

        if status == Response.STATUS_ACK:
            # Check the parity
            parity = jlink.swd_read8(ack + 35) & 1
            if util.calculate_parity(data) != parity:
                return Response(-1, data)

        return Response(status, data)