iOSDFULibrary固件升級代碼和踩的坑


//固件升級代碼(設置代理之類的就不說了,代碼這么多原理也看不過來)
//
DFUFirmware *selectedFirmware = [[DFUFirmware alloc] initWithZipFile:firmWareData];
    dispatch_queue_t eventQueue = dispatch_queue_create("com.ota.updater", DISPATCH_QUEUE_CONCURRENT);
    DFUServiceInitiator * dfuInitiator = [[DFUServiceInitiator alloc] initWithQueue:eventQueue delegateQueue:eventQueue progressQueue:eventQueue loggerQueue:eventQueue];
    dfuInitiator = [dfuInitiator withFirmware:selectedFirmware];
    dfuInitiator.delegate = self;
    dfuInitiator.progressDelegate = self;
    dfuInitiator.logger = self;
///這個設置無關精要
    //dfuInitiator.packetReceiptNotificationParameter = 4;
///之前一直處理不成功,自動斷開連接然后又一直重試連接,重試是sdk搞出來的事情,最后發現是一直在嘗試給硬件設置名稱(我們的硬件這類命令發過去都是要先綁定和授權的)所以一直失敗,由此設置這個屬性不讓它進行這種莫名其妙的操作,接下來就是見證奇跡的時刻了
    dfuInitiator.alternativeAdvertisingNameEnabled = NO;
    dfuInitiator.enableUnsafeExperimentalButtonlessServiceInSecureDfu = YES;
self.dfuController = [[dfuInitiator withFirmware:selectedFirmware] startWithTarget:peripheral];

不進行這個配置,使用其他工具 nRF Connect上報的錯誤信息(后來看這個報錯也比較明確說了處理方式)

[Callback] Central Manager did disconnect peripheral
Disconnected by the remote device
Buttonless service not configured, see: https://devzone.nordicsemi.com/f/nordic-q-a/59881/advertising-rename-feature-not-working/243566#243566. To workaround, disable alternative advertising name.
Connecting to T001...
centralManager.connect(peripheral, options: nil)
[Callback] Central Manager did connect peripheral
Connected to T001
Discovering services...

系統給出的斷連錯誤信息:

Error Domain=CBErrorDomain Code=6 "The connection has timed out unexpectedly." UserInfo={NSLocalizedDescription=The connection has timed out unexpectedly.}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM