/// <summary>Executes the message changed action.</summary> /// <param name="systemId">System id.</param> /// <param name="messageId">Identifier for the message.</param> /// <param name="lBaseline">The baseline.</param> internal void OnMessageChanged(string systemId, string messageId, PisBaseline pisBaseline) { LogManager.WriteLog(TraceType.INFO, "OnMessageChanged called, systemId=" + systemId + ", messageId=" + messageId, "PIS.Ground.Core.T2G.LocalDataStorage.OnMessageChanged", null, EventIdEnum.GroundCore); lock (_systemListLock) { SystemInfo existingSystemInfo; if (_systemList.TryGetValue(systemId, out existingSystemInfo)) { // Update existing system // Add updated info SystemInfo updatedSystemInfo = new SystemInfo( existingSystemInfo.SystemId, existingSystemInfo.MissionId, existingSystemInfo.VehiclePhysicalId, existingSystemInfo.Status, existingSystemInfo.IsOnline, existingSystemInfo.CommunicationLink, existingSystemInfo.ServiceList, pisBaseline, existingSystemInfo.PisVersion, existingSystemInfo.PisMission, existingSystemInfo.IsOnline); _systemList[systemId] = updatedSystemInfo; } } DumpCurrentSystemList(TraceType.DEBUG, "After OnMessageChanged called:", "PIS.Ground.Core.T2G.LocalDataStorage.OnMessageChanged"); }
/// <summary>Process Message Notification.</summary> /// <param name="systemId">system id.</param> /// <param name="messageId">message id.</param> /// <param name="fieldList">field list.</param> public void OnMessageNotification(string systemId, string messageId, fieldStruct[] fieldList) { lock (_lock) { if (!string.IsNullOrEmpty(systemId) && !string.IsNullOrEmpty(messageId) && fieldList != null && fieldList.Length != 0) { if (messageId == T2GDataConverter.PisBaseline) { PisBaseline baseline = T2GDataConverter.BuildPisBaseLine(fieldList); if (baseline != null) { _localDataStorage.OnMessageChanged(systemId, messageId, baseline); } } else if (messageId == T2GDataConverter.PisVersion) { PisVersion version = T2GDataConverter.BuildPisVersion(fieldList); if (version != null) { _localDataStorage.OnMessageChanged(systemId, messageId, version); } } else if (messageId == T2GDataConverter.PisMission || messageId == T2GDataConverter.SivngMission) { PisMission mission = T2GDataConverter.BuildPisMission(fieldList); if (mission != null) { _localDataStorage.OnMessageChanged(systemId, messageId, mission); } } ElementEventArgs elementEventArgs = _localDataStorage.BuildElementInfoChangedEvent(systemId); if (elementEventArgs != null) { _notifierTarget.RaiseOnElementInfoChangeEvent(elementEventArgs); } } } }
public static PisBaseline CreatePisBaseline(string currentBaselineVersion, string futureBaselineVersion, string archiveBaselineVersion) { PisBaseline baseline = new PisBaseline(); if (currentBaselineVersion != null) { baseline.CurrentVersionOut = currentBaselineVersion; baseline.CurrentVersionLmtOut = currentBaselineVersion; baseline.CurrentVersionPisBaseOut = currentBaselineVersion; baseline.CurrentVersionPisInfotainmentOut = currentBaselineVersion; baseline.CurrentVersionPisMissionOut = currentBaselineVersion; baseline.CurrentValidOut = string.IsNullOrEmpty(currentBaselineVersion) && currentBaselineVersion != NoBaselineVersion ? Boolean.TrueString : Boolean.FalseString; } if (futureBaselineVersion != null) { baseline.FutureVersionOut = futureBaselineVersion; baseline.FutureVersionLmtOut = futureBaselineVersion; baseline.FutureVersionPisBaseOut = futureBaselineVersion; baseline.FutureVersionPisInfotainmentOut = futureBaselineVersion; baseline.FutureVersionPisMissionOut = futureBaselineVersion; baseline.FutureValidOut = string.IsNullOrEmpty(futureBaselineVersion) && futureBaselineVersion != NoBaselineVersion ? Boolean.TrueString : Boolean.FalseString; } if (archiveBaselineVersion != null) { baseline.ArchivedVersionOut = archiveBaselineVersion; baseline.ArchivedVersionLmtOut = archiveBaselineVersion; baseline.ArchivedVersionPisBaseOut = archiveBaselineVersion; baseline.ArchivedVersionPisInfotainmentOut = archiveBaselineVersion; baseline.ArchivedVersionPisMissionOut = archiveBaselineVersion; baseline.ArchivedValidOut = string.IsNullOrEmpty(archiveBaselineVersion) && archiveBaselineVersion != NoBaselineVersion ? Boolean.TrueString : Boolean.FalseString; } return(baseline); }
public static SystemInfo CreateSystem(string systemId, ushort vehicleId, bool isOnline, PisVersion version, PisBaseline baseline) { SystemInfo createdSystem = new SystemInfo(systemId, DefaultMissionName, vehicleId, DefaultStatus, isOnline, DefaultCommunicationLink, EmptyServiceList, baseline, version, DefaultMission, baseline.CurrentValidOut == Boolean.TrueString || baseline.FutureValidOut == Boolean.TrueString || baseline.ArchivedValidOut == Boolean.TrueString); return(createdSystem); }
/// <summary>Build PisBaseLine object.</summary> /// <param name="fieldList">FieldList for a message.</param> /// <returns>PisBaseline object if it succeeds, null if it fails.</returns> internal static PisBaseline BuildPisBaseLine(fieldStruct[] fieldList) { PisBaseline baseline = null; if (fieldList != null && fieldList.Length > 0) { baseline = new PisBaseline(); // CR: atvcm00614906 - [PIS-GROUND URBAN] Gap 2277: missing notification when mission code not defined in t2gvehicleinfo.xml // Must verify if all expected items are in the message... If not, we will log a trace. List <string> expectedItemsInMessage = new List <string>() { ArchivedValidOut, ArchivedVersionOut, ArchivedVersionPisBaseOut, ArchivedVersionPisMissionOut, ArchivedVersionPisInfotainmentOut, ArchivedVersionLmtOut, CurrentForcedOut, CurrentValidOut, CurrentVersionOut, CurrentVersionPisBaseOut, CurrentVersionPisMissionOut, CurrentVersionPisInfotainmentOut, CurrentVersionLmtOut, CurrentExpirationDateOut, FutureValidOut, FutureVersionOut, FutureVersionPisBaseOut, FutureVersionPisMissionOut, FutureVersionPisInfotainmentOut, FutureVersionLmtOut, FutureActivationDateOut, FutureExpirationDateOut }; foreach (fieldStruct objfieldStruct in fieldList) { if (ArchivedValidOut == objfieldStruct.id) { baseline.ArchivedValidOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(ArchivedValidOut); } continue; } if (ArchivedVersionOut == objfieldStruct.id) { baseline.ArchivedVersionOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(ArchivedVersionOut); } continue; } if (ArchivedVersionPisBaseOut == objfieldStruct.id) { baseline.ArchivedVersionPisBaseOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(ArchivedVersionPisBaseOut); } continue; } if (ArchivedVersionPisMissionOut == objfieldStruct.id) { baseline.ArchivedVersionPisMissionOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(ArchivedVersionPisMissionOut); } continue; } if (ArchivedVersionPisInfotainmentOut == objfieldStruct.id) { baseline.ArchivedVersionPisInfotainmentOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(ArchivedVersionPisInfotainmentOut); } continue; } if (ArchivedVersionLmtOut == objfieldStruct.id) { baseline.ArchivedVersionLmtOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(ArchivedVersionLmtOut); } continue; } if (CurrentForcedOut == objfieldStruct.id) { baseline.CurrentForcedOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentForcedOut); } continue; } if (CurrentValidOut == objfieldStruct.id) { baseline.CurrentValidOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentValidOut); } continue; } if (CurrentVersionOut == objfieldStruct.id) { baseline.CurrentVersionOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentVersionOut); } continue; } if (CurrentVersionPisBaseOut == objfieldStruct.id) { baseline.CurrentVersionPisBaseOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentVersionPisBaseOut); } continue; } if (CurrentVersionPisMissionOut == objfieldStruct.id) { baseline.CurrentVersionPisMissionOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentVersionPisMissionOut); } continue; } if (CurrentVersionPisInfotainmentOut == objfieldStruct.id) { baseline.CurrentVersionPisInfotainmentOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentVersionPisInfotainmentOut); } continue; } if (CurrentVersionLmtOut == objfieldStruct.id) { baseline.CurrentVersionLmtOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentVersionLmtOut); } continue; } if (CurrentExpirationDateOut == objfieldStruct.id) { baseline.CurrentExpirationDateOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(CurrentExpirationDateOut); } continue; } if (FutureValidOut == objfieldStruct.id) { baseline.FutureValidOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureValidOut); } continue; } if (FutureVersionOut == objfieldStruct.id) { baseline.FutureVersionOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureVersionOut); } continue; } if (FutureVersionPisBaseOut == objfieldStruct.id) { baseline.FutureVersionPisBaseOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureVersionPisBaseOut); } continue; } if (FutureVersionPisMissionOut == objfieldStruct.id) { baseline.FutureVersionPisMissionOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureVersionPisMissionOut); } continue; } if (FutureVersionPisInfotainmentOut == objfieldStruct.id) { baseline.FutureVersionPisInfotainmentOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureVersionPisInfotainmentOut); } continue; } if (FutureVersionLmtOut == objfieldStruct.id) { baseline.FutureVersionLmtOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureVersionLmtOut); } continue; } if (FutureActivationDateOut == objfieldStruct.id) { baseline.FutureActivationDateOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureActivationDateOut); } continue; } if (FutureExpirationDateOut == objfieldStruct.id) { baseline.FutureExpirationDateOut = objfieldStruct.value; if (objfieldStruct.type != fieldTypeEnum.unknown) { expectedItemsInMessage.Remove(FutureExpirationDateOut); } continue; } } // CR: atvcm00614906 - [PIS-GROUND URBAN] Gap 2277: missing notification when mission code not defined in t2gvehicleinfo.xml // Log an error if the message did not contain all expected items. if (expectedItemsInMessage.Count > 0) { LogNotificationMessageItemMissingError(expectedItemsInMessage, T2GDataConverter.PisVersion); } } return(baseline); }