From 9483dd412bfde9715c24f0b64ef7074936f73258 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Sat, 9 May 2026 20:55:31 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=B7=BB=E5=8A=A0=20device?= =?UTF-8?q?=5Fjieli=20=E7=8B=AC=E5=AE=B6=20vendor=20=E7=9A=84=20framework?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前 commit d4eaa42ac 为避免与 ota plugin 冲突删了这 4 个 xcframework, 现在 ota plugin 已废弃 → 由 device_jieli 独家提供: - JL_OTALib.xcframework (v2.4.1) - JL_AdvParse.xcframework - JL_HashPair.xcframework - JLLogHelper.xcframework Co-Authored-By: Claude Opus 4.7 (1M context) --- .../JLLogHelper.xcframework/Info.plist | 44 +++ .../Headers/JLLogHelper.h | 19 ++ .../Headers/JLLogManager.h | 88 +++++ .../JLLogHelper.framework/Info.plist | Bin 0 -> 902 bytes .../JLLogHelper.framework/JLLogHelper | Bin 0 -> 59584 bytes .../Modules/module.modulemap | 6 + .../Headers/JLLogHelper.h | 19 ++ .../Headers/JLLogManager.h | 88 +++++ .../JLLogHelper.framework/Info.plist | Bin 0 -> 882 bytes .../JLLogHelper.framework/JLLogHelper | Bin 0 -> 143744 bytes .../Modules/module.modulemap | 6 + .../_CodeSignature/CodeResources | 147 +++++++++ .../JL_AdvParse.xcframework/Info.plist | 44 +++ .../Headers/JLAdvParse.h | 72 +++++ .../Headers/JLChargingBoxAdv.h | 64 ++++ .../Headers/JLDevicesAdv.h | 54 ++++ .../Headers/JLEarphoneAdv.h | 47 +++ .../JL_AdvParse.framework/Headers/JLOtaAdv.h | 25 ++ .../Headers/JLSoundBoxAdv.h | 19 ++ .../Headers/JLSoundCardAdv.h | 19 ++ .../JL_AdvParse.framework/Headers/JLTwsAdv.h | 89 ++++++ .../Headers/JLWatchAdv.h | 35 ++ .../Headers/JL_AdvParse.h | 27 ++ .../JL_AdvParse.framework/Info.plist | Bin 0 -> 904 bytes .../JL_AdvParse.framework/JL_AdvParse | Bin 0 -> 120024 bytes .../Modules/module.modulemap | 6 + .../Headers/JLAdvParse.h | 72 +++++ .../Headers/JLChargingBoxAdv.h | 64 ++++ .../Headers/JLDevicesAdv.h | 54 ++++ .../Headers/JLEarphoneAdv.h | 47 +++ .../JL_AdvParse.framework/Headers/JLOtaAdv.h | 25 ++ .../Headers/JLSoundBoxAdv.h | 19 ++ .../Headers/JLSoundCardAdv.h | 19 ++ .../JL_AdvParse.framework/Headers/JLTwsAdv.h | 89 ++++++ .../Headers/JLWatchAdv.h | 35 ++ .../Headers/JL_AdvParse.h | 27 ++ .../JL_AdvParse.framework/Info.plist | Bin 0 -> 884 bytes .../JL_AdvParse.framework/JL_AdvParse | Bin 0 -> 269840 bytes .../Modules/module.modulemap | 6 + .../_CodeSignature/CodeResources | 267 ++++++++++++++++ .../JL_HashPair.xcframework/Info.plist | 44 +++ .../JL_HashPair.framework/Headers/BtHash.h | 25 ++ .../Headers/JLHashHandler.h | 59 ++++ .../Headers/JL_HashPair.h | 21 ++ .../Headers/JL_ble_pair.h | 20 ++ .../JL_HashPair.framework/Info.plist | Bin 0 -> 904 bytes .../JL_HashPair.framework/JL_HashPair | Bin 0 -> 77784 bytes .../Modules/module.modulemap | 6 + .../JL_HashPair.framework/Headers/BtHash.h | 25 ++ .../Headers/JLHashHandler.h | 59 ++++ .../Headers/JL_HashPair.h | 21 ++ .../Headers/JL_ble_pair.h | 20 ++ .../JL_HashPair.framework/Info.plist | Bin 0 -> 884 bytes .../JL_HashPair.framework/JL_HashPair | Bin 0 -> 178416 bytes .../Modules/module.modulemap | 6 + .../_CodeSignature/CodeResources | 177 ++++++++++ .../JL_OTALib.xcframework/Info.plist | 44 +++ .../JL_OTALib.framework/Headers/JLOTAFile.h | 52 +++ .../JL_OTALib.framework/Headers/JLOtaCustom.h | 62 ++++ .../Headers/JLOtaReConnectOption.h | 43 +++ .../JL_OTALib.framework/Headers/JL_OTALib.h | 22 ++ .../Headers/JL_OTAManager.h | 302 ++++++++++++++++++ .../JL_OTALib.framework/Headers/jl_ufw.h | 207 ++++++++++++ .../ios-arm64/JL_OTALib.framework/Info.plist | Bin 0 -> 900 bytes .../ios-arm64/JL_OTALib.framework/JL_OTALib | Bin 0 -> 207664 bytes .../Modules/module.modulemap | 6 + .../JL_OTALib.framework/Headers/JLOTAFile.h | 52 +++ .../JL_OTALib.framework/Headers/JLOtaCustom.h | 62 ++++ .../Headers/JLOtaReConnectOption.h | 43 +++ .../JL_OTALib.framework/Headers/JL_OTALib.h | 22 ++ .../Headers/JL_OTAManager.h | 302 ++++++++++++++++++ .../JL_OTALib.framework/Headers/jl_ufw.h | 207 ++++++++++++ .../JL_OTALib.framework/Info.plist | Bin 0 -> 880 bytes .../JL_OTALib.framework/JL_OTALib | Bin 0 -> 455744 bytes .../Modules/module.modulemap | 6 + .../_CodeSignature/CodeResources | 207 ++++++++++++ 76 files changed, 3764 insertions(+) create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOTAFile.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTAManager.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/jl_ufw.h create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Info.plist create mode 100755 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/JL_OTALib create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Modules/module.modulemap create mode 100644 local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/_CodeSignature/CodeResources diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist new file mode 100644 index 000000000..6ce64f21d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JLLogHelper.framework/JLLogHelper + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JLLogHelper.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + JLLogHelper.framework/JLLogHelper + LibraryIdentifier + ios-arm64 + LibraryPath + JLLogHelper.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h new file mode 100644 index 000000000..a681462cc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h @@ -0,0 +1,19 @@ +// +// JLLogHelper.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JLLogHelper. +FOUNDATION_EXPORT double JLLogHelperVersionNumber; + +//! Project version string for JLLogHelper. +FOUNDATION_EXPORT const unsigned char JLLogHelperVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h new file mode 100644 index 000000000..8f16c2a12 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h @@ -0,0 +1,88 @@ +// +// JLLogManager.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 打印宏 +#define kJLLog(level,fmt...) [JLLogManager logLevel:level funcName:__FUNCTION__ line:__LINE__ format:fmt] + +typedef NS_ENUM(NSInteger, JLLOG_LEVEL) { + JLLOG_COMPLETE = 0, + JLLOG_DEBUG = 1, + JLLOG_INFO = 2, + JLLOG_WARN = 3, + JLLOG_ERROR = 4, +}; + +/// 日志打印 +@interface JLLogManager : NSObject + +/// 打印SDK版本 ++(void)sdkVersion; + +///清理已存储的打印 ++(void)clearLog; + +/** + * 打印文本 + */ ++(void)openLogTextFile; + +///重定向保存日志文件路径设置 +/// @param path 路径 ++(void)redirectLogPath:(NSString *)path; + +/// 收集日志回调接口 +/// @param block 回调 ++(void)collectLog:(void(^)(NSString *log))block; + +/// 打印时间 +/// @param isTimeStamp 是否打印 default is false ++(void)logWithTimestamp:(BOOL)isTimeStamp; + +/// 把日志保存存储起来 +/// @param isSave 是否保存 default is yes ++(void)saveLogAsFile:(BOOL)isSave; + +///LOG使能与等级,默认开启且debug等级。 +/// @param enable LOG使能 +/// @param isMore 是否打印【函数名&行号】 +/// @param level LOG等级 ++(void)setLog:(BOOL)enable IsMore:(BOOL)isMore Level:(JLLOG_LEVEL)level; + +/// 打印函数 +/// @param level LOG等级 +/// @param func 函数名 +/// @param line 行号 +/// @param format 内容 ++(void)logLevel:(JLLOG_LEVEL)level funcName:(const char* _Nullable)func line:(const int)line format:(NSString * _Nonnull)format,...; + +/// 打印 +/// @param something 任意字符串内容 ++(void)logSomething:(NSString *)something; + +/// 打印对象 +/// @param object 任意对象 ++(void)logObject:(id)object; + + + +/// 打印 +/// @param level LOG等级 +/// @param content 内容 ++(void)logLevel:(JLLOG_LEVEL)level content:(NSString *)content; + +/// 保存日志信息到文件中 +/// @param logContent 日志内容 ++(void)saveLog:(NSString *)logContent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..3c961562c6aa95f0595c61b70ec475292a80728c GIT binary patch literal 902 zcmYjO%Tv=p82@(b1D`CQSP&Gdh_A*pJnGGnR)z`%Y*Il*GHJ4H7d8)*6eu(5!HWlP z{s9i&JbUxx)qlXNS5MA3o}5v~O=+eiv-^GD@A1v9hP|Y=%{oags&ft7a7xs$qLJlXuj#W|JzOsr#E_XuXAPV2rcQ>+g%W+%U_Q0> ziJajX6~Za^Mi~|Qjy83Q;L?6CD|oe$bkzUG{FZ3HK;=fBk(~i1!S=%MYi4gCD;{g8a9NE0vEdk zrtsP#j=)`ka1lFQf>uQ#5NaQ`#BPD~{>Dv$2;P&*hHp<#LKkGAC|bRMx9|}@!&mr) z2uh(ex`P%`1=(mDy+m)&JM;;CLEq62^b`HXNj!u{@faS*GFI>keu}Gj6Yt>X_!WMQ Yf8#&+Ujh;sS|3LH5pK0(J0!aP1A2%DjQ{`u literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper new file mode 100755 index 0000000000000000000000000000000000000000..7d4cce10097de0b2d706939daa98be3867b24c8e GIT binary patch literal 59584 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 S-P94#C68MdcIsafLi{gy?S@(a literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap new file mode 100644 index 000000000..21384c4ed --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JLLogHelper { + umbrella header "JLLogHelper.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h new file mode 100644 index 000000000..a681462cc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h @@ -0,0 +1,19 @@ +// +// JLLogHelper.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JLLogHelper. +FOUNDATION_EXPORT double JLLogHelperVersionNumber; + +//! Project version string for JLLogHelper. +FOUNDATION_EXPORT const unsigned char JLLogHelperVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h new file mode 100644 index 000000000..8f16c2a12 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h @@ -0,0 +1,88 @@ +// +// JLLogManager.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 打印宏 +#define kJLLog(level,fmt...) [JLLogManager logLevel:level funcName:__FUNCTION__ line:__LINE__ format:fmt] + +typedef NS_ENUM(NSInteger, JLLOG_LEVEL) { + JLLOG_COMPLETE = 0, + JLLOG_DEBUG = 1, + JLLOG_INFO = 2, + JLLOG_WARN = 3, + JLLOG_ERROR = 4, +}; + +/// 日志打印 +@interface JLLogManager : NSObject + +/// 打印SDK版本 ++(void)sdkVersion; + +///清理已存储的打印 ++(void)clearLog; + +/** + * 打印文本 + */ ++(void)openLogTextFile; + +///重定向保存日志文件路径设置 +/// @param path 路径 ++(void)redirectLogPath:(NSString *)path; + +/// 收集日志回调接口 +/// @param block 回调 ++(void)collectLog:(void(^)(NSString *log))block; + +/// 打印时间 +/// @param isTimeStamp 是否打印 default is false ++(void)logWithTimestamp:(BOOL)isTimeStamp; + +/// 把日志保存存储起来 +/// @param isSave 是否保存 default is yes ++(void)saveLogAsFile:(BOOL)isSave; + +///LOG使能与等级,默认开启且debug等级。 +/// @param enable LOG使能 +/// @param isMore 是否打印【函数名&行号】 +/// @param level LOG等级 ++(void)setLog:(BOOL)enable IsMore:(BOOL)isMore Level:(JLLOG_LEVEL)level; + +/// 打印函数 +/// @param level LOG等级 +/// @param func 函数名 +/// @param line 行号 +/// @param format 内容 ++(void)logLevel:(JLLOG_LEVEL)level funcName:(const char* _Nullable)func line:(const int)line format:(NSString * _Nonnull)format,...; + +/// 打印 +/// @param something 任意字符串内容 ++(void)logSomething:(NSString *)something; + +/// 打印对象 +/// @param object 任意对象 ++(void)logObject:(id)object; + + + +/// 打印 +/// @param level LOG等级 +/// @param content 内容 ++(void)logLevel:(JLLOG_LEVEL)level content:(NSString *)content; + +/// 保存日志信息到文件中 +/// @param logContent 日志内容 ++(void)saveLog:(NSString *)logContent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..b8d6b7f941eb6bd67a64c00d3f07a58f14d0c8a5 GIT binary patch literal 882 zcmZ8e%TLrm82@HO#1|A0T~Ktvw@A}1E_g9Ub|D~7X;*v@YH5e=z_io!0WOh?M{oWC z9`xqXng?)1(R1=tp|`Ja`b_`1;=thffeRNeUA}VFkh;fX%IrDQs#A|FXlZ3gy_L!F z*s~d_k}blx?-DOsA`a!AA$8^4#8YC$k-5gmK5*I=Qo2q_U`YMBa@t$xRcb}TZw8I~ zBnU;elC$%sD^}>v%SF@LG##Qhe1Z1ms8;7elsUC1pq{gzjD26w#9m}(w9W%JG^CE) znVB9{^$K@=%94|HRP|h%-gvcH@13Tz2{ip$btY9mtm-07gv(X^fyHgIlEtij(j4`u z8@mfyW;Ue4yfziPrnf{)J84;k`;CA)^=P#=Et*U%GHJS$HEL>keC*~D@gCouo#oCH zVSaMpg2i2Vr#`$v38V5pN*k3GeR6JjMk~q6>$Bo&bg|AoqKW-QGk9>XWJrUF+w^@# zWRayk2xZ2$T-jo#=g1{Psi`BC@JCMR+TQ3W^vvM7Ev&GVBO;7&e5C028wemhieF7U7OSn260)!n7g~ z3UvTmVzxnkb8SdM5{5P?!;IMO8N7sd@BzNSchruGXb9axv*-!hL^0Y$FVHLW9(_cg w&}Z}&{X%~+;1=A93%C#8#uIoMuiyZ0<6Zn5|G+=-Z%99k_99%*Vixe9e?+tbiU0rr literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper new file mode 100755 index 0000000000000000000000000000000000000000..df8c2858b784878b888fce77baf89f10e18bc101 GIT binary patch literal 143744 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 + + + + files + + Headers/JLLogHelper.h + + TahP/o16a5TgPGLNFs/QhND95FU= + + Headers/JLLogManager.h + + Be4QtnAF0IDSmlMZquwyK7LLd8w= + + Info.plist + + PJl+BYy7qbdneBUnydYicJKb/SM= + + Modules/module.modulemap + + YwPsApnJXdp+uskVahraY2UK/Jk= + + + files2 + + Headers/JLLogHelper.h + + hash + + TahP/o16a5TgPGLNFs/QhND95FU= + + hash2 + + nD5WuwBhpaoCwOGeWB5OusXVP21nYy+/Hcn6nPideIk= + + + Headers/JLLogManager.h + + hash + + Be4QtnAF0IDSmlMZquwyK7LLd8w= + + hash2 + + vOgQgQVptNwQdUKpCW2EBNruc0PL6BnkSjxVpptJsf0= + + + Modules/module.modulemap + + hash + + YwPsApnJXdp+uskVahraY2UK/Jk= + + hash2 + + ViwpXSuoKoiEUwMpetyre+mlEz0+JE8UURyNSgBuylM= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist new file mode 100644 index 000000000..ac38ab92b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JL_AdvParse.framework/JL_AdvParse + LibraryIdentifier + ios-arm64 + LibraryPath + JL_AdvParse.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + JL_AdvParse.framework/JL_AdvParse + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JL_AdvParse.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h new file mode 100644 index 000000000..844238943 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h @@ -0,0 +1,72 @@ +// +// JLAdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8,JL_AdvType) { + JL_AdvTypeSoundBox = 0, //音箱类型 + JL_AdvTypeChargingBin = 1, //充电仓类型 + JL_AdvTypeTWS = 2, //TWS耳机类型 + JL_AdvTypeHeadset = 3, //普通耳机类型 + JL_AdvTypeSoundCard = 4, //声卡类型 + JL_AdvTypeWatch = 5, //手表类型 + JL_AdvTypeTradition = 6, //传统设备类型 +}; + + +typedef NS_ENUM(NSInteger,JL_DeviceType) { + JL_DeviceTypeSoundBox = 0, //AI音箱类型 + JL_DeviceTypeChargingBin = 1, //充电仓类型 + JL_DeviceTypeTWS = 2, //TWS耳机类型 + JL_DeviceTypeHeadset = 3, //普通耳机类型 + JL_DeviceTypeSoundCard = 4, //声卡类型 + JL_DeviceTypeWatch = 5, //手表类型 + JL_DeviceTypeDongle = 6, //Dongle + JL_DeviceTypeTradition = -1, //传统设备类型 +}; + + +/// 广播包解析器 +@interface JLAdvParse : NSObject + +/// 打印当前SDK的版本 ++(void)sdkVersion; + +/// 解析设备广播包内容 +/// @param key 过滤码(只针对传统设备生效,默认填空即可) +/// @param advertData 蓝牙广播字典 ++(NSDictionary*)bluetoothAdvParse:(NSData *_Nullable)key AdvData:(NSDictionary*_Nonnull)advertData; + +/// 解析蓝牙广播包 +/// @param advertData 蓝牙广播报字典 +/// @param rssi 蓝牙信号强度 ++(NSDictionary *)bluetoothAdvData:(NSDictionary *)advertData RSSI:(NSNumber *)rssi; + +#pragma mark - 回连广播包信息 +/** + * 获取广播包kCBAdvDataManufacturerData里面 'JLOTA' 标识的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (NSString * _Nullable)otaBleMacAddressFromCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +/** + * 判断当前蓝牙地址是否等于广播包kCBAdvDataManufacturerData里面的蓝牙地址 + * @param otaBleMacAddress ota升级中设备的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (Boolean)otaBleMacAddress:(NSString *)otaBleMacAddress isEqualToCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h new file mode 100644 index 000000000..27e16d177 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h @@ -0,0 +1,64 @@ +// +// JLChargingBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLChargingBoxAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否已开盖 +@property(nonatomic, assign) BOOL isOpen; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +///模式 +/// 0x00:充电模式 +/// 0x01:发射模式 +@property(nonatomic, assign) uint8_t mode; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h new file mode 100644 index 000000000..432142d06 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h @@ -0,0 +1,54 @@ +// +// JLDevicesAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLAdvParse.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface JLDevicesAdv : NSObject + +/// 客户唯一标识 +@property(nonatomic,assign)uint16_t uid; + +/// 产品唯一标识 +@property(nonatomic,assign)uint16_t pid; + +/// 设备类型 +///JL_DeviceTypeSoundBox = 0, //AI音箱类型 +///JL_DeviceTypeChargingBin = 1, //充电仓类型 +///JL_DeviceTypeTWS = 2, //TWS耳机类型 +///JL_DeviceTypeHeadset = 3, //普通耳机类型 +///JL_DeviceTypeSoundCard = 4, //声卡类型 +///JL_DeviceTypeWatch = 5, //手表类型 +///JL_DeviceTypeTradition = -1, //传统设备类型 +@property(nonatomic,assign)JL_DeviceType type; + +/// 协议版本 +@property(nonatomic,assign)uint8_t version; + +/// 可变数据段 +@property(nonatomic,copy)NSData *variableData; + +- (instancetype)initWithData:(NSData *)data; + + +/// 转成model类型 +/// @param basicData 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataToModel:(NSData *)basicData; + +/// 转成model类型 +/// @param basicHexStr 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataHexStrToModel:(NSString *)basicHexStr; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h new file mode 100644 index 000000000..ab6475eb5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h @@ -0,0 +1,47 @@ +// +// JLEarphoneAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLEarphoneAdv : JLDevicesAdv + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否主机 +@property(nonatomic, assign) BOOL isMaster; + +/// 是否允许连接 +@property(nonatomic, assign) BOOL enableConnect; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h new file mode 100644 index 000000000..da40339a7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h @@ -0,0 +1,25 @@ +// +// JLOtaAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaAdv : JLDevicesAdv + +/// ble address before +@property(nonatomic,strong)NSString *BleAddrBefore; + +//MARK: - Version 1 +/// battery +@property(nonatomic,assign)uint8_t battery; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h new file mode 100644 index 000000000..9ac104121 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundBoxAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h new file mode 100644 index 000000000..792c3b378 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundCardAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundCardAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h new file mode 100644 index 000000000..7137abdc1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h @@ -0,0 +1,89 @@ +// +// JLTwsAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsAdv : JLDevicesAdv + +//MARK: - Version 0 + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +//MARK: - Version 1 +/// BLE连接属性(enableConnect) +@property(nonatomic, assign) BOOL bleEnable; + +//MARK: - Version 2 +/// 连接方式 +/// 0x00 BLE 通迅 +/// 0x01 SPP 通迅 +/// 0x02 GATT Over BR/EDR (V5/V6) +@property(nonatomic, assign) uint8_t connectWay; + +/// 是否支持智能充电仓 +@property(nonatomic, assign) BOOL isSupportChargBox; + +//MARK: - Version 3 +/// 左耳电量为挂脖耳机电量!!!,其他耳机电量使用 + +//MARK: - Version 4/5/6 扩展 +/// LeAudio连接状态值 +@property(nonatomic, assign) uint8_t leAudioStatus; +/// 是否支持LeAudio +@property(nonatomic, assign) BOOL supportLeAudio; +/// LeAudio是否已连接 +@property(nonatomic, assign) BOOL leAudioConnectedStatus; +/// RCSP是否使用LeAudio地址 +@property(nonatomic, assign) BOOL rcspUseLeAudioAddress; +/// 是否需要认证 +@property(nonatomic, assign) BOOL needAuth; +/// 协议版本号 +@property(nonatomic, assign) uint8_t protocolVersion; + +/// 设备数量 (V6) +@property(nonatomic, assign) uint8_t deviceQuantity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h new file mode 100644 index 000000000..696ad9284 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h @@ -0,0 +1,35 @@ +// +// JLWatchAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLWatchAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 连接方式 +/// 0x00 ble +/// 0x01 spp +@property(nonatomic, assign) int8_t connectWay; + + +/// 手表状态 +/// 0x00:经典蓝牙未连接 +/// 0x01:经典蓝牙已连接 0x02:设备正在回连 +/// 0x03:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) int8_t connectState; + +/// 是否需要先连上 ble +@property(nonatomic, assign) BOOL priorityConnection; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h new file mode 100644 index 000000000..b599b7e9b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h @@ -0,0 +1,27 @@ +// +// JL_AdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_AdvParse. +FOUNDATION_EXPORT double JL_AdvParseVersionNumber; + +//! Project version string for JL_AdvParse. +FOUNDATION_EXPORT const unsigned char JL_AdvParseVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..7f060a4a3fa61d751e3764aa14cce934bb2f0eeb GIT binary patch literal 904 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�Nehd`#CSfQD37fx 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 Ymgy~)|0dlxopaaBy~XnGQa)Mw9~sl-761SM literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap new file mode 100644 index 000000000..c072084c5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_AdvParse { + umbrella header "JL_AdvParse.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h new file mode 100644 index 000000000..844238943 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h @@ -0,0 +1,72 @@ +// +// JLAdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8,JL_AdvType) { + JL_AdvTypeSoundBox = 0, //音箱类型 + JL_AdvTypeChargingBin = 1, //充电仓类型 + JL_AdvTypeTWS = 2, //TWS耳机类型 + JL_AdvTypeHeadset = 3, //普通耳机类型 + JL_AdvTypeSoundCard = 4, //声卡类型 + JL_AdvTypeWatch = 5, //手表类型 + JL_AdvTypeTradition = 6, //传统设备类型 +}; + + +typedef NS_ENUM(NSInteger,JL_DeviceType) { + JL_DeviceTypeSoundBox = 0, //AI音箱类型 + JL_DeviceTypeChargingBin = 1, //充电仓类型 + JL_DeviceTypeTWS = 2, //TWS耳机类型 + JL_DeviceTypeHeadset = 3, //普通耳机类型 + JL_DeviceTypeSoundCard = 4, //声卡类型 + JL_DeviceTypeWatch = 5, //手表类型 + JL_DeviceTypeDongle = 6, //Dongle + JL_DeviceTypeTradition = -1, //传统设备类型 +}; + + +/// 广播包解析器 +@interface JLAdvParse : NSObject + +/// 打印当前SDK的版本 ++(void)sdkVersion; + +/// 解析设备广播包内容 +/// @param key 过滤码(只针对传统设备生效,默认填空即可) +/// @param advertData 蓝牙广播字典 ++(NSDictionary*)bluetoothAdvParse:(NSData *_Nullable)key AdvData:(NSDictionary*_Nonnull)advertData; + +/// 解析蓝牙广播包 +/// @param advertData 蓝牙广播报字典 +/// @param rssi 蓝牙信号强度 ++(NSDictionary *)bluetoothAdvData:(NSDictionary *)advertData RSSI:(NSNumber *)rssi; + +#pragma mark - 回连广播包信息 +/** + * 获取广播包kCBAdvDataManufacturerData里面 'JLOTA' 标识的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (NSString * _Nullable)otaBleMacAddressFromCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +/** + * 判断当前蓝牙地址是否等于广播包kCBAdvDataManufacturerData里面的蓝牙地址 + * @param otaBleMacAddress ota升级中设备的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (Boolean)otaBleMacAddress:(NSString *)otaBleMacAddress isEqualToCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h new file mode 100644 index 000000000..27e16d177 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h @@ -0,0 +1,64 @@ +// +// JLChargingBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLChargingBoxAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否已开盖 +@property(nonatomic, assign) BOOL isOpen; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +///模式 +/// 0x00:充电模式 +/// 0x01:发射模式 +@property(nonatomic, assign) uint8_t mode; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h new file mode 100644 index 000000000..432142d06 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h @@ -0,0 +1,54 @@ +// +// JLDevicesAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLAdvParse.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface JLDevicesAdv : NSObject + +/// 客户唯一标识 +@property(nonatomic,assign)uint16_t uid; + +/// 产品唯一标识 +@property(nonatomic,assign)uint16_t pid; + +/// 设备类型 +///JL_DeviceTypeSoundBox = 0, //AI音箱类型 +///JL_DeviceTypeChargingBin = 1, //充电仓类型 +///JL_DeviceTypeTWS = 2, //TWS耳机类型 +///JL_DeviceTypeHeadset = 3, //普通耳机类型 +///JL_DeviceTypeSoundCard = 4, //声卡类型 +///JL_DeviceTypeWatch = 5, //手表类型 +///JL_DeviceTypeTradition = -1, //传统设备类型 +@property(nonatomic,assign)JL_DeviceType type; + +/// 协议版本 +@property(nonatomic,assign)uint8_t version; + +/// 可变数据段 +@property(nonatomic,copy)NSData *variableData; + +- (instancetype)initWithData:(NSData *)data; + + +/// 转成model类型 +/// @param basicData 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataToModel:(NSData *)basicData; + +/// 转成model类型 +/// @param basicHexStr 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataHexStrToModel:(NSString *)basicHexStr; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h new file mode 100644 index 000000000..ab6475eb5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h @@ -0,0 +1,47 @@ +// +// JLEarphoneAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLEarphoneAdv : JLDevicesAdv + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否主机 +@property(nonatomic, assign) BOOL isMaster; + +/// 是否允许连接 +@property(nonatomic, assign) BOOL enableConnect; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h new file mode 100644 index 000000000..da40339a7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h @@ -0,0 +1,25 @@ +// +// JLOtaAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaAdv : JLDevicesAdv + +/// ble address before +@property(nonatomic,strong)NSString *BleAddrBefore; + +//MARK: - Version 1 +/// battery +@property(nonatomic,assign)uint8_t battery; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h new file mode 100644 index 000000000..9ac104121 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundBoxAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h new file mode 100644 index 000000000..792c3b378 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundCardAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundCardAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h new file mode 100644 index 000000000..7137abdc1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h @@ -0,0 +1,89 @@ +// +// JLTwsAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsAdv : JLDevicesAdv + +//MARK: - Version 0 + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +//MARK: - Version 1 +/// BLE连接属性(enableConnect) +@property(nonatomic, assign) BOOL bleEnable; + +//MARK: - Version 2 +/// 连接方式 +/// 0x00 BLE 通迅 +/// 0x01 SPP 通迅 +/// 0x02 GATT Over BR/EDR (V5/V6) +@property(nonatomic, assign) uint8_t connectWay; + +/// 是否支持智能充电仓 +@property(nonatomic, assign) BOOL isSupportChargBox; + +//MARK: - Version 3 +/// 左耳电量为挂脖耳机电量!!!,其他耳机电量使用 + +//MARK: - Version 4/5/6 扩展 +/// LeAudio连接状态值 +@property(nonatomic, assign) uint8_t leAudioStatus; +/// 是否支持LeAudio +@property(nonatomic, assign) BOOL supportLeAudio; +/// LeAudio是否已连接 +@property(nonatomic, assign) BOOL leAudioConnectedStatus; +/// RCSP是否使用LeAudio地址 +@property(nonatomic, assign) BOOL rcspUseLeAudioAddress; +/// 是否需要认证 +@property(nonatomic, assign) BOOL needAuth; +/// 协议版本号 +@property(nonatomic, assign) uint8_t protocolVersion; + +/// 设备数量 (V6) +@property(nonatomic, assign) uint8_t deviceQuantity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h new file mode 100644 index 000000000..696ad9284 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h @@ -0,0 +1,35 @@ +// +// JLWatchAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLWatchAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 连接方式 +/// 0x00 ble +/// 0x01 spp +@property(nonatomic, assign) int8_t connectWay; + + +/// 手表状态 +/// 0x00:经典蓝牙未连接 +/// 0x01:经典蓝牙已连接 0x02:设备正在回连 +/// 0x03:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) int8_t connectState; + +/// 是否需要先连上 ble +@property(nonatomic, assign) BOOL priorityConnection; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h new file mode 100644 index 000000000..b599b7e9b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h @@ -0,0 +1,27 @@ +// +// JL_AdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_AdvParse. +FOUNDATION_EXPORT double JL_AdvParseVersionNumber; + +//! Project version string for JL_AdvParse. +FOUNDATION_EXPORT const unsigned char JL_AdvParseVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..284ba59ec130372459cb58ba0a678b1da4702f26 GIT binary patch literal 884 zcmZ8eyHnIa82@%v#1{k*JrMN3x5!Q|%z=#sTtwcSBqyQ_F(k{~!san~oF1cNV`b+b zV4+?j#FbNQj+^FtRdUb=kcsv-4E#f;mFrd4AuUDleFA@!A} zr()OURHb#wJ>Q{jv_h-Qa}B9G<8D2sRvej|obCf>Z6Re_j0T1@m?>x7El*`uB>ZO3 zxJ!djWa}BbWIE!6o~$gJ){a@FdczlJe}-x`FNjj776r_$?k8j47c{lY+>ExozzGeh zGjpb<`>I~@9G~%|vrbjdq|F;|wCcTXx>`WXuc`A*^_r@SG!d?<`aR3D>3SN|@kxu! zWlroYYpL0ga!cAw?3nHfHSJ_%CC_gJtXhjUDzjq9%%an#!+4{j6sIO`tWfvC+=4M_ z*UM%QiaF#g&mp_D(QQUKBXbL*8KsRAS)X29ov#!~fhe!fip#Nb&2y;x>~bwtd=q(Hcc zty98gMIjXG0P145fxNjkA|VMwI}~AFeC`Rngm>@(zQA|Xf%0es-9!uMA=*JPdWv44 zSLi+Zh(4ju=qvh({$RjuxE=T70X&Is<2Ag2Biz8x@N@hF|H8ka`Czmc;d&a=fdBpj Dy(I#` literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse new file mode 100755 index 0000000000000000000000000000000000000000..27d3e726da335bd69b526d6c4d961908f08f365b GIT binary patch literal 269840 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 + + + + files + + Headers/JLAdvParse.h + + 64SI1XBWnV1VmXIYu8XpmwMpE04= + + Headers/JLChargingBoxAdv.h + + dxEumtBFtKzehtXyVAacIJk/UU4= + + Headers/JLDevicesAdv.h + + WG6Ivw9lqj20J5OXda4lXMvAsig= + + Headers/JLEarphoneAdv.h + + fJODfMyuNuG59rHtw1StpNjde1A= + + Headers/JLOtaAdv.h + + 4Mj6y77mEbeHdo+4OgFL9yf+E0c= + + Headers/JLSoundBoxAdv.h + + 9psoYa5IuZ6p/X9FRRnLe5THJMQ= + + Headers/JLSoundCardAdv.h + + Q5T5xqjNDkTS+Niqp/KpoD9vipY= + + Headers/JLTwsAdv.h + + whLObetTxteRXS580FiZ1/A3Yzo= + + Headers/JLWatchAdv.h + + gK+FyDcSe6OVJK11wqqm1ppRE9k= + + Headers/JL_AdvParse.h + + gtcFkie1/FuAHO4WI/GUyN9chKY= + + Info.plist + + y32GLYYZ4FDhJGOjUkYUZfxaRn8= + + Modules/module.modulemap + + hBvb1e7FRkpwYoECUsVQBBscN38= + + + files2 + + Headers/JLAdvParse.h + + hash + + 64SI1XBWnV1VmXIYu8XpmwMpE04= + + hash2 + + ZG6RQ7l2Ko9IXNo517Aimfq7d03KANKIIPV09hZSFrg= + + + Headers/JLChargingBoxAdv.h + + hash + + dxEumtBFtKzehtXyVAacIJk/UU4= + + hash2 + + Bci4NCRbpGrT/YgMlRkA2DjX/lY/o8VmxkWPNtV+DjA= + + + Headers/JLDevicesAdv.h + + hash + + WG6Ivw9lqj20J5OXda4lXMvAsig= + + hash2 + + Mxf6qWhX6ctmSC0RVl7gdK4koCGeaUr8omEI9+9PMvc= + + + Headers/JLEarphoneAdv.h + + hash + + fJODfMyuNuG59rHtw1StpNjde1A= + + hash2 + + WThhDcnj1tcLW3Lrp2VUET7rXC/8iv9Y1dtAdPg0yWs= + + + Headers/JLOtaAdv.h + + hash + + 4Mj6y77mEbeHdo+4OgFL9yf+E0c= + + hash2 + + HuR8+O4ONYywZcporXuxlzO1xXOtZZqm/P9+s8yj+OI= + + + Headers/JLSoundBoxAdv.h + + hash + + 9psoYa5IuZ6p/X9FRRnLe5THJMQ= + + hash2 + + Iqjsp9NyRvmdlXu0gN7zltuwg75M+Kc9qFaTSHStolA= + + + Headers/JLSoundCardAdv.h + + hash + + Q5T5xqjNDkTS+Niqp/KpoD9vipY= + + hash2 + + WTBLq2+eyH5+TrY08Gh3/yReEWRnKg9UOCJmz56bnkE= + + + Headers/JLTwsAdv.h + + hash + + whLObetTxteRXS580FiZ1/A3Yzo= + + hash2 + + w6Ia/stHXZvCfmmPgTEpBj7A6haG6O+E0MeXH/fNKmA= + + + Headers/JLWatchAdv.h + + hash + + gK+FyDcSe6OVJK11wqqm1ppRE9k= + + hash2 + + 7iXBmticKJ52uKE+6RrHJt5ES0gq2Xan5WIG/w0sCyk= + + + Headers/JL_AdvParse.h + + hash + + gtcFkie1/FuAHO4WI/GUyN9chKY= + + hash2 + + t61emyM8slC+fTJM6XnBxjTDrpY7xvhUK5gCXfQf/3E= + + + Modules/module.modulemap + + hash + + hBvb1e7FRkpwYoECUsVQBBscN38= + + hash2 + + F65y3OGliGsHZpxzdTdQxUwgmJdHiihk1gvX6sJzhxA= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist new file mode 100644 index 000000000..dd9c214de --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JL_HashPair.framework/JL_HashPair + LibraryIdentifier + ios-arm64 + LibraryPath + JL_HashPair.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + JL_HashPair.framework/JL_HashPair + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JL_HashPair.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h new file mode 100644 index 000000000..af9b09ea9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h @@ -0,0 +1,25 @@ +// +// BtHash.h +// BtHash +// +// Created by EzioChan on 2022/6/29. +// + +#import + +@interface BtHash : NSObject +/* + @param [in] pt[*1] The plaintext + @param ptlen The length of the plaintext(octets) range: 1~32 + @param [in] key[*1] The key for encrypt + @param keylen[*1] The length of the key(octets) range: 1~32 + @param [out] mac[*1] output : The Message Authentication Code 16 bytes. + @return error if < 0, 0 is normal. + */ ++(int)decryptWithPlaintext:(unsigned char *)pt + andPlaintextLen:(int)ptlen + andKey: (unsigned char *)key + andKeyLen: (int)keylen + andMac:(unsigned char *)mac; + +@end diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h new file mode 100644 index 000000000..c42b34a55 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h @@ -0,0 +1,59 @@ +// +// JLHashHandler.h +// JL_BLEKit +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^JLHashBlock)(BOOL ret); + +@protocol JLHashHandlerDelegate + +/// 需要发送到设备校验认证的数据 +/// - Parameter data: 数据 +-(void)hashOnPairOutputData:(NSData*)data; + +@end + + +/// 设备认证 +@interface JLHashHandler : NSObject + +@property(nonatomic,weak)id delegate; + + +/// APP端发起设备认证 +/// - Parameters: +/// - pKey: 加密Key(默认为空) +/// - bk: 配对认证回调结果 +-(void)bluetoothPairingKey:(NSData *__nullable)pKey Result:(JLHashBlock)bk; + + +/// 重置设备认证过程 +-(void)hashResetPair; + + +/// 填入设备回复数据 +/// - Parameter rData: 数据 +-(void)inputPairData:(NSData*)rData; + + +/// 停止设备认证过程 +/// stop device pairing +-(void)stopAuthPair; + + +/// 打印当前SDK的版本 ++(void)sdkVersion; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h new file mode 100644 index 000000000..95d62c48d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h @@ -0,0 +1,21 @@ +// +// JL_HashPair.h +// JL_HashPair +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_HashPair. +FOUNDATION_EXPORT double JL_HashPairVersionNumber; + +//! Project version string for JL_HashPair. +FOUNDATION_EXPORT const unsigned char JL_HashPairVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h new file mode 100644 index 000000000..bce37ee6c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h @@ -0,0 +1,20 @@ +// +// JL_ble_pair.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_ble_pair_h +#define JL_ble_pair_h + +#include +#include + +void function_jieli(uint8_t *address,uint8_t *RAND,uint8_t *K,uint8_t *result); + +#pragma mark CRC校验 +unsigned short JL_CRC16(unsigned char *ptr, int len, uint16_t lastCrc); + +#endif /* JL_ble_pair_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..fdbde377578077d8fe4fde8075e66e0f7acb32f0 GIT binary patch literal 904 zcmYjQ%Tv=p82@(b1MxusMLY#1k77f%C|TR3}rM{=G`qX$IVFk zY0!AWf>34~F}qA1*`Yr!i`0BhYfNwW5*?1wvh4*?+gXkR?$(Zyb>EjXvxEJ?l9>7tNFP=2q>?YO7j+&m z>yXG&pH{ix5ocjVo0-epD>3)k!jkcbhIWy1d7nYkbI6{Z+U87fvapnjsq!pQ_4&f; zVkJ#fq8(gW<3-zRe(A?)LrFGm)b|A=GHcByBtq;s#1z!6k+h*!w5jaO)Ef7jE-%!z zS)y&kRkM(YrdHCK?2M+TRib)I2D0FR4-E)_Lk(<*U<^LWrGYBfl+1QpFM&PDreIs@ z7znu&Fs0X#aSR?vM9A3b61FM^p;QO3BXngRXdk^r@6l)U75zXz(J%BD58@F#jwkRW*6=i5#|E~sgZJ=0 bevRMYKlon)67t7_)`QVuguCt74vFsn(r^a5 literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair new file mode 100755 index 0000000000000000000000000000000000000000..fe3eb3303fcf4d74241a40aaf5ee343a4180148b GIT binary patch literal 77784 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 CRKcSF literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap new file mode 100644 index 000000000..4e820d974 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_HashPair { + umbrella header "JL_HashPair.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h new file mode 100644 index 000000000..af9b09ea9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h @@ -0,0 +1,25 @@ +// +// BtHash.h +// BtHash +// +// Created by EzioChan on 2022/6/29. +// + +#import + +@interface BtHash : NSObject +/* + @param [in] pt[*1] The plaintext + @param ptlen The length of the plaintext(octets) range: 1~32 + @param [in] key[*1] The key for encrypt + @param keylen[*1] The length of the key(octets) range: 1~32 + @param [out] mac[*1] output : The Message Authentication Code 16 bytes. + @return error if < 0, 0 is normal. + */ ++(int)decryptWithPlaintext:(unsigned char *)pt + andPlaintextLen:(int)ptlen + andKey: (unsigned char *)key + andKeyLen: (int)keylen + andMac:(unsigned char *)mac; + +@end diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h new file mode 100644 index 000000000..c42b34a55 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h @@ -0,0 +1,59 @@ +// +// JLHashHandler.h +// JL_BLEKit +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^JLHashBlock)(BOOL ret); + +@protocol JLHashHandlerDelegate + +/// 需要发送到设备校验认证的数据 +/// - Parameter data: 数据 +-(void)hashOnPairOutputData:(NSData*)data; + +@end + + +/// 设备认证 +@interface JLHashHandler : NSObject + +@property(nonatomic,weak)id delegate; + + +/// APP端发起设备认证 +/// - Parameters: +/// - pKey: 加密Key(默认为空) +/// - bk: 配对认证回调结果 +-(void)bluetoothPairingKey:(NSData *__nullable)pKey Result:(JLHashBlock)bk; + + +/// 重置设备认证过程 +-(void)hashResetPair; + + +/// 填入设备回复数据 +/// - Parameter rData: 数据 +-(void)inputPairData:(NSData*)rData; + + +/// 停止设备认证过程 +/// stop device pairing +-(void)stopAuthPair; + + +/// 打印当前SDK的版本 ++(void)sdkVersion; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h new file mode 100644 index 000000000..95d62c48d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h @@ -0,0 +1,21 @@ +// +// JL_HashPair.h +// JL_HashPair +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_HashPair. +FOUNDATION_EXPORT double JL_HashPairVersionNumber; + +//! Project version string for JL_HashPair. +FOUNDATION_EXPORT const unsigned char JL_HashPairVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h new file mode 100644 index 000000000..bce37ee6c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h @@ -0,0 +1,20 @@ +// +// JL_ble_pair.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_ble_pair_h +#define JL_ble_pair_h + +#include +#include + +void function_jieli(uint8_t *address,uint8_t *RAND,uint8_t *K,uint8_t *result); + +#pragma mark CRC校验 +unsigned short JL_CRC16(unsigned char *ptr, int len, uint16_t lastCrc); + +#endif /* JL_ble_pair_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..4d99eceafe989ac169645a35f39b321c4562a55f GIT binary patch literal 884 zcmZ8eyHnIa82@%v#1|Jp^gz%9-y)e@m;)ONxQM(tNlru=Vn~+D!san~pvUOgSlRgp zSZHTyXJu>UjD@8${tXt6j#{`0$sA)cyWjWy9-D8!Z1{|ZktBT+dJsNv@KD>~_9I7+ z9Y4`g5IVcMPxhQTUF_{Ep6MSrR~j5TKX~EdrOQ{Y>O%KqOqsP{m^O9ElA2b!&|96F zj9rTnh3pXK`3`ZTWzwLYs|#H@ck3}Rw~YqTnm$MSa#XdwAj+I-6i~OZpNxH<)5NMVBii%=C)9;P z?#xX06|L$yK4nQ~1x3rH>5bQ0^Cs%Sh-ge!`6&-5&^mc?v*!UA=v z6FW<4X4Zw`qB8Y)yimM_Y-@V+ckMil==Vp4^B`{$x^*MUaiPl zSrR2r7>6o&;6oDvpwIvtA}GOIzGRU28s*ue^c7*3vm>y@bp#mSMKHP7;jsi09AP}R zP6^YBK*-er?C{+J@y)ei0SOq|p#pRKb5GzUyn_$$1-_#WR6@h(CYnbN(Kd?FQ}hD8 zLhsQ>^a*`NU(rwW2Lo=y?YIy3;|Y8lui|wa;U<2DpW`3+7yb?DgVA1u>sibK{`(K9 COaik2 literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair new file mode 100755 index 0000000000000000000000000000000000000000..be2445248bb5abaa410c98809ff7770419a2b4cd GIT binary patch literal 178416 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 + + + + files + + Headers/BtHash.h + + EdZDmmVVm0KY3D72UHE3hQF42e4= + + Headers/JLHashHandler.h + + ArAEdyp9k5H5o4gFjW9zdx+0ISY= + + Headers/JL_HashPair.h + + Y9dInJ7eyVXJ8WOASyZGNDDIj9s= + + Headers/JL_ble_pair.h + + YP6GQrFs1nWR8BkMoj1fQdKHKKM= + + Info.plist + + pLA2PfPyxsguwM09KFXPq/Cy2ko= + + Modules/module.modulemap + + 6wQFoRjNQqLop5Z3m/K5slHiG2k= + + + files2 + + Headers/BtHash.h + + hash + + EdZDmmVVm0KY3D72UHE3hQF42e4= + + hash2 + + EfOAmi/ycUONPu8OgPUuPkc9caXqUhvVXE27JNmmnPk= + + + Headers/JLHashHandler.h + + hash + + ArAEdyp9k5H5o4gFjW9zdx+0ISY= + + hash2 + + 7iuW7k7IBL4tf/bE1O3SudVyeFxG8YHoo7DqZGFdSBI= + + + Headers/JL_HashPair.h + + hash + + Y9dInJ7eyVXJ8WOASyZGNDDIj9s= + + hash2 + + 5Ow8T39Md9cD7Jb7iMaoihnIJhv8GHHIjGAsgZG//Og= + + + Headers/JL_ble_pair.h + + hash + + YP6GQrFs1nWR8BkMoj1fQdKHKKM= + + hash2 + + ggTJvYOE/W4Tmghs665eiywakMiTsvgl7PeEayUkKqQ= + + + Modules/module.modulemap + + hash + + 6wQFoRjNQqLop5Z3m/K5slHiG2k= + + hash2 + + N+WiNcfG40LwaFvJZeLG5iNA48ZbrW0Oph/B9U+7i9U= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist new file mode 100644 index 000000000..567764096 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JL_OTALib.framework/JL_OTALib + LibraryIdentifier + ios-arm64 + LibraryPath + JL_OTALib.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + JL_OTALib.framework/JL_OTALib + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JL_OTALib.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h new file mode 100644 index 000000000..2ab4541b0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h @@ -0,0 +1,52 @@ +// +// JLOTAFile.h +// JL_OTALib +// +// Created by EzioChan on 2024/7/26. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_OTAUrlResult) { + JL_OTAUrlResultSuccess = 0x00, //OTA文件获取成功 + JL_OTAUrlResultFail = 0x01, //OTA文件获取失败 + JL_OTAUrlResultDownloadFail = 0x02, //OTA文件下载失败 +}; + +typedef void(^JL_OTA_URL)(JL_OTAUrlResult result, + NSString* __nullable version, + NSString* __nullable url, + NSString* __nullable explain); + +@interface JLOTAFile : NSObject + + +#pragma mark -文件下载 +/** + 文件下载 + @param key 授权key + @param code 授权code + @param result 回复 + */ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + Result:(JL_OTA_URL __nullable)result; + +/** + OTA升级文件下载【MD5】 +@param key 授权key +@param code 授权code +@param hash MD5值 +@param result 回复 +*/ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + hash:(NSString*)hash + Result:(JL_OTA_URL __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h new file mode 100644 index 000000000..4740d6872 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h @@ -0,0 +1,62 @@ +// +// JLOtaCustom.h +// JL_OTALib +// +// Created by EzioChan on 2025/4/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_OTAManager; + +/// 自定义命令对象 +@interface JLOtaCustomData : NSObject + +/// 是否需要回复 +@property (nonatomic, assign) BOOL needResponse; + +/// 数据 +@property (nonatomic, strong) NSData *data; + +/// 回复数据 SN +@property (nonatomic, assign) uint8_t sn; + +@end + + +/// 自定义命令回调 +@protocol JLOtaCustomDelegate + +/// 自定义命令回调 +/// - Parameter data: 自定义命令对象 +-(void)otaCustomReceiveData:(JLOtaCustomData *)data; + +@end + +/// 自定义命令 +@interface JLOtaCustom : NSObject + +/// 自定义命令 +/// - Parameters: +/// - delegate: 代理回调 +/// - manager: 升级对象 +-(instancetype)initWithDelegate:(id)delegate OtaManager:(JL_OTAManager *)manager; + +/// 发送自定义命令 +/// - Parameters: +/// - data: 下发的数据 +/// - need: 是否需要回复内容 +/// - result: 命令回复结果 +- (void)cmdSendCommandData:(NSData *)data needResponse:(BOOL)need Result:(void(^)(NSData * __nullable response, NSError * __nullable error)) result; + +/// 回复自定义命令 +/// - Parameters: +/// - data: 回复的数据 +/// - sn: 回复的SN +- (void)cmdResponseData:(NSData *)data sn:(uint8_t)sn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h new file mode 100644 index 000000000..9b0ecc2c6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h @@ -0,0 +1,43 @@ +// +// JLOtaReConnectOption.h +// JL_OTALib +// +// Created by EzioChan on 2025/3/27. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaReConnectOption : NSObject + +/// 是否需要使用设备认证 +@property (assign, nonatomic) BOOL deviceAuthorize; + +/// 握手(配对)秘钥 +@property(strong,nonatomic)NSData *__nullable authKey; + +/// 设备服务UUID +/// 默认是 AE00 +@property (strong, nonatomic) NSString *serviceUUID; + +///写特征 UUID +/// 默认是 AE01 +@property (strong, nonatomic) NSString *writeUUID; + +/// 读特征 UUID +/// 默认是 AE02 +@property (strong, nonatomic) NSString *readUUID; + +/// 是否需要响应的回应方式 +/// 默认是NO +@property (assign, nonatomic) BOOL isWriteWithResponse; + + + ++ (JLOtaReConnectOption *)defaultOption; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h new file mode 100644 index 000000000..83d1764c2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h @@ -0,0 +1,22 @@ +// +// JL_OTALib.h +// JL_OTALib +// +// Created by EzioChan on 2023/1/29. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_OTALib. +FOUNDATION_EXPORT double JL_OTALibVersionNumber; + +//! Project version string for JL_OTALib. +FOUNDATION_EXPORT const unsigned char JL_OTALibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h new file mode 100644 index 000000000..02d53c94f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h @@ -0,0 +1,302 @@ +// +// JL_OTAManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/11/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOtaReConnectOption; + +typedef NS_ENUM(UInt16, JL_OTAResult) { + /// OTA升级成功 + JL_OTAResultSuccess = 0x00, + /// OTA升级失败 + JL_OTAResultFail = 0x01, + /// OTA升级数据为空 + JL_OTAResultDataIsNull = 0x02, + /// OTA指令失败 + JL_OTAResultCommandFail = 0x03, + /// OTA标示偏移查找失败 + JL_OTAResultSeekFail = 0x04, + /// OTA升级固件信息错误 + JL_OTAResultInfoFail = 0x05, + /// OTA升级设备电压低 + JL_OTAResultLowPower = 0x06, + /// 未能进入OTA升级模式 + JL_OTAResultEnterFail = 0x07, + /// OTA升级中 + JL_OTAResultUpgrading = 0x08, + /// OTA需重连设备(uuid方式) + JL_OTAResultReconnect = 0x09, + /// OTA需设备重启 + JL_OTAResultReboot = 0x0a, + /// OTA准备中 + JL_OTAResultPreparing = 0x0b, + /// OTA准备完成 + JL_OTAResultPrepared = 0x0f, + /// 设备已在升级中 + JL_OTAResultStatusIsUpdating = 0x10, + /// 当前固件多台设备连接,请手动断开另一个设备连接 + JL_OTAResultFailedConnectMore = 0x11, + /// 升级数据校验失败,SN 多次重复 + JL_OTAResultFailSameSN = 0xe0, + /// 升级取消 + JL_OTAResultCancel = 0xe1, + /// 升级数据校验失败 + JL_OTAResultFailVerification = 0xf1, + /// 升级失败 + JL_OTAResultFailCompletely = 0xf2, + /// 升级数据校验失败,加密Key不对 + JL_OTAResultFailKey = 0xf3, + /// 升级文件出错 + JL_OTAResultFailErrorFile = 0xf4, + /// uboot不匹配 + JL_OTAResultFailUboot = 0xf5, + /// 升级过程长度出错 + JL_OTAResultFailLenght = 0xf6, + /// 升级过程flash读写失败 + JL_OTAResultFailFlash = 0xf7, + /// 升级过程指令超时 + JL_OTAResultFailCmdTimeout = 0xf8, + /// 相同版本 + JL_OTAResultFailSameVersion = 0xf9, + /// TWS耳机未连接 + JL_OTAResultFailTWSDisconnect = 0xfa, + /// 耳机未在充电仓 + JL_OTAResultFailNotInBin = 0xfb, + /// OTA需重连设备(mac方式) + JL_OTAResultReconnectWithMacAddr = 0xfc, + /// OTA设备断开 + JL_OTAResultDisconnect = 0xfd, + /// OTA需重连设备(更新资源) + JL_OTAResultReconnectUpdateSource = 0xfe, + /// OTA未知错误 + JL_OTAResultUnknown +}; + +typedef NS_ENUM(UInt8, JL_OTAReconnectType) { + JL_OTAReconnectTypeUUID = 0x00, // OTA升级回连使用uuid + JL_OTAReconnectTypeMACAddr = 0x01, // OTA升级回连使用mac地址 +}; + +typedef NS_ENUM(UInt8, JL_OtaStatus) { + JL_OtaStatusNormal = 0, // 正常升级 + JL_OtaStatusForce = 1, // 强制升级 +}; +typedef NS_ENUM(UInt8, JL_OtaHeadset) { + JL_OtaHeadsetNO = 0, // 耳机单备份 正常升级 + JL_OtaHeadsetYES = 1, // 耳机单备份 强制升级 +}; + +typedef NS_ENUM(UInt8, JL_OtaWatch) { + JL_OtaWatchNO = 0, // 手表资源 正常升级 + JL_OtaWatchYES = 1, // 手表资源 强制升级 +}__attribute__((deprecated("This enum is deprecated. Use JLOtaSourcesExtendMode instead."))); + +/// OTA资源升级模式 +typedef NS_ENUM(UInt8, JLOtaSourcesExtendMode) { + /// 不启用 + JLSourcesExtendModeDisable = 0, + /// 启用普通资源升级模式 + JLSourcesExtendModeNormal = 1, + /// 启用只升级资源的模式 + JLSourcesExtendModeSourceOnly = 2, + /// 启用只升级固件程序的模式 + JLSourcesExtendModeFirmwareOnly = 3, +}; + +typedef NS_ENUM(UInt8, JL_BootLoader) { + JL_BootLoaderNO = 0, // 不需要下载Bootloader + JL_BootLoaderYES = 1, // 需要下载BootLoader +}; +typedef NS_ENUM(UInt8, JL_Partition) { + JL_PartitionSingle = 0, // 固件单备份 + JL_PartitionDouble = 1, // 固件双备份 +}; + +typedef void (^JL_OTA_RT)(JL_OTAResult result, float progress); + +typedef void (^JL_OTA_RESULT)(uint8_t status, uint8_t sn, NSData *__nullable data); + +@class JL_OTAManager; + +/// OTA 升级管理对象回调 +@protocol JL_OTAManagerDelegate + +/// 即将被发送的数据 +/// @param data 数据内容 +- (void)otaDataSend:(NSData *_Nonnull)data; + +@optional +/// 回调设备状态信息 +/// @param manager 对象状态 +- (void)otaFeatureResult:(JL_OTAManager *_Nonnull)manager; + +/// 回调升级状态以及进度等 +/// @param result 状态以及进度信息 +/// @param progress 进度信息 +- (void)otaUpgradeResult:(JL_OTAResult)result Progress:(float)progress; + +/// 取消OTA升级 +- (void)otaCancel; + +@end + +/// OTA升级管理对象 +@interface JL_OTAManager : NSObject + +/// 设备UUID(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_UUID; + +/// 设备名称(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_NAME; + +/// 是否仅仅支持BLE +@property(assign, nonatomic) BOOL bleOnly; + +/// ble蓝牙地址 +@property(strong, nonatomic) NSString *bleAddr; + +/// SN值 +@property(assign, nonatomic) uint8_t mCmdSN; + +/// 设备版本号 +@property(assign, nonatomic) uint16_t version; + +/// 设备版本信息 +@property(strong, nonatomic) NSString *versionFirmware; + +/// 设备OTA状态 +@property(assign, nonatomic) JL_OtaStatus otaStatus; + +/// 耳机单备份 是否需要强制升级 +@property(assign, nonatomic) JL_OtaHeadset otaHeadset; + +/// 手表资源 是否需要强制升级 +@property(assign, nonatomic) JL_OtaWatch otaWatch __attribute__((deprecated("This property is deprecated. Use otaSourceMode instead."))); + +/// 是否支持复用空间进行 OTA +@property(assign, nonatomic) BOOL isSupportReuseSpaceOTA; + +/// 是否支持 OTA 拓展功能 +@property (assign, nonatomic) BOOL isSupportExpand; + +/// 资源升级模式类型 +@property(assign, nonatomic) JLOtaSourcesExtendMode otaSourceMode; + +/// 设备OTA时支持单/双备份 +@property(assign, nonatomic) JL_Partition otaPartition; + +/// 设备是否需要下载Loader +@property(assign, nonatomic) JL_BootLoader bootloaderType; + +/// OTA升级回连方式 +@property(assign, nonatomic) JL_OTAReconnectType otaReconnectType; + +/// OTA升级内容大小(设备通知的) +@property(assign, nonatomic, readonly) int64_t otaLength; + +/// 已传输的数据大小 +@property(assign, nonatomic, readonly) uint32_t otaSent; + +/// 设备交互回调代理 +@property(weak, nonatomic) id delegate; + +/// 获取 OTA 升级对象 ++ (JL_OTAManager *)getOTAManager; + +/// 不建议使用自行初始化 +/// 推荐获取 getOTAManager +- (instancetype)init __attribute__((deprecated("Please use getOTAManager instead."))); + +/// 打印OTA发送的数据内容 +/// - Parameter status: 开关 +- (void)logSendData:(BOOL)status; + +/// 当BLE连接上时告知SDK +- (void)noteEntityConnected; + +/// 当BLE断开时告知SDK +- (void)noteEntityDisconnected; + +/// 设置最大丢包次数 +/// - Parameter count: 次数 +/// default: 10 +- (void)maxLostCount:(int)count; + +/// 设置超时时间 +/// - Parameter timeOut: 时间 +/// default: 5 +- (void)cmdTimeOut:(int)timeOut; + +/// 设置是否需要回连 +/// 一般不允许外部干扰状态机,外部不适用此方法 +/// - Parameter isReLink: 回连 +- (void)setOTARelink:(BOOL)isReLink __attribute__((deprecated("Can't be used externally."))); + +/// Receive data from rcsp +/// 设备端过来的数据 +/// - Parameter data: data +- (void)cmdOtaDataReceive:(NSData *)data; + +/// 查询设备OTA信息 +/// 所有情况下都需要执行,而且是在连上后(认证完成)第一步执行 +- (void)cmdTargetFeature; + +/// 查询设备系统状态 +/// 当设备需要挂载外置flash才能正常升级时需要执行,其他情况则无需执行 +- (void)cmdSystemFunction; + +/// OTA单备份,是否正在回连 +- (BOOL)cmdOtaIsRelinking; + +#pragma mark---> OTA升级 +/** + 开始OTA升级 + @param data 升级数据 + @param result 升级结果 + */ +- (void)cmdOTAData:(NSData *)data + Result:(JL_OTA_RT __nullable)result; + +/// OTA升级II +/// 单备份升级特有!!!! +/// 此接口可用于 OTA 回连成功后,再次发起升级使用 +/// @param result 升级结果回调 +- (void)cmdOtaDataIIResult:(JL_OTA_RT __nullable)result; + +/// OTA升级III +/// 单备份升级特有!!! +/// 此接口免去了公版 OTA 的外边回连策略,内部实现回连 +/// ⚠️使用此方法时不可使用 delegate 的回调信息,要使用 Result 的回调信息 +/// @param data OTA数据 +/// @param option 回连选项 +/// @param result 回复 +-(void)cmdUpgrade:(NSData *)data Option:(JLOtaReConnectOption *_Nullable)option Result:(JL_OTA_RT _Nonnull)result; + +/** + OTA升级取消 + @param result 回复 + */ +- (void)cmdOTACancelResult:(JL_OTA_RESULT __nullable)result; + +/// 重启设备 +- (void)cmdRebootDevice; + +/// 强制重启设备 +- (void)cmdRebootForceDevice; + +/// 重置OTA manager +- (void)resetOTAManager; + +/// 打印OTA SDK版本 ++ (NSString *)logSDKVersion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h new file mode 100644 index 000000000..313c99ff0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h @@ -0,0 +1,207 @@ +/** + * Des: + * author: Bob + * date: 2022/11/29 + * Copyright: Jieli Technology + */ + +#ifndef NATIVEAPPLICATION_JL_UFW_H +#define NATIVEAPPLICATION_JL_UFW_H + + +#include +#include +#include +//#include +//#include +// +//#define tag "myJNI" +//#define logi(TAG, ...) ((void)__android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)) +//#define logw(TAG, ...) ((void)__android_log_print(ANDROID_LOG_WARN, TAG, __VA_ARGS__)) +//#define loge(TAG, ...) ((void)__android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)) + +int parse_fw_info(const char *data, int size, uint8_t *resultBuff, uint32_t buffSize); +#define BIT(n) (1 << n) + +// for FW file +enum eFW_FILE_TYPE { + + FILE_TYPE_FW_FLASH_BIN = 0, // FLASH文件,第一块FLASH数据 + FILE_TYPE_FW_OTP_BIN = 1, // OTP文件 + FILE_TYPE_FW_INFO_LOG = 2, // FW文件中保存的描述信息 + FILE_TYPE_FW_BURN_CFG = 3, // 烧写器配置文件 + FILE_TYPE_FW_SCRIPT_DATA = 4, // 烧写器打包烧写器下载文件时,需要执行的脚本数据 + FILE_TYPE_FW_SRC = 5, // 需要保存在FW文件中的代码文件, FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_NAME_BIN = 6, // 升级名字用的FW文件,已经废除 + FILE_TYPE_FW_OTP_VER_BIN = 7, // OTP maskrom版本 + FILE_TYPE_FW_OTPCFG_BIN = 8, // OTP配置信息 + FILE_TYPE_FW_OTP_CHIP_CONTROL_BIN = 9, // OTP芯片控制信息 + + FILE_TYPE_FW_OTP_MINI_UBOOT = 0xA, // 烧写到OTP的MINI UBOOT文件 + FILE_TYPE_FW_OTP_FIX_UBOOT = 0xB, // 烧写到OTP的FIX UBOOT文件 + FILE_TYPE_FW_FLASH_2_BIN = 0xC, // 第二块FLASH数据 + FILE_TYPE_FW_BR18_EFUSE_CONFIG_BIN = 0xD, // BR18 24BIT EFUSE配置数据 + FILE_TYPE_FW_RESOURCE_FILE = 0xE, // 资源文件 + FILE_TYPE_FW_2018KEY_INFO = 0xF, // 2018年的新KEY信息 + + FILE_TYPE_FW_BURNER_CUSTOMER_DATA = 0x10, // 一拖八烧写器用户信息 + FILE_TYPE_FW_BURNER_DV15_FLASH_BIN = 0x11, // 一拖八烧写器第一块FLASH数据 + FILE_TYPE_FW_BURNER_APP_FLASH_BIN = 0x12, // 一拖八烧写器第二块FLASH数据 + FILE_TYPE_FW_BURNER_DATA_FLASH_BIN = 0x13, // 一拖八烧写器第三块FLASH数据 + FILE_TYPE_FW_BURNER_BR21_FLASH_BIN = 0x14, // 一拖八烧写器第四块FLASH数据 + + FILE_TYPE_FW_FLASH_BIN_2 = 0x20, // 下载到第一块FLASH的文件,下载工具根据条件要么下载FILE_TYPE_FW_FLASH_BIN,要么下载FILE_TYPE_FW_FLASH_BIN_2 + FILE_TYPE_FW_FLASH_BIN_3, + FILE_TYPE_FW_FLASH_BIN_4, + + FILE_TYPE_FW_LOADER_BIN = 0x31, // 打包的LOADER程序代码 + + FILE_TYPE_FW_TEST_BOX_OTA_BIN = 0x64, // 测试盒使用的ota.bin + + FILE_TYPE_FW_3RD_DATA_FILE = 0x71, // 第三方烧写数据 + + FILE_TYPE_FW_OTA_TARGET_DEVICE_INFO = 0xA0, + FILE_TYPE_FW_BURN_COUNT_LIMIT = 0xA1, // 烧写授权信息 + + FILE_TYPE_FW_ADDITIONAL_FILE = 0xEE, // 附加文件,由烧写器根据名字决定用途 + FILE_TYPE_FW_PASSTHROUGH_DATA = 0xEF, // AC691X BTIF数据 + // 仅存在于FW文件中的数据 + FILE_TYPE_FW_HIDDEN_CFG_BIN = 0xFA, + FILE_TYPE_FW_INVISIBLE_DATA = 0xFB, // 保存在FW文件中的隐藏数据,FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_VISIBLE_DATA = 0xFE, // 仅保存在FW文件中的HEX数据 + + FILE_TYPE_FW_TAIL = 0xFF, // FW文件尾部标识 +}; + +typedef struct U16BIT +{ + unsigned char b0 : 1; + unsigned char b1 : 1; + unsigned char b2 : 1; + unsigned char b3 : 1; + unsigned char b4 : 1; + unsigned char b5 : 1; + unsigned char b6 : 1; + unsigned char b7 : 1; + unsigned char b8 : 1; + unsigned char b9 : 1; + unsigned char b10 : 1; + unsigned char b11 : 1; + unsigned char b12 : 1; + unsigned char b13 : 1; + unsigned char b14 : 1; + unsigned char b15 : 1; + +} U16BIT; +typedef union UBIT16 +{ + U16BIT bits; + uint16_t val; +} UBIT16; + +typedef struct stRES_FILE_HEAD { + uint32_t u32Tag; + uint16_t u16Crc; + uint16_t u16CrcOfItems; + uint32_t u32Len; + uint16_t u16Count; + uint16_t u16Res; + uint8_t u8Res16[16]; +}RES_FILE_HEAD; + +typedef struct stRES_CONFIG_ITEM { + uint16_t u16Index; + uint16_t u16Type; + uint32_t u32Addr; + uint32_t u32Len; + uint16_t u16CrcOfData; + uint16_t u16Res; + char szName[16]; +}RES_CONFIG_ITEM; +static uint16_t m_u16ChipKey = 0xFFFF; +static uint16_t m_u16DefaultKey = 0xFFFF; + + +#pragma pack(1) +#define JL_FILE_ITEM_NAME_MAX_LEN 16 +#define JL_CHIP_KEY_ENC_LENGTH 32 + +typedef struct stUFW_SYD_HEAD_V1 { + uint16_t u16Crc; // crc16 for this struct + uint16_t u16CrcOfSydFileHead; + uint32_t u32FileLength; // file length + uint16_t u16FileCount; // 此FW文件中包含的子文件个数 + uint16_t u16Version; + uint32_t u32Res; + char szChipName[16]; // 此FW文件对应的芯片类型,如AC690X,AC691X + uint32_t u32Res2[4]; + uint32_t u32Res3[4]; +}UFW_SYD_HEAD_V1; + +typedef struct stUFW_FILE_HEAD_V1 { + uint8_t u8FileType; // 文件类型 + uint8_t u8Res; // 保留 + uint16_t u16Index; // 文件索引号 + uint16_t u16Crc; // 明文数据的校验码 + uint16_t u16Version; // 本结构体版本 + uint32_t u32Addr; // 地址 + uint32_t u32Length; // 数据长度 + uint32_t u32AllLength; // 数据长度+尾部对齐的数据长度 + uint32_t u32EncryptedAddr; // 加密数据的地址偏移(相对u32Addr的地址) + uint32_t u32EncryptedLength; // 加密的数据长度 + uint32_t u32Res; // 保留 + uint32_t u64Res1[4]; // 保留 + uint32_t u64Res2[4]; // 保留 + char name[JL_FILE_ITEM_NAME_MAX_LEN]; + +}UFW_FILE_HEAD_V1; + +typedef struct stJL_FILE_TAIL { + char szChipKey[JL_CHIP_KEY_ENC_LENGTH]; // 32 // 固定位置 + uint16_t u16ChipKeyCRC16; // 34 // 固定位置 + uint8_t u8Magic[6]; // 40 // 固定位置 + uint8_t u8Res8[8]; // 48 + char szTailChipName[6]; // 54 // 固定位置 + uint8_t u8Reserv10[10]; // 64 +}JL_FILE_TAIL; + +typedef struct { + char szName[3]; + char szVersion[3]; + uint8_t u8Flag; + uint8_t u8Res; + uint32_t u32Crc; + uint16_t u16Crc; + uint16_t u16Res; +}JL_FLASH_BIN_TAIL; + +typedef UFW_SYD_HEAD_V1 jl_ufw_syd_head; +typedef UFW_FILE_HEAD_V1 jl_ufw_file_head; +typedef JL_FILE_TAIL jl_ufw_tail; + +typedef struct stJL_BR22_FLASH_HEAD { + uint16_t u16Crc; // 结构体自身校验码 + uint8_t u8SizeForBurner; // 为烧写器保留的空间大小 + uint8_t u8Version; // FLASH FS版本号 + char vid[4]; // 4byte的vid + uint32_t u32FlashSize; // FLASH大小,由isd_download计算得出 + uint8_t u8FsVersion; // 类型:br18/br22 + uint8_t u8BlockAlingnModulus; // 对齐系数 + uint8_t u8Res; // 保留,以后有可能会用于存放顶层目录的偏移和文件目录内偏移信息 + uint8_t u8SpecialOptFlag; // 用于标记是否需要生成2种flash格式的标记位,目前只用1位,以后如果需要特殊操作需要标记,再用其他位 + char pid[16]; // 16byte的pid +}JL_BR22_FLASH_HEAD; + + + + + + + + + + +#pragma pack() + + +#endif //NATIVEAPPLICATION_JL_UFW_H diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..6ca8a27f2e6327a57f6a89f9fc63c3e55a451838 GIT binary patch literal 900 zcmYjO%TE(Q7@rvw@yYNI0YR~d?~dE$QEvuXi3JMS?g}VjGu<89!P$qq+hQ@%c=6=T zKfvJ4vo}v({Rg;u^<-i^n5Z#M+ufAi%zWSPHJSakxit-f?K-6*MXy>u6<0np@ zI(?=a_w@GlpB*?iI5d2IXk_%l*rmky<;295tJkjINE*0ruF8d#r)GsaY^B&l1|G`H z&s7~uuq>-F;d(Z6!U8LE*D-K!tlfLY%xXwWf*m4rmbCJ1&U^!p#?G9x?Pj?d$~^V! z51AjxZZlSwsVz_Fi{UCYpU^VX>YikWW42gv{V+-vL!Ue4!(!F*q|B^ULBnm=w*v!r z$H^%4D63^$+vB2fv+k@GTbp0J)yA#c^t6d~zL;HXx;L_#Y#YY4thR2t7Tb(!G(Mc? z4!5iJN-+u>cyPIRziLybz^K(2S;qD1J}+0oEj=fP%uO~=Z7%8t9?^3J_O!}hxUtPJuZa3rog|HoL@21|Be7o9tDRJDdql7M7ANp*TYnZ9c!YsHt$_+GihNzn{ zY5>Woik?bmrd2Ja5XHr5kO406KppsigEFXq5R8Eja;ZR(Yf^T*&6j{ZsV2dW^f4gh zPJk)1wya}dRx(1?_9;OVF%U?%4{CC^0C|7&7KRw@6P^0@%oOMXX^@vky#Q~)NAMXO zfS(Y<1Wdxaa2b}M4R_&7_y)d%pWqkx4St6|;2+eF2GJ-QM-zx31?lK9vJgi#^c=lH ZuhB2`8~sK9Iza0|Fluf`H7XsQ{{ak^1~~u# literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib new file mode 100755 index 0000000000000000000000000000000000000000..45b500d0f5f11b0c2301cf0c0369ad89000c5984 GIT binary patch literal 207664 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 + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_OTAUrlResult) { + JL_OTAUrlResultSuccess = 0x00, //OTA文件获取成功 + JL_OTAUrlResultFail = 0x01, //OTA文件获取失败 + JL_OTAUrlResultDownloadFail = 0x02, //OTA文件下载失败 +}; + +typedef void(^JL_OTA_URL)(JL_OTAUrlResult result, + NSString* __nullable version, + NSString* __nullable url, + NSString* __nullable explain); + +@interface JLOTAFile : NSObject + + +#pragma mark -文件下载 +/** + 文件下载 + @param key 授权key + @param code 授权code + @param result 回复 + */ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + Result:(JL_OTA_URL __nullable)result; + +/** + OTA升级文件下载【MD5】 +@param key 授权key +@param code 授权code +@param hash MD5值 +@param result 回复 +*/ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + hash:(NSString*)hash + Result:(JL_OTA_URL __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h new file mode 100644 index 000000000..4740d6872 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h @@ -0,0 +1,62 @@ +// +// JLOtaCustom.h +// JL_OTALib +// +// Created by EzioChan on 2025/4/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_OTAManager; + +/// 自定义命令对象 +@interface JLOtaCustomData : NSObject + +/// 是否需要回复 +@property (nonatomic, assign) BOOL needResponse; + +/// 数据 +@property (nonatomic, strong) NSData *data; + +/// 回复数据 SN +@property (nonatomic, assign) uint8_t sn; + +@end + + +/// 自定义命令回调 +@protocol JLOtaCustomDelegate + +/// 自定义命令回调 +/// - Parameter data: 自定义命令对象 +-(void)otaCustomReceiveData:(JLOtaCustomData *)data; + +@end + +/// 自定义命令 +@interface JLOtaCustom : NSObject + +/// 自定义命令 +/// - Parameters: +/// - delegate: 代理回调 +/// - manager: 升级对象 +-(instancetype)initWithDelegate:(id)delegate OtaManager:(JL_OTAManager *)manager; + +/// 发送自定义命令 +/// - Parameters: +/// - data: 下发的数据 +/// - need: 是否需要回复内容 +/// - result: 命令回复结果 +- (void)cmdSendCommandData:(NSData *)data needResponse:(BOOL)need Result:(void(^)(NSData * __nullable response, NSError * __nullable error)) result; + +/// 回复自定义命令 +/// - Parameters: +/// - data: 回复的数据 +/// - sn: 回复的SN +- (void)cmdResponseData:(NSData *)data sn:(uint8_t)sn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h new file mode 100644 index 000000000..9b0ecc2c6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h @@ -0,0 +1,43 @@ +// +// JLOtaReConnectOption.h +// JL_OTALib +// +// Created by EzioChan on 2025/3/27. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaReConnectOption : NSObject + +/// 是否需要使用设备认证 +@property (assign, nonatomic) BOOL deviceAuthorize; + +/// 握手(配对)秘钥 +@property(strong,nonatomic)NSData *__nullable authKey; + +/// 设备服务UUID +/// 默认是 AE00 +@property (strong, nonatomic) NSString *serviceUUID; + +///写特征 UUID +/// 默认是 AE01 +@property (strong, nonatomic) NSString *writeUUID; + +/// 读特征 UUID +/// 默认是 AE02 +@property (strong, nonatomic) NSString *readUUID; + +/// 是否需要响应的回应方式 +/// 默认是NO +@property (assign, nonatomic) BOOL isWriteWithResponse; + + + ++ (JLOtaReConnectOption *)defaultOption; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h new file mode 100644 index 000000000..83d1764c2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h @@ -0,0 +1,22 @@ +// +// JL_OTALib.h +// JL_OTALib +// +// Created by EzioChan on 2023/1/29. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_OTALib. +FOUNDATION_EXPORT double JL_OTALibVersionNumber; + +//! Project version string for JL_OTALib. +FOUNDATION_EXPORT const unsigned char JL_OTALibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTAManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTAManager.h new file mode 100644 index 000000000..02d53c94f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTAManager.h @@ -0,0 +1,302 @@ +// +// JL_OTAManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/11/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOtaReConnectOption; + +typedef NS_ENUM(UInt16, JL_OTAResult) { + /// OTA升级成功 + JL_OTAResultSuccess = 0x00, + /// OTA升级失败 + JL_OTAResultFail = 0x01, + /// OTA升级数据为空 + JL_OTAResultDataIsNull = 0x02, + /// OTA指令失败 + JL_OTAResultCommandFail = 0x03, + /// OTA标示偏移查找失败 + JL_OTAResultSeekFail = 0x04, + /// OTA升级固件信息错误 + JL_OTAResultInfoFail = 0x05, + /// OTA升级设备电压低 + JL_OTAResultLowPower = 0x06, + /// 未能进入OTA升级模式 + JL_OTAResultEnterFail = 0x07, + /// OTA升级中 + JL_OTAResultUpgrading = 0x08, + /// OTA需重连设备(uuid方式) + JL_OTAResultReconnect = 0x09, + /// OTA需设备重启 + JL_OTAResultReboot = 0x0a, + /// OTA准备中 + JL_OTAResultPreparing = 0x0b, + /// OTA准备完成 + JL_OTAResultPrepared = 0x0f, + /// 设备已在升级中 + JL_OTAResultStatusIsUpdating = 0x10, + /// 当前固件多台设备连接,请手动断开另一个设备连接 + JL_OTAResultFailedConnectMore = 0x11, + /// 升级数据校验失败,SN 多次重复 + JL_OTAResultFailSameSN = 0xe0, + /// 升级取消 + JL_OTAResultCancel = 0xe1, + /// 升级数据校验失败 + JL_OTAResultFailVerification = 0xf1, + /// 升级失败 + JL_OTAResultFailCompletely = 0xf2, + /// 升级数据校验失败,加密Key不对 + JL_OTAResultFailKey = 0xf3, + /// 升级文件出错 + JL_OTAResultFailErrorFile = 0xf4, + /// uboot不匹配 + JL_OTAResultFailUboot = 0xf5, + /// 升级过程长度出错 + JL_OTAResultFailLenght = 0xf6, + /// 升级过程flash读写失败 + JL_OTAResultFailFlash = 0xf7, + /// 升级过程指令超时 + JL_OTAResultFailCmdTimeout = 0xf8, + /// 相同版本 + JL_OTAResultFailSameVersion = 0xf9, + /// TWS耳机未连接 + JL_OTAResultFailTWSDisconnect = 0xfa, + /// 耳机未在充电仓 + JL_OTAResultFailNotInBin = 0xfb, + /// OTA需重连设备(mac方式) + JL_OTAResultReconnectWithMacAddr = 0xfc, + /// OTA设备断开 + JL_OTAResultDisconnect = 0xfd, + /// OTA需重连设备(更新资源) + JL_OTAResultReconnectUpdateSource = 0xfe, + /// OTA未知错误 + JL_OTAResultUnknown +}; + +typedef NS_ENUM(UInt8, JL_OTAReconnectType) { + JL_OTAReconnectTypeUUID = 0x00, // OTA升级回连使用uuid + JL_OTAReconnectTypeMACAddr = 0x01, // OTA升级回连使用mac地址 +}; + +typedef NS_ENUM(UInt8, JL_OtaStatus) { + JL_OtaStatusNormal = 0, // 正常升级 + JL_OtaStatusForce = 1, // 强制升级 +}; +typedef NS_ENUM(UInt8, JL_OtaHeadset) { + JL_OtaHeadsetNO = 0, // 耳机单备份 正常升级 + JL_OtaHeadsetYES = 1, // 耳机单备份 强制升级 +}; + +typedef NS_ENUM(UInt8, JL_OtaWatch) { + JL_OtaWatchNO = 0, // 手表资源 正常升级 + JL_OtaWatchYES = 1, // 手表资源 强制升级 +}__attribute__((deprecated("This enum is deprecated. Use JLOtaSourcesExtendMode instead."))); + +/// OTA资源升级模式 +typedef NS_ENUM(UInt8, JLOtaSourcesExtendMode) { + /// 不启用 + JLSourcesExtendModeDisable = 0, + /// 启用普通资源升级模式 + JLSourcesExtendModeNormal = 1, + /// 启用只升级资源的模式 + JLSourcesExtendModeSourceOnly = 2, + /// 启用只升级固件程序的模式 + JLSourcesExtendModeFirmwareOnly = 3, +}; + +typedef NS_ENUM(UInt8, JL_BootLoader) { + JL_BootLoaderNO = 0, // 不需要下载Bootloader + JL_BootLoaderYES = 1, // 需要下载BootLoader +}; +typedef NS_ENUM(UInt8, JL_Partition) { + JL_PartitionSingle = 0, // 固件单备份 + JL_PartitionDouble = 1, // 固件双备份 +}; + +typedef void (^JL_OTA_RT)(JL_OTAResult result, float progress); + +typedef void (^JL_OTA_RESULT)(uint8_t status, uint8_t sn, NSData *__nullable data); + +@class JL_OTAManager; + +/// OTA 升级管理对象回调 +@protocol JL_OTAManagerDelegate + +/// 即将被发送的数据 +/// @param data 数据内容 +- (void)otaDataSend:(NSData *_Nonnull)data; + +@optional +/// 回调设备状态信息 +/// @param manager 对象状态 +- (void)otaFeatureResult:(JL_OTAManager *_Nonnull)manager; + +/// 回调升级状态以及进度等 +/// @param result 状态以及进度信息 +/// @param progress 进度信息 +- (void)otaUpgradeResult:(JL_OTAResult)result Progress:(float)progress; + +/// 取消OTA升级 +- (void)otaCancel; + +@end + +/// OTA升级管理对象 +@interface JL_OTAManager : NSObject + +/// 设备UUID(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_UUID; + +/// 设备名称(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_NAME; + +/// 是否仅仅支持BLE +@property(assign, nonatomic) BOOL bleOnly; + +/// ble蓝牙地址 +@property(strong, nonatomic) NSString *bleAddr; + +/// SN值 +@property(assign, nonatomic) uint8_t mCmdSN; + +/// 设备版本号 +@property(assign, nonatomic) uint16_t version; + +/// 设备版本信息 +@property(strong, nonatomic) NSString *versionFirmware; + +/// 设备OTA状态 +@property(assign, nonatomic) JL_OtaStatus otaStatus; + +/// 耳机单备份 是否需要强制升级 +@property(assign, nonatomic) JL_OtaHeadset otaHeadset; + +/// 手表资源 是否需要强制升级 +@property(assign, nonatomic) JL_OtaWatch otaWatch __attribute__((deprecated("This property is deprecated. Use otaSourceMode instead."))); + +/// 是否支持复用空间进行 OTA +@property(assign, nonatomic) BOOL isSupportReuseSpaceOTA; + +/// 是否支持 OTA 拓展功能 +@property (assign, nonatomic) BOOL isSupportExpand; + +/// 资源升级模式类型 +@property(assign, nonatomic) JLOtaSourcesExtendMode otaSourceMode; + +/// 设备OTA时支持单/双备份 +@property(assign, nonatomic) JL_Partition otaPartition; + +/// 设备是否需要下载Loader +@property(assign, nonatomic) JL_BootLoader bootloaderType; + +/// OTA升级回连方式 +@property(assign, nonatomic) JL_OTAReconnectType otaReconnectType; + +/// OTA升级内容大小(设备通知的) +@property(assign, nonatomic, readonly) int64_t otaLength; + +/// 已传输的数据大小 +@property(assign, nonatomic, readonly) uint32_t otaSent; + +/// 设备交互回调代理 +@property(weak, nonatomic) id delegate; + +/// 获取 OTA 升级对象 ++ (JL_OTAManager *)getOTAManager; + +/// 不建议使用自行初始化 +/// 推荐获取 getOTAManager +- (instancetype)init __attribute__((deprecated("Please use getOTAManager instead."))); + +/// 打印OTA发送的数据内容 +/// - Parameter status: 开关 +- (void)logSendData:(BOOL)status; + +/// 当BLE连接上时告知SDK +- (void)noteEntityConnected; + +/// 当BLE断开时告知SDK +- (void)noteEntityDisconnected; + +/// 设置最大丢包次数 +/// - Parameter count: 次数 +/// default: 10 +- (void)maxLostCount:(int)count; + +/// 设置超时时间 +/// - Parameter timeOut: 时间 +/// default: 5 +- (void)cmdTimeOut:(int)timeOut; + +/// 设置是否需要回连 +/// 一般不允许外部干扰状态机,外部不适用此方法 +/// - Parameter isReLink: 回连 +- (void)setOTARelink:(BOOL)isReLink __attribute__((deprecated("Can't be used externally."))); + +/// Receive data from rcsp +/// 设备端过来的数据 +/// - Parameter data: data +- (void)cmdOtaDataReceive:(NSData *)data; + +/// 查询设备OTA信息 +/// 所有情况下都需要执行,而且是在连上后(认证完成)第一步执行 +- (void)cmdTargetFeature; + +/// 查询设备系统状态 +/// 当设备需要挂载外置flash才能正常升级时需要执行,其他情况则无需执行 +- (void)cmdSystemFunction; + +/// OTA单备份,是否正在回连 +- (BOOL)cmdOtaIsRelinking; + +#pragma mark---> OTA升级 +/** + 开始OTA升级 + @param data 升级数据 + @param result 升级结果 + */ +- (void)cmdOTAData:(NSData *)data + Result:(JL_OTA_RT __nullable)result; + +/// OTA升级II +/// 单备份升级特有!!!! +/// 此接口可用于 OTA 回连成功后,再次发起升级使用 +/// @param result 升级结果回调 +- (void)cmdOtaDataIIResult:(JL_OTA_RT __nullable)result; + +/// OTA升级III +/// 单备份升级特有!!! +/// 此接口免去了公版 OTA 的外边回连策略,内部实现回连 +/// ⚠️使用此方法时不可使用 delegate 的回调信息,要使用 Result 的回调信息 +/// @param data OTA数据 +/// @param option 回连选项 +/// @param result 回复 +-(void)cmdUpgrade:(NSData *)data Option:(JLOtaReConnectOption *_Nullable)option Result:(JL_OTA_RT _Nonnull)result; + +/** + OTA升级取消 + @param result 回复 + */ +- (void)cmdOTACancelResult:(JL_OTA_RESULT __nullable)result; + +/// 重启设备 +- (void)cmdRebootDevice; + +/// 强制重启设备 +- (void)cmdRebootForceDevice; + +/// 重置OTA manager +- (void)resetOTAManager; + +/// 打印OTA SDK版本 ++ (NSString *)logSDKVersion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/jl_ufw.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/jl_ufw.h new file mode 100644 index 000000000..313c99ff0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/jl_ufw.h @@ -0,0 +1,207 @@ +/** + * Des: + * author: Bob + * date: 2022/11/29 + * Copyright: Jieli Technology + */ + +#ifndef NATIVEAPPLICATION_JL_UFW_H +#define NATIVEAPPLICATION_JL_UFW_H + + +#include +#include +#include +//#include +//#include +// +//#define tag "myJNI" +//#define logi(TAG, ...) ((void)__android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)) +//#define logw(TAG, ...) ((void)__android_log_print(ANDROID_LOG_WARN, TAG, __VA_ARGS__)) +//#define loge(TAG, ...) ((void)__android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)) + +int parse_fw_info(const char *data, int size, uint8_t *resultBuff, uint32_t buffSize); +#define BIT(n) (1 << n) + +// for FW file +enum eFW_FILE_TYPE { + + FILE_TYPE_FW_FLASH_BIN = 0, // FLASH文件,第一块FLASH数据 + FILE_TYPE_FW_OTP_BIN = 1, // OTP文件 + FILE_TYPE_FW_INFO_LOG = 2, // FW文件中保存的描述信息 + FILE_TYPE_FW_BURN_CFG = 3, // 烧写器配置文件 + FILE_TYPE_FW_SCRIPT_DATA = 4, // 烧写器打包烧写器下载文件时,需要执行的脚本数据 + FILE_TYPE_FW_SRC = 5, // 需要保存在FW文件中的代码文件, FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_NAME_BIN = 6, // 升级名字用的FW文件,已经废除 + FILE_TYPE_FW_OTP_VER_BIN = 7, // OTP maskrom版本 + FILE_TYPE_FW_OTPCFG_BIN = 8, // OTP配置信息 + FILE_TYPE_FW_OTP_CHIP_CONTROL_BIN = 9, // OTP芯片控制信息 + + FILE_TYPE_FW_OTP_MINI_UBOOT = 0xA, // 烧写到OTP的MINI UBOOT文件 + FILE_TYPE_FW_OTP_FIX_UBOOT = 0xB, // 烧写到OTP的FIX UBOOT文件 + FILE_TYPE_FW_FLASH_2_BIN = 0xC, // 第二块FLASH数据 + FILE_TYPE_FW_BR18_EFUSE_CONFIG_BIN = 0xD, // BR18 24BIT EFUSE配置数据 + FILE_TYPE_FW_RESOURCE_FILE = 0xE, // 资源文件 + FILE_TYPE_FW_2018KEY_INFO = 0xF, // 2018年的新KEY信息 + + FILE_TYPE_FW_BURNER_CUSTOMER_DATA = 0x10, // 一拖八烧写器用户信息 + FILE_TYPE_FW_BURNER_DV15_FLASH_BIN = 0x11, // 一拖八烧写器第一块FLASH数据 + FILE_TYPE_FW_BURNER_APP_FLASH_BIN = 0x12, // 一拖八烧写器第二块FLASH数据 + FILE_TYPE_FW_BURNER_DATA_FLASH_BIN = 0x13, // 一拖八烧写器第三块FLASH数据 + FILE_TYPE_FW_BURNER_BR21_FLASH_BIN = 0x14, // 一拖八烧写器第四块FLASH数据 + + FILE_TYPE_FW_FLASH_BIN_2 = 0x20, // 下载到第一块FLASH的文件,下载工具根据条件要么下载FILE_TYPE_FW_FLASH_BIN,要么下载FILE_TYPE_FW_FLASH_BIN_2 + FILE_TYPE_FW_FLASH_BIN_3, + FILE_TYPE_FW_FLASH_BIN_4, + + FILE_TYPE_FW_LOADER_BIN = 0x31, // 打包的LOADER程序代码 + + FILE_TYPE_FW_TEST_BOX_OTA_BIN = 0x64, // 测试盒使用的ota.bin + + FILE_TYPE_FW_3RD_DATA_FILE = 0x71, // 第三方烧写数据 + + FILE_TYPE_FW_OTA_TARGET_DEVICE_INFO = 0xA0, + FILE_TYPE_FW_BURN_COUNT_LIMIT = 0xA1, // 烧写授权信息 + + FILE_TYPE_FW_ADDITIONAL_FILE = 0xEE, // 附加文件,由烧写器根据名字决定用途 + FILE_TYPE_FW_PASSTHROUGH_DATA = 0xEF, // AC691X BTIF数据 + // 仅存在于FW文件中的数据 + FILE_TYPE_FW_HIDDEN_CFG_BIN = 0xFA, + FILE_TYPE_FW_INVISIBLE_DATA = 0xFB, // 保存在FW文件中的隐藏数据,FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_VISIBLE_DATA = 0xFE, // 仅保存在FW文件中的HEX数据 + + FILE_TYPE_FW_TAIL = 0xFF, // FW文件尾部标识 +}; + +typedef struct U16BIT +{ + unsigned char b0 : 1; + unsigned char b1 : 1; + unsigned char b2 : 1; + unsigned char b3 : 1; + unsigned char b4 : 1; + unsigned char b5 : 1; + unsigned char b6 : 1; + unsigned char b7 : 1; + unsigned char b8 : 1; + unsigned char b9 : 1; + unsigned char b10 : 1; + unsigned char b11 : 1; + unsigned char b12 : 1; + unsigned char b13 : 1; + unsigned char b14 : 1; + unsigned char b15 : 1; + +} U16BIT; +typedef union UBIT16 +{ + U16BIT bits; + uint16_t val; +} UBIT16; + +typedef struct stRES_FILE_HEAD { + uint32_t u32Tag; + uint16_t u16Crc; + uint16_t u16CrcOfItems; + uint32_t u32Len; + uint16_t u16Count; + uint16_t u16Res; + uint8_t u8Res16[16]; +}RES_FILE_HEAD; + +typedef struct stRES_CONFIG_ITEM { + uint16_t u16Index; + uint16_t u16Type; + uint32_t u32Addr; + uint32_t u32Len; + uint16_t u16CrcOfData; + uint16_t u16Res; + char szName[16]; +}RES_CONFIG_ITEM; +static uint16_t m_u16ChipKey = 0xFFFF; +static uint16_t m_u16DefaultKey = 0xFFFF; + + +#pragma pack(1) +#define JL_FILE_ITEM_NAME_MAX_LEN 16 +#define JL_CHIP_KEY_ENC_LENGTH 32 + +typedef struct stUFW_SYD_HEAD_V1 { + uint16_t u16Crc; // crc16 for this struct + uint16_t u16CrcOfSydFileHead; + uint32_t u32FileLength; // file length + uint16_t u16FileCount; // 此FW文件中包含的子文件个数 + uint16_t u16Version; + uint32_t u32Res; + char szChipName[16]; // 此FW文件对应的芯片类型,如AC690X,AC691X + uint32_t u32Res2[4]; + uint32_t u32Res3[4]; +}UFW_SYD_HEAD_V1; + +typedef struct stUFW_FILE_HEAD_V1 { + uint8_t u8FileType; // 文件类型 + uint8_t u8Res; // 保留 + uint16_t u16Index; // 文件索引号 + uint16_t u16Crc; // 明文数据的校验码 + uint16_t u16Version; // 本结构体版本 + uint32_t u32Addr; // 地址 + uint32_t u32Length; // 数据长度 + uint32_t u32AllLength; // 数据长度+尾部对齐的数据长度 + uint32_t u32EncryptedAddr; // 加密数据的地址偏移(相对u32Addr的地址) + uint32_t u32EncryptedLength; // 加密的数据长度 + uint32_t u32Res; // 保留 + uint32_t u64Res1[4]; // 保留 + uint32_t u64Res2[4]; // 保留 + char name[JL_FILE_ITEM_NAME_MAX_LEN]; + +}UFW_FILE_HEAD_V1; + +typedef struct stJL_FILE_TAIL { + char szChipKey[JL_CHIP_KEY_ENC_LENGTH]; // 32 // 固定位置 + uint16_t u16ChipKeyCRC16; // 34 // 固定位置 + uint8_t u8Magic[6]; // 40 // 固定位置 + uint8_t u8Res8[8]; // 48 + char szTailChipName[6]; // 54 // 固定位置 + uint8_t u8Reserv10[10]; // 64 +}JL_FILE_TAIL; + +typedef struct { + char szName[3]; + char szVersion[3]; + uint8_t u8Flag; + uint8_t u8Res; + uint32_t u32Crc; + uint16_t u16Crc; + uint16_t u16Res; +}JL_FLASH_BIN_TAIL; + +typedef UFW_SYD_HEAD_V1 jl_ufw_syd_head; +typedef UFW_FILE_HEAD_V1 jl_ufw_file_head; +typedef JL_FILE_TAIL jl_ufw_tail; + +typedef struct stJL_BR22_FLASH_HEAD { + uint16_t u16Crc; // 结构体自身校验码 + uint8_t u8SizeForBurner; // 为烧写器保留的空间大小 + uint8_t u8Version; // FLASH FS版本号 + char vid[4]; // 4byte的vid + uint32_t u32FlashSize; // FLASH大小,由isd_download计算得出 + uint8_t u8FsVersion; // 类型:br18/br22 + uint8_t u8BlockAlingnModulus; // 对齐系数 + uint8_t u8Res; // 保留,以后有可能会用于存放顶层目录的偏移和文件目录内偏移信息 + uint8_t u8SpecialOptFlag; // 用于标记是否需要生成2种flash格式的标记位,目前只用1位,以后如果需要特殊操作需要标记,再用其他位 + char pid[16]; // 16byte的pid +}JL_BR22_FLASH_HEAD; + + + + + + + + + + +#pragma pack() + + +#endif //NATIVEAPPLICATION_JL_UFW_H diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Info.plist new file mode 100644 index 0000000000000000000000000000000000000000..e118ebce9bac5629fce0629f3df8fa862687f777 GIT binary patch literal 880 zcmZ8eNmJB76n@>J;syZ(2NWG}7fEG;170{lBE>Q+l8gvN5ku0hhkzZo(;d8VvN42^aM43~I0_xTdlds_HyVge$84(DH1up2e(v!aQ}U z6FZAqW;TSvf;JsHrn^i`J87BX`Hg_q>d{7ZhBuj7WXg0XYgFa(zhnr5 ziQDvjMns;a9SB9nb{)}TrdtzBhE$bDl=4Vo_Y-@V+jV(Vl=<8I2PY_}WT{#jQ_8Yl zl0?Z9#y|lNd}u%b6lze12#WBI4;dsrMtJr({YBX0>@aL|9RbE?5iIU?cr3yMM;MRI zRl>9)5OQ?@yL`4me0yt1KmvwVD8n4z?isv-_wW(E!aiz4MKpxQQ3X9hJ19oa(M$9i zeL$bkXY>VqLqE`O^cQ2?f_rcQk7ET_@f!AVjGy8ccpv}7zaafEI*4#Pi&?;b{sHgz B0XhHx literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/JL_OTALib b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/JL_OTALib new file mode 100755 index 0000000000000000000000000000000000000000..23599f86d58ef70a74597af636b1d57e9723eecf GIT binary patch literal 455744 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

CJ;*zGn^Z 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 ZAPf)&2m^!x!T@1_FhCd}4E!7!_zyfy%d-Fg literal 0 HcmV?d00001 diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Modules/module.modulemap new file mode 100644 index 000000000..fbeacb707 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_OTALib { + umbrella header "JL_OTALib.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..233cf6377 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/_CodeSignature/CodeResources @@ -0,0 +1,207 @@ + + + + + files + + Headers/JLOTAFile.h + + OCi8PoI3GQr4HUxHQQytlXYCxe8= + + Headers/JLOtaCustom.h + + ohGYE+IOCliAaeZaO5VdRBwHvWo= + + Headers/JLOtaReConnectOption.h + + xqKc873u51zqagJXS172BK6h9Tg= + + Headers/JL_OTALib.h + + tH9kHWi/DKzq8j2NoSg0wXoBAro= + + Headers/JL_OTAManager.h + + PMESdvB6Bcu7gn1YJqH1tOi0eEw= + + Headers/jl_ufw.h + + KBTDPNzyz3mtGLkvJLZ7GIRKNeM= + + Info.plist + + WfMSuIuMgNEEbLR1JZENJAqvP5Y= + + Modules/module.modulemap + + Djaqrf2BV/5uLRNN6e4M1DPfyG4= + + + files2 + + Headers/JLOTAFile.h + + hash + + OCi8PoI3GQr4HUxHQQytlXYCxe8= + + hash2 + + lz4Ha2Z62XzIHqsHW1574zMjx1W+IhrqaCJK8HGIs/o= + + + Headers/JLOtaCustom.h + + hash + + ohGYE+IOCliAaeZaO5VdRBwHvWo= + + hash2 + + KntKbJMahP2WujBsJDiGFbjDQvJdw3yo3CqTohYnPcE= + + + Headers/JLOtaReConnectOption.h + + hash + + xqKc873u51zqagJXS172BK6h9Tg= + + hash2 + + obE+hckXBKKcYUtitl4rad/7W1Bi5ciNOH3ZPml7hY4= + + + Headers/JL_OTALib.h + + hash + + tH9kHWi/DKzq8j2NoSg0wXoBAro= + + hash2 + + /E9fkD4b67lRdPY5BqxqffRv3H48y1qpNWHYw+a65Cg= + + + Headers/JL_OTAManager.h + + hash + + PMESdvB6Bcu7gn1YJqH1tOi0eEw= + + hash2 + + uHRHY8s9UMaaynCPFZOCTid9vmTW5l5PVNI5pAyQK/I= + + + Headers/jl_ufw.h + + hash + + KBTDPNzyz3mtGLkvJLZ7GIRKNeM= + + hash2 + + l3c9CmVcHyBHIxKSG6GlCBpaZjnp6+fd4iKu2jGMyuE= + + + Modules/module.modulemap + + hash + + Djaqrf2BV/5uLRNN6e4M1DPfyG4= + + hash2 + + CQv4Q+xyzKhKSJpAY8gU98Qv9Wv1W16ILQ5MGAKukrA= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + +