private string GenerateRegCApplication(ControllerModel controller) { var sb = new StringBuilder(); var _hplact = CCOLGeneratorSettingsProvider.Default.GetElementName("hplact"); sb.AppendLine("void application(void)"); sb.AppendLine("{"); sb.AppendLine($"{ts}PreApplication();"); sb.AppendLine(); sb.AppendLine($"{ts}TFB_max = PRM[prmfb];"); sb.AppendLine($"{ts}KlokPerioden();"); sb.AppendLine($"{ts}Aanvragen();"); var hsts = controller.HalfstarData.IsHalfstar ? ts + ts : ts; if (controller.HalfstarData.IsHalfstar) { sb.AppendLine($"{ts}if (IH[{_hpf}{_hplact}])"); sb.AppendLine($"{ts}{{"); switch (controller.Data.TypeGroentijden) { case GroentijdenTypeEnum.MaxGroentijden: sb.AppendLine($"{hsts}Maxgroen_halfstar();"); break; case GroentijdenTypeEnum.VerlengGroentijden: sb.AppendLine($"{hsts}Verlenggroen_halfstar();"); break; } sb.AppendLine($"{hsts}Wachtgroen_halfstar();"); sb.AppendLine($"{hsts}Meetkriterium();"); sb.AppendLine($"{hsts}Meetkriterium_halfstar();"); sb.AppendLine($"{hsts}Meeverlengen_halfstar();"); sb.AppendLine($"{hsts}Synchronisaties_halfstar();"); sb.AppendLine($"{hsts}RealisatieAfhandeling_halfstar();"); sb.AppendLine($"{hsts}Alternatief_halfstar();"); sb.AppendLine($"{hsts}FileVerwerking_halfstar();"); sb.AppendLine($"{hsts}DetectieStoring_halfstar();"); sb.AppendLine($"{ts}}}"); sb.AppendLine($"{ts}else"); sb.AppendLine($"{ts}{{"); } switch (controller.Data.TypeGroentijden) { case GroentijdenTypeEnum.MaxGroentijden: sb.AppendLine($"{hsts}Maxgroen();"); break; case GroentijdenTypeEnum.VerlengGroentijden: sb.AppendLine($"{hsts}Verlenggroen();"); break; } sb.AppendLine($"{hsts}Wachtgroen();"); sb.AppendLine($"{hsts}Meetkriterium();"); sb.AppendLine($"{hsts}Meeverlengen();"); sb.AppendLine($"{hsts}Synchronisaties();"); sb.AppendLine($"{hsts}RealisatieAfhandeling();"); sb.AppendLine($"{hsts}FileVerwerking();"); sb.AppendLine($"{hsts}DetectieStoring();"); if (controller.HalfstarData.IsHalfstar) { sb.AppendLine($"{ts}}}"); } if (controller.OVData.OVIngrepen.Count > 0 || controller.OVData.HDIngrepen.Count > 0) { sb.AppendLine($"{ts}AfhandelingOV();"); } if (controller.Data.FixatieData.FixatieMogelijk) { if (!controller.Data.MultiModuleReeksen) { sb.AppendLine($"{ts}Fixatie(isfix, 0, FCMAX-1, SCH[schbmfix], PRML, ML);"); } else { foreach (var r in controller.MultiModuleMolens) { sb.AppendLine($"{ts}Fixatie(isfix, 0, FCMAX-1, SCH[schbmfix], PR{r.Reeks}, {r.Reeks});"); } } } sb.AppendLine(""); sb.AppendLine($"{ts}PostApplication();"); if (controller.Data.KWCType != KWCTypeEnum.Geen && controller.Data.KWCUitgebreid) { sb.AppendLine($"{ts}KwcApplication();"); } sb.AppendLine("}"); sb.AppendLine(); return(sb.ToString()); }
public override void CollectCCOLElements(ControllerModel c) { _myElements = new List <CCOLElement>(); _myBitmapOutputs = new List <CCOLIOElement>(); foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen) { if (!pk.Detectoren.Any() && (pk.Type == PelotonKoppelingType.DenHaag || pk.Richting == PelotonKoppelingRichtingEnum.Uitgaand)) { continue; } var sgWithD = new Dictionary <FaseCyclusModel, List <string> >(); foreach (var d in pk.Detectoren) { var sg = c.Fasen.FirstOrDefault(x => x.Detectoren.Any(x2 => x2.Naam == d.DetectorNaam)); if (sg != null) { if (!sgWithD.ContainsKey(sg)) { sgWithD.Add(sg, new List <string>()); } sgWithD[sg].Add(d.DetectorNaam); } } switch (pk.Type) { case PelotonKoppelingType.DenHaag: switch (pk.Richting) { case PelotonKoppelingRichtingEnum.Uitgaand: foreach (var sg in sgWithD) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpku}{sg.Key.Naam}", 1, CCOLElementTimeTypeEnum.SCH_type, _schpku, pk.GekoppeldeSignaalGroep)); } CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.Uit); foreach (var d in pk.Detectoren) { CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, $"{pk.KruisingNaam}d{d.DetectorNaam}", CCOLKoppelSignaalRichtingEnum.Uit); } break; case PelotonKoppelingRichtingEnum.Inkomend: _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_uspf}{_uspelin}{pk.GekoppeldeSignaalGroep}", _uspelin, pk.GekoppeldeSignaalGroep)); _myBitmapOutputs.Add(new CCOLIOElement(pk.InkomendVerklikking, $"{_uspf}{_uspelin}{pk.GekoppeldeSignaalGroep}")); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpelmeet}{pk.GekoppeldeSignaalGroep}", pk.Meetperiode, CCOLElementTimeTypeEnum.TE_type, _tpelmeet, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpelmaxhiaat}{pk.GekoppeldeSignaalGroep}", pk.MaximaalHiaat, CCOLElementTimeTypeEnum.TE_type, _tpelmaxhiaat, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmpelgrens}{pk.GekoppeldeSignaalGroep}", pk.MinimaalAantalVoertuigen, CCOLElementTimeTypeEnum.None, _prmpelgrens, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_mpelvtg}{pk.GekoppeldeSignaalGroep}", _mpelvtg, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_hpelin}{pk.GekoppeldeSignaalGroep}", _hpelin, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_mpelin}{pk.GekoppeldeSignaalGroep}", _mpelin, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_uspelin}{pk.GekoppeldeSignaalGroep}", _uspelin, pk.GekoppeldeSignaalGroep)); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpelrw}{pk.GekoppeldeSignaalGroep}", pk.TijdRetourWachtgroen, CCOLElementTimeTypeEnum.TE_type, _tpelrw, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpelrwmax}{pk.GekoppeldeSignaalGroep}", pk.MaxTijdToepassenRetourWachtgroen, CCOLElementTimeTypeEnum.TE_type, _tpelrwmax, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpelstartrw}{pk.GekoppeldeSignaalGroep}", pk.TijdTotRetourWachtgroen, CCOLElementTimeTypeEnum.TE_type, _tpelstartrw, pk.GekoppeldeSignaalGroep)); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Altijd) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpelrw}{pk.GekoppeldeSignaalGroep}", pk.ToepassenRetourWachtgroen == NooitAltijdAanUitEnum.SchAan ? 1 : 0, CCOLElementTimeTypeEnum.SCH_type, _schpelrw, pk.GekoppeldeSignaalGroep)); } if (pk.ToepassenMeetkriterium != NooitAltijdAanUitEnum.Altijd && pk.ToepassenMeetkriterium != NooitAltijdAanUitEnum.Nooit) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpelmk}{pk.GekoppeldeSignaalGroep}", pk.ToepassenMeetkriterium == NooitAltijdAanUitEnum.SchAan ? 1 : 0, CCOLElementTimeTypeEnum.SCH_type, _schpelmk, pk.GekoppeldeSignaalGroep)); } } if (pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Nooit) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpela}{pk.GekoppeldeSignaalGroep}", pk.TijdTotAanvraag, CCOLElementTimeTypeEnum.TE_type, _tpela, pk.GekoppeldeSignaalGroep)); if (pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Altijd) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpela}{pk.GekoppeldeSignaalGroep}", pk.ToepassenAanvraag == NooitAltijdAanUitEnum.SchAan ? 1 : 0, CCOLElementTimeTypeEnum.SCH_type, _schpela, pk.GekoppeldeSignaalGroep)); } } if (pk.AutoIngangsSignalen) { CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.In); foreach (var d in pk.Detectoren) { CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, $"{pk.KruisingNaam}d{d.DetectorNaam}", CCOLKoppelSignaalRichtingEnum.In); } } else { CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, pk.IngangsSignaalFG, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.In); foreach (var d in pk.Detectoren) { CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, d.KoppelSignaal, $"{pk.KruisingNaam}d{d.DetectorNaam}", CCOLKoppelSignaalRichtingEnum.In); } } break; } break; case PelotonKoppelingType.RHDHV: switch (pk.Richting) { case PelotonKoppelingRichtingEnum.Uitgaand: foreach (var sg in sgWithD) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpku}{sg.Key.Naam}", 1, CCOLElementTimeTypeEnum.SCH_type, _schpku, pk.GekoppeldeSignaalGroep)); } CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.Uit); break; case PelotonKoppelingRichtingEnum.Inkomend: _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_uspelin}{pk.GekoppeldeSignaalGroep}", _uspelin, pk.GekoppeldeSignaalGroep)); _myBitmapOutputs.Add(new CCOLIOElement(pk.InkomendVerklikking, $"{_uspf}{_uspelin}{pk.GekoppeldeSignaalGroep}")); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_hpelin}{pk.GekoppeldeSignaalGroep}", _hpelin, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmpelgrens}{pk.GekoppeldeSignaalGroep}", pk.MinimaalAantalVoertuigen, CCOLElementTimeTypeEnum.TS_type, _prmpelgrens, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmpelverschuif}{pk.GekoppeldeSignaalGroep}", pk.Verschuiving, CCOLElementTimeTypeEnum.TE_type, _prmpelgrens, pk.KruisingNaam, c.Data.Naam, pk.GekoppeldeSignaalGroep)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpelnl}{pk.GekoppeldeSignaalGroep}", pk.TijdRetourWachtgroen, CCOLElementTimeTypeEnum.TS_type, _tpelnl, pk.GekoppeldeSignaalGroep)); if (pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Nooit && pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Altijd) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpela}{pk.GekoppeldeSignaalGroep}", pk.ToepassenAanvraag == NooitAltijdAanUitEnum.SchAan ? 1 : 0, CCOLElementTimeTypeEnum.SCH_type, _schpela, pk.GekoppeldeSignaalGroep)); } if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_tpelrwmax}{pk.GekoppeldeSignaalGroep}", pk.MaxTijdToepassenRetourWachtgroen, CCOLElementTimeTypeEnum.TE_type, _tpelrwmax, pk.GekoppeldeSignaalGroep)); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Altijd) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpelrw}{pk.GekoppeldeSignaalGroep}", pk.ToepassenRetourWachtgroen == NooitAltijdAanUitEnum.SchAan ? 1 : 0, CCOLElementTimeTypeEnum.SCH_type, _schpelrw, pk.GekoppeldeSignaalGroep)); } if (pk.ToepassenMeetkriterium != NooitAltijdAanUitEnum.Altijd && pk.ToepassenMeetkriterium != NooitAltijdAanUitEnum.Nooit) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schpelmk}{pk.GekoppeldeSignaalGroep}", pk.ToepassenMeetkriterium == NooitAltijdAanUitEnum.SchAan ? 1 : 0, CCOLElementTimeTypeEnum.SCH_type, _schpelmk, pk.GekoppeldeSignaalGroep)); } } if (pk.AutoIngangsSignalen) { CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.In); } else { CCOLElementCollector.AddKoppelSignaal(pk.PTPKruising, 1, pk.IngangsSignaalFG, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.In); } break; } break; } } }
public void Apply(ControllerModel controller) { controller.Properties["Desc"] = _desc; }
private string GenerateHstAdd(ControllerModel c) { var sb = new StringBuilder(); sb.AppendLine(GenerateRegAddHeader(c)); sb.AppendLine(); sb.AppendLine("void post_init_application_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void PreApplication_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void KlokPerioden_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void Aanvragen_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void Maxgroen_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void Wachtgroen_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void Meetkriterium_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void Meeverlengen_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void Synchronisaties_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void Alternatief_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void RealisatieAfhandeling_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void FileVerwerking_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void DetectieStoring_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void PostApplication_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void pre_system_application_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void post_system_application_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine("void post_dump_application_halfstar_Add(void)"); sb.AppendLine("{"); sb.AppendLine(""); sb.AppendLine("}"); sb.AppendLine(); var b = "boolv"; if (c.Data.CCOLVersie < Models.Enumerations.CCOLVersieEnum.CCOL100) { b = "bool"; } sb.AppendLine($"{b} application1_tig_Add(void)"); sb.AppendLine("{"); sb.AppendLine($"{ts}return 0;"); sb.AppendLine("}"); sb.AppendLine(); sb.AppendLine($"{b} application2_tig_Add(void)"); sb.AppendLine("{"); sb.AppendLine($"{ts}return 0;"); sb.AppendLine("}"); sb.AppendLine(); return(sb.ToString()); }
public WaitGreenManager(ControllerManager mainmanager, ControllerModel controller) : base(mainmanager, controller) { mainmanager.InsertFunctionality(UpdateWaitGreen, ControllerFunctionalityEnum.Extension, 2); }
public override void CollectCCOLElements(ControllerModel c) { _myElements = new List <CCOLElement>(); _myBitmapInputs = new List <CCOLIOElement>(); _myBitmapOutputs = new List <CCOLIOElement>(); if (!c.StarData.ToepassenStar || !c.StarData.Programmas.Any()) { return; } _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_schstar}", 0, CCOLElementTimeTypeEnum.SCH_type, _schstar)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_mstarprog}", _mstarprog)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_mstarprogwens}", _mstarprogwens)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_mstarprogwissel}", _mstarprogwissel)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_usstarprogwissel}", _usstarprogwissel)); _myBitmapOutputs.Add(new CCOLIOElement(c.StarData.ProgrammaWisselBitmapInfo, $"{_uspf}{_usstarprogwissel}")); if (c.StarData.ProgrammaSturingViaParameter) { var dp = c.StarData.Programmas.FirstOrDefault(x => x.Naam == c.StarData.DefaultProgramma); var iDp = dp == null ? -1 : c.StarData.Programmas.IndexOf(dp); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmstarprogdef}", iDp + 1, CCOLElementTimeTypeEnum.SCH_type, _prmstarprogdef)); } if (c.StarData.IngangAlsVoorwaarde) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_isstar}", _isstar)); _myBitmapInputs.Add(new CCOLIOElement(c.StarData.StarRegelenIngang, $"{_ispf}{_isstar}")); } foreach (var pr in c.StarData.Programmas) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_usstar}{pr.Naam}", _usstar, pr.Naam)); _myBitmapOutputs.Add(new CCOLIOElement(pr, $"{_uspf}{_usstar}{pr.Naam}")); } if (c.StarData.ProgrammaTijdenInParameters) { foreach (var pr in c.StarData.Programmas) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmstarcyclustijd}", pr.Cyclustijd, CCOLElementTimeTypeEnum.TS_type, _prmstarcyclustijd, pr.Naam)); foreach (var f in pr.Fasen) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmstarstart}1{pr.Naam}{f.FaseCyclus}", f.Start1, CCOLElementTimeTypeEnum.None, _prmstarstart, "1", f.FaseCyclus, pr.Naam)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmstareind}1{pr.Naam}{f.FaseCyclus}", f.Eind1, CCOLElementTimeTypeEnum.None, _prmstareind, "1", f.FaseCyclus, pr.Naam)); if (f.Start2.HasValue && f.Eind2.HasValue) { _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmstarstart}2{pr.Naam}{f.FaseCyclus}", f.Start2.Value, CCOLElementTimeTypeEnum.None, _prmstarstart, "2", f.FaseCyclus, pr.Naam)); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmstareind}2{pr.Naam}{f.FaseCyclus}", f.Eind2.Value, CCOLElementTimeTypeEnum.None, _prmstareind, "2", f.FaseCyclus, pr.Naam)); } } } } if (c.StarData.ProgrammaSturingViaKlok) { foreach (var p in c.StarData.PeriodenData) { var dp = c.StarData.Programmas.FirstOrDefault(x => x.Naam == p.StarProgramma); var iDp = dp == null ? -1 : c.StarData.Programmas.IndexOf(dp); _myElements.Add(CCOLGeneratorSettingsProvider.Default.CreateElement($"{_prmstarprog}{p.Periode}", iDp + 1, CCOLElementTimeTypeEnum.None, _prmstarprog, p.Periode)); } } }
public void Apply(ControllerModel controller) { controller.Properties["license"] = "Copyright (c) .NET Foundation. All rights reserved." + " Licensed under the Apache License, Version 2.0. See License.txt " + "in the project root for license information."; }
private void ConfigureRemoteService(ControllerModel controller, [CanBeNull] AbpControllerAssemblySetting configuration) { ConfigureApiExplorer(controller); ConfigureSelector(controller, configuration); ConfigureParameters(controller); }
private bool IsConventionApplicable(ControllerModel controller) { return(controller.Attributes.OfType <IUseWebApiOverloading>().Any()); }
protected virtual void ConfigureRemoteService(ControllerModel controller, [CanBeNull] ConventionalControllerSetting configuration) { ConfigureApiExplorer(controller); ConfigureSelector(controller, configuration); ConfigureParameters(controller); }
/// <summary> /// 实现Apply /// </summary> public void Apply(ControllerModel controller) => controller.Filters.Add(new AuthorizeFilter("jwt"));
public PrepareForGenerationRequest(ControllerModel controller) { Controller = controller; }
/// <summary> /// 配置控制器名称 /// </summary> /// <param name="controller">控制器模型</param> /// <param name="apiDescriptionSettings">接口描述配置</param> private void ConfigureControllerName(ControllerModel controller, ApiDescriptionSettingsAttribute apiDescriptionSettings) { controller.ControllerName = ConfigureControllerAndActionName(apiDescriptionSettings, controller.ControllerName, _lazyControllerSettings.AbandonControllerAffixes, _ => _); }
private string GenerateRegCIncludes(ControllerModel controller) { var sb = new StringBuilder(); sb.AppendLine("/* include files */"); sb.AppendLine("/* ------------- */"); sb.AppendLine($"{ts}#include \"{controller.Data.Naam}sys.h\""); sb.AppendLine($"{ts}#include \"fcvar.c\" /* fasecycli */"); sb.AppendLine($"{ts}#include \"kfvar.c\" /* conflicten */"); sb.AppendLine($"{ts}#include \"usvar.c\" /* uitgangs elementen */"); sb.AppendLine($"{ts}#include \"dpvar.c\" /* detectie elementen */"); if (controller.Data.GarantieOntruimingsTijden) { if (controller.Data.CCOLVersie >= CCOLVersieEnum.CCOL95 && controller.Data.Intergroen) { sb.AppendLine($"{ts}#include \"tig_min.c\" /* garantie-ontruimingstijden */"); } else { sb.AppendLine($"{ts}#include \"to_min.c\" /* garantie-ontruimingstijden */"); } } sb.AppendLine($"{ts}#include \"trg_min.c\" /* garantie-roodtijden */"); sb.AppendLine($"{ts}#include \"tgg_min.c\" /* garantie-groentijden */"); sb.AppendLine($"{ts}#include \"tgl_min.c\" /* garantie-geeltijden */"); sb.AppendLine($"{ts}#include \"isvar.c\" /* ingangs elementen */"); if (controller.HasDSI()) { sb.AppendLine($"{ts}#include \"dsivar.c\" /* selectieve detectie */"); } sb.AppendLine($"{ts}#include \"hevar.c\" /* hulp elementen */"); sb.AppendLine($"{ts}#include \"mevar.c\" /* geheugen elementen */"); sb.AppendLine($"{ts}#include \"tmvar.c\" /* tijd elementen */"); sb.AppendLine($"{ts}#include \"ctvar.c\" /* teller elementen */"); sb.AppendLine($"{ts}#include \"schvar.c\" /* software schakelaars */"); if (controller.HalfstarData.IsHalfstar) { if (controller.Data.CCOLVersie >= CCOLVersieEnum.CCOL95) { sb.AppendLine($"{ts}#include \"trigvar.c\" /* uitgebreide signaalplan structuur */"); } else { sb.AppendLine($"{ts}#include \"tigvar.c\" /* uitgebreide signaalplan structuur */"); } sb.AppendLine($"{ts}#include \"plevar.c\" /* uitgebreide signaalplan structuur */"); } sb.AppendLine($"{ts}#include \"prmvar.c\" /* parameters */"); sb.AppendLine($"{ts}#include \"lwmlvar.c\" /* langstwachtende modulen structuur */"); if (controller.Data.VLOGType != VLOGTypeEnum.Geen) { sb.AppendLine($"{ts}#ifndef NO_VLOG"); sb.AppendLine($"{ts}{ts}#include \"vlogvar.c\" /* variabelen t.b.v. vlogfuncties */"); sb.AppendLine($"{ts}{ts}#include \"logvar.c\" /* variabelen t.b.v. logging */"); sb.AppendLine($"{ts}{ts}#include \"monvar.c\" /* variabelen t.b.v. realtime monitoring */"); sb.AppendLine($"{ts}{ts}#include \"fbericht.h\""); sb.AppendLine($"{ts}#endif"); } sb.AppendLine($"{ts}#include \"prsvar.c\" /* parameters parser */"); sb.AppendLine($"{ts}#include \"control.c\" /* controller interface */"); sb.AppendLine($"{ts}#include \"rtappl.h\" /* applicatie routines */"); sb.AppendLine($"{ts}#include \"stdfunc.h\" /* standaard functies */"); sb.AppendLine($"{ts}#include \"extra_func.c\" /* extra standaard functies */"); if (controller.OVData.OVIngrepen.Count > 0 || controller.OVData.HDIngrepen.Count > 0) { sb.AppendLine($"{ts}#include \"ov.h\" /* ov-afhandeling */"); sb.AppendLine($"{ts}#include \"extra_func_ov.c\" /* extra standaard functies OV */"); } sb.AppendLine(); sb.AppendLine("#if (!defined AUTOMAAT && !defined AUTOMAAT_TEST)"); sb.AppendLine("/* #include \"ccdump.inc\" */"); sb.AppendLine($"{ts}#include \"keysdef.c\" /* Definitie toetsenbord t.b.v. stuffkey */"); sb.AppendLine($"{ts}#if !defined (_DEBUG)"); sb.AppendLine($"{ts}{ts}#include \"xyprintf.h\" /* Printen debuginfo */"); sb.AppendLine($"{ts}#endif"); sb.AppendLine("#endif"); sb.AppendLine(); sb.AppendLine($"{ts}#include \"detectie.c\""); sb.AppendLine($"{ts}#include \"ccolfunc.c\""); if (controller.InterSignaalGroep.Voorstarten.Any() || controller.InterSignaalGroep.Gelijkstarten.Any()) { sb.AppendLine($"{ts}#include \"syncvar.c\" /* synchronisatie functies */"); } if (controller.HalfstarData.IsHalfstar) { sb.AppendLine($"{ts}#include \"{controller.Data.Naam}hst.c\""); } foreach (var gen in OrderedPieceGenerators[CCOLCodeTypeEnum.RegCIncludes]) { sb.Append(gen.Value.GetCode(controller, CCOLCodeTypeEnum.RegCIncludes, ts)); } sb.AppendLine($"{ts}#include \"{controller.Data.Naam}reg.add\""); sb.AppendLine(); return(sb.ToString()); }
public void Apply(ControllerModel controller) { //controller.ControllerName }
public void Apply(ControllerModel controller) { controller.ApiExplorer.GroupName = controller.ControllerType.Name; }
private bool IsUmbracoApiController(ControllerModel controller) => controller.Attributes.OfType <UmbracoApiControllerAttribute>().Any();
public ManualControlBoardService(ControllerModel controller) { DataRecordAlreadySet = true; //初始状态 _controller = controller; }
public void CopyConstructor_CopiesAllProperties() { // Arrange var controller = new ControllerModel( typeof(TestController).GetTypeInfo(), new List <object>() { new HttpGetAttribute(), new MyFilterAttribute(), }); var selectorModel = new SelectorModel(); selectorModel.ActionConstraints.Add(new HttpMethodActionConstraint(new string[] { "GET" })); controller.Selectors.Add(selectorModel); controller.Application = new ApplicationModel(); controller.ControllerName = "cool"; controller.Filters.Add(new MyFilterAttribute()); controller.RouteValues.Add("key", "value"); controller.Properties.Add(new KeyValuePair <object, object>("test key", "test value")); controller.ControllerProperties.Add( new PropertyModel(typeof(TestController).GetProperty("TestProperty"), new List <object>())); // Act var controller2 = new ControllerModel(controller); // Assert foreach (var property in typeof(ControllerModel).GetProperties()) { if (property.Name.Equals("Actions") || property.Name.Equals("Selectors") || property.Name.Equals("ApiExplorer") || property.Name.Equals("ControllerProperties")) { // This test excludes other ApplicationModel objects on purpose because we deep copy them. continue; } var value1 = property.GetValue(controller); var value2 = property.GetValue(controller2); if (typeof(IEnumerable <object>).IsAssignableFrom(property.PropertyType)) { Assert.Equal <object>((IEnumerable <object>)value1, (IEnumerable <object>)value2); // Ensure non-default value Assert.NotEmpty((IEnumerable <object>)value1); } else if (typeof(IDictionary <string, string>).IsAssignableFrom(property.PropertyType)) { Assert.Equal(value1, value2); // Ensure non-default value Assert.NotEmpty((IDictionary <string, string>)value1); } else if (typeof(IDictionary <object, object>).IsAssignableFrom(property.PropertyType)) { Assert.Equal(value1, value2); // Ensure non-default value Assert.NotEmpty((IDictionary <object, object>)value1); } else if (property.PropertyType.IsValueType || Nullable.GetUnderlyingType(property.PropertyType) != null) { Assert.Equal(value1, value2); // Ensure non-default value Assert.NotEqual(value1, Activator.CreateInstance(property.PropertyType)); } else if (property.Name.Equals(nameof(ControllerModel.DisplayName))) { // DisplayName is re-calculated, hence reference equality wouldn't work. Assert.Equal(value1, value2); } else { Assert.Same(value1, value2); // Ensure non-default value Assert.NotNull(value1); } } }
private void SetControllerForStatics(ControllerModel c) { DefaultsProvider.Default.Controller = c; TLCGenControllerModifier.Default.Controller = c; TLCGenModelManager.Default.Controller = c; }
private bool IsConventionApplicable(ControllerModel controller) { return(controller.Attributes.OfType <IUseWebApiParameterConventions>().Any()); }
public static ODataControllerActionContext BuildContext(string modelPrefix, IEdmModel model, ControllerModel controller) { Assert.NotNull(model); // The reason why to create a context is that: // We don't need to call te FindEntitySet or FindSingleton before every convention. // So, for a controller, we try to call "FindEntitySet" or "FindSingleton" once. string controllerName = controller.ControllerName; ODataControllerActionContext context = new ODataControllerActionContext(modelPrefix, model, controller); IEdmEntitySet entitySet = model.EntityContainer?.FindEntitySet(controllerName); if (entitySet != null) { context.NavigationSource = entitySet; } IEdmSingleton singleton = model.EntityContainer?.FindSingleton(controllerName); if (singleton != null) { context.NavigationSource = singleton; } return(context); }
public override string GetCode(ControllerModel c, CCOLCodeTypeEnum type, string ts) { var sb = new StringBuilder(); var dets = new List <Tuple <FaseCyclusModel, DetectorModel> >(); foreach (var fc in c.Fasen.Where(x => x.SchoolIngreep != Models.Enumerations.NooitAltijdAanUitEnum.Nooit)) { foreach (var d in fc.Detectoren.Where(x2 => x2.Type == Models.Enumerations.DetectorTypeEnum.KnopBinnen || x2.Type == Models.Enumerations.DetectorTypeEnum.KnopBuiten)) { dets.Add(new Tuple <FaseCyclusModel, DetectorModel>(fc, d)); } } if (!dets.Any()) { return(""); } switch (type) { case CCOLCodeTypeEnum.RegCPreApplication: sb.AppendLine($"{ts}/* School ingreep */"); foreach (var d in dets) { sb.AppendLine($"{ts}RT[{_tpf}{_tdbsi}{_dpf}{d.Item2.Naam}] = !D[{_dpf}{d.Item2.Naam}];"); } foreach (var d in dets) { sb.AppendLine($"{ts}IH[{_hpf}{_hschoolingreep}{_dpf}{d.Item2.Naam}] = D[{_dpf}{d.Item2.Naam}] && !(RT[{_tpf}{_tdbsi}{_dpf}{d.Item2.Naam}] || T[{_tpf}{_tdbsi}{_dpf}{d.Item2.Naam}]) && !(CIF_IS[{_dpf}{d.Item2.Naam}] >= CIF_DET_STORING) && (R[{_fcpf}{d.Item1.Naam}] || FG[{_fcpf}{d.Item1.Naam}] || H[{_hpf}{_hschoolingreep}{_dpf}{d.Item2.Naam}]) || TDH[{_dpf}{d.Item2.Naam}] && !(CIF_IS[{_dpf}{d.Item2.Naam}] >= CIF_DET_STORING) && H[{_hpf}{_hschoolingreep}{_dpf}{d.Item2.Naam}];"); } break; case CCOLCodeTypeEnum.RegCMeetkriterium: sb.AppendLine($"{ts}/* School ingreep: reset BITs */"); foreach (var fc in c.Fasen.Where(x => x.SchoolIngreep != Models.Enumerations.NooitAltijdAanUitEnum.Nooit)) { sb.AppendLine($"{ts}RW[{_fcpf}{fc.Naam}] &= ~BIT8;"); } sb.AppendLine(); sb.AppendLine($"{ts}/* School ingreep: set RW BIT8 */"); foreach (var d in dets) { if (d.Item1.SchoolIngreep != Models.Enumerations.NooitAltijdAanUitEnum.Altijd) { sb.Append($"{ts}if (SCH[{_schpf}{_schschoolingreep}{d.Item1.Naam}] && "); } else { sb.Append($"{ts}if ("); } sb.AppendLine($"H[{_hpf}{_hschoolingreep}{_dpf}{d.Item2.Naam}] && T[{_tpf}{_tschoolingreepmaxg}{d.Item1.Naam}]) RW[{_fcpf}{d.Item1.Naam}] |= BIT8;"); } break; case CCOLCodeTypeEnum.RegCRealisatieAfhandeling: sb.AppendLine($"{ts}/* School ingreep: bijhouden max groen & vasthouden naloop tijd */"); foreach (var fc in c.Fasen.Where(x => x.SchoolIngreep != Models.Enumerations.NooitAltijdAanUitEnum.Nooit)) { sb.AppendLine($"{ts}RT[{_tpf}{_tschoolingreepmaxg}{fc.Naam}] = SG[{_fcpf}{fc.Naam}];"); } foreach (var d in dets) { var nl = c.InterSignaalGroep.Nalopen.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTypeEnum.StartGroen && x.DetectieAfhankelijk && x.Detectoren.Any(x2 => x2.Detector == d.Item2.Naam)); if (nl != null) { sb.AppendLine($"{ts}HT[{_tpf}{_tnlsgd}{nl.FaseVan}{nl.FaseNaar}] = T[{_tpf}{_tschoolingreepmaxg}{d.Item1.Naam}] && CV[{_fcpf}{d.Item1.Naam}] && G[{_fcpf}{d.Item1.Naam}] && IH[{_hpf}{_hschoolingreep}{_dpf}{d.Item2.Naam}];"); } } break; case CCOLCodeTypeEnum.RegCPostSystemApplication: sb.AppendLine($"{ts}/* School ingreep: knipperen wachtlicht */"); foreach (var d in dets) { if (d.Item1.SchoolIngreep != Models.Enumerations.NooitAltijdAanUitEnum.Altijd) { sb.Append($"{ts}if (SCH[{_schpf}{_schschoolingreep}{d.Item1.Naam}]) "); } sb.AppendLine($"CIF_GUS[{_uspf}{_uswt}{d.Item2.Naam}] = CIF_GUS[{_uspf}{_uswt}{d.Item2.Naam}] && !(IH[{_hpf}{_hschoolingreep}{_dpf}{d.Item2.Naam}] && Knipper_1Hz) || G[{_fcpf}{d.Item1.Naam}] && D[{_dpf}{d.Item2.Naam}] && IH[{_hpf}{_hschoolingreep}{_dpf}{d.Item2.Naam}] && Knipper_1Hz;"); } break; } return(sb.ToString()); }
protected override void ApplyConvention(ControllerModel controller) { controller.Filters.Add(new LocalhostFilter()); }
public override string GetCode(ControllerModel c, CCOLCodeTypeEnum type, string ts) { var sb = new StringBuilder(); var ff = false; switch (type) { case CCOLCodeTypeEnum.RegCTop: if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { var first = true; foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen.Where(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { if (pk.Type == PelotonKoppelingType.RHDHV) { if (first) { sb.AppendLine($"#define MAX_VK_ARRAY 10"); first = false; } sb.AppendLine($"/* Variabelen tbv vrije koppeling met {pk.KruisingNaam} */"); sb.AppendLine($"int iaTime{pk.KruisingNaam}[MAX_VK_ARRAY];"); sb.AppendLine($"int iaStatus{pk.KruisingNaam}[MAX_VK_ARRAY];"); sb.AppendLine($"int iSizeOfArray{pk.KruisingNaam};"); sb.AppendLine($"int iCount{pk.KruisingNaam};"); sb.AppendLine($"int iCounterVkop;"); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"int iOldRW{pk.KruisingNaam};"); sb.AppendLine($"bool bSingleRW{pk.KruisingNaam};"); } } } } return(sb.ToString()); case CCOLCodeTypeEnum.RegCPreApplication: var f = false; if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend && x.Type == PelotonKoppelingType.RHDHV)) { sb.AppendLine($"{ts}/* Vrije koppelingen */"); sb.AppendLine($"{ts}/* ================= */"); sb.AppendLine($"{ts}if (TS) iCounterVkop = CIF_KLOK[CIF_MINUUT] * 60 + CIF_KLOK[CIF_SECONDE];"); f = true; } if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Richting == PelotonKoppelingRichtingEnum.Uitgaand && x.Detectoren.Any())) { foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen.Where(x => x.Richting == PelotonKoppelingRichtingEnum.Uitgaand && x.Detectoren.Any())) { var sgWithD = new Dictionary <FaseCyclusModel, List <string> >(); foreach (var d in pk.Detectoren) { var sg = c.Fasen.FirstOrDefault(x => x.Detectoren.Any(x2 => x2.Naam == d.DetectorNaam)); if (sg != null) { if (!sgWithD.ContainsKey(sg)) { sgWithD.Add(sg, new List <string>()); } sgWithD[sg].Add(d.DetectorNaam); } } if (!sgWithD.Any()) { continue; } if (pk.Type == PelotonKoppelingType.DenHaag) { if (f) { sb.AppendLine(); } var ipl = CCOLElementCollector.GetKoppelSignaalCount(pk.PTPKruising, c, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.Uit); sb.AppendLine($"{ts}/* Uitgaande peloton koppeling naar {pk.KruisingNaam} */"); foreach (var sg in sgWithD) { sb.AppendLine($"{ts}IH[{_hpf}{pk.PTPKruising}{_huks}{ipl:00}] = SCH[{_schpf}{_schpku}{sg.Key.Naam}] && (SG[{_fcpf}{pk.GekoppeldeSignaalGroep}] || FG[{_fcpf}{pk.GekoppeldeSignaalGroep}]);"); foreach (var d in sg.Value) { ipl = CCOLElementCollector.GetKoppelSignaalCount(pk.PTPKruising, c, $"{pk.KruisingNaam}d{d}", CCOLKoppelSignaalRichtingEnum.Uit); sb.AppendLine($"{ts}if (G[{_fcpf}{sg.Key.Naam}] && ED[{_dpf}{d}]) IH[{_hpf}{pk.PTPKruising}{_huks}{ipl:00}] = !IH[{_hpf}{pk.PTPKruising}{_huks}{ipl:00}];"); } } } else // RHDHV { var ipl = CCOLElementCollector.GetKoppelSignaalCount(pk.PTPKruising, c, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.Uit); sb.AppendLine($"{ts}/* Uitgaande vrije koppeling {c.Data.Naam} => {pk.KruisingNaam} */"); var st = $"IH[{_hpf}{pk.PTPKruising}{_huks}{ipl:00}] = "; sb.Append($"{ts}IH[{_hpf}{pk.PTPKruising}{_huks}{ipl:00}] = "); var firstsg = true; foreach (var sg in sgWithD) { if (!firstsg) { sb.AppendLine(" || "); sb.Append($"{ts}{"".PadRight(st.Length)}"); } firstsg = false; sb.Append($"SCH[{_schpf}{_schpku}{sg.Key.Naam}] && G[fc{sg.Key.Naam}] && ("); var firstd = true; foreach (var d in sg.Value) { if (!firstd) { sb.Append(" || "); } firstd = false; sb.Append($"TDH[{_dpf}{d}] && (CIF_IS[{_dpf}{d}] < CIF_DET_STORING)"); } sb.Append(")"); } sb.AppendLine(";"); } f = true; } } if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend && x.Type == PelotonKoppelingType.DenHaag && x.Detectoren.Any())) { foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen.Where(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { sb.AppendLine($"{ts}/* Afzetten hulpelementen inkomende peloton koppelingen */"); if (pk.Type == PelotonKoppelingType.DenHaag && pk.Detectoren.Any()) { sb.AppendLine($"{ts}IH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}] = FALSE;"); } } } foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen.Where(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { var isg = CCOLElementCollector.GetKoppelSignaalCount(pk.PTPKruising, c, $"{pk.KruisingNaam}g{pk.GekoppeldeSignaalGroep}", CCOLKoppelSignaalRichtingEnum.In); if (f) { sb.AppendLine(); } if (pk.Type == PelotonKoppelingType.DenHaag && pk.Detectoren.Any()) { sb.AppendLine($"{ts}/* Inkomende peloton koppeling van {pk.KruisingNaam} */"); sb.Append($"{ts}IH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}] |= proc_pel_in_V1({_hpf}{pk.PTPKruising}{_hiks}{isg:00}, {_tpf}{_tpelmeet}{pk.GekoppeldeSignaalGroep}, {_tpf}{_tpelmaxhiaat}{pk.GekoppeldeSignaalGroep}, {_prmpf}{_prmpelgrens}{pk.GekoppeldeSignaalGroep}, {_mpf}{_mpelvtg}{pk.GekoppeldeSignaalGroep}, {_mpf}{_mpelin}{pk.GekoppeldeSignaalGroep}, "); foreach (var d in pk.Detectoren) { var id = CCOLElementCollector.GetKoppelSignaalCount(pk.PTPKruising, c, $"{pk.KruisingNaam}d{d.DetectorNaam}", CCOLKoppelSignaalRichtingEnum.In); sb.Append($"{_hpf}{pk.PTPKruising}{_hiks}{id:00}, "); } sb.AppendLine("END);"); } else if (pk.Type == PelotonKoppelingType.RHDHV) { sb.AppendLine($"{ts}/* Inkomende vrije koppeling van {pk.KruisingNaam} */"); sb.AppendLine($"{ts}if (iSizeOfArray{pk.KruisingNaam} > 0)"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}if ((iaTime{pk.KruisingNaam}[0] <= iCounterVkop) &&"); sb.AppendLine($"{ts}{ts} (abs(iaTime{pk.KruisingNaam}[0] - iCounterVkop) < 1800)) /* tbv overgang 3600sec. */"); sb.AppendLine($"{ts}{ts}{{"); sb.AppendLine($"{ts}{ts}{ts}/* hertarten naloop */"); sb.AppendLine($"{ts}{ts}{ts}if (iaStatus{pk.KruisingNaam}[0] == 1) RT[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}] = TRUE; /* Verkeer onderweg */"); sb.AppendLine($"{ts}{ts}{ts}else RT[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}] = FALSE; /* Geen verkeer */"); sb.AppendLine($""); sb.AppendLine($"{ts}{ts}{ts}for (iCount{pk.KruisingNaam} = 1; iCount{pk.KruisingNaam} < iSizeOfArray{pk.KruisingNaam} && iCount{pk.KruisingNaam} < MAX_VK_ARRAY; iCount{pk.KruisingNaam}++)"); sb.AppendLine($"{ts}{ts}{ts}{{"); sb.AppendLine($"{ts}{ts}{ts}{ts}iaTime{pk.KruisingNaam}[iCount{pk.KruisingNaam} - 1] = iaTime{pk.KruisingNaam}[iCount{pk.KruisingNaam}];"); sb.AppendLine($"{ts}{ts}{ts}{ts}iaTime{pk.KruisingNaam}[iCount{pk.KruisingNaam}] = 0;"); sb.AppendLine($"{ts}{ts}{ts}{ts}iaStatus{pk.KruisingNaam}[iCount{pk.KruisingNaam} - 1] = iaStatus{pk.KruisingNaam}[iCount{pk.KruisingNaam}];"); sb.AppendLine($"{ts}{ts}{ts}{ts}iaStatus{pk.KruisingNaam}[iCount{pk.KruisingNaam}] = 0;"); sb.AppendLine($"{ts}{ts}{ts}}}"); sb.AppendLine($"{ts}{ts}{ts}iSizeOfArray{pk.KruisingNaam}--;"); sb.AppendLine($"{ts}{ts}}}"); sb.AppendLine($"{ts}}}"); sb.AppendLine($"{ts}else"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}iaTime{pk.KruisingNaam}[0] = iaStatus{pk.KruisingNaam}[0] = 0;"); sb.AppendLine($"{ts}}}"); sb.AppendLine($""); sb.AppendLine($"{ts}/* starttijd noteren bij start hulpelement alleen wanneer het peloton het */"); sb.AppendLine($"{ts}/* TXD-moment of maximumgroen nog kan halen, anders krijgt starttijd status 0 */"); sb.AppendLine($""); sb.AppendLine($"{ts}if (SH[{_hpf}{pk.PTPKruising}{_hiks}{isg:00}] && (iSizeOfArray{pk.KruisingNaam} < (MAX_VK_ARRAY - 2)))"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}iaTime{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam}] = (CIF_KLOK[CIF_MINUUT] * 60 + CIF_KLOK[CIF_SECONDE] + PRM[{_prmpf}{_prmpelverschuif}{pk.GekoppeldeSignaalGroep}]) % 3600;"); sb.AppendLine($""); sb.AppendLine($"{ts}{ts}if ((TVG_max[{_fcpf}{pk.GekoppeldeSignaalGroep}] - TVG_timer[{_fcpf}{pk.GekoppeldeSignaalGroep}]) < (PRM[{_prmpf}{_prmpelverschuif}{pk.GekoppeldeSignaalGroep}] + T_max[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}]) * 10)"); sb.AppendLine($"{ts}{ts}{{"); sb.AppendLine($"{ts}{ts}{ts}iaStatus{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam}] = 0;"); sb.AppendLine($"{ts}{ts}{ts}iSizeOfArray{pk.KruisingNaam}++;"); sb.AppendLine($"{ts}{ts}}}"); sb.AppendLine($"{ts}{ts}else"); sb.AppendLine($"{ts}{ts}{{"); sb.AppendLine($"{ts}{ts}{ts}iaStatus{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam}] = 1;"); sb.AppendLine($"{ts}{ts}{ts}iSizeOfArray{pk.KruisingNaam}++;"); sb.AppendLine($"{ts}{ts}}}"); sb.AppendLine($"{ts}}}"); sb.AppendLine($""); sb.AppendLine($"{ts}/* eindtijd noteren bij eind hulpelement alleen als er nog een starttijd is */"); sb.AppendLine($"{ts}/* en het verschil meer is dan x, anders krijgt starttijd status 0 */"); sb.AppendLine($"{ts}if (EH[{_hpf}{pk.PTPKruising}{_hiks}{isg:00}] && iSizeOfArray{pk.KruisingNaam} < (MAX_VK_ARRAY - 1))"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}iaTime{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam}] = (CIF_KLOK[CIF_MINUUT] * 60 + CIF_KLOK[CIF_SECONDE] + PRM[{_prmpf}{_prmpelverschuif}{pk.GekoppeldeSignaalGroep}]) % 3600;"); sb.AppendLine($""); sb.AppendLine($"{ts}{ts}if (iSizeOfArray{pk.KruisingNaam} > 0)"); sb.AppendLine($"{ts}{ts}{{"); sb.AppendLine($"{ts}{ts}{ts}if (abs(iaTime{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam}] - iaTime{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam} - 1]) < PRM[{_prmpf}{_prmpelgrens}{pk.GekoppeldeSignaalGroep}])"); sb.AppendLine($"{ts}{ts}{ts}{{"); sb.AppendLine($"{ts}{ts}{ts}{ts}iaStatus{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam} - 1] = 0;"); sb.AppendLine($"{ts}{ts}{ts}}}"); sb.AppendLine($"{ts}{ts}}}"); sb.AppendLine($""); sb.AppendLine($"{ts}{ts}iaStatus{pk.KruisingNaam}[iSizeOfArray{pk.KruisingNaam}] = 0;"); sb.AppendLine($"{ts}{ts}iSizeOfArray{pk.KruisingNaam}++;"); sb.AppendLine($"{ts}}}"); } f = true; } } return(sb.ToString()); case CCOLCodeTypeEnum.RegCAanvragen: if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen.Where(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { if (pk.Type == PelotonKoppelingType.RHDHV && pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* Inkomende peloton koppeling voor {pk.GekoppeldeSignaalGroep} van kruising {pk.KruisingNaam} */"); sb.Append($"{ts}if (SH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}]"); if (pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Altijd) { sb.Append($" && SCH[{_schpf}{_schpela}{pk.GekoppeldeSignaalGroep}]"); } sb.AppendLine($") A[{_fcpf}{pk.GekoppeldeSignaalGroep}] |= BIT12;"); sb.AppendLine(); } } } return(sb.ToString()); case CCOLCodeTypeEnum.RegCMeetkriterium: if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { ff = false; foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen.Where(x => x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { if (ff) { sb.AppendLine(); } if (pk.Type == PelotonKoppelingType.DenHaag && pk.Detectoren.Any()) { sb.AppendLine($"{ts}/* Inkomende peloton koppeling voor {pk.GekoppeldeSignaalGroep} van kruising {pk.KruisingNaam} */"); if (pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* timer resetten om aanvraag te zetten */"); sb.AppendLine($"{ts}RT[{_tpf}{_tpela}{pk.GekoppeldeSignaalGroep}] = IH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}] && !T[{_tpf}{_tpela}{pk.GekoppeldeSignaalGroep}];"); } if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* timer resetten maximale tijd toepassen RW vanaf SG */"); sb.AppendLine($"{ts}RT[{_tpf}{_tpelrwmax}{pk.GekoppeldeSignaalGroep}] = SG[{_fcpf}{pk.GekoppeldeSignaalGroep}];"); sb.AppendLine($"{ts}/* timer resetten om gebied open te houden */"); sb.AppendLine($"{ts}RT[{_tpf}{_tpelstartrw}{pk.GekoppeldeSignaalGroep}] = IH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}] && !T[{_tpf}{_tpelstartrw}{pk.GekoppeldeSignaalGroep}];"); sb.AppendLine(); } if (pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* zet aanvraag als timer is afgelopen */"); sb.Append($"{ts}if (ET[{_tpf}{_tpela}{pk.GekoppeldeSignaalGroep}]"); if (pk.ToepassenAanvraag != NooitAltijdAanUitEnum.Altijd) { sb.Append($" && SCH[{_schpf}{_schpela}{pk.GekoppeldeSignaalGroep}]"); } sb.AppendLine($") A[{_fcpf}{pk.GekoppeldeSignaalGroep}] |= BIT12;"); sb.AppendLine(); } if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* start vasthoud timer bij einde timer en als de timer nog niet loopt */"); sb.AppendLine($"{ts}RT[{_tpf}{_tpelrw}{pk.GekoppeldeSignaalGroep}] = ET[{_tpf}{_tpelstartrw}{pk.GekoppeldeSignaalGroep}] && !T[{_tpf}{_tpelrw}{pk.GekoppeldeSignaalGroep}];"); sb.AppendLine(); } sb.AppendLine($"{ts}MK[{_fcpf}{pk.GekoppeldeSignaalGroep}] &= ~BIT12;"); sb.AppendLine(); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit && pk.ToepassenMeetkriterium != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* zet meetkriterium als de vasthoudperiode loopt */"); sb.Append($"{ts}if (T[{_tpf}{_tpelrw}{pk.GekoppeldeSignaalGroep}]"); if (pk.ToepassenMeetkriterium != NooitAltijdAanUitEnum.Altijd) { sb.Append($" && SCH[{_schpf}{_schpelmk}{pk.GekoppeldeSignaalGroep}]"); } sb.AppendLine(")"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}MK[{_fcpf}{pk.GekoppeldeSignaalGroep}] |= BIT2 | BIT12;"); sb.AppendLine($"{ts}}}"); sb.AppendLine(); } if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* houd groen vast als de vasthoudperiode loopt,"); sb.AppendLine($"{ts} de maximale wachttijd nog niet bereikt is,"); sb.AppendLine($"{ts} tenzij de timer al loopt (besluit wordt niet teruggenomen) */"); sb.Append($"{ts}if (T[{_tpf}{_tpelrw}{pk.GekoppeldeSignaalGroep}]"); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Altijd) { sb.Append($" && SCH[{_schpf}{_schpelrw}{pk.GekoppeldeSignaalGroep}]"); } sb.AppendLine($" && T[{_tpf}{_tpelrwmax}{pk.GekoppeldeSignaalGroep}])"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}RW[{_fcpf}{pk.GekoppeldeSignaalGroep}] |= BIT12;"); sb.AppendLine($"{ts}{ts}PP[{_fcpf}{pk.GekoppeldeSignaalGroep}] |= BIT12;"); sb.AppendLine($"{ts}{ts}PAR[{_fcpf}{pk.GekoppeldeSignaalGroep}] |= BIT12;"); sb.AppendLine($"{ts}}}"); sb.AppendLine($"{ts}else"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}PP[{_fcpf}{pk.GekoppeldeSignaalGroep}] &= ~BIT12;"); sb.AppendLine($"{ts}}}"); sb.Append($"{ts}if (!(T[{_tpf}{_tpelrw}{pk.GekoppeldeSignaalGroep}]"); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Altijd) { sb.Append($" && SCH[{_schpf}{_schpelrw}{pk.GekoppeldeSignaalGroep}]"); } sb.AppendLine($"))"); sb.AppendLine($"{ts}{{"); sb.AppendLine($"{ts}{ts}RW[{_fcpf}{pk.GekoppeldeSignaalGroep}] &= ~BIT12;"); sb.AppendLine($"{ts}}}"); } } else if (pk.Type == PelotonKoppelingType.RHDHV) { sb.AppendLine($"{ts}/* Extra verlengen tbv vrije koppeling */"); if (pk.ToepassenMeetkriterium != NooitAltijdAanUitEnum.Nooit) { if (pk.ToepassenMeetkriterium == NooitAltijdAanUitEnum.Altijd) { sb.AppendLine($"{ts}meetkriterium_exp((count){_fcpf}{pk.GekoppeldeSignaalGroep}, (bool)(T_max[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}] > 0 && T[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}]));"); } else { sb.AppendLine($"{ts}meetkriterium_exp((count){_fcpf}{pk.GekoppeldeSignaalGroep}, (bool)(SCH[{_schpf}{_schpelmk}{pk.GekoppeldeSignaalGroep}] && T_max[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}] > 0 && T[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}]));"); } } } ff = true; } } return(sb.ToString()); case CCOLCodeTypeEnum.RegCWachtgroen: if (c.PelotonKoppelingenData.PelotonKoppelingen.Any(x => x.Type == PelotonKoppelingType.RHDHV && x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { foreach (var pk in c.PelotonKoppelingenData.PelotonKoppelingen.Where(x => x.Type == PelotonKoppelingType.RHDHV && x.Richting == PelotonKoppelingRichtingEnum.Inkomend)) { if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Nooit) { sb.AppendLine($"{ts}/* Vasthouden {_fcpf}{pk.GekoppeldeSignaalGroep} */"); sb.AppendLine($"{ts}IH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}] = T_max[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}] > 0 && T[{_tpf}{_tpelnl}{pk.GekoppeldeSignaalGroep}] &&"); if (pk.ToepassenRetourWachtgroen != NooitAltijdAanUitEnum.Altijd) { sb.AppendLine($"{ts}SCH[{_schpf}{_schpelrw}{pk.GekoppeldeSignaalGroep}];"); } sb.AppendLine($""); sb.AppendLine($"{ts}/* Bewaken RW duur */"); sb.AppendLine($"{ts}RT[{_tpf}{_tpelrwmax}{pk.GekoppeldeSignaalGroep}] = SH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}] && bSingleRW{pk.KruisingNaam};"); sb.AppendLine($""); sb.AppendLine($"{ts}/* RW opzetten */"); sb.AppendLine($"{ts}if (bSingleRW{pk.KruisingNaam} && IH[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}] && !fkaa({_fcpf}{pk.GekoppeldeSignaalGroep}) && !Z[{_fcpf}{pk.GekoppeldeSignaalGroep}] && (T[{_tpf}{_tpelrwmax}{pk.GekoppeldeSignaalGroep}] || RT[{_tpf}{_tpelrwmax}{pk.GekoppeldeSignaalGroep}])" + $"{(!c.HalfstarData.IsHalfstar ? "" : $" && (!IH[{_hpf}{_hplact}] || TOTXB_PL[{_fcpf}{pk.GekoppeldeSignaalGroep}] == 0 && TOTXD_PL[{_fcpf}{pk.GekoppeldeSignaalGroep}] > 0)")}" + $") RW[{_fcpf}{pk.GekoppeldeSignaalGroep}] |= BIT14;"); sb.AppendLine($"{ts}else if (!H[{_hpf}{_hpelin}{pk.GekoppeldeSignaalGroep}]) RW[{_fcpf}{pk.GekoppeldeSignaalGroep}] &= ~BIT14;"); sb.AppendLine($""); sb.AppendLine($"{ts}/* Bewaken eenmalig opzetten RW */"); sb.AppendLine($"{ts}if (!(RW[{_fcpf}{pk.GekoppeldeSignaalGroep}] & BIT14) && (iOldRW{pk.KruisingNaam} & BIT14)/* && SCH[schvki05eenkeerRW]*/) bSingleRW{pk.KruisingNaam} = FALSE;"); sb.AppendLine($"{ts}if (EG[{_fcpf}{pk.GekoppeldeSignaalGroep}]) bSingleRW{pk.KruisingNaam} = TRUE;"); sb.AppendLine($"{ts}iOldRW{pk.KruisingNaam} = RW[{_fcpf}{pk.GekoppeldeSignaalGroep}];"); } } } return(sb.ToString());
/// <summary> /// Creates a <see cref="ControllerModel"/> for the given <see cref="TypeInfo"/>. /// </summary> /// <param name="typeInfo">The <see cref="TypeInfo"/>.</param> /// <returns>A <see cref="ControllerModel"/> for the given <see cref="TypeInfo"/>.</returns> internal static ControllerModel CreateControllerModel(TypeInfo typeInfo) { if (typeInfo == null) { throw Error.ArgumentNull(nameof(typeInfo)); } // For attribute routes on a controller, we want to support 'overriding' routes on a derived // class. So we need to walk up the hierarchy looking for the first class to define routes. // // Then we want to 'filter' the set of attributes, so that only the effective routes apply. var currentTypeInfo = typeInfo; var objectTypeInfo = typeof(object).GetTypeInfo(); IRouteTemplateProvider[] routeAttributes; do { routeAttributes = currentTypeInfo .GetCustomAttributes(inherit: false) .OfType <IRouteTemplateProvider>() .ToArray(); if (routeAttributes.Length > 0) { // Found 1 or more route attributes. break; } currentTypeInfo = currentTypeInfo.BaseType.GetTypeInfo(); }while (currentTypeInfo != objectTypeInfo); // CoreCLR returns IEnumerable<Attribute> from GetCustomAttributes - the OfType<object> // is needed to so that the result of ToArray() is object var attributes = typeInfo.GetCustomAttributes(inherit: true); // This is fairly complicated so that we maintain referential equality between items in // ControllerModel.Attributes and ControllerModel.Attributes[*].Attribute. var filteredAttributes = new List <object>(); foreach (var attribute in attributes) { if (attribute is IRouteTemplateProvider) { // This attribute is a route-attribute, leave it out. } else { filteredAttributes.Add(attribute); } } filteredAttributes.AddRange(routeAttributes); attributes = filteredAttributes.ToArray(); var controllerModel = new ControllerModel(typeInfo, attributes); AddRange(controllerModel.Selectors, CreateSelectors(attributes)); controllerModel.ControllerName = typeInfo.Name.EndsWith("Controller", StringComparison.OrdinalIgnoreCase) ? typeInfo.Name.Substring(0, typeInfo.Name.Length - "Controller".Length) : typeInfo.Name; AddRange(controllerModel.Filters, attributes.OfType <IFilterMetadata>()); foreach (var routeValueProvider in attributes.OfType <IRouteValueProvider>()) { controllerModel.RouteValues.Add(routeValueProvider.RouteKey, routeValueProvider.RouteValue); } var apiVisibility = attributes.OfType <IApiDescriptionVisibilityProvider>().FirstOrDefault(); if (apiVisibility != null) { controllerModel.ApiExplorer.IsVisible = !apiVisibility.IgnoreApi; } var apiGroupName = attributes.OfType <IApiDescriptionGroupNameProvider>().FirstOrDefault(); if (apiGroupName != null) { controllerModel.ApiExplorer.GroupName = apiGroupName.GroupName; } // Controllers can implement action filter and result filter interfaces. We add // a special delegating filter implementation to the pipeline to handle it. // // This is needed because filters are instantiated before the controller. //if (typeof(IAsyncActionFilter).GetTypeInfo().IsAssignableFrom(typeInfo) || // typeof(IActionFilter).GetTypeInfo().IsAssignableFrom(typeInfo)) //{ // controllerModel.Filters.Add(new ControllerActionFilter()); //} //if (typeof(IAsyncResultFilter).GetTypeInfo().IsAssignableFrom(typeInfo) || // typeof(IResultFilter).GetTypeInfo().IsAssignableFrom(typeInfo)) //{ // controllerModel.Filters.Add(new ControllerResultFilter()); //} return(controllerModel); }
public void Apply(ControllerModel controller) { var featureName = GetFeatureName(controller.ControllerType); controller.Properties.Add("feature", featureName); }
public void ConvertOldVersionSoftwareDataFileToCurrentModel8001() { _databaseService = new MSAccessDatabaseAccess(@"E:\2016\6 软件优化升级\4 实际工程数据\工程数据111\连城心怡都城_文件版本5.mdb", _logRecorder, _fileService); IOldVersionSoftwareDBService oldVersionService = new OldVersionSoftware8001DBService(_databaseService); IControllerOperation controllerOperation = null; string[] strFileInfo = oldVersionService.GetFileVersionAndControllerType(); ControllerModel controllerInfo = null; if (strFileInfo.Length > 0) { switch (strFileInfo[0]) { case "8001": controllerOperation = new ControllerOperation8001(); break; } if (controllerOperation != null) { controllerInfo = controllerOperation.OrganizeControllerInfoFromOldVersionSoftwareDataFile(oldVersionService); } //strFileInfo[1]; } Assert.That(controllerInfo.Type, Is.EqualTo(ControllerType.NT8001), "控制器类型不正确"); Assert.That(controllerInfo.DeviceAddressLength, Is.EqualTo(7), "器件长度为7"); Assert.That(controllerInfo.Loops.Count, Is.EqualTo(10), "回路数量不正确"); Assert.That(controllerInfo.Loops[0].Code, Is.EqualTo("0001"), "回路名称不正确"); Assert.That(controllerInfo.Loops[0].DeviceAmount, Is.EqualTo(46), "01回路器件数量不正确"); Assert.That(controllerInfo.Loops[0].GetDevices <Model.DeviceInfo8001>()[0].Code, Is.EqualTo("0001001"), "器件编码不正确"); Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].Code, Is.EqualTo("0003001"), "器件编码不正确"); Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].TypeCode, Is.EqualTo(4), "器件类型不正确"); Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].Disable, Is.EqualTo(0), "隔离不正确"); Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].SensitiveLevel, Is.EqualTo(2), "灵敏度不正确"); Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].Location, Is.EqualTo("A2三层306店"), "地点不正确"); Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].BuildingNo, Is.EqualTo(1), "楼号不正确"); //区号可以为0 Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].ZoneNo, Is.EqualTo(2), "区号不正确"); Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].FloorNo, Is.EqualTo(3), "层号不正确"); //房间可以为0 Assert.That(controllerInfo.Loops[2].GetDevices <Model.DeviceInfo8001>()[0].RoomNo, Is.EqualTo(null), "房间号不正确"); Assert.That(controllerInfo.Loops[1].Code, Is.EqualTo("0002"), "回路名称不正确"); Assert.That(controllerInfo.StandardConfig.Count, Is.EqualTo(20), "标准组态数量为20"); Assert.That(controllerInfo.StandardConfig[13].Code, Is.EqualTo("0014"), "标准组态编号为0014"); Assert.That(controllerInfo.StandardConfig[13].DeviceNo4, Is.EqualTo("0007102"), "编号4的编号为0007102"); Assert.That(controllerInfo.StandardConfig[13].LinkageNo2, Is.EqualTo("0020"), "联动组2的编号为0020"); Assert.That(controllerInfo.MixedConfig.Count, Is.EqualTo(53), "混合组态数量为53"); Assert.That(controllerInfo.MixedConfig[13].Code, Is.EqualTo("0014"), "混合组态编号为0014"); Assert.That(controllerInfo.MixedConfig[13].ActionCoefficient, Is.EqualTo("1"), "编号14的动作常数为1"); Assert.That(controllerInfo.MixedConfig[13].ActionType, Is.EqualTo(LinkageActionType.AND), "编号14的动作类型为与"); Assert.That(controllerInfo.MixedConfig[13].DeviceTypeCodeA, Is.EqualTo(13), "编号14的类型A为13"); Assert.That(controllerInfo.MixedConfig[29].TypeC, Is.EqualTo(LinkageType.ZoneLayer), "编号30的类型c为区层"); Assert.That(controllerInfo.MixedConfig[29].BuildingNoC, Is.EqualTo(6), "编号30的楼号为6"); Assert.That(controllerInfo.MixedConfig[29].ZoneNoC, Is.EqualTo(5), "编号30的区号为5"); Assert.That(controllerInfo.MixedConfig[29].LayerNoC, Is.EqualTo(-1), "编号30的层号为-1"); Assert.That(controllerInfo.MixedConfig[30].TypeC, Is.EqualTo(LinkageType.Address), "编号31的类型c为地址"); Assert.That(controllerInfo.MixedConfig[30].MachineNoC, Is.EqualTo("00"), "编号31的机号为00"); Assert.That(controllerInfo.MixedConfig[30].LoopNoC, Is.EqualTo("07"), "编号31的路号为07"); Assert.That(controllerInfo.MixedConfig[30].DeviceCodeC, Is.EqualTo("075"), "编号31的地编号为075"); Assert.That(controllerInfo.GeneralConfig.Count, Is.EqualTo(37), "通用组态数量为37"); Assert.That(controllerInfo.GeneralConfig[13].Code, Is.EqualTo("0014"), "通用组态编号为0014"); Assert.That(controllerInfo.GeneralConfig[13].ActionCoefficient, Is.EqualTo("1"), "编号14的动作常数为1"); Assert.That(controllerInfo.GeneralConfig[13].BuildingNoA, Is.EqualTo(6), "编号14的楼号为6"); Assert.That(controllerInfo.GeneralConfig[13].ZoneNoA, Is.EqualTo(5), "编号14的区号为5"); Assert.That(controllerInfo.GeneralConfig[13].LayerNoA1, Is.EqualTo(0), "编号14的层号A1为0"); Assert.That(controllerInfo.GeneralConfig[13].LayerNoA2, Is.EqualTo(0), "编号14的层号A2为0"); Assert.That(controllerInfo.GeneralConfig[13].DeviceTypeCodeA, Is.EqualTo(13), "编号14的类型A为13"); Assert.That(controllerInfo.GeneralConfig[13].TypeC, Is.EqualTo(LinkageType.ZoneLayer), "编号14的分类C为区层"); Assert.That(controllerInfo.GeneralConfig[13].BuildingNoC, Is.EqualTo(6), "编号14的楼号为6"); Assert.That(controllerInfo.GeneralConfig[13].ZoneNoC, Is.EqualTo(5), "编号14的区号C为5"); Assert.That(controllerInfo.GeneralConfig[13].LayerNoC, Is.EqualTo(-1), "编号14的层号C为-1"); Assert.That(controllerInfo.GeneralConfig[13].DeviceTypeCodeC, Is.EqualTo(36), "编号14的层号C为36"); Assert.That(controllerInfo.GeneralConfig[14].TypeC, Is.EqualTo(LinkageType.Address), "编号15的分类C为地址"); Assert.That(controllerInfo.GeneralConfig[14].MachineNoC, Is.EqualTo("00"), "编号15的机号为0"); Assert.That(controllerInfo.GeneralConfig[14].LoopNoC, Is.EqualTo("01"), "编号15的路号为1"); Assert.That(controllerInfo.GeneralConfig[14].DeviceCodeC, Is.EqualTo("001"), "编号15的层号C为001"); Assert.That(controllerInfo.GeneralConfig[14].DeviceTypeCodeC, Is.EqualTo(null), "编号14的层号C为null"); }
public void Apply(ControllerModel controller) { controller.ControllerName = "ChangedController"; }
private string GenerateRegCRealisatieAfhandeling(ControllerModel c) { var sb = new StringBuilder(); sb.AppendLine("void RealisatieAfhandeling(void)"); sb.AppendLine("{"); AddCodeTypeToStringBuilder(c, sb, CCOLCodeTypeEnum.RegCRealisatieAfhandeling, true, false, false, true); AddCodeTypeToStringBuilder(c, sb, CCOLCodeTypeEnum.RegCRealisatieAfhandelingModules, true, false, false, true); AddCodeTypeToStringBuilder(c, sb, CCOLCodeTypeEnum.RegCRealisatieAfhandelingNaModules, true, false, false, true); AddCodeTypeToStringBuilder(c, sb, CCOLCodeTypeEnum.RegCRealisatieAfhandelingModules, false, true, false, true); AddCodeTypeToStringBuilder(c, sb, CCOLCodeTypeEnum.RegCRealisatieAfhandelingNaModules, false, true, false, true); var molens = new List <ModuleMolenModel> { c.ModuleMolen }; if (c.Data.MultiModuleReeksen) { molens = c.MultiModuleMolens.Where(x => x.Modules.Any(x2 => x2.Fasen.Any())).ToList(); } if (c.InterSignaalGroep.Nalopen.Any()) { foreach (var m in molens) { sb.AppendLine($"{ts}Y{m.Reeks}[{m.Reeks}] = yml_cv_pr_nl(PR{m.Reeks}, {m.Reeks}, {m.Reeks}_MAX);"); } } else { foreach (var m in molens) { sb.AppendLine($"{ts}Y{m.Reeks}[{m.Reeks}] = yml_cv_pr(PR{m.Reeks}, {m.Reeks}, {m.Reeks}_MAX);"); } } sb.AppendLine(); foreach (var m in molens) { if (!m.Modules.Any()) { continue; } foreach (var mm in m.Modules) { var mmNaam = Regex.Replace(mm.Naam, @"ML[A-E]+", "ML"); if (mm.Naam == m.WachtModule) { sb.AppendLine($"{ts}Y{m.Reeks}[{mmNaam}] |= yml_wml(PR{m.Reeks}, {m.Reeks}_MAX);"); } else { sb.AppendLine($"{ts}Y{m.Reeks}[{mmNaam}] |= FALSE;"); } } } sb.AppendLine(); sb.AppendLine($"{ts}Modules_Add();"); sb.AppendLine(); foreach (var m in molens) { sb.AppendLine($"{ts}S{m.Reeks} = modules({m.Reeks}_MAX, PR{m.Reeks}, Y{m.Reeks}, &{m.Reeks});"); } sb.AppendLine(); if (!c.Data.MultiModuleReeksen) { sb.AppendLine($"{ts}for (fc = 0; fc < FCMAX; ++fc)"); sb.AppendLine($"{ts}" + "{"); sb.AppendLine($"{ts}{ts}YM[fc] &= ~BIT5;"); sb.AppendLine($"{ts}{ts}YM[fc] |= SML && PG[fc] ? BIT5 : FALSE;"); sb.AppendLine($"{ts}" + "}"); } else { sb.AppendLine($"{ts}for (fc = 0; fc < FCMAX; ++fc)"); sb.AppendLine($"{ts}" + "{"); sb.AppendLine($"{ts}{ts}YM[fc] &= ~BIT5;"); sb.AppendLine($"{ts}" + "}"); foreach (var m in molens) { if (!m.Modules.Any()) { continue; } foreach (var fc in m.Modules.SelectMany(x => x.Fasen).Distinct()) { sb.AppendLine($"{ts}YM[{_fcpf}{fc.FaseCyclus}] |= S{m.Reeks} && PG[{_fcpf}{fc.FaseCyclus}] ? BIT5 : FALSE;"); } } } sb.AppendLine(); AddCodeTypeToStringBuilder(c, sb, CCOLCodeTypeEnum.RegCRealisatieAfhandeling, false, true, false, true); sb.AppendLine($"{ts}RealisatieAfhandeling_Add();"); sb.AppendLine("}"); sb.AppendLine(); return(sb.ToString()); }