diff --git a/checks/Mimosa.cs b/checks/Mimosa.cs new file mode 100644 index 0000000..825ad1e --- /dev/null +++ b/checks/Mimosa.cs @@ -0,0 +1,83 @@ +using System; +using ln.skyscanner.entities; +using ln.types; +using ln.snmp; +using ln.logging; +using ln.snmp.types; +using System.Drawing; + +namespace ln.skyscanner.checks +{ + public class Mimosa : SkyCheck + { + public Mimosa() + :base("mimosa") + {} + + public override void Check(SkyChecker skyChecker, ref SkyCheckState checkState, Node node) + { + MimosaCheckState mimosaCheckState = checkState as MimosaCheckState; + + foreach (URI snmpUri in node.FindURIs("snmp")) + { + try + { + using (SnmpInterface snmp = SnmpInterface.FromURI(snmpUri, skyChecker.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; + + mimosaCheckState.WritePerformanceValue(String.Format("ptp_rx_pwr_{0}",n), sig, -75.0, 0, -80.0, 0); + mimosaCheckState.WritePerformanceValue(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(SkyChecker 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() + { } + + } + + + } +} diff --git a/checks/SkyCheck.cs b/checks/SkyCheck.cs index f14eb31..688b558 100644 --- a/checks/SkyCheck.cs +++ b/checks/SkyCheck.cs @@ -42,6 +42,7 @@ namespace ln.skyscanner.checks { AddSkyCheck(new Hostalive()); AddSkyCheck(new Ubiquiti()); + AddSkyCheck(new Mimosa()); AddSkyCheck(new APC()); } } diff --git a/ln.skyscanner.csproj b/ln.skyscanner.csproj index 950c0c4..d1fb0e1 100644 --- a/ln.skyscanner.csproj +++ b/ln.skyscanner.csproj @@ -104,6 +104,7 @@ +