/// <summary> /// Updates the info. /// </summary> /// <param name="hNur">The NUR module handler.</param> private void UpdateInfo(NurApi hNur) { bool outdated = false; treeView1.Nodes.Clear(); TreeNode node; TreeNode dllNode = treeView1.Nodes.Add("DLL Versions"); try { string fileVersion = hNur.GetFileVersion(); dllNode.Nodes.Add("NurApi.dll - " + fileVersion); dllNode.Nodes.Add("NurApiDotNet.dll - " + NurUtils.NurApiDotNetVersion); } catch (NurApiException ex) { AddExceptionNode(dllNode, ex, true); } if (hNur.IsConnected()) { TreeNode fwinfoNode = treeView1.Nodes.Add("FWINFO (parsed string)"); TreeNode structsNode = treeView1.Nodes.Add("Module settings (structs)"); try { NurApi.ReaderInfo readerInfo = hNur.GetReaderInfo(); tabPage1.Text = "Reader: " + readerInfo.name + ", " + readerInfo.GetVersionString(); DumpObject(structsNode, readerInfo, null); } catch (NurApiException ex) { AddExceptionNode(structsNode, ex, false); } try { DumpObject(structsNode, GetVersions(hNur), null); //DumpObject(structsNode, hNur.GetVersions(), null); } catch (NurApiException ex) { AddExceptionNode(structsNode, ex, false); } try { NurFwInfoParser fwinfo = new NurFwInfoParser(hNur.GetFWINFO()); foreach (KeyValuePair <string, string> entry in fwinfo.keypairs) { fwinfoNode.Nodes.Add(entry.Key + " = " + entry.Value); } } catch (NurApiException ex) { AddExceptionNode(fwinfoNode, ex, false); fwinfoNode.Expand(); outdated = true; } try { DumpObject(structsNode, hNur.GetDeviceCaps(), null); } catch (NurApiException ex) { AddExceptionNode(structsNode, ex, false); } try { DumpObject(structsNode, hNur.GetEthConfig(), null); } catch (NurApiException ex) { AddExceptionNode(structsNode, ex, false); } try { DumpObject(structsNode, hNur.GetModuleSetup(), null); } catch (NurApiException ex) { AddExceptionNode(structsNode, ex, false); } try { DumpObject(structsNode, hNur.GetSensorConfig(), null); } catch (NurApiException ex) { AddExceptionNode(structsNode, ex, false); } TreeNode regNode = treeView1.Nodes.Add("Regions"); int numRegions = 0; try { NurApi.ReaderInfo readerInfo = hNur.GetReaderInfo(); // Dump region infos for (int i = 0; i < readerInfo.numRegions; i++) { NurApi.RegionInfo ri = hNur.GetRegionInfo(i); DumpObject(regNode, ri, string.Format("{0}: {1}", i, ri.name)); numRegions++; } // Dump CustomHoptable try { NurApi.CustomHoptableEx customHoptableEx = hNur.GetCustomHoptableEx(); DumpObject(regNode, customHoptableEx, string.Format("{0}: {1}", NurApi.REGIONID_CUSTOM, "customHoptableEx")); numRegions++; } catch (NurApiException ex) { try { AddExceptionNode(regNode, ex, false); NurApi.CustomHoptable customHoptable = hNur.GetCustomHoptable(); DumpObject(regNode, customHoptable, string.Format("{0}: {1}", NurApi.REGIONID_CUSTOM, "customHoptable")); numRegions++; } catch (NurApiException ex2) { AddExceptionNode(regNode, ex2, false); } } } catch (NurApiException ex) { AddExceptionNode(structsNode, ex, true); } regNode.Text = string.Format("{0} ({1} pcs)", regNode.Text, numRegions); TreeNode antNode = treeView1.Nodes.Add("Antennas"); try { antNode.Nodes.Add("Selected - " + (hNur.SelectedAntenna == -1 ? "Auto" : hNur.SelectedAntenna.ToString())); antNode.Nodes.Add("Enabled - " + GetEnabledAntennas()); node = antNode.Nodes.Add("Reflected Powers"); if (MeasureReflectedPowers(hNur, node)) { antNode.Expand(); } } catch (NurApiException) { node = antNode.Nodes.Add("Can't get antenna settings"); node.ForeColor = System.Drawing.Color.Red; node.Expand(); } structsNode.Expand(); } else { tabPage1.Text = "No Connection"; } if (outdated) { node = treeView1.Nodes.Add("The NUR modules firmware might be outdated. Please check for updates."); node.ForeColor = System.Drawing.Color.Red; node.Nodes.Add("E-mail: [email protected]"); node.Expand(); } }
/// <summary> /// Measures the Reflected Powers from enabled antennas. /// </summary> /// <param name="hNur">The NUR module handler.</param> /// <param name="node">The TreeView node.</param> /// <returns>True is Poor Antenna Found</returns> bool MeasureReflectedPowers(NurApi hNur, TreeNode node) { // Measure Reflected Power int antenna = 0; int mask = hNur.AntennaMask; bool poorAntennaFound = true; if (mask > 0) { int tmpSelectdeAntenna = hNur.SelectedAntenna; while (mask > 0) { if ((mask & 1) != 0) { try { // Select Antenna hNur.SelectedAntenna = antenna; // Measure Reflected Power NurApi.RegionInfo regionInfo = hNur.GetRegionInfo(); hNur.GetReflectedPower(regionInfo.baseFrequency); // FW bug fix NurApi.ReflectedPowerInfo rpInfo = hNur.GetReflectedPower(); // Calculate Reflected Power double rf = Math.Sqrt((double)(rpInfo.iPart * rpInfo.iPart + rpInfo.qPart * rpInfo.qPart)); rf /= ((double)rpInfo.div); rf = Math.Log10(rf) * 20.0; if (Double.IsInfinity(rf)) { rf = -30; } if (rf < 0) { node.Nodes.Add(string.Format("Antenna {0}: Reflected Power {1:0.0} dBm", antenna, rf)); } else { TreeNode newNode = node.Nodes.Add( string.Format("Antenna {0}: Reflected Power {1:0.0} dBm.", antenna, rf)); newNode.ForeColor = System.Drawing.Color.Red; node.Expand(); poorAntennaFound = true; } } catch (NurApiException) { TreeNode newNode = node.Nodes.Add( string.Format("Antenna {0}: Could not measure the Reflected Power.", antenna)); if (!mhlDevice) { newNode.ForeColor = System.Drawing.Color.Red; node.Expand(); poorAntennaFound = true; } } } mask = mask >> 1; antenna++; } // Restore SelectedAntenna hNur.SelectedAntenna = tmpSelectdeAntenna; } else { TreeNode newNode = node.Nodes.Add("No eabled antennas!"); newNode.ForeColor = System.Drawing.Color.Red; poorAntennaFound = true; } return(poorAntennaFound); }