Пример #1
0
        public static CID DecodeCID(byte[] response)
        {
            if (response?.Length != 16)
            {
                return(null);
            }

            CID cid = new CID
            {
                Manufacturer        = response[0],
                ProductRevision     = response[8],
                ProductSerialNumber = BitConverter.ToUInt32(response, 9),
                ManufacturingDate   = (ushort)(((response[13] & 0x0F) << 4) + response[14]),
                CRC = (byte)((response[15] & 0xFE) >> 1)
            };

            byte[] tmp = new byte[2];
            Array.Copy(response, 1, tmp, 0, 2);
            cid.ApplicationID = StringHandlers.CToString(tmp);
            tmp = new byte[5];
            Array.Copy(response, 3, tmp, 0, 5);
            cid.ProductName = StringHandlers.CToString(tmp);

            return(cid);
        }
Пример #2
0
        public static string PrettifyCID(CID cid)
        {
            if (cid == null)
            {
                return(null);
            }

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("SecureDigital Device Identification Register:");
            sb.AppendFormat("\tManufacturer: {0}", VendorString.Prettify(cid.Manufacturer)).AppendLine();
            sb.AppendFormat("\tApplication ID: {0}", cid.ApplicationID).AppendLine();
            sb.AppendFormat("\tProduct name: {0}", cid.ProductName).AppendLine();
            sb.AppendFormat("\tProduct revision: {0:X2}.{1:X2}", (cid.ProductRevision & 0xF0) >> 4,
                            cid.ProductRevision & 0x0F).AppendLine();
            sb.AppendFormat("\tProduct serial number: {0}", cid.ProductSerialNumber).AppendLine();
            sb.AppendFormat("\tDevice manufactured month {0} of {1}", (cid.ManufacturingDate & 0xF00) >> 8,
                            (cid.ManufacturingDate & 0xFF) + 2000).AppendLine();
            sb.AppendFormat("\tCID CRC: 0x{0:X2}", cid.CRC).AppendLine();

            return(sb.ToString());
        }