Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
 public RUSDeviceBase(MiddlewaredConnectionInterfaceDecorator pipe)
     : this(pipe, new IRUSDevice[0])
 {
 }
Esempio n. 4
0
 public RUSFTDIDeviceBase(MiddlewaredConnectionInterfaceDecorator pipe, IReadOnlyList <IRUSDevice> children) : base(pipe, children)
 {
 }
Esempio n. 5
0
 public RUSFTDIDeviceBase(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe)
 {
 }
Esempio n. 6
0
 public RUSLWDLink(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe)
 {
 }
Esempio n. 7
0
 public RUSInclinometr(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe)
 {
 }
Esempio n. 8
0
 public RUSTelemetry(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe)
 {
 }
Esempio n. 9
0
 public RUSRotationSensor(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe)
 {
 }
Esempio n. 10
0
 public RUSTechnologicalModule(MiddlewaredConnectionInterfaceDecorator pipe, IReadOnlyList <IRUSDevice> children)
     : base(pipe, children)
 {
 }
Esempio n. 11
0
 public RUSTechnologicalModule(MiddlewaredConnectionInterfaceDecorator pipe) : this(pipe, new IRUSDevice[0])
 {
 }
Esempio n. 12
0
 public RUSDriveControll(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe)
 {
 }
Esempio n. 13
0
 public RUSIzmeritel(MiddlewaredConnectionInterfaceDecorator pipe) : base(pipe)
 {
 }