Exemplo n.º 1
0
        public static CID DecodeCID(byte[] response)
        {
            if (response?.Length != 16)
            {
                return(null);
            }

            var cid = new CID
            {
                Manufacturer        = response[0],
                DeviceType          = (byte)(response[1] & 0x03),
                ProductRevision     = response[9],
                ProductSerialNumber = Swapping.Swap(BitConverter.ToUInt32(response, 10)),
                ManufacturingDate   = response[14],
                CRC = (byte)((response[15] & 0xFE) >> 1)
            };

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

            return(cid);
        }
Exemplo n.º 2
0
        public static string PrettifyCID(CID cid)
        {
            if (cid == null)
            {
                return(null);
            }

            var sb = new StringBuilder();

            sb.AppendLine("MultiMediaCard Device Identification Register:");
            sb.AppendFormat("\tManufacturer: {0}", VendorString.Prettify(cid.Manufacturer)).AppendLine();

            switch (cid.DeviceType)
            {
            case 0:
                sb.AppendLine("\tRemovable device");

                break;

            case 1:
                sb.AppendLine("\tBGA device");

                break;

            case 2:
                sb.AppendLine("\tPOP device");

                break;
            }

            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();
            string year = "";

            switch (cid.ManufacturingDate & 0x0F)
            {
            case 0:
                year = "1997 or 2013";

                break;

            case 1:
                year = "1998 or 2014";

                break;

            case 2:
                year = "1999 or 2015";

                break;

            case 3:
                year = "2000 or 2016";

                break;

            case 4:
                year = "2001 or 2017";

                break;

            case 5:
                year = "2002 or 2018";

                break;

            case 6:
                year = "2003 or 2019";

                break;

            case 7:
                year = "2004 or 2020";

                break;

            case 8:
                year = "2005 or 2021";

                break;

            case 9:
                year = "2006 or 2022";

                break;

            case 10:
                year = "2007 or 2023";

                break;

            case 11:
                year = "2008 or 2024";

                break;

            case 12:
                year = "2009 or 2025";

                break;

            case 13:
                year = "2010";

                break;

            case 14:
                year = "2011";

                break;

            case 15:
                year = "2012";

                break;
            }

            sb.AppendFormat("\tDevice manufactured month {0} of {1}", (cid.ManufacturingDate & 0xF0) >> 4, year).
            AppendLine();

            sb.AppendFormat("\tCID CRC: 0x{0:X2}", cid.CRC).AppendLine();

            return(sb.ToString());
        }