示例#1
0
        private void OpenAreaExchange(uint accessPwd, bool secured, PasswordLevel pwdLevel, uint password)
        {
            BitBuffer bb;

            NurApi.CustomExchangeParams   xch;
            NurApi.CustomExchangeResponse resp;
            int respLen;

            List <BitEntry> entries = new List <BitEntry>();

            /* Values composed as defined by the SL900A specification. */
            entries.Add(BuildEntry(ADD_PARAMETER, PwdLevelToUint(pwdLevel), PWD_LEVELBITS));
            entries.Add(BuildEntry(ADD_PARAMETER, password, PASSWORDBITS));

            bb = BuildCommand(CMD_OPENAREA, entries);
            /* Zero length; get possible error. */
            xch = BuildDefault(bb, 0, false, false);

            resp    = hApi.CustomExchangeSingulated(password, secured, NurApi.BANK_EPC, 32, epc.Length * 8, epc, xch);
            respLen = resp.tagBytes.Length;
            if (resp.error != NurApiErrors.NUR_NO_ERROR)
            {
                if (respLen >= MIN_ERROR_RESP_LENGTH)
                {
                    InterpretedException("Open area", resp);
                }
                DoException("Open area", resp);
            }
        }
        private PasswordLevel CreateIfNotExistsOrGet(PasswordLevels level)
        {
            var name          = Enum.GetName(typeof(PasswordLevels), level);
            var passwordLevel = Repository.GetSet <PasswordLevel>().FirstOrDefault(p => p.Name.ToLower().Equals(name.ToLower()));

            if (passwordLevel == null)
            {
                passwordLevel      = new PasswordLevel();
                passwordLevel.Name = name;
                Repository.Add(passwordLevel);
            }
            return(passwordLevel);
        }
示例#3
0
        /// <summary>
        /// Convert a password level enumeration to a 32-bit unsigned integer.
        /// </summary>
        /// <param name="level">Password level as defined by <see cref="PasswordLevel"/>.</param>
        /// <returns>32-bit unsigned integer represeting the password level parameter to the tag.</returns>
        public uint PwdLevelToUint(PasswordLevel level)
        {
            switch (level)
            {
            case PasswordLevel.System: return(PWD_LEVEL_SYSTEM);

            case PasswordLevel.Application: return(PWD_LEVEL_APP);

            default: break;
            }

            /* Measurement level. */
            return(PWD_LEVEL_MEAS);
        }