示例#1
0
        protected void ReportDevice(MicroXDevice device, DeviceStateEnum state)
        {
            if (!(device is T))
            {
                return;
            }

            var e = new DeviceEventArgs <T>
            {
                Device = device as T,
                State  = state
            };

            switch (state)
            {
            case DeviceStateEnum.RECONNECTED:
            case DeviceStateEnum.FOUND:
                if (OnDeviceConnected != null)
                {
                    OnDeviceConnected(this, e);
                }
                break;

            case DeviceStateEnum.REMOVED:
                if (OnDeviceRemoved != null)
                {
                    OnDeviceRemoved(this, e);
                }
                break;

            default:
                break;
            }
        }
示例#2
0
 private void InitializeDevice(
     MicroXDevice newDevice,
     MicroXDevice genericDevice)
 {
     hookUpDevice(newDevice, genericDevice);
     killOldDevice(genericDevice);
 }
示例#3
0
        private Type lookUpCorrectType(MicroXDevice device)
        {
            Assembly asm        = this.GetType().Assembly;
            var      candidates = (from type in asm.GetTypes()
                                   where isOfType(type) &&
                                   isOfSubtype(type, device.Configuration.DeviceType) &&
                                   isVersionCompatible(type, device.Version.FirmwareVersion)
                                   select type).ToArray();

            return(candidates.OrderByDescending(t => getMinFirmwareVersion(t)).First());
        }
示例#4
0
        public virtual void CreateFromAndReport(MicroXDevice genericDevice)
        {
            if (!CanCreateFrom(genericDevice))
            {
                throw new ArgumentException("Device cannot be created using this interfacer", "device");
            }

            Type type   = lookUpCorrectType(genericDevice);
            T    device = (T)Activator.CreateInstance(type, ParentDeviceManager);

            InitializeDevice(device, genericDevice);
            ReportDevice(device, DeviceStateEnum.FOUND);
        }
示例#5
0
        public bool AttachToExistingDevice(MicroXDevice microxDevice)
        {
            T existingDevice = checkForExistingDevice(microxDevice);

            if (existingDevice != null)
            {
                existingDevice.Initialize();
                InitializeDevice(existingDevice, microxDevice);
                ReportDevice(existingDevice, DeviceStateEnum.RECONNECTED);
                return(true);
            }

            return(false);
        }
示例#6
0
        private T checkForExistingDevice(MicroXDevice newDevice)
        {
            if (newDevice != null)
            {
                var existingDevices = ParentDeviceManager.FindDevices <T>(newDevice.Status.SerialNumber);

                foreach (T existingDevice in existingDevices)
                {
                    if (existingDevice.IsOfSameType(newDevice))
                    {
                        if (existingDevice.Offline)
                        {
                            return(existingDevice);
                        }
                        else
                        {
                            throwOnMultipleSerialNumbers();
                        }
                    }
                }
            }

            return(null);
        }
示例#7
0
 public FirmwareUploadDone(MicroXDevice device)
     : base(device)
 {
 }
示例#8
0
 public MicroXOpCode(MicroXDevice device)
     : base(device)
 {
 }
示例#9
0
 public DataPacket(MicroXDevice device)
     : base(device)
 {
 }
示例#10
0
 public Download(MicroXDevice device)
     : base(device)
 {
 }
示例#11
0
文件: TimerRun.cs 项目: zaksie/nimbo
 public TimerRun(MicroXDevice device)
     : base(device)
 {
 }
示例#12
0
文件: Status.cs 项目: zaksie/nimbo
 public Status(MicroXDevice device)
     : base(device)
 {
 }
示例#13
0
 public MicroXOpCodeWrapper(MicroXDevice parent)
     : base(parent)
 {
 }
示例#14
0
 public SetBoomerang(MicroXDevice device)
     : base(device)
 {
 }
示例#15
0
 public MicroXBattery(MicroXDevice device)
     : base(device)
 {
 }
示例#16
0
 protected virtual bool checkPrerequisites(MicroXDevice genericDevice)
 {
     return(MinimumRequiredFirmwareVersion <= genericDevice.Version.FirmwareVersion &&
            genericDevice.Configuration.PCBAssembly == Bits &&
            genericDevice.Configuration.DeviceType == Type);
 }
示例#17
0
文件: Setup.cs 项目: zaksie/nimbo
 public Setup(MicroXDevice device)
     : base(device)
 {
 }
示例#18
0
 private void hookUpDevice(MicroXDevice newDevice, MicroXDevice genericDevice)
 {
     newDevice.Offline = false;
     newDevice.InitializeInterfacer(genericDevice.UID, genericDevice.OpCodes.DeviceIO);
     newDevice.GetStatus();
 }
示例#19
0
 private void killOldDevice(MicroXDevice device)
 {
     device.Dispose();
 }
示例#20
0
 public MicroXHeaderNoParse(MicroXDevice device)
     : base(device)
 {
 }
示例#21
0
 public virtual bool CanCreateFrom(MicroXDevice device)
 {
     return(device.Configuration.DeviceType == Type &&
            device.Version.FirmwareVersion >= MinimumRequiredFirmwareVersion);
 }
示例#22
0
 public DefaultCalibration(MicroXDevice device)
     : base(device)
 {
 }
示例#23
0
 public SetDefinedSensor(MicroXDevice device)
     : base(device)
 {
 }