'Send SNAP packet over serial conneciton (automatically encodes)'

def send(self):

    self._encode()
    self._sendBytes()
    if printOutgoing:
        self.printPacket('Outgoing')
    ack = getPacket(serialPort)
    if (not ack._check()):
        raise _SNAPError('ACK    packet    checksum    failed')
    ack._decode()
    if ((ack.ACK == 1) and (ack.SAB == self.DAB)):
        return
    else:
        self.printPacket('Failed')
        ack.printPacket('Failed    ACK')
        if ((ack.ACK != 1) and (ack.SAB == self.DAB)):
            raise _SNAPError('ACK    expected,    packet    is    not    an    ACK')
        elif ((ack.SAB != self.DAB) and (ack.ACK == 1)):
            raise _SNAPError('ACK    packet    is    not    from    the    expected    module')
        else:
            raise _SNAPError("ACK    expected,    packet    is    not    an    ACK    and    it    is    from    the    wrong    module    (it's    all    gone    very    wrong)")
