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); }
/// <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); }