public DeviceHandlerContextTests(ITestOutputHelper output)
        {
            Output = output;

            ICommunicationDeviceSettings settings = new SerialPortSettings()
            {
                BaudRate     = /*19200*/ 921600,
                Encoding     = 20127,
                PortNumber   = 4,
                WriteTimeout = -1,
                DataBits     = 8,
                Parity       = Parity.None,
                StopBits     = StopBits.One,
                ReadTimeout  = -1,
            };

            var dataSplitter = new StandardDataStreamSplitter('#');

            var v1 = new OnlyAlphanumericAllowedValidator();
            var v2 = AllwaysGoodValidatorSingleton.Instance;
            var v3 = AllwaysBadValidatorSingleton.Instance;

            var a1 = idfac = new PartFactoryAutofacAdapter((data, validator) => new IDPart(data, validator), v3);
            var a2 = hostidfac = new PartFactoryAutofacAdapter((data, validator) => new HostIDPart(data, validator), v3);
            var a3 = targetfac = new PartFactoryAutofacAdapter((data, validator) => new TargetPart(data, validator), v3);
            var a4 = orderfac = new PartFactoryAutofacAdapter((data, validator) => new OrderPart(data, validator), v3);
            var a5 = datafac = new PartFactoryAutofacAdapter((data, validator) => new DataPart(data, validator), v3);
            var a6 = emptyfac = new PartFactoryAutofacAdapter((data, validator) => new EmptyPart(validator), v2);

            var partFactory = new PrecisePartFactory(new Dictionary <PartType, PartFactoryAutofacAdapter>()
            {
                [PartType.ID]     = a1,
                [PartType.HostID] = a2,
                [PartType.Target] = a3,
                [PartType.Order]  = a4,
                [PartType.Data]   = a5,
                [PartType.Empty]  = a6
            });

            var comfacadap = new CommandFactoryAutoFacAdapter((id, hostid, target, order, data, Timestamp) => new Command(id, hostid, target, order, data, TimestampFactory.Timestamp));

            var Factory             = new CommandFactory('*', partFactory, comfacadap);
            var ConfirmationFactory = new ConfirmationFactory();
            var Translator          = new CommandTranslator(Factory, new RawCommandFactory('#', '*'));

            ICommunicationDeviceAsync com = new Shield.COMDevice.SerialPortAdapter(settings);

            DHC = new DeviceHandlerContext(com, dataSplitter, Translator);
        }
Esempio n. 2
0
 public DeviceHandlerContext(ICommunicationDeviceAsync device, IDataStreamSplitter streamSplitter, CommandTranslator commandTranslator)
 {
     _device = device ?? throw new ArgumentNullException(nameof(device), "Passed device cannot be NULL");
     _       = commandTranslator ?? throw new ArgumentNullException(nameof(commandTranslator));
     _       = streamSplitter ?? throw new ArgumentNullException(nameof(streamSplitter));
     Name    = device.Name;
     SetState(new ClosedState(device, streamSplitter, commandTranslator));
 }