Commit Graph

6 Commits

Author SHA1 Message Date
km2023
d5729a1a41 feat(sdk): OTA 升级流程对齐 expo + 拆 extension 文件分层 + 秘钥本地化
主要改动:
- 新增 fetchLatestFirmware/upgradeFirmware/tryReportPendingUpgrade
  三段 OTA 接口,对齐 expo bindDeviceWithOrchestration 行为
- bind 仅做硬绑+getVersion,软绑/对账上报/拉最新固件搬到
  fetchLatestFirmware 内部串;软绑失败自动硬解回滚
- UpgradeRecord 复合主键 (sn, firmwareId) 持久化 + sn 级 in-flight 互斥
- DuooomiBleSDKDelegate 新增 didUpdateUpgradeRecords,集成方
  可观察对账上报结果(reported/outcome 状态)
- DuooomiBleSDK 主类按职责拆 5 个 extension 文件,公开 API 不变
- TargetFirmware 简化为只取必要字段 + 新增 forceUpgrade
- scanNamePrefix 改为必填 String
- demo 秘钥移至本地 DemoSecrets.swift (gitignored)
- README 重写:完整 OTA 流程示例 + 上报状态判定表

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 14:46:41 +08:00
km2023
bc9f4e0da3 test: lock bind/setPlayMode JSON encoding via semantic assertions
Replace brittle exact-byte equality checks in BindPayloadByteRegressionTests
with substring + dict-based semantic assertions that tolerate Swift JSONEncoder
key-order variance across runtime versions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 10:57:36 +08:00
km2023
c3a726fc02 feat: add setPlayMode SDK API with isActivated precondition 2026-05-06 10:42:09 +08:00
km2023
7aec09be2a feat: extend BindPayload with optional loop field; add setPlayMode service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 10:38:19 +08:00
km2023
4b1017df42 feat: add optional loop field to DeviceInfo 2026-05-06 10:34:34 +08:00
km2023
be851b05ec feat: add PlayMode enum (single=0, loop=1) 2026-05-06 10:31:36 +08:00