public void TestMapToStatusPtb() { var target = new StatusFNN(0x210500000004); Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord); Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.Fatal_Error | SmgwStatusWord.PTB_Temp_Error_signed_invalid, target.SmgwStatusWord); Assert.AreEqual("A084000020000000", target.Status); Assert.AreEqual(StatusPTB.FatalError, target.MapToStatusPtb()); target = new StatusFNN(0x200500000004); Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord); Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.PTB_Temp_Error_signed_invalid, target.SmgwStatusWord); Assert.AreEqual("A004000020000000", target.Status); Assert.AreEqual(StatusPTB.TemporaryError, target.MapToStatusPtb()); target = new StatusFNN(0x0500000004); Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord); Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification, target.SmgwStatusWord); Assert.AreEqual("A000000020000000", target.Status); Assert.AreEqual(StatusPTB.NoError, target.MapToStatusPtb()); target = new StatusFNN(0x100500000004); Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord); Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.PTB_Warning, target.SmgwStatusWord); Assert.AreEqual("A008000020000000", target.Status); Assert.AreEqual(StatusPTB.Warning, target.MapToStatusPtb()); target = new StatusFNN(0x400500000004); Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord); Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.PTB_Temp_Error_is_invalid, target.SmgwStatusWord); Assert.AreEqual("A002000020000000", target.Status); Assert.AreEqual(StatusPTB.CriticalTemporaryError, target.MapToStatusPtb()); }
public static string GetFnnStatusString(this StatusFNN status, int count = 0) { var statusItems = new List <string>(); if (status.BzStatusWord.HasFlag(BzStatusWord.Fatal_Error)) { statusItems.Add("Zähler: fataler Fehler"); } if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.Fatal_Error)) { statusItems.Add("SMGw: fataler Fehler"); } if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.Systemtime_Invalid)) { statusItems.Add("SMGw: ungültige Systemzeit"); } if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.PTB_Temp_Error_signed_invalid)) { statusItems.Add("SMGw: temporärer Fehler"); } if (status.BzStatusWord.HasFlag(BzStatusWord.Manipulation_KD_PS)) { statusItems.Add("Zähler: mechanische Beeinflussung"); } if (status.BzStatusWord.HasFlag(BzStatusWord.Magnetically_Influenced)) { statusItems.Add("Zähler: magnetsiche Beeinflussung"); } if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.PTB_Temp_Error_is_invalid)) { statusItems.Add("SMGw: kritischer temporärer Fehler"); } if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.PTB_Warning)) { statusItems.Add("SMGw: Warnung"); } if (!statusItems.Any()) { return("keine Fehler"); } return(string.Join(", ", statusItems)); }
/// <summary> /// Validiert den FNNStatus /// </summary> /// <param name="statusFNN"></param> /// <returns>True wenn der FNN Status gültig ist, False falls nicht</returns> public static bool ValidateFNNStatus(this StatusFNN statusFNN) { return(statusFNN.Validate()); }