ln.skyscanner/checks/Mimosa.cs

85 lines
2.7 KiB
C#

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()
{ }
}
}
}