private ITagPageContents GetPage(int pageIndex) { int pageStartOffset = pageIndex * Config.PageDataSize; TagPageContents page = new TagPageContents() { PageIndex = pageIndex, ByteArray = ContentByteArray.SafeSubArray(pageStartOffset, Config.PageDataSize) }; return(page); }
protected string PerformReadPagesAction(IProviderActionBase <NullObj, ITagPageContents[]> action, int startPageIdx, int numPages) { List <ITagPageContents> pageContentsList = new List <ITagPageContents>(); // initialize the result to the empty array. action.ResultValue = pageContentsList.ToArray(); if (!BaseState.IsOnline) { return("Reader is not online"); } if (!privateState.TagIsPresent) { return("Tag (or Antenna) is not marked as present"); } foreach (int pageIdx in Enumerable.Range(startPageIdx, numPages)) { if (pageIdx < 0 || pageIdx >= CurrentConfig.NumPages) { action.ResultValue = pageContentsList.ToArray(); return(Fcns.CheckedFormat("Reached invalid page at index:{0} [limit:{1}]", pageIdx, privateState.Config.NumPages)); } int pageStartOffset = pageIdx * privateState.Config.PageDataSize; ITagPageContents pageContents = new TagPageContents() { PageIndex = pageIdx, ByteArray = privateState.ContentByteArray.SafeSubArray(pageStartOffset, privateState.Config.PageDataSize) }; pageContentsList.Add(pageContents); if (privateState.Config.PageReadDelayTimeSpan != TimeSpan.Zero) { System.Threading.Thread.Sleep(privateState.Config.PageReadDelayTimeSpan); } } action.ResultValue = pageContentsList.ToArray(); return(String.Empty); }