channels/smartcard: start splitting decoding from calling