ST意法半导体
直播中

陈丽

7年用户 1529经验值
私信 关注
[问答]

在传输需要超过40秒才能完成的大型二进制文件如何在IOS上运行呢?

我正在开发一个带有 STM32 + ST25DV NFC 标签 + 移动应用程序的项目,我开发了一个通过 FTM 接收新二进制文件的引导加载程序,它与我们正在开发的应用程序(使用来自 Android 的收发 API)配合得很好,但我们无法在 IOS 上运行,开发该应用程序的人没有任何 swift 经验,并且该应用程序是在 Flutter 中开发的,使用插件将操作转换为本机 API(如收发器),它是部分工作但有一些烦人的限制:
  • NFC交易发生时,IOS NFC窗口始终在最前面,不允许显示任何进度条
  • IOS NFC部分好像有30s左右的超时时间,之后发送过程就中断了,这是我们的主要瓶颈
我在IOS版的ST25 app上看到有fw update demo,但是我现在没有NFC demo kit(我们只用了NFC04和nucleo64开发板),我也在网上搜索了一个视频,展示了如何该应用程序的 IOS 版本在 fw 更新演示期间表现良好,但找不到...
我尝试检查 IOS ST25 源代码,但是,正如我所说,这里没有人有任何使用 swift 的经验,我无法理解那里是如何完成的……
所以这是我的问题:
  • 在传输需要超过 40 秒才能完成的大型二进制文件时,该演示如何在 IOS 上运行?
  • 有没有在IOS APP上运行这个fw update demo的视频?所以我至少可以看到 ST 是如何管理它的,如果没有,ST 的人可以友好地记录下来并张贴在这里吗?
  • 如果有必要,我会购买演示板只是为了看看固件更新程序是如何工作的,来自 ST 的人可以告诉我哪些演示板被指示用于测试来自 st25 应用程序的固件更新演示吗?
谢谢


回帖(2)

夏房釜

2023-1-5 10:43:11
对于大型二进制传输,我们检测到 coreNFC 超时会话。我们保存要写入的缓冲区的地址“指针”,然后在重新启动 coreNFC 会话和缓冲区传输之前等待一小段时间。

如果您查看 ST25DVFirmwareUpdateViewController.swift 文件的第 571 行,我们会按如下方式处理超时会话:
“如果 errorNFC.code == NFCReaderError.readerSessionInvalidationErrorSessionTimeout {
      // 检测到会话超时
      // 重新启动会话以继续
      DispatchQueue.main.sync {
        transfertOnGoingAlert()
      }
      如果(mTaskToDo == .startTransfer || mTaskToDo == .resume){
        mTransferTask?.pause()
         self.miOSReaderSession = iOSReaderSession(atagReaderSessionViewControllerDelegate: self)
         continuTransferSession()
      }
     }



  • 我们有一个视频展示了如何将图片从 Tag 传输到 iPhone:它使用与 FW 二进制文件相同的机制。
  • 对于董事会,我会将请求转发给负责的董事会

信息:
在 iOS NFC Tap 应用程序中,FW 更新使用 3 个文件:


  • controller/ST25DVFirmwareUpdateViewController.swift : iOS固件升级Demo的主要入口。它处理故事板,并使用 ComStSt25pcModelST25DVTransferTask。
  • st25sdklibincludecomstst25pcmodelST25DVTransferTask.m :它是一个 javaToObjc 翻译文件。因此,阅读和理解起来很晦涩!但它包含固件更新的所有算法和协议。


举报

谭军红

2023-1-5 10:44:30
对于大型二进制传输,我们检测到 coreNFC 超时会话。我们保存要写入的缓冲区的地址“指针”,然后在重新启动 coreNFC 会话和缓冲区传输之前等待一小段时间。

如果您查看 ST25DVFirmwareUpdateViewController.swift 文件的第 571 行,我们会按如下方式处理超时会话:
“如果 errorNFC.code == NFCReaderError.readerSessionInvalidationErrorSessionTimeout {
      // 检测到会话超时
      // 重新启动会话以继续
      DispatchQueue.main.sync {
        transfertOnGoingAlert()
      }
      如果(mTaskToDo == .startTransfer || mTaskToDo == .resume){
        mTransferTask?.pause()
         self.miOSReaderSession = iOSReaderSession(atagReaderSessionViewControllerDelegate: self)
         continuTransferSession()
      }
     }



  • 我们有一个视频展示了如何将图片从 Tag 传输到 iPhone:它使用与 FW 二进制文件相同的机制。
  • 对于董事会,我会将请求转发给负责的董事会

信息:
在 iOS NFC Tap 应用程序中,FW 更新使用 3 个文件:


  • controller/ST25DVFirmwareUpdateViewController.swift : iOS固件升级Demo的主要入口。它处理故事板,并使用 ComStSt25pcModelST25DVTransferTask。
  • st25sdklibincludecomstst25pcmodelST25DVTransferTask.m :它是一个 javaToObjc 翻译文件。因此,阅读和理解起来很晦涩!但它包含固件更新的所有算法和协议。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分