Пример #1
0
        /// <summary>
        /// 进行WS固件升级
        /// </summary>
        /// <param name="macList">请求升级的WS列表</param>
        /// <param name="firmware">请求升级的固件信息</param>
        /// <returns>请求成功与否</returns>
        public bool Update(List <tMAC> macList, tFirmware firmware)
        {
            if (macList == null ||
                macList.Count == 0 ||
                firmware == null ||
                firmware.DicFwBlockDat == null ||
                firmware.DicFwBlockDat.Count == 0)
            {
                return(false);
            }

            try
            {
                // 复制一份升级mote列表
                lstUpdWs = new List <tMAC>();
                foreach (tMAC mote in macList)
                {
                    tMAC addMote = new tMAC();
                    addMote.Assign(mote);
                    lstUpdWs.Add(addMote);
                }

                // 复制一份固件信息
                fw = new tFirmware(firmware);

                // 构造升级线程
                Thread threadUpdateWorker = new Thread(UpdateHandler);
                threadUpdateWorker.Name     = "UpdateHandler";
                threadUpdateWorker.Priority = ThreadPriority.AboveNormal;
                // 线程升级线程
                threadUpdateWorker.Start();

                return(true);
            }
            catch (Exception ex)
            {
                CommStackLog.RecordErr(enLogLayer.eAdapter, "Message:" + ex.Message);
                CommStackLog.RecordErr(enLogLayer.eAdapter, "Source: " + ex.Source);
                CommStackLog.RecordErr(enLogLayer.eAdapter, "StackTrace: " + ex.StackTrace);
                CommStackLog.RecordErr(enLogLayer.eAdapter, "ToString: " + ex.ToString());

                return(false);
            }
        }
Пример #2
0
        /// <summary>
        /// 复制构造函数
        /// </summary>
        /// <param name="fw">复制的对象</param>
        public tFirmware(tFirmware fw)
        {
            FwDesc.u32MagicWord  = fw.FwDesc.u32MagicWord;
            FwDesc.verFw.u8Main  = fw.FwDesc.verFw.u8Main;
            FwDesc.verFw.u8Sub   = fw.FwDesc.verFw.u8Sub;
            FwDesc.verFw.u8Rev   = fw.FwDesc.verFw.u8Rev;
            FwDesc.verFw.u8Build = fw.FwDesc.verFw.u8Build;
            FwDesc.u32Size       = fw.FwDesc.u32Size;
            FwDesc.u8BlockSize   = fw.FwDesc.u8BlockSize;
            FwDesc.u16BlockNum   = fw.FwDesc.u16BlockNum;
            FwDesc.u32EntryPoint = fw.FwDesc.u32EntryPoint;

            DicFwBlockDat = new Dictionary <ushort, tFwBlockDat>();
            for (ushort i = 0; i < fw.DicFwBlockDat.Count; i++)
            {
                tFwBlockDat fwBlkDat = new tFwBlockDat();
                fwBlkDat.size = fw.DicFwBlockDat[i].size;
                fwBlkDat.data = new byte[fwBlkDat.size];
                Array.Copy(fw.DicFwBlockDat[i].data, fwBlkDat.data, fwBlkDat.size);
                DicFwBlockDat.Add(i, fwBlkDat);
            }
        }