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 000000000..3c961562c Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist differ 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 000000000..7d4cce100 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper differ 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 000000000..b8d6b7f94 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist differ 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 000000000..df8c2858b Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/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_x86_64-simulator/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/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..1ae81019b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources @@ -0,0 +1,147 @@ + + + + + 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 000000000..7f060a4a3 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse new file mode 100755 index 000000000..9c04419b0 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse differ 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 000000000..284ba59ec Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist differ 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 000000000..27d3e726d Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/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_x86_64-simulator/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/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..e2beeb0cb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources @@ -0,0 +1,267 @@ + + + + + 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 000000000..fdbde3775 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist differ 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 000000000..fe3eb3303 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair differ 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 000000000..4d99eceaf Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist differ 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 000000000..be2445248 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/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_x86_64-simulator/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/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..9022691a5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources @@ -0,0 +1,177 @@ + + + + + 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 000000000..6ca8a27f2 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist differ 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 000000000..45b500d0f Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/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/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/Headers/JLOTAFile.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/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_x86_64-simulator/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_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 000000000..e118ebce9 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Info.plist differ 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 000000000..23599f86d Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/JL_OTALib differ 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 + + + +