Exemplo n.º 1
0
        public I2CError readSessionRegisters(byte I2Caddress, TagType type, out byte[] readRegisters, out String log)
        {
            log        = "";
            this.error = I2CError.Undefined;
            int numRegs = Enum.GetNames(typeof(SessionReg)).Length;

            var read = api.readAllSessionRegister(I2Caddress, type); //TODO:Refactor and check tag type

            readRegisters = new byte[numRegs];

            if (read != null && read.Count == numRegs)
            {
                this.error = I2CError.Success;
            }


            for (var i = 0; i < numRegs; i++)
            {
                readRegisters[i] = read[i].data[0];
                setFlag(read[i]);
                log += Environment.NewLine + read[i].log;
                if (read[i].error == I2CError.Undefined || read[i].error != I2CError.Success)
                {
                    error = read[i].error;
                }
                i++;
            }
            return(error);
        }
Exemplo n.º 2
0
        String GetTextError(I2CError error)
        {
            String sError;

            switch (error)
            {
            case I2CError.Success:
                sError = "I²C Success";
                break;

            case I2CError.Unknown:
                sError = "Unknown error condition";
                break;

            case I2CError.Nak:
                sError = "No acknowledge (NAK)";
                break;

            case I2CError.BusError:
                sError = "I²C bus error";
                break;

            case I2CError.NakAfterSla:
                sError = "NAK received after SLA+W or SLA+R";
                break;

            case I2CError.ArbitrationLost:
                sError = "Arbitration lost";
                break;

            case I2CError.TimeOut:
                sError = "Transaction timed out";
                break;

            case I2CError.InvalidRequest:
                sError = "Invalid HID_I2C Request";
                break;

            case I2CError.InvalidParameters:
                sError = "Invalid parameters";
                break;

            case I2CError.PartialCompleted:
                sError = "Partial transfer completed";
                break;

            case I2CError.NoHw:
                sError = "No hardware connected";
                break;

            default:
                sError = "Undefined result";
                break;
            }

            return(sError);
        }
Exemplo n.º 3
0
        // Writes the session registers
        public I2CError writeSessionRegisters(byte I2Caddress, byte[] writeRegisters, out String log)
        {
            log        = "";
            this.error = I2CError.Undefined;
            var write = api.writeAllSessionRegister(I2Caddress, writeRegisters, TagType.NTAG1K);

            this.error = write.error;
            setFlag(write);
            return(error);
        }
Exemplo n.º 4
0
        public I2CError writeSessionRegister(byte I2Caddress, byte subAddress, byte writeRegister, out String log)
        {
            log        = "";
            this.error = I2CError.Undefined;
            var write = api.writeSessionRegister(I2Caddress, TagType.NTAG1K, subAddress, writeRegister);

            log = write.log;
            setFlag(write);
            return(this.error);
        }
Exemplo n.º 5
0
        public void testReadAllMemory_2kTag()
        {
            //arrange
            I2CError expectedError = I2CError.Success;

            //act
            List <I2CData> actualOutputs = ntag.readAllMemory(TagType.NTAG2K, i2cAdress);

            //assert
            foreach (var actualRead in actualOutputs)
            {
                Assert.Equal(expectedError, actualRead.error);
                Assert.True(actualRead.data.Length > 0);
            }
        }
Exemplo n.º 6
0
        public void readAllConfigRegisters_1KTag()
        {
            //arrange
            I2CError expectedError = I2CError.Success;


            //act
            var actualRegister = ntag.readAllConfigRegister(i2cAdress, TagType.NTAG1K);

            //assert
            foreach (var data in actualRegister.data)
            {
                Debug.Write(" 0x" + data.ToString("X2"));
            }
            Assert.Equal(expectedError, actualRegister.error);
        }
Exemplo n.º 7
0
        public void writeAllSessionRegisters_2KTag()
        {
            //arrange
            int      sessionRegCount = Enum.GetNames(typeof(SessionReg)).Length;
            I2CError expectedError   = I2CError.Success;
            int      blockSize       = 16;

            byte[] mockUpRegisters = new byte[16];
            int    i = 0;

            mockUpRegisters[(int)ConfigReg.NC_REG]            = Utils.HexToByte("03");
            mockUpRegisters[(int)ConfigReg.LAST_NDEF_BLOCK]   = Utils.HexToByte("00");
            mockUpRegisters[(int)ConfigReg.SRAM_MIRROR_BLOCK] = Utils.HexToByte("f8");
            mockUpRegisters[(int)ConfigReg.WDT_LS]            = Utils.HexToByte("48");
            mockUpRegisters[(int)ConfigReg.WDT_MS]            = Utils.HexToByte("08");
            mockUpRegisters[(int)ConfigReg.I2C_CLOCK_STR]     = Utils.HexToByte("01");
            mockUpRegisters[(int)ConfigReg.REG_LOCK]          = Utils.HexToByte("00");

            for (int j = 7; j < blockSize; j++)
            {
                mockUpRegisters[j] = (byte)0;
            }

            //act
            var actualWritten = ntag.writeAllSessionRegister(i2cAdress, mockUpRegisters, TagType.NTAG2K);
            var readOutput    = ntag.readAllSessionRegister(i2cAdress, TagType.NTAG2K);

            byte[] actualRegisters = new byte[sessionRegCount];
            for (i = 0; i < sessionRegCount; i++)
            {
                actualRegisters[i] = readOutput[i].data[0];
            }

            //assert
            Assert.Equal(expectedError, actualWritten.error);
            for (i = 0; i < sessionRegCount; i++)
            {
                Assert.Equal(expectedError, readOutput[i].error);
                Assert.True(readOutput[i].data.Length == 1);
                Assert.Equal(mockUpRegisters[i], readOutput[i].data[0]);
            }
        }
Exemplo n.º 8
0
        public void testReadAllMemory_1kTag()
        {
            //arrange
            I2CError expectedError = I2CError.Success;

            //act
            List <I2CData> actualOutputs = ntag.readAllMemory(TagType.NTAG1K, i2cAdress);

            //assert
            foreach (var actualRead in actualOutputs)
            {
                foreach (var data in actualRead.data)
                {
                    Debug.Write(" 0x" + data.ToString("X2"));
                }
                Debug.WriteLine("");
                Assert.Equal(expectedError, actualRead.error);
                Assert.True(actualRead.data.Length > 0);
            }
        }
Exemplo n.º 9
0
        public void writeAllConfigRegisters_1KTag()
        {
            //arrange
            int      configRegCount = Enum.GetNames(typeof(SessionReg)).Length;
            I2CError expectedError  = I2CError.Success;
            int      blockSize      = 16;

            byte[] mockUpRegisters = new byte[16];
            int    i = 0;

            mockUpRegisters[(int)ConfigReg.NC_REG]            = Utils.HexToByte("41");
            mockUpRegisters[(int)ConfigReg.LAST_NDEF_BLOCK]   = Utils.HexToByte("00");
            mockUpRegisters[(int)ConfigReg.SRAM_MIRROR_BLOCK] = Utils.HexToByte("f8");
            mockUpRegisters[(int)ConfigReg.WDT_LS]            = Utils.HexToByte("48");
            mockUpRegisters[(int)ConfigReg.WDT_MS]            = Utils.HexToByte("08");
            mockUpRegisters[(int)ConfigReg.I2C_CLOCK_STR]     = Utils.HexToByte("01");
            mockUpRegisters[(int)ConfigReg.REG_LOCK]          = Utils.HexToByte("00");

            for (int j = 7; j < blockSize; j++)
            {
                mockUpRegisters[j] = (byte)0;
            }

            //act
            var actualWritten = ntag.writeAllConfigRegister(i2cAdress, mockUpRegisters, TagType.NTAG1K);
            var readOutput    = ntag.readAllConfigRegister(i2cAdress, TagType.NTAG1K);



            //assert
            Assert.Equal(expectedError, actualWritten.error);
            Assert.Equal(expectedError, readOutput.error);
            for (i = 0; i < configRegCount; i++)
            {
                Debug.Write(" 0x" + readOutput.data[i].ToString("X2"));
                Assert.Equal(mockUpRegisters[i], readOutput.data[i]);
            }
        }
Exemplo n.º 10
0
        public void testWriteAllMemory_2KTag()
        {
            //arrange
            I2CError       expectedError = I2CError.Success;
            List <I2CData> read          = ntag.readAllMemory(TagType.NTAG2K, i2cAdress);

            byte[][] writeBytes = new byte[read.Count][];
            int      idx        = 0;

            foreach (var o in read)
            {
                writeBytes[idx] = o.data;
                idx++;
            }

            //act
            List <I2CData> actualOutputs = ntag.writeAllMemory(TagType.NTAG1K, i2cAdress, writeBytes);

            //assert
            foreach (var write in actualOutputs)
            {
                Assert.Equal(expectedError, write.error);
            }
        }