code: def transmit(self, bytes, protocol=None):
          
          Observable.setChanged(self)
          Observable.notifyObservers(self,
                                     CardConnectionEvent(
                                         'command',
                                         [bytes, protocol]))
          data, sw1, sw2 = self.doTransmit(bytes, protocol)
          Observable.setChanged(self)
          Observable.notifyObservers(self,
                                     CardConnectionEvent(
                                         'response',
                                         [data, sw1, sw2]))
          if self.errorcheckingchain is not None:
              self.errorcheckingchain[0](data, sw1, sw2)
          return data, sw1, sw2
docs: Transmit an apdu. Internally calls doTransmit() class method
          and notify observers upon command/response APDU events.
          Subclasses must override the doTransmit() class method.
  
          @param bytes:      list of bytes to transmit
  
          @param protocol:   the transmission protocol, from
                      CardConnection.T0_protocol,
                      CardConnection.T1_protocol, or
                      CardConnection.RAW_protocol