//Process tag ping void handleTagPing(string tagAddr, string readerAddr, int signal) { //Console.WriteLine("{0} Tag: {1}, Signal: {2}, Reader: {3}", DateTime.Now, tagAddr, signal, readerAddr); bgWorker.ReportProgress(0, string.Format("{0} Tag: {1}, Signal: {2}, Reader: {3}", DateTime.Now, tagAddr, signal, readerAddr)); TagCollection currTag = new TagCollection(); //Go through each tag already in the list bool foundTag = false; foreach (TagCollection tagCollectionItem in tagPings) { //If this tag is already in the list if (tagCollectionItem.tagAddr == tagAddr) { foundTag = true; currTag = tagCollectionItem; //bgWorker.ReportProgress(0, "Allrady have tag in list"); } } //If do not already have the tag in the list if (foundTag == false) { //Add the tag to the list TagCollection tagCollectionItem = new TagCollection(); tagCollectionItem.tagAddr = tagAddr; tagCollectionItem.firstSeen = DateTime.UtcNow; tagPings.Add(tagCollectionItem); //Save current tag item currTag = tagCollectionItem; //bgWorker.ReportProgress(0, "Added tag to list"); } TagReaderCollection currReader = new TagReaderCollection(); //Go through all readers already saved for this tag bool foundReader = false; foreach (TagReaderCollection reader in currTag.readers) { //If this reader is already in the list if (reader.readerAddr == readerAddr) { foundReader = true; currReader = reader; //bgWorker.ReportProgress(0, "Already have reader in list"); } } //If do not already have the reader in the list if (foundReader == false) { //Add the reader to the list TagReaderCollection tagReaderCollectionItem = new TagReaderCollection(); tagReaderCollectionItem.readerAddr = readerAddr; currTag.readers.Add(tagReaderCollectionItem); //Save current reader item currReader = tagReaderCollectionItem; //bgWorker.ReportProgress(0, "Added reader to list"); } //Save/update signal for the reader currReader.signal = signal; }