using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using cspl = LSWLib.CLog; namespace eDosStation { static class DecodeResults { static readonly string[] names = { "ReadSensitivities", "ReadDetectorThresholds", "fReadDoses", "ReadTotalDoses", "ReadQualityData", "ReadPeakRates", "ClearTotalDose", "ClearDose", "ClearPeakRates", "ClearFaultStatus", "ClearLatchedAlarms", "EpdOnOff", "ReadAlarmConfiguration", "ReadAlarmThresholds", "WriteAlarmThresholds", "WriteRateOffPercentage", "DeissueEPD", "SetBaselineCounters", "WriteWearerId", "ReadBaselineCounts", "MfrLogin_R2", "WriteSensitivities_R2", "WriteAccessLevelAmin", "WriteAccessLevelOpen", "WriteQuickAccessDisplays_R3", "WriteDisplayEnables_R3", "WriteDisplayEnablePermissions_R3", "WriteAlarmConfiguration_R3", "WriteOffModeDisplay_R3", "WriteSwitchOnFromButton_R3", "WriteChirpSensitivity", "WriteChirpEnable_R3","WriteRTC_R3","ReadStatus","ReadEpdIdentities","ReadCounts","ReadWearerId","ReadRTC" ,"DestroyReaderInterface" //0=ok ,"Disconnect" , "DisconnectAndNotify" //0=ok ,"StartDiscover","IssueEPD","EnableProtectedSession_R3" ,"CreateReaderInterface" ,"OpenReader","TestVibe" }; private static string GetName(int func) { if (func >= 0 && func < names.Length) return names[func]; else return func.ToString(); } private static string Getresult(int rval) { string rv; switch (rval) { case 0: rv = "r_OK"; break; case -1: rv = "r_UnknownError"; break; case -2: rv = "r_InvalidCommsHandle"; break; case -3: rv = "r_InvalidPortName"; break; case -4: rv = "r_PortAlreadyOpen"; break; case -5: rv = "r_PortClosed"; break; case -6: rv = "r_OperationFailed"; break; case -7: rv = "r_InvalidState"; break; case -8: rv = "r_InvalidCompletionToken"; break; case -9: rv = "r_OperationTimeout"; break; case -100: rv = "r_UnknownCmd"; break; case -101: rv = "r_InvalidParam"; break; case -102: rv = "r_InsufficientPriv"; break; case -103: rv = "r_UnsupportedOp"; break; case -104: rv = "r_FunctionFail"; break; case -105: rv = "r_InvalidOp"; break; case -106: rv = "r_IncompleteCommand"; break; case -107: rv = "r_ResponseTooBig"; break; //response exceeded single frame length case -108: rv = "r_ErrorBadStoredData"; break; case -109: rv = "r_InvalidResponseDataLength"; break; case -110: rv = "r_PayloadTooBig"; break; case -111: rv = "r_ParseFailure"; break; case -112: rv = "r_EEPROMWriteFailure"; break; case -113: rv = "r_Busy"; break; case -121: rv = "r_EEPROMReadFailure"; break; case -122: rv = "r_WearerNameMismatch"; break; case -123: rv = "r_DataTooLongForBuffer"; break; case -200: rv = "r_ErrorUnexpectedResponse"; break; case -201: rv = "r_ErrorNotProcessed"; break; //command not processed due to previous failure case -202: rv = "r_ErrorNotConnected"; break; case -203: rv = "r_ErrorUserCancelled"; break; default: rv = rval.ToString(); break; } return rv; } public static string decodesteps(System.Collections.Generic.List Lst) { if (Lst != null) { System.Text.StringBuilder sb = new StringBuilder(); for (int s = 0; s < Lst.Count; s++) { sb.Append(GetName(Lst[s].func)); sb.Append(": commit : "); sb.Append(Getresult(Lst[s].commitrv)); sb.Append(": End : "); sb.AppendLine(Getresult(Lst[s].endrv)); } return sb.ToString(); } else return "List Empty"; } public static void logsteps(string module, System.Collections.Generic.List Lst, cspl spl) { if (Lst != null) for (int s = 0; s < Lst.Count; s++) { string msg = $"{s} {GetName(Lst[s].func)} commit: {Getresult(Lst[s].commitrv)} end : {Getresult(Lst[s].endrv)} ({Lst[s].endrv})"; spl?.WriteSplunkLog(module, null, Lst[s].commitrv == 0 && Lst[s].endrv == 0 ? cspl.iseverity.info : cspl.iseverity.err, msg); } } } }