Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 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();
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
 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);
 }
Exemplo n.º 9
0
        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;
        }
Exemplo n.º 10
0
 private void InitDeviceSettings(DeviceHandle handle, DeviceDescriptor a_dev)
 {
     IdentifyDevice(handle, a_dev);
 }
Exemplo n.º 11
0
 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);
     }
 }
Exemplo n.º 12
0
 public bool IsUpperCompatible(DeviceDescriptor a_device)
 {
     return IsCompatible(a_device, FwVersion.Upper);
 }
Exemplo n.º 13
0
 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") };
     }
 }
Exemplo n.º 14
0
 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;
 }
Exemplo n.º 15
0
        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;
                    }
                }
            }
        }
Exemplo n.º 16
0
 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"]));
     }
 }
Exemplo n.º 17
0
Arquivo: DDI_HID.cs Projeto: x893/WDS
 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;
 }
Exemplo n.º 18
0
 private void CloseDeviceSettings(DeviceHandle handle, DeviceDescriptor a_dev)
 {
     StopIdentifyDevice(handle, a_dev);
 }
Exemplo n.º 19
0
Arquivo: DDI_HID.cs Projeto: x893/WDS
        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();
            }
        }
Exemplo n.º 20
0
        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");
        }
Exemplo n.º 21
0
 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;
     }
 }
Exemplo n.º 22
0
 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;
 }
Exemplo n.º 23
0
 public void StopIdentifyDevice(DeviceHandle handle, DeviceDescriptor a_dev)
 {
 }