using System; using ln.skyscanner.entities; using ln.types; using ln.snmp; using ln.logging; using ln.snmp.types; using System.Drawing; using ln.skyscanner.services; namespace ln.skyscanner.checks { public class Mimosa : SkyCheck { public Mimosa() :base("mimosa") {} public override void Check(CheckService checkService, ref SkyCheckState checkState, Node node) { MimosaCheckState mimosaCheckState = checkState as MimosaCheckState; foreach (URI snmpUri in node.FindURIs("snmp")) { try { using (SnmpInterface snmp = SnmpInterface.FromURI(snmpUri, checkService.SNMPEngine)) { Sequence[][] sigData = snmp.snmpWalk(new string[] { "1.3.6.1.4.1.43356.2.1.2.6.1.1.3", // Signal Level "1.3.6.1.4.1.43356.2.1.2.6.1.1.5", // SNR }); for (int n = 0; n < 4; n++) { if ((sigData.Length <= n)) break; double sig = (sigData[n][0].Items[1] as Integer).LongValue / 10.0; double snr = (sigData[n][1].Items[1] as Integer).LongValue / 10.0; node.WritePerformanceValue(checkService.PerformanceValueService, Name, String.Format("ptp_rx_pwr_{0}",n), sig, -75.0, 0, -80.0, 0); node.WritePerformanceValue(checkService.PerformanceValueService, Name, String.Format("ptp_rx_snr_{0}",n), snr, 12, 99, 8, 99); } } break; } catch (Exception e) { Logging.Log(LogLevel.ERROR, "Exception caught in Mimosa(SkyCheck): {0}", e); Logging.Log(e); } } } public override bool IsValid(Node node) { return (node.Vendor != null) && node.Vendor.Equals("mimosa"); } public override SkyCheckState PrepareCheckState(CheckService skyChecker, Node node) { return new MimosaCheckState(this, node); } class MimosaCheckState : SkyCheckState { public dVdT RXRate { get; private set; } public dVdT TXRate { get; private set; } public MimosaCheckState(SkyCheck skyCheck, Node node) : base(skyCheck, node) { RXRate = new dVdT(); TXRate = new dVdT(); } private MimosaCheckState() { } } } }