public static IEnumerable <IRUSDevice> InstantiateSupported(IRUSConnectionInterface connectionInterface) { yield return(new RUSShockSensor(instantiateConnectionInterface()).wrap(connectionInterface)); yield return(new RUSIzmeritel(instantiateConnectionInterface()).wrap(connectionInterface)); yield return(new RUSRotationSensor(instantiateConnectionInterface()).wrap(connectionInterface)); yield return(new RUSInclinometr(instantiateConnectionInterface()).wrap(connectionInterface)); yield return(new RUSTelemetry(instantiateConnectionInterface()).wrap(connectionInterface)); yield return(new RUSTelesystem(instantiateConnectionInterface()).wrap(connectionInterface)); yield return(new RUSLWDLink(instantiateConnectionInterface()).wrap(connectionInterface)); yield return(new RUSDriveControll(instantiateConnectionInterface()).wrap(connectionInterface)); { var texModuleConnectionInterface = instantiateConnectionInterface() .Register(new RetranslatingMiddleware(RUSDeviceId.RUS_TECHNOLOGICAL_MODULE), InterfaceMiddlewareOrder.WRAPPER); yield return(new RUSTechnologicalModule(texModuleConnectionInterface, new IRUSDevice[] { new RUSInclinometr(texModuleConnectionInterface).wrap(connectionInterface), new RUSShockSensor(texModuleConnectionInterface).wrap(connectionInterface), new RUSIzmeritel(texModuleConnectionInterface).wrap(connectionInterface), }).wrap(connectionInterface)); } { var texModuleConnectionInterface = instantiateConnectionInterface() .Register(new RetranslatingMiddleware(RUSDeviceId.EMC_MODULE), InterfaceMiddlewareOrder.WRAPPER); yield return(new RUSEMCModule(texModuleConnectionInterface, new IRUSDevice[] { new RUSShockSensor(texModuleConnectionInterface).wrap(connectionInterface), }).wrap(connectionInterface)); } { var moduleConnectionInterface = instantiateConnectionInterface(); yield return(new RUSModule(moduleConnectionInterface, new IRUSDevice[] { new RUSInclinometr(moduleConnectionInterface).wrap(connectionInterface), new RUSShockSensor(moduleConnectionInterface).wrap(connectionInterface), new RUSRotationSensor(moduleConnectionInterface).wrap(connectionInterface), }).wrap(connectionInterface)); } MiddlewaredConnectionInterfaceDecorator instantiateConnectionInterface() { var middlewared = new MiddlewaredConnectionInterfaceDecorator(connectionInterface); middlewared.Register(new FTDIToSalachovProtocolUnificationMiddleware(middlewared), InterfaceMiddlewareOrder.ADAPTER); return(middlewared); } }
public RUSDeviceBase(MiddlewaredConnectionInterfaceDecorator pipe, IReadOnlyList <IRUSDevice> children) { _pipe = pipe; Children = children ?? throw new ArgumentNullException(nameof(children)); Name = Id.GetEnumValueDescription(); SupportedCommands = Files.Descriptors.Keys .Where(t => t.TargetDeviceId == Id) .Select(k => k.FileType.GetRequestAddress()) .Concat(EnumUtils .GetValues <Command>() .Select(a => (Addr: a, Info: a.GetInfo())) .Where(i => i.Info != null && !i.Info.IsFileRequest && _pipe.SupportedProtocols.Contains(i.Info.Protocol) && i.Info.IsSupportedForDevice(Id)) .Select(i => i.Addr)) .ToArray(); }
public RUSDeviceBase(MiddlewaredConnectionInterfaceDecorator pipe) : this(pipe, new IRUSDevice[0]) { }
public RUSFTDIDeviceBase(MiddlewaredConnectionInterfaceDecorator pipe, IReadOnlyList <IRUSDevice> children) : base(pipe, children) { }
public RUSFTDIDeviceBase(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe) { }
public RUSLWDLink(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe) { }
public RUSInclinometr(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe) { }
public RUSTelemetry(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe) { }
public RUSRotationSensor(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe) { }
public RUSTechnologicalModule(MiddlewaredConnectionInterfaceDecorator pipe, IReadOnlyList <IRUSDevice> children) : base(pipe, children) { }
public RUSTechnologicalModule(MiddlewaredConnectionInterfaceDecorator pipe) : this(pipe, new IRUSDevice[0]) { }
public RUSDriveControll(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe) { }
public RUSIzmeritel(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe) { }