Starts the SWD transaction.

        Steps for a Write 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.  Everytime the SWD IO may change directions, a turnaround phase is
              inserted.  For reads, this happens after the data phase, while
              for writes this happens after between the acknowledge and data
              phase, so we have to do the turnaround before writing data.  This
              phase consists of two bits.
          4.  Write the data and parity bits.

        Args:
          self (WriteRequest): the ``WriteRequest`` 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 Write 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.  Everytime the SWD IO may change directions, a turnaround phase is
              inserted.  For reads, this happens after the data phase, while
              for writes this happens after between the acknowledge and data
              phase, so we have to do the turnaround before writing data.  This
              phase consists of two bits.
          4.  Write the data and parity bits.

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

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

        # Turnaround phase for write.
        jlink.swd_write(0x0, 0x0, 2)

        # Write the data and the parity bits.
        jlink.swd_write32(0xFFFFFFFF, self.data)
        jlink.swd_write8(0xFF, util.calculate_parity(self.data))
        return Response(jlink.swd_read8(ack) & 7)