public static FirmwareItem[] GetFirmwareAvailable(string location, DeviceDescriptor connectedDeviceDescriptor, bool checkFwType, string fwtype, bool a_checkOnlyDevice, FirmwareTargetEnvironment[] targetEnvironmentSet) { if (!Directory.Exists(location)) return new FirmwareItem[0]; if ((connectedDeviceDescriptor.FirmwareType != null) && connectedDeviceDescriptor.FirmwareType.Name.Contains("ENW")) connectedDeviceDescriptor.FirmwareType.Name = connectedDeviceDescriptor.FirmwareType.Name.Replace("ENW", "NWD"); string[] files = Directory.GetFiles(location, "*.whf"); ArrayList list = new ArrayList(); foreach (string str in files) { FirmwareItem firmwareItem = GetFirmwareItem(Path.Combine(location, Path.GetFileName(str))); if (new List<FirmwareTargetEnvironment>(targetEnvironmentSet).Contains(firmwareItem.targetEnvironment)) foreach (CompatibleDeviceDescriptor descriptor in firmwareItem.supportedDeviceList) if (descriptor.IsCompatible(connectedDeviceDescriptor, HwVersion.Upper, FwVersion.Lower, a_checkOnlyDevice) && (firmwareItem.type.Name != "ENW_Slave")) { if (!checkFwType) list.Add(firmwareItem); else if ((checkFwType && (fwtype == null)) && (connectedDeviceDescriptor.FirmwareType.Name == firmwareItem.type.Name)) list.Add(firmwareItem); else if ((checkFwType && (fwtype != null)) && (fwtype == firmwareItem.type.Name)) list.Add(firmwareItem); } } list.Sort(); return (FirmwareItem[]) list.ToArray(typeof(FirmwareItem)); }
public ADTRecord() { this.DevSyncObj = new object(); this._selectedAssociatedAppName = ""; this._associatedApps = new List<ADCRRecord>(); this._portAddress = new IOPortAddress(); this._isOwnedByDDI = false; this._uniqId = GlobalServices.uniqId(); this._deviceInfo = new DeviceDescriptor(); }
public ADTRecord(IOPortAddress portAddress, DeviceDescriptor deviceInfo) { this.DevSyncObj = new object(); this._selectedAssociatedAppName = ""; this._associatedApps = new List<ADCRRecord>(); this._portAddress = portAddress; this._uniqId = GlobalServices.uniqId(); this._deviceInfo = deviceInfo; this._isOwnedByDDI = portAddress.portType != PortType.SIMULATION; }
public bool IsCompatible(DeviceDescriptor a_device, FwVersion a_upper) { if (VersionCode != a_device.FirmwareVersion.VersionCode) return false; if (a_upper == FwVersion.Upper) { if (VersionNumber > a_device.FirmwareVersion.VersionNumber) return false; } else if (VersionNumber < a_device.FirmwareVersion.VersionNumber) return false; return true; }
public bool IsCompatible(DeviceDescriptor a_device, FwVersion a_upper) { if (this.Name == a_device.FirmwareType.Name) { if (this.FirmwareVersionList.Count == 0) { return true; } for (int i = 0; i < this.FirmwareVersionList.Count; i++) { if (this.FirmwareVersionList[i].VersionCode != a_device.FirmwareVersion.VersionCode) { if ((i < (this.FirmwareVersionList.Count - 1)) && (this.FirmwareVersionList[i].VersionCode == this.FirmwareVersionList[i + 1].VersionCode)) { i++; } } else if (i < (this.FirmwareVersionList.Count - 1)) { if (this.FirmwareVersionList[i].VersionCode == a_device.FirmwareVersion.VersionCode) { if (this.FirmwareVersionList[i].VersionCode != this.FirmwareVersionList[i + 1].VersionCode) { if (this.FirmwareVersionList[i].IsUpperCompatible(a_device)) { return true; } } else if (this.FirmwareVersionList[i].IsUpperCompatible(a_device) && this.FirmwareVersionList[i + 1].IsLowerCompatible(a_device)) { return true; } } } else if (this.FirmwareVersionList[i].IsCompatible(a_device, a_upper)) { return true; } } } return false; }
private void btnSelectRadio_Click(object sender, EventArgs e) { if (_pollDeviceTimer != null) _pollDeviceTimer.Stop(); string str = dgvChipTypes.SelectedRows[0].Cells[1].Value.ToString(); string str2 = dgvChipTypes.SelectedRows[0].Cells[0].Value.ToString(); foreach (CDTRecord record in _cdtDatabase) { if ((record.ChipType == str2) && (record.ChipRevision == str)) { _selectedChip = record; break; } } _adt.DeviceInfo.UserEBID = _selectedChip; DeviceDescriptor item = new DeviceDescriptor(); try { item.DeviceType = new DeviceType((DeviceTypeID)Enum.Parse(typeof(DeviceTypeID), "Radio_" + _selectedChip.ChipType.Replace('I', 'i'))); item.DeviceName = _selectedChip.ChipType; item.DeviceVersion = new DeviceVersion(_selectedChip.ChipRevision); _adt.DeviceInfo.ComponentList.Add(item); } catch { } base.DialogResult = System.Windows.Forms.DialogResult.OK; base.Close(); }
public bool IsCompatible(DeviceDescriptor a_device, HwVersion a_hwCriteria, FwVersion a_fwCriteria, bool a_checkOnlyDevice) { if (VersionCode == a_device.DeviceVersion.VersionCode) { if (a_hwCriteria == HwVersion.Upper) { if (VersionNumber > a_device.DeviceVersion.VersionNumber) return false; } else if (VersionNumber < a_device.DeviceVersion.VersionNumber) return false; if (a_checkOnlyDevice || (a_device.FirmwareType == null)) return true; if ((FirmwareTypeList == null) || (FirmwareTypeList.Count == 0)) return true; foreach (FirmwareType type in FirmwareTypeList) if (type.IsCompatible(a_device, a_fwCriteria)) return true; } return false; }
public AddDeviceResult addDevice() { IOPortAddress portAddress = new IOPortAddress { portType = PortType.SIMULATION }; TestDeviceHandle handle = new TestDeviceHandle(new DataBuffer(GlobalServices.maxCommandDataLen + GlobalServices.maxReplyDataLen), 0); portAddress.handle = new DeviceHandle(handle); DeviceDescriptor deviceInfo = new DeviceDescriptor(); ADTRecord adtRec = new ADTRecord(portAddress, deviceInfo); return addDevice(adtRec); }
private DeviceDescriptor queryDeviceInfo(DeviceHandle handle, DeviceDescriptor devInfo) { DataBuffer data = new DataBuffer(128); int writeRetryCnt = int.Parse(ConfigurationManager.AppSettings["WriteRetryCnt"]); int pollDeviceTypeProcDelay = int.Parse(ConfigurationManager.AppSettings["PollDeviceTypeProcDelay"]); int readRetryCnt = int.Parse(ConfigurationManager.AppSettings["ReadRetryCnt"]); if (handle.isInvalid()) { _log.Error("QueryDeviceInfo() - Called with INVALID argument"); return devInfo; } data.copy("\r"); write(handle, data); Thread.Sleep(pollDeviceTypeProcDelay); flushRead(handle, data); while (writeRetryCnt > 0) { if (devInfo.BootloaderMode) { data.copy("J"); _log.Debug("queryDeviceInfo():: 'J'"); } else { data.copy("I\r"); _log.Debug("queryDeviceInfo():: 'I\r'"); } if (write(handle, data) < 0) { _log.Warn("Device was probably disconnected. write() returned with -1"); return devInfo; } Thread.Sleep(pollDeviceTypeProcDelay); data.NumItems = 0; for (int i = readRetryCnt; i > 0; i--) { if (readAppend(handle, data, data.Capacity - data.NumItems) < 0) { _log.Warn("Device was probably disconnected. readAppend() returned with -1"); return devInfo; } if (data.endsWith("OK\n\r>")) break; Thread.Sleep(20); } string response = data.BufToStr; _log.Info("queryDeviceInfo():: response:" + response); try { if (response.Length < 10) return devInfo; string strTmp = response.Substring(0, 10); if (response.Contains("SRW")) { #region SRW... string[] strArray = response.Remove(0, response.IndexOf("SRW")).Split(new char[] { ',' }); string subType = strArray[3].Substring(0, 3).Trim(); switch (strArray[0].Trim()) { case "SRW001": devInfo.DeviceType = new DeviceType(DeviceTypeID.SDBC_8); switch (subType) { case "NW2": devInfo.FirmwareType = new FirmwareType("ENW_Master"); break; case "BLD": devInfo.FirmwareType = new FirmwareType("Bootloader"); break; case "PED": devInfo.FirmwareType = new FirmwareType("PER_Demo"); break; } devInfo.DevicePhoto = SDBC.SDBC_8; devInfo.MarketingName = SDBC.MarketingName; devInfo.UnAssignedDeviceText = SDBC.UnAssignedDeviceText; devInfo.SwitchPhoto = SDBC.SDBC_switch; devInfo.WarningText = SDBC.WarningText; devInfo.PartNumber = SDBC.PartNumber; break; case "SRW002": devInfo.DeviceType = new DeviceType(DeviceTypeID.SRW002); if (subType != null && subType == "LBF") devInfo.FirmwareType = new FirmwareType("LBF"); devInfo.DevicePhoto = SRW002.SRW002_400; devInfo.MarketingName = SRW002.MarketingName; devInfo.UnAssignedDeviceText = SRW002.UnAssignedDeviceText; devInfo.SwitchPhoto = SRW002.SRW002_400; devInfo.WarningText = SRW002.WarningText; devInfo.PartNumber = SRW002.PartNumber; break; case "SRW003": devInfo.DeviceType = new DeviceType(DeviceTypeID.EZLink); switch (subType) { case "NW1": devInfo.FirmwareType = new FirmwareType("NWD_Slave"); break; case "NW2": devInfo.FirmwareType = new FirmwareType("ENW_Slave"); break; case "BLD": devInfo.FirmwareType = new FirmwareType("Bootloader"); break; case "ED": devInfo.FirmwareType = new FirmwareType("EZLink"); break; } devInfo.DevicePhoto = EzLink.EZLink_D_EP; devInfo.MarketingName = EzLink.MarketingName; devInfo.UnAssignedDeviceText = EzLink.UnAssignedDeviceText; devInfo.SwitchPhoto = EzLink.EZLink_switch; devInfo.WarningText = EzLink.WarningText; devInfo.PartNumber = EzLink.PartNumber; break; case "SRW004": devInfo.DeviceType = new DeviceType(DeviceTypeID.SRW004); switch (subType) { case "LBL": devInfo.FirmwareType = new FirmwareType("LoadBoard_Lite"); break; case "BLD": devInfo.FirmwareType = new FirmwareType("Bootloader"); break; } devInfo.DevicePhoto = SRW004.Si1000DK; devInfo.MarketingName = SRW004.MarketingName; devInfo.UnAssignedDeviceText = SRW004.UnAssignedDeviceText; devInfo.WarningText = SRW004.WarningText; devInfo.PartNumber = SRW004.PartNumber; break; case "SRW005": devInfo.DeviceType = new DeviceType(DeviceTypeID.EZLink); switch (subType) { case "NW1": devInfo.FirmwareType = new FirmwareType("NWD_Slave"); break; case "NW2": devInfo.FirmwareType = new FirmwareType("ENW_Slave"); break; case "BLD": devInfo.FirmwareType = new FirmwareType("Bootloader"); break; case "ED": devInfo.FirmwareType = new FirmwareType("EZLink"); break; } devInfo.DevicePhoto = EzLink.EZLink_D_EP; devInfo.MarketingName = EzLink.MarketingName; devInfo.UnAssignedDeviceText = EzLink.UnAssignedDeviceText; devInfo.SwitchPhoto = EzLink.EZLink_switch; devInfo.WarningText = EzLink.WarningText; devInfo.PartNumber = EzLink.PartNumber; break; case "SRW007": devInfo.DeviceType = new DeviceType(DeviceTypeID.SRW007); switch (subType) { case "RKD": devInfo.FirmwareType = new FirmwareType("RKE_Master"); break; case "BLD": devInfo.FirmwareType = new FirmwareType("Bootloader"); break; } devInfo.DevicePhoto = SRW007.SRW007_100x84; devInfo.MarketingName = SRW007.MarketingName; devInfo.UnAssignedDeviceText = SRW007.UnAssignedDeviceText; devInfo.SwitchPhoto = SRW007.SRW007_switch; devInfo.WarningText = SRW007.WarningText; devInfo.PartNumber = SRW007.PartNumber; break; case "SRW008": devInfo.DeviceType = new DeviceType(DeviceTypeID.SRW008); switch (subType) { case "RKD": devInfo.FirmwareType = new FirmwareType("RKE_Master"); break; case "BLD": devInfo.FirmwareType = new FirmwareType("Bootloader"); break; } devInfo.DevicePhoto = SRW008.SRW008_100x84; devInfo.MarketingName = SRW008.MarketingName; devInfo.UnAssignedDeviceText = SRW008.UnAssignedDeviceText; devInfo.SwitchPhoto = SRW008.SRW008_switch; devInfo.WarningText = SRW008.WarningText; devInfo.PartNumber = SRW008.PartNumber; break; case "SRW009": devInfo.DeviceType = new DeviceType(DeviceTypeID.SRW009); switch (subType) { case "RKD": devInfo.FirmwareType = new FirmwareType("RKE_Master"); break; case "BLD": devInfo.FirmwareType = new FirmwareType("Bootloader"); break; } devInfo.DevicePhoto = SRW009.SRW009_100x84; devInfo.MarketingName = SRW009.MarketingName; devInfo.UnAssignedDeviceText = SRW009.UnAssignedDeviceText; devInfo.SwitchPhoto = SRW009.SRW009_switch; devInfo.WarningText = SRW009.WarningText; devInfo.PartNumber = SRW009.PartNumber; break; default: break; } devInfo.DeviceVersion = new DeviceVersion(strArray[1]); devInfo.FirmwareVersion = new FirmwareVersion(strArray[2]); return devInfo; #endregion } if (strTmp.Contains("SDBC-8")) { #region SDBC-8 int idx = strTmp.IndexOf("SDBC-8"); // SDBC-8......VVVVV......FFFFF..PED // SDBC-8......VVVVV......FFFFF..NWD // dev.version fw.version devInfo.DeviceType = new DeviceType(DeviceTypeID.SDBC_8); strTmp = response.Substring(idx + 30, 3); if (strTmp == "NWD") { devInfo.DeviceVersion = new DeviceVersion(response.Substring(idx + 12, 5)); devInfo.FirmwareType = new FirmwareType("NWD_Master"); devInfo.FirmwareVersion = new FirmwareVersion(response.Substring(idx + 23, 5)); devInfo.DevicePhoto = SDBC.SDBC_8; devInfo.SwitchPhoto = SDBC.SDBC_switch; devInfo.WarningText = SDBC.WarningText; return devInfo; } if (strTmp == "PED") { devInfo.DeviceVersion = new DeviceVersion(response.Substring(idx + 12, 5)); devInfo.FirmwareType = new FirmwareType("PER_Demo"); devInfo.FirmwareVersion = new FirmwareVersion(response.Substring(idx + 23, 5)); devInfo.DevicePhoto = SDBC.SDBC_8; devInfo.SwitchPhoto = SDBC.SDBC_switch; devInfo.WarningText = SDBC.WarningText; return devInfo; } #endregion } else if (strTmp.Contains("D-EP")) { #region EZLink int idx = strTmp.IndexOf("D-EP"); devInfo.DeviceType = new DeviceType(DeviceTypeID.EZLink); if (response.Substring(idx + 27, 3) == "NWD") { strTmp = response.Substring(idx + 9, 5); devInfo.DeviceVersion = new DeviceVersion(strTmp); devInfo.FirmwareType = new FirmwareType("NWD_Slave"); strTmp = response.Substring(idx + 20, 5); devInfo.FirmwareVersion = new FirmwareVersion(strTmp); return devInfo; } #endregion } else { if (response.Contains("V1.10W")) { devInfo.DeviceType = new DeviceType(DeviceTypeID.SDBC_8); devInfo.DeviceVersion = new DeviceVersion("01.1r"); devInfo.FirmwareType = new FirmwareType("Bootloader"); devInfo.FirmwareVersion = new FirmwareVersion("V1.10W"); devInfo.DevicePhoto = SDBC.SDBC_8; devInfo.SwitchPhoto = SDBC.SDBC_switch; devInfo.WarningText = SDBC.WarningText; return devInfo; } if (response.Length >= 26) { #region LoadBoard if (response.Substring(4, 26) == "Wireless Development Suite") { devInfo.DeviceType = new DeviceType(DeviceTypeID.LoadBoard); devInfo.DeviceVersion = new DeviceVersion("02.20"); devInfo.FirmwareType = new FirmwareType("LoadBoard"); devInfo.FirmwareVersion = new FirmwareVersion(response.Substring(0x23, 4)); devInfo.DevicePhoto = LoadBoard.HWBoard_LoadBoard; return devInfo; } if (response.Substring(4, 16) == "LoadBoard Loader") { devInfo.DeviceType = new DeviceType(DeviceTypeID.LoadBoard); devInfo.DeviceVersion = new DeviceVersion("02.20"); devInfo.FirmwareType = new FirmwareType("BootLoader"); devInfo.FirmwareVersion = new FirmwareVersion(response.Substring(0x17, 4)); return devInfo; } #endregion } } } catch (Exception exception) { _log.Error("QueryDeviceInfo() - " + exception.Message); return devInfo; } writeRetryCnt--; } return devInfo; }
private void InitDeviceSettings(DeviceHandle handle, DeviceDescriptor a_dev) { IdentifyDevice(handle, a_dev); }
public void StopIdentifyDevice(DeviceHandle handle, DeviceDescriptor a_dev) { DataBuffer data = new DataBuffer(128); int pollDeviceTypeProcDelay = int.Parse(ConfigurationManager.AppSettings["PollDeviceTypeProcDelay"]); if ((a_dev.DeviceType != null) && (a_dev.DeviceType.TypeID == DeviceTypeID.LoadBoard)) { data.copy("d0\r"); write(handle, data); Thread.Sleep(pollDeviceTypeProcDelay); } }
public bool IsUpperCompatible(DeviceDescriptor a_device) { return IsCompatible(a_device, FwVersion.Upper); }
private DeviceDescriptor queryDeviceInfo_EBID(DeviceHandle dh) { DeviceDescriptor descriptor = new DeviceDescriptor(); DeviceDescriptor item = new DeviceDescriptor(); try { byte[] destinationArray = new byte[0x100]; byte[] ptrMem = new byte[0x100]; byte[] buffer3 = new byte[0x100]; DataBuffer buffer4 = new DataBuffer(); DataBuffer buffer5 = new DataBuffer(); DataBuffer buffer6 = new DataBuffer(); DataBuffer buffer7 = new DataBuffer(); DataBuffer buffer8 = new DataBuffer(); DataBuffer buffer9 = new DataBuffer(); DataBuffer buffer10 = new DataBuffer(); int deviceName = 0; _disableDecivePortActiveCheck = true; dh.TOOLSTICKhnd.hnd.Close(); deviceName = ToolStickDebugUtil.ConnectUSB(new StringBuilder(dh.TOOLSTICKhnd.hnd.ADT.PortAddress.toolstickAddr.Serial), 1, 1, 0); if (deviceName != 0) { throw new Exception("Could not connect to the " + dh.TOOLSTICKhnd.hnd.ADT.PortAddress.toolstickAddr.Serial + " device! Error code: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.SetPinMode(2, 2, 0); if (deviceName != 0) { throw new Exception("Could not set Pin mode: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.SetPinLatch(7, 7); if (deviceName != 0) { throw new Exception("Could not Set Pin Latch: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.SetMultiConnectMode(1); if (deviceName != 0) { throw new Exception("Could not Set Multi Connect Mode 1: " + deviceName.ToString("X2")); } _isMultiConnectModeOn = true; deviceName = ToolStickDebugUtil.ConnectUSB(new StringBuilder(dh.TOOLSTICKhnd.hnd.ADT.PortAddress.toolstickAddr.Serial), 1, 1, 0); if (deviceName != 0) { throw new Exception("Could not connect to the " + dh.TOOLSTICKhnd.hnd.ADT.PortAddress.toolstickAddr.Serial + " device! Error code: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.GetCodeMemory(ptrMem, 0xc00, (uint) ptrMem.Length); if (deviceName != 0) { throw new Exception("Could not read EBID Code memory! RetCode: " + deviceName.ToString("X2")); } if (((ptrMem[0] != 1) || (ptrMem[1] != 0)) || (ptrMem[2] != 1)) { StringBuilder psDeviceName = new StringBuilder(); deviceName = ToolStickDebugUtil.GetDeviceName(ref psDeviceName); if (deviceName != 0) { throw new Exception("Could not read device name! RetCode: " + deviceName.ToString("X2")); } if ((psDeviceName.ToString() == "C8051F983") && (_ebidFixRetryCnt < 2)) { _ebidFixRetryCnt++; deviceName = ToolStickDebugUtil.Download(new StringBuilder(@"WDS_Resources\files\4x55_LED_xxx_MCU_EBID.hex"), 1, 1, 0, -1, 0, false); if (deviceName != 0) { throw new Exception("Could not Download EBID fixing code! RetCode: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.SetTargetGo(); if (deviceName != 0) { throw new Exception("Could not start the EBID MCU after fixing! RetCode: " + deviceName.ToString("X2")); } Thread.Sleep(250); deviceName = ToolStickDebugUtil.SetPinLatch(0, 7); if (deviceName != 0) { throw new Exception("Could not Set Pin Latch after fixing EBID MCU! RetCode: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.SetMultiConnectMode(0); if (deviceName != 0) { throw new Exception("Could not Set Multi Connect Mode 0 after fixing EBID MCU. RetCode: " + deviceName.ToString("X2")); } _isMultiConnectModeOn = false; deviceName = ToolStickDebugUtil.DisconnectUSB(); if (deviceName != 0) { throw new Exception("Could not Disconnect the device after fixing EBID MCU! RetCode: " + deviceName.ToString("X2")); } return queryDeviceInfo_EBID(dh); } deviceName = ToolStickDebugUtil.GetCodeMemory(ptrMem, 0x1800, (uint) ptrMem.Length); if (deviceName != 0) { throw new Exception("Could not read EBID Code memory! RetCode: " + deviceName.ToString("X2")); } } deviceName = ToolStickDebugUtil.GetXRAMMemory(buffer3, 0, (uint) buffer3.Length); if (deviceName != 0) { throw new Exception("Could not read Radio EBID Code memory(XRAM)! RetCode: " + deviceName.ToString("X2")); } Array.Reverse(buffer3, 0, buffer3.Length); Array.ConstrainedCopy(buffer3, 0x80, destinationArray, 0, 0x80); try { EBID_Data data = new EBID_Data(ptrMem); EBID_Data data2 = new EBID_Data(buffer3); descriptor.boardEbidData = data; descriptor.frEbidData = data2; } catch (Exception exception) { _log.Error("Could not create EBID object. " + exception.Message); } buffer4.appendFromStartIdx(ptrMem, 30, 8); buffer5.appendFromStartIdx(ptrMem, 0x22, 8); buffer6.appendFromStartIdx(ptrMem, 0x20, 10); if (buffer4.BufToStr == "4x55-LED") { descriptor.DeviceType = new DeviceType(DeviceTypeID.ToolStick); descriptor.DeviceVersion = new DeviceVersion("1.0r"); descriptor.FirmwareType = new FirmwareType("TSF"); descriptor.FirmwareVersion = new FirmwareVersion("1.0b"); descriptor.DeviceComponentMask = (byte) (descriptor.DeviceComponentMask | 1); descriptor.DevicePhoto = RFStick.RFStickWToolStick; descriptor.MarketingName = ToolStick.MarketingName; descriptor.PartNumber = ToolStick.PartNumber; descriptor.UnAssignedDeviceText = ToolStick.UnAssignedDeviceText; descriptor.WarningText = ToolStick.WarningText; descriptor.DeviceName = ToolStick.McuInfo; item = new DeviceDescriptor { DeviceType = new DeviceType(DeviceTypeID.RFSTICK_F930) }; buffer8.appendFromStartIdx(ptrMem, 20, 3); item.DeviceVersion = new DeviceVersion(buffer8.BufToStr + "r"); item.FirmwareType = new FirmwareType("Unknown"); item.FirmwareVersion = new FirmwareVersion("Unknown"); descriptor.ComponentList.Add(item); } else if (buffer5.BufToStr == "LCDBB930") { descriptor.DeviceType = new DeviceType(DeviceTypeID.LCDBB_F930); descriptor.DeviceVersion = new DeviceVersion("1.1r"); descriptor.FirmwareType = new FirmwareType("Unknown"); descriptor.FirmwareVersion = new FirmwareVersion("Unknown"); descriptor.DevicePhoto = LCDBaseBoard.LCDBB_F930; descriptor.MarketingName = LCDBaseBoard.MarketingName; descriptor.PartNumber = LCDBaseBoard.PartNumber; descriptor.UnAssignedDeviceText = LCDBaseBoard.UnAssignedDeviceText; descriptor.WarningText = LCDBaseBoard.WarningText; descriptor.DeviceName = LCDBaseBoard.McuInfo; } else if (buffer6.BufToStr == "MSC-WMB930") { descriptor.DeviceType = new DeviceType(DeviceTypeID.WIMB930); descriptor.DeviceVersion = new DeviceVersion("1.0r"); descriptor.FirmwareType = new FirmwareType("Unknown"); descriptor.FirmwareVersion = new FirmwareVersion("Unknown"); descriptor.DevicePhoto = WirelessMotherboard8.WIMB930; descriptor.MarketingName = WirelessMotherboard8.MarketingName; descriptor.PartNumber = WirelessMotherboard8.PartNumber; descriptor.UnAssignedDeviceText = WirelessMotherboard8.UnAssignedDeviceText; descriptor.WarningText = WirelessMotherboard8.WarningText; descriptor.DeviceName = WirelessMotherboard8.McuInfo; } item = new DeviceDescriptor(); byte num2 = 0; if (((buffer3[0x10] != 0x53) || (buffer3[0x11] != 0x49)) && ((buffer3[0x10] != 0x53) || (buffer3[0x11] != 0x69))) { num2 = 0x30; } buffer9.appendFromStartIdx(buffer3, 0x10 + num2, 6); buffer10.appendFromStartIdx(buffer3, 0x18 + num2, 2); if (buffer9.BufToStr.ToUpper().StartsWith("SI")) { try { item.DeviceType = new DeviceType((DeviceTypeID) Enum.Parse(typeof(DeviceTypeID), "Radio_" + buffer9.BufToStr.Replace('I', 'i'))); item.DeviceName = buffer9.BufToStr; } catch { item.DeviceType = new DeviceType(DeviceTypeID.Radio); } if (item.DeviceType.TypeID == DeviceTypeID.Radio_Si4012) { item.DeviceVersion = new DeviceVersion("C2"); } else { item.DeviceVersion = new DeviceVersion(buffer10.BufToStr); } descriptor.ComponentList.Add(item); if (descriptor.PnPEBID == null) { descriptor.PnPEBID = new CDTRecord(); descriptor.PnPEBID.ChipType = buffer9.BufToStr.Replace('I', 'i'); descriptor.PnPEBID.ChipRevision = item.DeviceVersion.Name.ToString(); } } if (descriptor.DeviceType.TypeID == DeviceTypeID.WIMB930) { buffer7.appendFromStartIdx(destinationArray, 70, 9); if (buffer7.BufToStr == "C8051F930") { item = new DeviceDescriptor { DeviceType = new DeviceType(DeviceTypeID.PICO_F930), DeviceVersion = new DeviceVersion("1.0r") }; descriptor.ComponentList.Add(item); } } deviceName = ToolStickDebugUtil.SetPinLatch(0, 7); if (deviceName != 0) { throw new Exception("Could not Set Pin Latch: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.ConnectUSB(new StringBuilder(dh.TOOLSTICKhnd.hnd.ADT.PortAddress.toolstickAddr.Serial), 1, 1, 0); if (deviceName != 0) { throw new Exception("Could not connect to the " + dh.TOOLSTICKhnd.hnd.ADT.PortAddress.toolstickAddr.Serial + " device! Error code: " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.SetTargetGo(); if (deviceName != 0) { throw new Exception("Could not start the code! Error code = " + deviceName.ToString("X2")); } deviceName = ToolStickDebugUtil.SetMultiConnectMode(0); if (deviceName != 0) { throw new Exception("Could not Set Multi Connect Mode 0: " + deviceName.ToString("X2")); } _isMultiConnectModeOn = false; deviceName = ToolStickDebugUtil.DisconnectUSB(); if (deviceName != 0) { throw new Exception("Could not disconnect the device! Error code = " + deviceName.ToString("X2")); } if (dh.TOOLSTICKhnd.hnd.ReOpen() != 0) { throw new Exception("Could not reopen the device with SLABToolStickDevice.dll"); } if ((dh.TOOLSTICKhnd.hnd.IsUartEnabled() != 1) && (dh.TOOLSTICKhnd.hnd.EnableUart() != 0)) { throw new Exception("Could not enable UART"); } if (dh.TOOLSTICKhnd.hnd.SetTimeouts(20, 20) != 0) { throw new Exception("Could not set UART timeouts"); } _disableDecivePortActiveCheck = false; return descriptor; } catch (Exception exception2) { _log.Error("Could not query device EBID content\n" + exception2.Message); if (_isMultiConnectModeOn) { ToolStickDebugUtil.SetMultiConnectMode(0); } ToolStickDebugUtil.DisconnectUSB(); dh.TOOLSTICKhnd.hnd.Open(0); _disableDecivePortActiveCheck = false; return new DeviceDescriptor { DeviceType = new DeviceType(DeviceTypeID.Unknown), DeviceVersion = new DeviceVersion("Unknown"), FirmwareType = new FirmwareType("Unknown"), FirmwareVersion = new FirmwareVersion("Unknown") }; } }
public static bool NewFirmwareExists( string firmwarePath, DeviceDescriptor connectedDeviceDescriptor, bool checkFwType, string fwType, out FirmwareItem newFirmware, FirmwareTargetEnvironment[] targetEnvironmentSet ) { FirmwareItem[] itemArray = GetFirmwareAvailable( firmwarePath, connectedDeviceDescriptor, checkFwType, fwType, true, targetEnvironmentSet ); if (itemArray.Length != 0) { newFirmware = itemArray[itemArray.Length - 1]; if (fwType != null && !(connectedDeviceDescriptor.FirmwareType.Name == fwType)) return true; if (newFirmware.version.VersionNumber > connectedDeviceDescriptor.FirmwareVersion.VersionNumber) return true; } else newFirmware = null; return false; }
private void queryEBID(DeviceHandle handle, DeviceDescriptor a_dev) { DataBuffer data = new DataBuffer(512) { DType = Data_Type.ASCII }; string bufToStr = ""; if (handle.isInvalid() || a_dev.DeviceType == null) _log.Error("queryEBID() - Called with INVALID argument"); else { flushRead(handle, data); if (a_dev.FirmwareType != null && (a_dev.FirmwareType.Name == "LoadBoard" || a_dev.FirmwareType.Name == "LoadBoard_Lite") ) { switch (a_dev.DeviceType.TypeID) { case DeviceTypeID.LoadBoard: case DeviceTypeID.SDBC: data.copy("L6\r"); write(handle, data); return; case DeviceTypeID.EZLink: case DeviceTypeID.SRW002: case DeviceTypeID.Unknown: return; case DeviceTypeID.SRW004: data.copy("ged\r"); if (ExchCmdWithDev(handle, data) && data.BufToStr.Contains("0x40")) { data.copy("gwd\r"); if (ExchCmdWithDev(handle, data)) { bufToStr = data.BufToStr; try { string[] strArray = bufToStr.Split(new char[] { ' ' }); int index = strArray[0].IndexOf("x"); strArray[0] = strArray[0].Remove(0, index + 1); for (int i = 1; i < strArray.Length; i++) strArray[i] = strArray[i].Replace("0x", ""); byte[] bytes = new byte[strArray.Length]; for (int j = 0; j < (strArray.Length - 1); j++) bytes[j] = Convert.ToByte(strArray[j], 16); string str3 = Encoding.Default.GetString(bytes); if (str3.Length > 6) { switch(str3.Substring(0, 6)) { case "SI1000": a_dev.PnPEBID = new CDTRecord(); a_dev.PnPEBID.ChipType = "Si1000"; a_dev.PnPEBID.ChipClass = "Transceiver"; a_dev.PnPEBID.ChipRevision = "B1"; break; case "SI1002": a_dev.PnPEBID = new CDTRecord(); a_dev.PnPEBID.ChipType = "Si1002"; a_dev.PnPEBID.ChipClass = "Transceiver"; a_dev.PnPEBID.ChipRevision = "B1"; break; case "SI1004": a_dev.PnPEBID = new CDTRecord(); a_dev.PnPEBID.ChipType = "Si1004"; a_dev.PnPEBID.ChipClass = "Transceiver"; a_dev.PnPEBID.ChipRevision = "B1"; break; case "SI1010": a_dev.PnPEBID = new CDTRecord(); a_dev.PnPEBID.ChipType = "Si1010"; a_dev.PnPEBID.ChipClass = "Transceiver"; a_dev.PnPEBID.ChipRevision = "B1"; break; case "SI1012": a_dev.PnPEBID = new CDTRecord(); a_dev.PnPEBID.ChipType = "Si1012"; a_dev.PnPEBID.ChipClass = "Transceiver"; a_dev.PnPEBID.ChipRevision = "B1"; break; case "SI1014": a_dev.PnPEBID = new CDTRecord(); a_dev.PnPEBID.ChipType = "Si1014"; a_dev.PnPEBID.ChipClass = "Transceiver"; a_dev.PnPEBID.ChipRevision = "B1"; break; } } } catch (FormatException exception) { _log.Error("queryEBID()" + exception.Message); } } } return; } } } }
public void IdentifyDevice(DeviceHandle handle, DeviceDescriptor a_dev) { if (a_dev.DeviceType != null && a_dev.DeviceType.TypeID == DeviceTypeID.LoadBoard) { DataBuffer data = new DataBuffer(128); data.copy("d3\r"); write(handle, data); Thread.Sleep(int.Parse(ConfigurationManager.AppSettings["PollDeviceTypeProcDelay"])); } }
public DeviceDescriptor queryDeviceInfo(DeviceHandle handle) { DeviceDescriptor deviceInfo = new DeviceDescriptor(); try { string[] strArray; ushort vid = 0; ushort pid = 0; this.GetVidPid(handle, ref vid, ref pid); DataBuffer data = new DataBuffer(); this.GetFeatureReport(handle, 20, data); int num3 = data[1] + (data[2] * 0x100); deviceInfo.BootloaderMode = num3 != 0; if (this.readICommand(out strArray, handle) == 0) { if ((vid == ushort.Parse(SRW006.VID, NumberStyles.HexNumber)) && (pid == ushort.Parse(SRW006.PID, NumberStyles.HexNumber))) { deviceInfo.DeviceType = new DeviceType(DeviceTypeID.SRW006); deviceInfo.DeviceVersion = new DeviceVersion("1.1r"); deviceInfo.FirmwareType = new FirmwareType("Unknown"); deviceInfo.FirmwareVersion = new FirmwareVersion("Unknown"); deviceInfo.DevicePhoto = SRW006.HWBoard_HenriettaDongle; deviceInfo.MarketingName = SRW006.MarketingName; deviceInfo.PartNumber = SRW006.PartNumber; deviceInfo.UnAssignedDeviceText = SRW006.UnAssignedDeviceText; deviceInfo.WarningText = SRW006.WarningText; return deviceInfo; } if ((vid != ushort.Parse(UDP001.VID, NumberStyles.HexNumber)) || (pid != ushort.Parse(UDP001.PID, NumberStyles.HexNumber))) { throw new Exception("Unsupported device connected with VID: " + vid.ToString("X2") + " PID: " + pid.ToString("X2")); } deviceInfo.DeviceType = new DeviceType(DeviceTypeID.UDP001); deviceInfo.DeviceVersion = new DeviceVersion("0.1r"); deviceInfo.FirmwareType = new FirmwareType("Unknown"); deviceInfo.FirmwareVersion = new FirmwareVersion("Unknown"); deviceInfo.DevicePhoto = UDP001.UDP001_Board; deviceInfo.MarketingName = UDP001.MarketingName; deviceInfo.PartNumber = UDP001.PartNumber; deviceInfo.UnAssignedDeviceText = UDP001.UnAssignedDeviceText; deviceInfo.WarningText = UDP001.WarningText; return deviceInfo; } deviceInfo.DeviceType = new DeviceType(strArray[0]); deviceInfo.DeviceVersion = new DeviceVersion(strArray[1]); deviceInfo.FirmwareType = new FirmwareType(strArray[3]); deviceInfo.FirmwareVersion = new FirmwareVersion(strArray[2]); DeviceTypeID typeID = deviceInfo.DeviceType.TypeID; if (typeID != DeviceTypeID.SRW006) { if (typeID != DeviceTypeID.UDP001) { return deviceInfo; } } else { deviceInfo.DevicePhoto = SRW006.HWBoard_HenriettaDongle; deviceInfo.MarketingName = SRW006.MarketingName; deviceInfo.PartNumber = SRW006.PartNumber; deviceInfo.UnAssignedDeviceText = SRW006.UnAssignedDeviceText; deviceInfo.WarningText = SRW006.WarningText; FirmwareType firmwareType = deviceInfo.FirmwareType; firmwareType.Name = firmwareType.Name + "_Master"; if (deviceInfo.FirmwareType.Name.StartsWith("NW1")) { deviceInfo.FirmwareType = new FirmwareType("NWD_Master"); } return deviceInfo; } deviceInfo.DevicePhoto = UDP001.UDP001_Board; deviceInfo.MarketingName = UDP001.MarketingName; deviceInfo.PartNumber = UDP001.PartNumber; deviceInfo.UnAssignedDeviceText = UDP001.UnAssignedDeviceText; deviceInfo.WarningText = UDP001.WarningText; deviceInfo.DeviceName = UDP001.McuInfo; byte result = 0; if ((strArray.Length >= 4) && byte.TryParse(strArray[4], NumberStyles.HexNumber, (IFormatProvider) null, out result)) { deviceInfo.DeviceComponentMask = result; this.queryDeviceComponentInfo(deviceInfo, handle); } } catch (Exception exception) { _log.Error(exception.Message); return deviceInfo; } return deviceInfo; }
private void CloseDeviceSettings(DeviceHandle handle, DeviceDescriptor a_dev) { StopIdentifyDevice(handle, a_dev); }
private void queryDeviceComponentInfo(DeviceDescriptor deviceInfo, DeviceHandle handle) { if ((deviceInfo.DeviceComponentMask != 0) && (deviceInfo.DeviceType.TypeID == DeviceTypeID.UDP001)) { EzDCP2 zdcp = new EzDCP2(handle); for (int i = 0; i < 8; i++) { DeviceDescriptor descriptor; byte[] buffer; if ((deviceInfo.DeviceComponentMask & (((int) 1) << i)) != 0) { buffer = new byte[1]; switch (i) { case 0: try { descriptor = new DeviceDescriptor(); DataBuffer buffer2 = new DataBuffer(); buffer = new byte[1]; zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 5, 0x18, 0x25, 80, 0, 0x68 }, ref buffer, 0, true, true); buffer2.appendFromStartIdx(buffer, 0x25, 14); if (buffer2.BufToStr == "UPMP-F960-EMIF") { descriptor.DeviceType = new DeviceType(DeviceTypeID.F960_MCU_EMIF); descriptor.DeviceVersion = new DeviceVersion("0.2r"); } else if (buffer2.BufToStr == "UPMP-F960-MLCD") { descriptor.DeviceType = new DeviceType(DeviceTypeID.F960_MCU_LCD); descriptor.DeviceVersion = new DeviceVersion("0.2r"); } else { descriptor.DeviceType = new DeviceType(DeviceTypeID.Unknown); descriptor.DeviceVersion = new DeviceVersion("0.0r"); descriptor.DeviceName = "Unknown MCU board"; } deviceInfo.ComponentList.Add(descriptor); } catch (Exception exception) { _log.Error("Could not process MCU board EBID information. " + exception.Message); } break; case 1: goto Label_0162; case 2: goto Label_039F; case 4: goto Label_0467; } } continue; Label_0162: try { descriptor = new DeviceDescriptor(); DataBuffer buffer3 = new DataBuffer(); DataBuffer buffer4 = new DataBuffer(); buffer = new byte[1]; zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 5, 0x18, 0x25, 0x51, 1, 0x68 }, ref buffer, 0, true, true); buffer3.appendFromStartIdx(buffer, 0x23, 4); buffer4.appendFromStartIdx(buffer, 0x21, 6); if (buffer3.BufToStr == "F960") { descriptor.DeviceType = new DeviceType(DeviceTypeID.PICO_F960); descriptor.DeviceVersion = new DeviceVersion("0.2r"); } else if (buffer4.BufToStr.StartsWith("Si10")) { descriptor.DeviceType = new DeviceType(DeviceTypeID.PICO_Si10xx); descriptor.DeviceVersion = new DeviceVersion("0.2r"); if (buffer4.BufToStr.Contains("Si") && (deviceInfo.PnPEBID == null)) { deviceInfo.PnPEBID = new CDTRecord(); deviceInfo.PnPEBID.ChipType = buffer4.BufToStr; deviceInfo.PnPEBID.ChipRevision = "B2"; } } else { descriptor.DeviceType = new DeviceType(DeviceTypeID.Unknown); descriptor.DeviceVersion = new DeviceVersion("0.0r"); descriptor.DeviceName = "Unknown PICO board"; } if (descriptor.DeviceType.TypeID != DeviceTypeID.Unknown) { DataBuffer buffer5 = new DataBuffer(); buffer = new byte[1]; zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 3, 0x1c, 1, 30 }, ref buffer, 0, false, true); if (buffer.Length > 0x1a) { buffer5.appendFromStartIdx(buffer, 6, 0x13); if (buffer5.BufToStr.Substring(11, 2) == "L0") { descriptor.FirmwareType = new FirmwareType(buffer5.BufToStr.Substring(11, 3)); descriptor.FirmwareVersion = new FirmwareVersion(buffer5.BufToStr.Substring(14, 5)); } else { descriptor.FirmwareType = new FirmwareType("Unknown"); descriptor.FirmwareVersion = new FirmwareVersion("Unknown"); } } else { descriptor.FirmwareType = new FirmwareType("Unknown"); descriptor.FirmwareVersion = new FirmwareVersion("Unknown"); } } deviceInfo.ComponentList.Add(descriptor); } catch (Exception exception2) { _log.Error("Could not process PICO Board EBID information. " + exception2.Message); } continue; Label_039F: try { descriptor = new DeviceDescriptor(); DataBuffer buffer6 = new DataBuffer(); buffer = new byte[1]; zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 5, 0x18, 0x25, 0x53, 0, 0x6b }, ref buffer, 0, true, true); buffer6.appendFromStartIdx(buffer, 0x27, 8); if (buffer6.BufToStr == "UPIO-LCD") { descriptor.DeviceType = new DeviceType(DeviceTypeID.IO_LCD); descriptor.DeviceVersion = new DeviceVersion("0.2r"); } else { descriptor.DeviceType = new DeviceType(DeviceTypeID.Unknown); descriptor.DeviceVersion = new DeviceVersion("0.0r"); descriptor.DeviceName = "Unknown IO board"; } deviceInfo.ComponentList.Add(descriptor); } catch (Exception exception3) { _log.Error("Could not process I/O board EBID information. " + exception3.Message); } continue; Label_0467: try { descriptor = new DeviceDescriptor(); DataBuffer buffer7 = new DataBuffer(); DataBuffer buffer8 = new DataBuffer(); buffer = new byte[1]; zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 4, 0x18, 0x31, 1, 0x2c }, ref buffer, 0, true, true); buffer = new byte[1]; zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 5, 0x18, 0x25, 0x52, 0, 0x6a }, ref buffer, 0, true, true); buffer7.appendFromStartIdx(buffer, 0x19, 6); buffer8.appendFromStartIdx(buffer, 0x21, 2); string str = buffer7.BufToStr.Replace("SI", "Si"); if (str.Contains("Si")) { if (str.StartsWith("Si446")) { zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 7, 0x1c, 0x10, 0, 0, 1, 0, 10 }, ref buffer, 0, true, true); zdcp.exchangeMessagese(new byte[] { 0x80, 0x55, 0x10, 0x1c, 0x10, 0, 0, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x58 }, ref buffer, 0, true, true); if (buffer[0x10] == 3) { buffer8 = new DataBuffer(2); buffer8.append(new byte[] { 0x42, 0x31 }, 2); } } if (deviceInfo.PnPEBID == null) { deviceInfo.PnPEBID = new CDTRecord(); deviceInfo.PnPEBID.ChipType = str; deviceInfo.PnPEBID.ChipRevision = buffer8.BufToStr; } descriptor.DeviceType = new DeviceType(DeviceTypeID.Radio); descriptor.DeviceVersion = new DeviceVersion(buffer8.BufToStr); descriptor.DeviceName = str; } else { descriptor.DeviceType = new DeviceType(DeviceTypeID.Unknown); descriptor.DeviceVersion = new DeviceVersion("0.0r"); descriptor.DeviceName = "Unknown Radion card"; } deviceInfo.ComponentList.Add(descriptor); } catch (Exception exception4) { _log.Error("Could not process Radio EBID information. " + exception4.Message); } } zdcp.initiateIcommand(); } }
private void PollingAddDevice() { ADTManager manager = ADTManager.instance(); IOPortAddress portAddress = new IOPortAddress { portType = PortType.RS232 }; int pollingAddDeviceDelay = int.Parse(ConfigurationManager.AppSettings["PollingAddDeviceDelay"]); _log.Debug("DDI_RS232 PollingAddDevice thread started"); while (!_isPollerRunEnabled) Thread.Sleep(250); WDSFrameWindow window = WDS_MainProg.frameWin(); while (!_isPollerStopped) { if (!_isPollerRunEnabled) Thread.Sleep(250); else { Thread.Sleep(pollingAddDeviceDelay); string[] portNames = SerialPort.GetPortNames(); List<string> list = ADTManager.instance().syncRS232PortLists(portNames); if (list != null) { string str = ""; foreach (string str2 in list) str = str + str2 + " "; _log.Debug("Excluded attributes are cleared for port(s): " + str); } List<IOPortAddress> newKnownPorts = new List<IOPortAddress>(); newKnownPorts = GetNewKnownPorts(portNames); for (int i = 0; i < newKnownPorts.Count; i++) { portAddress = newKnownPorts[i]; if (manager.findADTRecord(portAddress) == null && !manager.isRS232PortExcluded("COM" + newKnownPorts[i].comAddr.COMPortId.ToString()) ) { DeviceHandle handle = open(portAddress, 19200, 'D'); portAddress.handle = handle; if (!manager.restoreFreezedDevice(portAddress)) { if (!handle.isInvalid()) { bool bootLoaderMode; DeviceTypeID deviceType; if (isDeviceAlive(portAddress, out bootLoaderMode, out deviceType)) { DeviceDescriptor devInfo = new DeviceDescriptor { BootloaderMode = bootLoaderMode }; if (!bootLoaderMode) { queryDeviceInfo(portAddress.handle, devInfo); queryEBID(portAddress.handle, devInfo); } else { queryDeviceInfo(portAddress.handle, devInfo); if (devInfo.DeviceType == null) { devInfo.DeviceType = new DeviceType(deviceType); devInfo.DeviceVersion = new DeviceVersion("Unknown"); } } ADTRecord record = new ADTRecord(portAddress, devInfo); if (!bootLoaderMode) InitDeviceSettings(portAddress.handle, devInfo); try { switch (((AddDeviceResult)window.Invoke(new AddDevice(window.addDevice), new object[] { record }))) { case AddDeviceResult.AppStarted: continue; case AddDeviceResult.FirmwareReplaced: case AddDeviceResult.Aborted: close(record.PortAddress.handle); continue; case AddDeviceResult.ExcludeOrCancel: _log.Debug("COM" + portAddress.comAddr.COMPortId.ToString() + " port permanently excluded from WDS."); CloseDeviceSettings(record.PortAddress.handle, devInfo); manager.excludeRS232Port("COM" + newKnownPorts[i].comAddr.COMPortId.ToString()); close(record.PortAddress.handle); continue; } } catch (Exception exception) { _log.Error("PollingAddDevice() - Invoking AddDevice failed " + exception.Message); close(record.PortAddress.handle); } } else { close(portAddress.handle); _log.Error("Could not communicate with device COM" + portAddress.comAddr.COMPortId.ToString() + ". The device will be excluded!"); manager.excludeRS232Port("COM" + portAddress.comAddr.COMPortId.ToString()); } } else _log.Error("PollingAddDevice() - Cannot open port: " + newKnownPorts[i]); } } } } } _log.Debug("DDI_RS232 PollingAddDevice thread finished"); }
public bool IsCompatible(DeviceDescriptor a_connectedDevice, HwVersion a_hwCriteria, FwVersion a_fwCriteria, bool a_checkOnlyHwTypeAndVersion) { try { if ((a_connectedDevice != null) && (a_connectedDevice.DeviceType != null)) { foreach (DeviceType type in this.DeviceList) { if (type.IsCompatible(a_connectedDevice, a_hwCriteria, a_fwCriteria, a_checkOnlyHwTypeAndVersion)) { if (type.CompatibleComponentDescriptor._deviceTypeList.Count > 0) { bool flag = true; foreach (DeviceType type2 in type.CompatibleComponentDescriptor.DeviceList) { bool flag2 = false; foreach (DeviceDescriptor descriptor in a_connectedDevice.ComponentList) { if (type2.IsCompatible(descriptor, a_hwCriteria, a_fwCriteria, a_checkOnlyHwTypeAndVersion)) { flag2 = true; break; } } if (!flag2) { flag = false; break; } } if (!flag) { break; } } return true; } foreach (DeviceDescriptor descriptor2 in a_connectedDevice.ComponentList) { if (type.IsCompatible(descriptor2, a_hwCriteria, a_fwCriteria, a_checkOnlyHwTypeAndVersion)) { return true; } } } } return false; } catch { return false; } }
public bool IsCompatible(DeviceDescriptor a_device, HwVersion a_hwCriteria, FwVersion a_fwCriteria, bool a_checkOnlyDevice) { if (this.TypeID == a_device.DeviceType.TypeID) { if ((this._licenseList.Count > 0) && !this.isLicenseAvailable()) { return false; } if (this.DeviceVersionList.Count == 0) { return true; } for (int i = 0; i < this.DeviceVersionList.Count; i++) { if (this.DeviceVersionList[i].VersionCode != a_device.DeviceVersion.VersionCode) { if ((i < (this.DeviceVersionList.Count - 1)) && (this.DeviceVersionList[i].VersionCode == this.DeviceVersionList[i + 1].VersionCode)) { i++; } } else if (i < (this.DeviceVersionList.Count - 1)) { if (this.DeviceVersionList[i].VersionCode == a_device.DeviceVersion.VersionCode) { if (this.DeviceVersionList[i].VersionCode != this.DeviceVersionList[i + 1].VersionCode) { if (this.DeviceVersionList[i].IsCompatible(a_device, HwVersion.Upper, a_fwCriteria, a_checkOnlyDevice)) { return true; } } else if (this.DeviceVersionList[i].IsCompatible(a_device, HwVersion.Upper, a_fwCriteria, a_checkOnlyDevice) && this.DeviceVersionList[i + 1].IsCompatible(a_device, HwVersion.Lower, a_fwCriteria, a_checkOnlyDevice)) { return true; } } } else if (this.DeviceVersionList[i].IsCompatible(a_device, a_hwCriteria, a_fwCriteria, a_checkOnlyDevice)) { return true; } } } return false; }
public void StopIdentifyDevice(DeviceHandle handle, DeviceDescriptor a_dev) { }