Browse Source

修复 Multiple commands produce 错误

device_jieli.podspec 原本 vendor 了 7 个 xcframework,但其中 5 个跟其他
本地 plugin 重复(CocoaPods 不会自动去重):
  - JL_OTALib / JL_AdvParse / JL_HashPair / JLLogHelper —— ota plugin 已有
  - JLAudioUnitKit —— ble_service plugin 的 SPM binary target 已有

只保留 device_jieli 独家依赖:JL_BLEKit + JLAV2Lib。删除 Frameworks/ 内
重复的 xcframework 副本以避免误用。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
weicu
liwei1dao 5 months ago
parent
commit
d4eaa42ac4
  1. 43
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/Info.plist
  2. 26
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h
  3. 58
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h
  4. 66
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h
  5. 83
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h
  6. 69
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h
  7. 59
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h
  8. 67
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h
  9. 55
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h
  10. 51
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h
  11. 54
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h
  12. BIN
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist
  13. BIN
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit
  14. 6
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap
  15. 52
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt
  16. 26
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h
  17. 58
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h
  18. 66
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h
  19. 83
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h
  20. 69
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h
  21. 59
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h
  22. 67
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h
  23. 55
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h
  24. 51
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h
  25. 54
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h
  26. BIN
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist
  27. BIN
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit
  28. 6
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap
  29. 234
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources
  30. 52
      local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt
  31. 44
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist
  32. 19
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h
  33. 88
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h
  34. BIN
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist
  35. BIN
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper
  36. 6
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap
  37. 19
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h
  38. 88
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h
  39. BIN
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist
  40. BIN
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper
  41. 6
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Modules/module.modulemap
  42. 147
      local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources
  43. 44
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist
  44. 72
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h
  45. 64
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h
  46. 54
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h
  47. 47
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h
  48. 25
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h
  49. 19
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h
  50. 19
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h
  51. 89
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h
  52. 35
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h
  53. 27
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h
  54. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist
  55. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse
  56. 6
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap
  57. 72
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h
  58. 64
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h
  59. 54
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h
  60. 47
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h
  61. 25
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h
  62. 19
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h
  63. 19
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h
  64. 89
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h
  65. 35
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h
  66. 27
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h
  67. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist
  68. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse
  69. 6
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Modules/module.modulemap
  70. 267
      local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources
  71. 44
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist
  72. 25
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h
  73. 59
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h
  74. 21
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h
  75. 20
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h
  76. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist
  77. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair
  78. 6
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap
  79. 25
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h
  80. 59
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h
  81. 21
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h
  82. 20
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h
  83. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist
  84. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair
  85. 6
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Modules/module.modulemap
  86. 177
      local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources
  87. 44
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist
  88. 52
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h
  89. 62
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h
  90. 43
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h
  91. 22
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h
  92. 302
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h
  93. 207
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h
  94. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist
  95. BIN
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib
  96. 6
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Modules/module.modulemap
  97. 52
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOTAFile.h
  98. 62
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h
  99. 43
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h
  100. 22
      local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h

43
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/Info.plist

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>JLAudioUnitKit.framework/JLAudioUnitKit</string>
<key>LibraryIdentifier</key>
<string>ios-x86_64-simulator</string>
<key>LibraryPath</key>
<string>JLAudioUnitKit.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>JLAudioUnitKit.framework/JLAudioUnitKit</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>JLAudioUnitKit.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

26
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h

@ -1,26 +0,0 @@
//
// JLAudioUnitKit.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
//
#import <Foundation/Foundation.h>
//! Project version number for JLAudioUnitKit.
FOUNDATION_EXPORT double JLAudioUnitKitVersionNumber;
//! Project version string for JLAudioUnitKit.
FOUNDATION_EXPORT const unsigned char JLAudioUnitKitVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <JLAudioUnitKit/PublicHeader.h>
#import <JLAudioUnitKit/JLSpeexDecoder.h>
#import <JLAudioUnitKit/JLOpusDecoder.h>
#import <JLAudioUnitKit/JLOpusEncoder.h>
#import <JLAudioUnitKit/JLOpusFormat.h>
#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
#import <JLAudioUnitKit/JLPcmToWtg.h>
#import <JLAudioUnitKit/JLPcmToWav.h>
#import <JLAudioUnitKit/JLAudioUnitPlayer.h>
#import <JLAudioUnitKit/JLOpusToOgg.h>

58
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h

@ -1,58 +0,0 @@
//
// JLAudioUnitPlayer.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/4/16.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, JLAudioUnitPlayerType) {
JLAudioUnitPlayerTypeFile, // 支持 MP3/WAV/AAC 等文件格式(AVAudioPlayer)
JLAudioUnitPlayerTypePCM // 支持 PCM 流式播放(Audio Queue)
};
@class JLAudioUnitPlayer;
@protocol JLAudioPlayerDelegate <NSObject>
@optional
// 播放进度更新(秒)
- (void)audioPlayer:(JLAudioUnitPlayer *)player didUpdateProgress:(NSTimeInterval)currentTime duration:(NSTimeInterval)duration;
// 播放完成
- (void)audioPlayerDidFinishPlaying:(JLAudioUnitPlayer *)player;
// 播放错误
- (void)audioPlayer:(JLAudioUnitPlayer *)player didFailWithError:(NSError *)error;
@end
@interface JLAudioUnitPlayer : NSObject
@property (nonatomic, weak) id<JLAudioPlayerDelegate> delegate;
@property (nonatomic, readonly) NSTimeInterval duration; // 总时长(文件模式下有效)
@property (nonatomic, readonly) NSTimeInterval currentTime;
@property (nonatomic, readonly) BOOL isPlaying;
#pragma mark - 初始化方法
/// 文件播放初始化(MP3/WAV/AAC)
- (instancetype)initWithAudioFile:(NSString *)filePath;
/// PCM 流播放初始化(需指定格式)
- (instancetype)initWithPCMFormat:(AudioStreamBasicDescription)format;
#pragma mark - 播放控制
- (void)play;
- (void)pause;
- (void)stop;
- (void)seekToTime:(NSTimeInterval)time; // 仅文件模式有效
#pragma mark - PCM 流式输入(仅 PCM 模式有效)
- (void)appendPCMData:(NSData *)pcmData;
- (void)endPCMStream; // 结束 PCM 流输入
@end
NS_ASSUME_NONNULL_END

66
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h

@ -1,66 +0,0 @@
//
// JLOpusDecoder.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLAudioUnitKit/JLOpusFormat.h>
NS_ASSUME_NONNULL_BEGIN
@class JLOpusDecoder;
/// Opus 解码代理
@protocol JLOpusDecoderDelegate <NSObject>
/// Opus 数据解码
/// - Parameters:
/// - decoder: 解码器
/// - data: pcm 数据
/// - error: 错误信息
-(void)opusDecoder:(JLOpusDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
@end
typedef void(^JLOpusDecoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
/// Opus 解码
@interface JLOpusDecoder : NSObject
/// 数据格式参数
@property (nonatomic, strong) JLOpusFormat *opusFormat;
/// 代理委托
@property(nonatomic, weak) id<JLOpusDecoderDelegate> delegate;
- (instancetype)init NS_UNAVAILABLE;
/// 初始化
/// - Parameters:
/// - format: 解码格式
/// - delegate: 代理
- (instancetype)initDecoder:(JLOpusFormat *)format delegate:(id<JLOpusDecoderDelegate>)delegate;
/// 重置解码格式
/// - Parameter format: 解码格式
-(void)resetOpusFramet:(JLOpusFormat *)format;
/// 输入 Opus 数据
/// - Parameter data: Opus 数据
-(void)opusDecoderInputData:(NSData *)data;
/// 解码文件
/// - Parameters:
/// - input: opus 文件
/// - outPut: 输出路径
/// - result: 结果回调
-(void)opusDecodeFile:(NSString *)input outPut:(NSString *_Nullable)outPut Resoult:(JLOpusDecoderConvertBlock _Nullable)result;
/// 释放
-(void)opusOnRelease;
@end
NS_ASSUME_NONNULL_END

83
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h

@ -1,83 +0,0 @@
//
// JLOpusEncodeConfig.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/8/27.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, JLOpusEncoderBandwidth) {
///(4kHz bandpass)
JLOpusEncoderBandwidthNarrowband = 1101, // 对应 OPUS_BANDWIDTH_NARROWBAND
/// (6kHz bandpass)
JLOpusEncoderBandwidthMediumband = 1102, // 对应 OPUS_BANDWIDTH_MEDIUMBAND
/// (8kHz bandpass)
JLOpusEncoderBandwidthWideband = 1103, // 对应 OPUS_BANDWIDTH_WIDEBAND
/// (12kHz bandpass)
JLOpusEncoderBandwidthSuperwideband = 1104,// 对应 OPUS_BANDWIDTH_SUPERWIDEBAND
/// (20kHz bandpass)
JLOpusEncoderBandwidthFullband = 1105 // 对应 OPUS_BANDWIDTH_FULLBAND
};
@interface JLOpusEncodeConfig : NSObject
/// 采样率
@property (nonatomic, assign) int sampleRate;
/// 单/双声道
@property (nonatomic, assign) int channels;
/// 帧长度 20ms 默认值
@property (nonatomic, assign) int frameDuration;
/// 帧长度
@property (nonatomic, assign) int frameSize;
/// BitRate
@property (nonatomic, assign) int bitRate;
/// 可变比特率开关,默认 NO(使用 CBR)
@property (nonatomic, assign) BOOL useVBR;
/// VBR 限制模式,默认 NO
@property (nonatomic, assign) BOOL constrainedVBR;
/// 编码复杂度 0~10,默认 5
@property (nonatomic, assign) int complexity;
/// 强制输出声道数 -1: 自适应, 1: 单声道, 2: 双声道, 默认 -1
@property (nonatomic, assign) int forceChannels;
/// 是否启用 DTX(静音段不发送数据),默认 NO
@property (nonatomic, assign) BOOL useDTX;
/// 网络丢包百分比,默认 0
@property (nonatomic, assign) int packetLossPercent;
/// 最大带宽限制(OPUS_BANDWIDTH_*),默认 FULLBAND
@property (nonatomic, assign) int bandwidth;
/// PCM 输入有效位深,默认 16
@property (nonatomic, assign) int lsbDepth;
/// 专家模式下帧时长(ms),默认与 frameDuration 一致
@property (nonatomic, assign) int expertFrameDuration;
/// 是否启用数据头
/// 默认是启用的
@property (nonatomic, assign) BOOL hasDataHeader;
/// 创建默认编码配置
+ (instancetype)defaultConfig;
/// 获取默认配置
/// 杰理的无头配置
+ (instancetype)defaultJL;
@end
NS_ASSUME_NONNULL_END

69
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h

@ -1,69 +0,0 @@
//
// JLOpusEncoder.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
NS_ASSUME_NONNULL_BEGIN
@class JLOpusEncoder;
/// Opus 编码代理
@protocol JLOpusEncoderDelegate <NSObject>
/// PCM 数据编码
/// - Parameters:
/// - encoder: 解码器
/// - data: opus 数据
/// - error: 错误信息
-(void)opusEncoder:(JLOpusEncoder *)encoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
@end
typedef void(^JLOpusEncoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
/// Opus 编码
@interface JLOpusEncoder : NSObject
/// 音频格式
@property (nonatomic, strong) JLOpusEncodeConfig *opusFormat;
/// 代理
@property (nonatomic, weak) id<JLOpusEncoderDelegate> delegate;
-(instancetype)init NS_UNAVAILABLE;
/// 初始化
/// - Parameters:
/// - config: 音频格式
/// - delegate: 代理
-(instancetype)initFormat:(JLOpusEncodeConfig *)format delegate:(id<JLOpusEncoderDelegate>)delegate;
/// PCM 数据
/// - Parameter data: PCM 数据
-(void)opusEncodeData:(NSData *)data;
/// PCM 文件转换成 Opus 文件(推荐新接口,流式读取,避免一次性加载内存)
/// - Parameters:
/// - pcmPath: PCM 文件存放路径
/// - output: 文件输出路径(可空,默认 ~/Documents/pcmToOpus.opus)
/// - result: 结果回调,回传输出路径或错误
-(void)opusEncodeFile:(NSString *)pcmPath output:(NSString *_Nullable)output result:(JLOpusEncoderConvertBlock _Nullable)result;
/// 兼容旧接口(已废弃:命名拼写问题,且旧实现一次性读入文件)
/// - Parameters:
/// - pcmPath: PCM 文件存放路径
/// - outPut: 文件输出路径
/// - result: 结果回调
-(void)opusEncodeFile:(NSString *)pcmPath outPut:(NSString *_Nullable)outPut Resoult:(JLOpusEncoderConvertBlock _Nullable)result __attribute__((deprecated("Use opusEncodeFile:output:result: instead.")));
/// 释放
-(void)opusOnRelease;
@end
NS_ASSUME_NONNULL_END

59
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h

@ -1,59 +0,0 @@
//
// JLOpusOptions.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
#define OPUS_JL_MAX_FRAME_SIZE 48000 * 2
#define OPUS_JL_MAX_PACKET_SIZE 1500
@interface JLOpusFormat : NSObject
/// 采样率
@property (nonatomic, assign) int sampleRate;
/// 单/双声道
@property (nonatomic, assign) int channels;
/// 帧长度 20ms 默认值
@property (nonatomic, assign) int frameDuration;
/// BitRate
@property (nonatomic, assign) int bitRate;
/// 数据帧大小
@property (nonatomic, assign, readonly) int frameSize;
/// 数据大小
@property (nonatomic, assign) int dataSize;
/// 是否包含数据头部
@property (nonatomic, assign) BOOL hasDataHeader;
/// 是否开启slik语音优化
@property (nonatomic, assign) BOOL usVoipSlik;
-(instancetype)init NS_UNAVAILABLE;
/// 默认配置
/// sampleRate: 16000
/// channels: 1
/// frameDuration: 20
/// dataSize: 40
/// frameSize: 320
/// hasDataHeader: YES
/// bitRate: 16000
/// usVoipSlik: false
+(JLOpusFormat*)defaultFormats;
@end
NS_ASSUME_NONNULL_END

67
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h

@ -1,67 +0,0 @@
//
// JLOpusToOgg.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/5/16.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^JLOpusToOggConvertBlock)(NSData *_Nullable oggData, BOOL isLast, NSError *_Nullable error);
/// 将Opus数据转换为Ogg数据
@interface JLOpusToOgg : NSObject
/// 转码内容的回调
@property(nonatomic,strong)JLOpusToOggConvertBlock _Nullable convertBlock;
/// 帧长
/// - Parameter frameLen: 帧长
/// 默认值 40
- (instancetype)initWithFrameLength:(uint32_t)frameLen;
/// 开始流
-(void)startStream;
/// 添加Opus数据
/// - Parameter opusData: 符合杰理的无头裸 opus 数据
- (void)appendOpusData:(NSData *)opusData;
/// 关闭流
- (void)closeStream;
/// 将Opus数据转换为Ogg数据
/// opus 必须为 16000
/// opus 必须是 单声道
/// - Parameters:
/// - opusData: 符合杰理的无头裸 opus 数据
/// - frameLen: 帧长 公版默认帧长是 40
/// - duration: 转换后的时长
/// - error: 错误
+ (NSData *_Nullable)convertOpusDataToOgg:(NSData *)opusData
frameLen:(uint32_t)frameLen
duration:(double *)duration
error:(NSError *__autoreleasing _Nullable *)error ;
/// 将Opus文件转换为Ogg文件
/// 符合杰理的无头裸 opus 文件
/// opus 必须为 16000
/// opus 必须是 单声道
/// - Parameters:
/// - opusFilePath: opus文件路径
/// - oggFilePath: ogg文件路径
/// - frameLen: 帧长 公版默认帧长是 40
/// - duration: 转换后的时长
+(void)convertOpusFileToOgg:(NSString *)opusFilePath
oggFilePath:(NSString *)oggFilePath
frameLen:(uint32_t)frameLen
duration:(double *)duration;
@end
NS_ASSUME_NONNULL_END

55
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h

@ -1,55 +0,0 @@
//
// JLPcmToWav.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/4/15.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// PCM 转 WAV
@interface JLPcmToWav : NSObject
#pragma mark - 流式编码接口
/// 初始化流式编码器
/// @param outputPath 输出文件路径
/// @param sampleRate 采样率(如 16000)
/// @param numChannels 声道数(1 或 2)
/// @param bitsPerSample 位深(16)
- (instancetype)initWithOutputPath:(NSString *)outputPath
sampleRate:(uint32_t)sampleRate
numChannels:(uint16_t)numChannels
bitsPerSample:(uint16_t)bitsPerSample;
/// 追加 PCM 数据(需确保数据格式与初始化参数一致)
/// @param pcmData PCM 数据块
/// @param error 错误信息
- (BOOL)appendPCMData:(NSData *)pcmData error:(NSError **)error;
/// 完成编码并关闭文件(必须调用以更新 WAV 头)
/// @param error 错误信息
- (BOOL)finishWithError:(NSError **)error;
#pragma mark - 一次性编码接口(便捷方法)
/// 将 PCM 数据一次性转为 WAV 文件
/// @param pcmData PCM 数据块
/// @param outputPath 输出文件路径
/// @param sampleRate 采样率(如 16000)
/// @param numChannels 声道数(1 或 2)
/// @param bitsPerSample 位深(16)
/// @param error 错误信息
+ (BOOL)convertPCMData:(NSData *)pcmData
toWAVFile:(NSString *)outputPath
sampleRate:(uint32_t)sampleRate
numChannels:(uint16_t)numChannels
bitsPerSample:(uint16_t)bitsPerSample
error:(NSError **)error;
@end
NS_ASSUME_NONNULL_END

51
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h

@ -1,51 +0,0 @@
//
// JLPcmToWtg.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/1/21.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface JLPcm2WtgModel : NSObject <NSCopying>
/// 音频文件
@property (nonatomic, copy) NSString *pcmPath;
/// 输出文件
@property (nonatomic, copy) NSString *wtgPath;
@end
/// JLPcmToWtgProtocol
@protocol JLPcmToWtgDelegate <NSObject>
/// 音频转码完成
/// - Parameter model: 音频转码模型
- (void)convertPcmToWtgDone:(JLPcm2WtgModel *)model;
@end
/// 音频转码
/// PCM 转 WTG
@interface JLPcmToWtg : NSObject
- (instancetype)init NS_UNAVAILABLE;
/// 音频转码初始化
/// - Parameter delegate: 音频转码代理
- (instancetype)initWithDelegate:(id<JLPcmToWtgDelegate>)delegate;
/// 音频转码
/// 当前接口模型只限制 PCM 文件格式为:8k 16bit
/// 输入的pcm文件(16bit,小端,8k采样率),wtg_filename:输出的wtg文件
/// - Parameter model: 音频转码模型
-(void)convertPcmToWtg:(JLPcm2WtgModel *)model;
@end
NS_ASSUME_NONNULL_END

54
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h

@ -1,54 +0,0 @@
//
// JLSpeexUnit.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class JLSpeexDecoder;
@protocol JLSpeexDelegate <NSObject>
/// Speex 数据解码
/// - Parameters:
/// - decoder: 解码器
/// - data: PCM 数据
/// - error: 错误信息
- (void)speexDecoder:(JLSpeexDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
@end
typedef void(^JLSpeexConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
/// Speex 数据解码
@interface JLSpeexDecoder : NSObject
-(instancetype)init NS_UNAVAILABLE;
/// 初始化
/// - Parameter delegate: 委托
-(instancetype)initWithDelegate:(id<JLSpeexDelegate>)delegate;
/// 委托
@property (nonatomic, weak) id<JLSpeexDelegate> delegate;
/// 输入 Speex 数据
/// - Parameter data: Speex 数据
-(void)speexInputData:(NSData*)data;
/// 将 Speex 转换为 PCM
/// - Parameters:
/// - filePath: Speex 路径
/// - opPath: 输出路径
/// - result: 结果回调
-(void)speexConvertToPcm:(NSString *)filePath outPutFilePath:(NSString * _Nullable)opPath Result:(JLSpeexConvertBlock)result;
/// 释放对象
-(void)speexOnRelease;
@end
NS_ASSUME_NONNULL_END

BIN
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JLAudioUnitKit {
umbrella header "JLAudioUnitKit.h"
export *
module * { export * }
}

52
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt

@ -1,52 +0,0 @@
DESCRIPTION
-----------
This package includes the files needed to build the fixed point implementation
of the ITU-T G.729 Appendix IV.
DIFFERENCES WITH G.729B
-----------------------
The ANSI-C source code simulating the bit-exact, fixed point simulation
software of enhanced VAD is integrated into the G.729B source code.
The modification to the G.729B source code updated files of coder.c,
cod_ld8k.c, bits.c, dec_sid.c, dtx.c, qsidgain.c, qsidlsf.c, tab_dtx.c,
tab_dtx.h, ld8k.h, deleted vad.c/h and integrated the enhanced VAD functions
into the G.729B project. The modification also replaced the original basic
operators used in the original G.729B source code by the basic operators of
ITU-T Software Tool Library STL2005.
COMPILATION
-----------
For UNIX systems the following makefiles are provided
coder.mak
decoder.mak
Edit the makefiles coder.mak and decoder.mak to set the proper options
for your system.
The command to compile and link all code on a UNIX system is
make -f coder.mak
make -f decoder.mak
For other platforms, the *.mak files can be used to work out the
compilation procedures.
USAGE
-----
The command line instruction for the encoder is as follows:
coder inputfile bitstreamfile dtx_option mode x
where:
inputfile : 8 kHz sampled data file containing 16 bit linear PCM signal
bitstreamfile: binary file containing bitstream
dtx_option : = 1 : DTX enabled 0 : DTX disabled
mode X : Run encoder with enhanced VAD in operating point X,
X=0 or 1 or 2 representing balanced or quality-preferred
or bandwidth saving operating point, respectively
The command line for the decoder is as follows:
decoder bitstreamfile outputfile
where:
bitstreamfile: binary file containing bitstream
outputfile : 8 kHz sampled data file containing 16 bit linear PCM signal

26
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h

@ -1,26 +0,0 @@
//
// JLAudioUnitKit.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
//
#import <Foundation/Foundation.h>
//! Project version number for JLAudioUnitKit.
FOUNDATION_EXPORT double JLAudioUnitKitVersionNumber;
//! Project version string for JLAudioUnitKit.
FOUNDATION_EXPORT const unsigned char JLAudioUnitKitVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <JLAudioUnitKit/PublicHeader.h>
#import <JLAudioUnitKit/JLSpeexDecoder.h>
#import <JLAudioUnitKit/JLOpusDecoder.h>
#import <JLAudioUnitKit/JLOpusEncoder.h>
#import <JLAudioUnitKit/JLOpusFormat.h>
#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
#import <JLAudioUnitKit/JLPcmToWtg.h>
#import <JLAudioUnitKit/JLPcmToWav.h>
#import <JLAudioUnitKit/JLAudioUnitPlayer.h>
#import <JLAudioUnitKit/JLOpusToOgg.h>

58
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h

@ -1,58 +0,0 @@
//
// JLAudioUnitPlayer.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/4/16.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <AudioToolbox/AudioToolbox.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, JLAudioUnitPlayerType) {
JLAudioUnitPlayerTypeFile, // 支持 MP3/WAV/AAC 等文件格式(AVAudioPlayer)
JLAudioUnitPlayerTypePCM // 支持 PCM 流式播放(Audio Queue)
};
@class JLAudioUnitPlayer;
@protocol JLAudioPlayerDelegate <NSObject>
@optional
// 播放进度更新(秒)
- (void)audioPlayer:(JLAudioUnitPlayer *)player didUpdateProgress:(NSTimeInterval)currentTime duration:(NSTimeInterval)duration;
// 播放完成
- (void)audioPlayerDidFinishPlaying:(JLAudioUnitPlayer *)player;
// 播放错误
- (void)audioPlayer:(JLAudioUnitPlayer *)player didFailWithError:(NSError *)error;
@end
@interface JLAudioUnitPlayer : NSObject
@property (nonatomic, weak) id<JLAudioPlayerDelegate> delegate;
@property (nonatomic, readonly) NSTimeInterval duration; // 总时长(文件模式下有效)
@property (nonatomic, readonly) NSTimeInterval currentTime;
@property (nonatomic, readonly) BOOL isPlaying;
#pragma mark - 初始化方法
/// 文件播放初始化(MP3/WAV/AAC)
- (instancetype)initWithAudioFile:(NSString *)filePath;
/// PCM 流播放初始化(需指定格式)
- (instancetype)initWithPCMFormat:(AudioStreamBasicDescription)format;
#pragma mark - 播放控制
- (void)play;
- (void)pause;
- (void)stop;
- (void)seekToTime:(NSTimeInterval)time; // 仅文件模式有效
#pragma mark - PCM 流式输入(仅 PCM 模式有效)
- (void)appendPCMData:(NSData *)pcmData;
- (void)endPCMStream; // 结束 PCM 流输入
@end
NS_ASSUME_NONNULL_END

66
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h

@ -1,66 +0,0 @@
//
// JLOpusDecoder.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLAudioUnitKit/JLOpusFormat.h>
NS_ASSUME_NONNULL_BEGIN
@class JLOpusDecoder;
/// Opus 解码代理
@protocol JLOpusDecoderDelegate <NSObject>
/// Opus 数据解码
/// - Parameters:
/// - decoder: 解码器
/// - data: pcm 数据
/// - error: 错误信息
-(void)opusDecoder:(JLOpusDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
@end
typedef void(^JLOpusDecoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
/// Opus 解码
@interface JLOpusDecoder : NSObject
/// 数据格式参数
@property (nonatomic, strong) JLOpusFormat *opusFormat;
/// 代理委托
@property(nonatomic, weak) id<JLOpusDecoderDelegate> delegate;
- (instancetype)init NS_UNAVAILABLE;
/// 初始化
/// - Parameters:
/// - format: 解码格式
/// - delegate: 代理
- (instancetype)initDecoder:(JLOpusFormat *)format delegate:(id<JLOpusDecoderDelegate>)delegate;
/// 重置解码格式
/// - Parameter format: 解码格式
-(void)resetOpusFramet:(JLOpusFormat *)format;
/// 输入 Opus 数据
/// - Parameter data: Opus 数据
-(void)opusDecoderInputData:(NSData *)data;
/// 解码文件
/// - Parameters:
/// - input: opus 文件
/// - outPut: 输出路径
/// - result: 结果回调
-(void)opusDecodeFile:(NSString *)input outPut:(NSString *_Nullable)outPut Resoult:(JLOpusDecoderConvertBlock _Nullable)result;
/// 释放
-(void)opusOnRelease;
@end
NS_ASSUME_NONNULL_END

83
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h

@ -1,83 +0,0 @@
//
// JLOpusEncodeConfig.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/8/27.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, JLOpusEncoderBandwidth) {
///(4kHz bandpass)
JLOpusEncoderBandwidthNarrowband = 1101, // 对应 OPUS_BANDWIDTH_NARROWBAND
/// (6kHz bandpass)
JLOpusEncoderBandwidthMediumband = 1102, // 对应 OPUS_BANDWIDTH_MEDIUMBAND
/// (8kHz bandpass)
JLOpusEncoderBandwidthWideband = 1103, // 对应 OPUS_BANDWIDTH_WIDEBAND
/// (12kHz bandpass)
JLOpusEncoderBandwidthSuperwideband = 1104,// 对应 OPUS_BANDWIDTH_SUPERWIDEBAND
/// (20kHz bandpass)
JLOpusEncoderBandwidthFullband = 1105 // 对应 OPUS_BANDWIDTH_FULLBAND
};
@interface JLOpusEncodeConfig : NSObject
/// 采样率
@property (nonatomic, assign) int sampleRate;
/// 单/双声道
@property (nonatomic, assign) int channels;
/// 帧长度 20ms 默认值
@property (nonatomic, assign) int frameDuration;
/// 帧长度
@property (nonatomic, assign) int frameSize;
/// BitRate
@property (nonatomic, assign) int bitRate;
/// 可变比特率开关,默认 NO(使用 CBR)
@property (nonatomic, assign) BOOL useVBR;
/// VBR 限制模式,默认 NO
@property (nonatomic, assign) BOOL constrainedVBR;
/// 编码复杂度 0~10,默认 5
@property (nonatomic, assign) int complexity;
/// 强制输出声道数 -1: 自适应, 1: 单声道, 2: 双声道, 默认 -1
@property (nonatomic, assign) int forceChannels;
/// 是否启用 DTX(静音段不发送数据),默认 NO
@property (nonatomic, assign) BOOL useDTX;
/// 网络丢包百分比,默认 0
@property (nonatomic, assign) int packetLossPercent;
/// 最大带宽限制(OPUS_BANDWIDTH_*),默认 FULLBAND
@property (nonatomic, assign) int bandwidth;
/// PCM 输入有效位深,默认 16
@property (nonatomic, assign) int lsbDepth;
/// 专家模式下帧时长(ms),默认与 frameDuration 一致
@property (nonatomic, assign) int expertFrameDuration;
/// 是否启用数据头
/// 默认是启用的
@property (nonatomic, assign) BOOL hasDataHeader;
/// 创建默认编码配置
+ (instancetype)defaultConfig;
/// 获取默认配置
/// 杰理的无头配置
+ (instancetype)defaultJL;
@end
NS_ASSUME_NONNULL_END

69
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h

@ -1,69 +0,0 @@
//
// JLOpusEncoder.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLAudioUnitKit/JLOpusEncodeConfig.h>
NS_ASSUME_NONNULL_BEGIN
@class JLOpusEncoder;
/// Opus 编码代理
@protocol JLOpusEncoderDelegate <NSObject>
/// PCM 数据编码
/// - Parameters:
/// - encoder: 解码器
/// - data: opus 数据
/// - error: 错误信息
-(void)opusEncoder:(JLOpusEncoder *)encoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
@end
typedef void(^JLOpusEncoderConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
/// Opus 编码
@interface JLOpusEncoder : NSObject
/// 音频格式
@property (nonatomic, strong) JLOpusEncodeConfig *opusFormat;
/// 代理
@property (nonatomic, weak) id<JLOpusEncoderDelegate> delegate;
-(instancetype)init NS_UNAVAILABLE;
/// 初始化
/// - Parameters:
/// - config: 音频格式
/// - delegate: 代理
-(instancetype)initFormat:(JLOpusEncodeConfig *)format delegate:(id<JLOpusEncoderDelegate>)delegate;
/// PCM 数据
/// - Parameter data: PCM 数据
-(void)opusEncodeData:(NSData *)data;
/// PCM 文件转换成 Opus 文件(推荐新接口,流式读取,避免一次性加载内存)
/// - Parameters:
/// - pcmPath: PCM 文件存放路径
/// - output: 文件输出路径(可空,默认 ~/Documents/pcmToOpus.opus)
/// - result: 结果回调,回传输出路径或错误
-(void)opusEncodeFile:(NSString *)pcmPath output:(NSString *_Nullable)output result:(JLOpusEncoderConvertBlock _Nullable)result;
/// 兼容旧接口(已废弃:命名拼写问题,且旧实现一次性读入文件)
/// - Parameters:
/// - pcmPath: PCM 文件存放路径
/// - outPut: 文件输出路径
/// - result: 结果回调
-(void)opusEncodeFile:(NSString *)pcmPath outPut:(NSString *_Nullable)outPut Resoult:(JLOpusEncoderConvertBlock _Nullable)result __attribute__((deprecated("Use opusEncodeFile:output:result: instead.")));
/// 释放
-(void)opusOnRelease;
@end
NS_ASSUME_NONNULL_END

59
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h

@ -1,59 +0,0 @@
//
// JLOpusOptions.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
#define OPUS_JL_MAX_FRAME_SIZE 48000 * 2
#define OPUS_JL_MAX_PACKET_SIZE 1500
@interface JLOpusFormat : NSObject
/// 采样率
@property (nonatomic, assign) int sampleRate;
/// 单/双声道
@property (nonatomic, assign) int channels;
/// 帧长度 20ms 默认值
@property (nonatomic, assign) int frameDuration;
/// BitRate
@property (nonatomic, assign) int bitRate;
/// 数据帧大小
@property (nonatomic, assign, readonly) int frameSize;
/// 数据大小
@property (nonatomic, assign) int dataSize;
/// 是否包含数据头部
@property (nonatomic, assign) BOOL hasDataHeader;
/// 是否开启slik语音优化
@property (nonatomic, assign) BOOL usVoipSlik;
-(instancetype)init NS_UNAVAILABLE;
/// 默认配置
/// sampleRate: 16000
/// channels: 1
/// frameDuration: 20
/// dataSize: 40
/// frameSize: 320
/// hasDataHeader: YES
/// bitRate: 16000
/// usVoipSlik: false
+(JLOpusFormat*)defaultFormats;
@end
NS_ASSUME_NONNULL_END

67
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h

@ -1,67 +0,0 @@
//
// JLOpusToOgg.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/5/16.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^JLOpusToOggConvertBlock)(NSData *_Nullable oggData, BOOL isLast, NSError *_Nullable error);
/// 将Opus数据转换为Ogg数据
@interface JLOpusToOgg : NSObject
/// 转码内容的回调
@property(nonatomic,strong)JLOpusToOggConvertBlock _Nullable convertBlock;
/// 帧长
/// - Parameter frameLen: 帧长
/// 默认值 40
- (instancetype)initWithFrameLength:(uint32_t)frameLen;
/// 开始流
-(void)startStream;
/// 添加Opus数据
/// - Parameter opusData: 符合杰理的无头裸 opus 数据
- (void)appendOpusData:(NSData *)opusData;
/// 关闭流
- (void)closeStream;
/// 将Opus数据转换为Ogg数据
/// opus 必须为 16000
/// opus 必须是 单声道
/// - Parameters:
/// - opusData: 符合杰理的无头裸 opus 数据
/// - frameLen: 帧长 公版默认帧长是 40
/// - duration: 转换后的时长
/// - error: 错误
+ (NSData *_Nullable)convertOpusDataToOgg:(NSData *)opusData
frameLen:(uint32_t)frameLen
duration:(double *)duration
error:(NSError *__autoreleasing _Nullable *)error ;
/// 将Opus文件转换为Ogg文件
/// 符合杰理的无头裸 opus 文件
/// opus 必须为 16000
/// opus 必须是 单声道
/// - Parameters:
/// - opusFilePath: opus文件路径
/// - oggFilePath: ogg文件路径
/// - frameLen: 帧长 公版默认帧长是 40
/// - duration: 转换后的时长
+(void)convertOpusFileToOgg:(NSString *)opusFilePath
oggFilePath:(NSString *)oggFilePath
frameLen:(uint32_t)frameLen
duration:(double *)duration;
@end
NS_ASSUME_NONNULL_END

55
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h

@ -1,55 +0,0 @@
//
// JLPcmToWav.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/4/15.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// PCM 转 WAV
@interface JLPcmToWav : NSObject
#pragma mark - 流式编码接口
/// 初始化流式编码器
/// @param outputPath 输出文件路径
/// @param sampleRate 采样率(如 16000)
/// @param numChannels 声道数(1 或 2)
/// @param bitsPerSample 位深(16)
- (instancetype)initWithOutputPath:(NSString *)outputPath
sampleRate:(uint32_t)sampleRate
numChannels:(uint16_t)numChannels
bitsPerSample:(uint16_t)bitsPerSample;
/// 追加 PCM 数据(需确保数据格式与初始化参数一致)
/// @param pcmData PCM 数据块
/// @param error 错误信息
- (BOOL)appendPCMData:(NSData *)pcmData error:(NSError **)error;
/// 完成编码并关闭文件(必须调用以更新 WAV 头)
/// @param error 错误信息
- (BOOL)finishWithError:(NSError **)error;
#pragma mark - 一次性编码接口(便捷方法)
/// 将 PCM 数据一次性转为 WAV 文件
/// @param pcmData PCM 数据块
/// @param outputPath 输出文件路径
/// @param sampleRate 采样率(如 16000)
/// @param numChannels 声道数(1 或 2)
/// @param bitsPerSample 位深(16)
/// @param error 错误信息
+ (BOOL)convertPCMData:(NSData *)pcmData
toWAVFile:(NSString *)outputPath
sampleRate:(uint32_t)sampleRate
numChannels:(uint16_t)numChannels
bitsPerSample:(uint16_t)bitsPerSample
error:(NSError **)error;
@end
NS_ASSUME_NONNULL_END

51
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h

@ -1,51 +0,0 @@
//
// JLPcmToWtg.h
// JLAudioUnitKit
//
// Created by EzioChan on 2025/1/21.
// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface JLPcm2WtgModel : NSObject <NSCopying>
/// 音频文件
@property (nonatomic, copy) NSString *pcmPath;
/// 输出文件
@property (nonatomic, copy) NSString *wtgPath;
@end
/// JLPcmToWtgProtocol
@protocol JLPcmToWtgDelegate <NSObject>
/// 音频转码完成
/// - Parameter model: 音频转码模型
- (void)convertPcmToWtgDone:(JLPcm2WtgModel *)model;
@end
/// 音频转码
/// PCM 转 WTG
@interface JLPcmToWtg : NSObject
- (instancetype)init NS_UNAVAILABLE;
/// 音频转码初始化
/// - Parameter delegate: 音频转码代理
- (instancetype)initWithDelegate:(id<JLPcmToWtgDelegate>)delegate;
/// 音频转码
/// 当前接口模型只限制 PCM 文件格式为:8k 16bit
/// 输入的pcm文件(16bit,小端,8k采样率),wtg_filename:输出的wtg文件
/// - Parameter model: 音频转码模型
-(void)convertPcmToWtg:(JLPcm2WtgModel *)model;
@end
NS_ASSUME_NONNULL_END

54
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h

@ -1,54 +0,0 @@
//
// JLSpeexUnit.h
// JLAudioUnitKit
//
// Created by EzioChan on 2024/11/14.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@class JLSpeexDecoder;
@protocol JLSpeexDelegate <NSObject>
/// Speex 数据解码
/// - Parameters:
/// - decoder: 解码器
/// - data: PCM 数据
/// - error: 错误信息
- (void)speexDecoder:(JLSpeexDecoder *)decoder Data:(NSData* _Nullable)data error:(NSError* _Nullable)error;
@end
typedef void(^JLSpeexConvertBlock)(NSString *_Nullable pcmPath,NSError *_Nullable error);
/// Speex 数据解码
@interface JLSpeexDecoder : NSObject
-(instancetype)init NS_UNAVAILABLE;
/// 初始化
/// - Parameter delegate: 委托
-(instancetype)initWithDelegate:(id<JLSpeexDelegate>)delegate;
/// 委托
@property (nonatomic, weak) id<JLSpeexDelegate> delegate;
/// 输入 Speex 数据
/// - Parameter data: Speex 数据
-(void)speexInputData:(NSData*)data;
/// 将 Speex 转换为 PCM
/// - Parameters:
/// - filePath: Speex 路径
/// - opPath: 输出路径
/// - result: 结果回调
-(void)speexConvertToPcm:(NSString *)filePath outPutFilePath:(NSString * _Nullable)opPath Result:(JLSpeexConvertBlock)result;
/// 释放对象
-(void)speexOnRelease;
@end
NS_ASSUME_NONNULL_END

BIN
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JLAudioUnitKit {
umbrella header "JLAudioUnitKit.h"
export *
module * { export * }
}

234
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources

@ -1,234 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/JLAudioUnitKit.h</key>
<data>
hE2nr+4q2/NdSgBaayJc7ZoOXb0=
</data>
<key>Headers/JLAudioUnitPlayer.h</key>
<data>
QPMLV/XA8hjk39d+vT+S57t0fDU=
</data>
<key>Headers/JLOpusDecoder.h</key>
<data>
K1bYcaJ67prImNlGuldy8csTRHc=
</data>
<key>Headers/JLOpusEncodeConfig.h</key>
<data>
NArAew5QxnSJGsD0tRzQ2V7bHrY=
</data>
<key>Headers/JLOpusEncoder.h</key>
<data>
7DYUlvXrp1QC9l2XZ5tNHtsmsBQ=
</data>
<key>Headers/JLOpusFormat.h</key>
<data>
Du1x3VNk87NstmspRk7ElijuZrk=
</data>
<key>Headers/JLOpusToOgg.h</key>
<data>
fSJT6LcyylJHTHX1wsN3JHG2FxU=
</data>
<key>Headers/JLPcmToWav.h</key>
<data>
/BbZmqmWpWVBusXqjnzbjaBNCNg=
</data>
<key>Headers/JLPcmToWtg.h</key>
<data>
zoOdOFpIulND0F1OrfIXR1H0kh0=
</data>
<key>Headers/JLSpeexDecoder.h</key>
<data>
5ecBKtD3BDGccLiKpTs0fS0CSgs=
</data>
<key>Info.plist</key>
<data>
pXqOzYCqPnMLY0nonWZTcbfnlhU=
</data>
<key>Modules/module.modulemap</key>
<data>
2vYf0m+hGTOTapX6sliv/F1E1VI=
</data>
<key>readme.txt</key>
<data>
wijZX0Dr2OlODWS6XYbpeKabb7g=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/JLAudioUnitKit.h</key>
<dict>
<key>hash2</key>
<data>
J5pq6Ed3fR+cQ7CGPXDoPl7BZzix7Cjf5yJZFRRvxqs=
</data>
</dict>
<key>Headers/JLAudioUnitPlayer.h</key>
<dict>
<key>hash2</key>
<data>
qBz0OA82HUH4kBtO8xiUw7Q4ohtiIvCSYfCqax5xjJY=
</data>
</dict>
<key>Headers/JLOpusDecoder.h</key>
<dict>
<key>hash2</key>
<data>
cnAj6Nt6vgRLoEH6QY3Q+gYpjcxGPN1OLLZbCgdLymI=
</data>
</dict>
<key>Headers/JLOpusEncodeConfig.h</key>
<dict>
<key>hash2</key>
<data>
qrPpsrXaNCvyxf0/gUZtvveL+ywsfgBUrMPFibjneOo=
</data>
</dict>
<key>Headers/JLOpusEncoder.h</key>
<dict>
<key>hash2</key>
<data>
YoHsvoGH2VEjvEIzEa7t+cAnzf8kHEU3dJTd03ABr1w=
</data>
</dict>
<key>Headers/JLOpusFormat.h</key>
<dict>
<key>hash2</key>
<data>
Nm6vM9/EbFzyIWbsysu6EOO2S+vZVeplcop4NvoJaMA=
</data>
</dict>
<key>Headers/JLOpusToOgg.h</key>
<dict>
<key>hash2</key>
<data>
dNSvJJnED/6E1p7TYZ4zBzUnLDVsZ8NovuNYjge6T/w=
</data>
</dict>
<key>Headers/JLPcmToWav.h</key>
<dict>
<key>hash2</key>
<data>
l/SEQhSFh7ctq/pBV+Z7X+Z0/gz30eCw3s31otjMPho=
</data>
</dict>
<key>Headers/JLPcmToWtg.h</key>
<dict>
<key>hash2</key>
<data>
MwtbX3Sa0nytA+m11x+1rDvP4WvJnZLljshuT5B3WD0=
</data>
</dict>
<key>Headers/JLSpeexDecoder.h</key>
<dict>
<key>hash2</key>
<data>
pV0X3xn07Ps7wE+0EfL9Yu/08tp8Ug8s14iDigRU46o=
</data>
</dict>
<key>Modules/module.modulemap</key>
<dict>
<key>hash2</key>
<data>
akFCUM59aSAaRM/ADWQ138YT9GD3oAjcaTvTUo24Ml8=
</data>
</dict>
<key>readme.txt</key>
<dict>
<key>hash2</key>
<data>
+2GG9ORrf2yJnBe2joKWtyBZL9p2sCH8EXqK1GIgW0E=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

52
local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt

@ -1,52 +0,0 @@
DESCRIPTION
-----------
This package includes the files needed to build the fixed point implementation
of the ITU-T G.729 Appendix IV.
DIFFERENCES WITH G.729B
-----------------------
The ANSI-C source code simulating the bit-exact, fixed point simulation
software of enhanced VAD is integrated into the G.729B source code.
The modification to the G.729B source code updated files of coder.c,
cod_ld8k.c, bits.c, dec_sid.c, dtx.c, qsidgain.c, qsidlsf.c, tab_dtx.c,
tab_dtx.h, ld8k.h, deleted vad.c/h and integrated the enhanced VAD functions
into the G.729B project. The modification also replaced the original basic
operators used in the original G.729B source code by the basic operators of
ITU-T Software Tool Library STL2005.
COMPILATION
-----------
For UNIX systems the following makefiles are provided
coder.mak
decoder.mak
Edit the makefiles coder.mak and decoder.mak to set the proper options
for your system.
The command to compile and link all code on a UNIX system is
make -f coder.mak
make -f decoder.mak
For other platforms, the *.mak files can be used to work out the
compilation procedures.
USAGE
-----
The command line instruction for the encoder is as follows:
coder inputfile bitstreamfile dtx_option mode x
where:
inputfile : 8 kHz sampled data file containing 16 bit linear PCM signal
bitstreamfile: binary file containing bitstream
dtx_option : = 1 : DTX enabled 0 : DTX disabled
mode X : Run encoder with enhanced VAD in operating point X,
X=0 or 1 or 2 representing balanced or quality-preferred
or bandwidth saving operating point, respectively
The command line for the decoder is as follows:
decoder bitstreamfile outputfile
where:
bitstreamfile: binary file containing bitstream
outputfile : 8 kHz sampled data file containing 16 bit linear PCM signal

44
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>JLLogHelper.framework/JLLogHelper</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>JLLogHelper.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>JLLogHelper.framework/JLLogHelper</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>JLLogHelper.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

19
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h

@ -1,19 +0,0 @@
//
// JLLogHelper.h
// JLLogHelper
//
// Created by EzioChan on 2024/5/8.
// Copyright © 2024 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JLLogHelper/PublicHeader.h>
#import <JLLogHelper/JLLogManager.h>

88
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h

@ -1,88 +0,0 @@
//
// JLLogManager.h
// JLLogHelper
//
// Created by EzioChan on 2024/5/8.
// Copyright © 2024 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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

BIN
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JLLogHelper {
umbrella header "JLLogHelper.h"
export *
module * { export * }
}

19
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h

@ -1,19 +0,0 @@
//
// JLLogHelper.h
// JLLogHelper
//
// Created by EzioChan on 2024/5/8.
// Copyright © 2024 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JLLogHelper/PublicHeader.h>
#import <JLLogHelper/JLLogManager.h>

88
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h

@ -1,88 +0,0 @@
//
// JLLogManager.h
// JLLogHelper
//
// Created by EzioChan on 2024/5/8.
// Copyright © 2024 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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

BIN
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JLLogHelper {
umbrella header "JLLogHelper.h"
export *
module * { export * }
}

147
local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources

@ -1,147 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/JLLogHelper.h</key>
<data>
TahP/o16a5TgPGLNFs/QhND95FU=
</data>
<key>Headers/JLLogManager.h</key>
<data>
Be4QtnAF0IDSmlMZquwyK7LLd8w=
</data>
<key>Info.plist</key>
<data>
PJl+BYy7qbdneBUnydYicJKb/SM=
</data>
<key>Modules/module.modulemap</key>
<data>
YwPsApnJXdp+uskVahraY2UK/Jk=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/JLLogHelper.h</key>
<dict>
<key>hash</key>
<data>
TahP/o16a5TgPGLNFs/QhND95FU=
</data>
<key>hash2</key>
<data>
nD5WuwBhpaoCwOGeWB5OusXVP21nYy+/Hcn6nPideIk=
</data>
</dict>
<key>Headers/JLLogManager.h</key>
<dict>
<key>hash</key>
<data>
Be4QtnAF0IDSmlMZquwyK7LLd8w=
</data>
<key>hash2</key>
<data>
vOgQgQVptNwQdUKpCW2EBNruc0PL6BnkSjxVpptJsf0=
</data>
</dict>
<key>Modules/module.modulemap</key>
<dict>
<key>hash</key>
<data>
YwPsApnJXdp+uskVahraY2UK/Jk=
</data>
<key>hash2</key>
<data>
ViwpXSuoKoiEUwMpetyre+mlEz0+JE8UURyNSgBuylM=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

44
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>JL_AdvParse.framework/JL_AdvParse</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>JL_AdvParse.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>JL_AdvParse.framework/JL_AdvParse</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>JL_AdvParse.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

72
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h

@ -1,72 +0,0 @@
//
// JLAdvParse.h
// JL_AdvParse
//
// Created by EzioChan on 2023/1/31.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLLogHelper/JLLogHelper.h>
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

64
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h

@ -1,64 +0,0 @@
//
// 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

54
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h

@ -1,54 +0,0 @@
//
// JLDevicesAdv.h
// JL_AdvParse
//
// Created by EzioChan on 2023/12/12.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#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

47
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h

@ -1,47 +0,0 @@
//
// 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

25
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h

@ -1,25 +0,0 @@
//
// JLOtaAdv.h
// JL_AdvParse
//
// Created by EzioChan on 2023/12/12.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <JL_AdvParse/JL_AdvParse.h>
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

19
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h

@ -1,19 +0,0 @@
//
// 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

19
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h

@ -1,19 +0,0 @@
//
// 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

89
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h

@ -1,89 +0,0 @@
//
// 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

35
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h

@ -1,35 +0,0 @@
//
// JLWatchAdv.h
// JL_AdvParse
//
// Created by EzioChan on 2023/12/12.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <JL_AdvParse/JLDevicesAdv.h>
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

27
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h

@ -1,27 +0,0 @@
//
// JL_AdvParse.h
// JL_AdvParse
//
// Created by EzioChan on 2023/1/31.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JL_AdvParse/PublicHeader.h>
#import <JL_AdvParse/JLAdvParse.h>
#import <JL_AdvParse/JLDevicesAdv.h>
#import <JL_AdvParse/JLTwsAdv.h>
#import <JL_AdvParse/JLSoundBoxAdv.h>
#import <JL_AdvParse/JLSoundCardAdv.h>
#import <JL_AdvParse/JLChargingBoxAdv.h>
#import <JL_AdvParse/JLEarphoneAdv.h>
#import <JL_AdvParse/JLWatchAdv.h>
#import <JL_AdvParse/JLOtaAdv.h>

BIN
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JL_AdvParse {
umbrella header "JL_AdvParse.h"
export *
module * { export * }
}

72
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h

@ -1,72 +0,0 @@
//
// JLAdvParse.h
// JL_AdvParse
//
// Created by EzioChan on 2023/1/31.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLLogHelper/JLLogHelper.h>
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

64
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h

@ -1,64 +0,0 @@
//
// 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

54
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h

@ -1,54 +0,0 @@
//
// JLDevicesAdv.h
// JL_AdvParse
//
// Created by EzioChan on 2023/12/12.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#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

47
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h

@ -1,47 +0,0 @@
//
// 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

25
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h

@ -1,25 +0,0 @@
//
// JLOtaAdv.h
// JL_AdvParse
//
// Created by EzioChan on 2023/12/12.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <JL_AdvParse/JL_AdvParse.h>
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

19
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h

@ -1,19 +0,0 @@
//
// 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

19
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h

@ -1,19 +0,0 @@
//
// 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

89
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h

@ -1,89 +0,0 @@
//
// 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

35
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h

@ -1,35 +0,0 @@
//
// JLWatchAdv.h
// JL_AdvParse
//
// Created by EzioChan on 2023/12/12.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <JL_AdvParse/JLDevicesAdv.h>
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

27
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h

@ -1,27 +0,0 @@
//
// JL_AdvParse.h
// JL_AdvParse
//
// Created by EzioChan on 2023/1/31.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JL_AdvParse/PublicHeader.h>
#import <JL_AdvParse/JLAdvParse.h>
#import <JL_AdvParse/JLDevicesAdv.h>
#import <JL_AdvParse/JLTwsAdv.h>
#import <JL_AdvParse/JLSoundBoxAdv.h>
#import <JL_AdvParse/JLSoundCardAdv.h>
#import <JL_AdvParse/JLChargingBoxAdv.h>
#import <JL_AdvParse/JLEarphoneAdv.h>
#import <JL_AdvParse/JLWatchAdv.h>
#import <JL_AdvParse/JLOtaAdv.h>

BIN
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JL_AdvParse {
umbrella header "JL_AdvParse.h"
export *
module * { export * }
}

267
local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources

@ -1,267 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/JLAdvParse.h</key>
<data>
64SI1XBWnV1VmXIYu8XpmwMpE04=
</data>
<key>Headers/JLChargingBoxAdv.h</key>
<data>
dxEumtBFtKzehtXyVAacIJk/UU4=
</data>
<key>Headers/JLDevicesAdv.h</key>
<data>
WG6Ivw9lqj20J5OXda4lXMvAsig=
</data>
<key>Headers/JLEarphoneAdv.h</key>
<data>
fJODfMyuNuG59rHtw1StpNjde1A=
</data>
<key>Headers/JLOtaAdv.h</key>
<data>
4Mj6y77mEbeHdo+4OgFL9yf+E0c=
</data>
<key>Headers/JLSoundBoxAdv.h</key>
<data>
9psoYa5IuZ6p/X9FRRnLe5THJMQ=
</data>
<key>Headers/JLSoundCardAdv.h</key>
<data>
Q5T5xqjNDkTS+Niqp/KpoD9vipY=
</data>
<key>Headers/JLTwsAdv.h</key>
<data>
whLObetTxteRXS580FiZ1/A3Yzo=
</data>
<key>Headers/JLWatchAdv.h</key>
<data>
gK+FyDcSe6OVJK11wqqm1ppRE9k=
</data>
<key>Headers/JL_AdvParse.h</key>
<data>
gtcFkie1/FuAHO4WI/GUyN9chKY=
</data>
<key>Info.plist</key>
<data>
y32GLYYZ4FDhJGOjUkYUZfxaRn8=
</data>
<key>Modules/module.modulemap</key>
<data>
hBvb1e7FRkpwYoECUsVQBBscN38=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/JLAdvParse.h</key>
<dict>
<key>hash</key>
<data>
64SI1XBWnV1VmXIYu8XpmwMpE04=
</data>
<key>hash2</key>
<data>
ZG6RQ7l2Ko9IXNo517Aimfq7d03KANKIIPV09hZSFrg=
</data>
</dict>
<key>Headers/JLChargingBoxAdv.h</key>
<dict>
<key>hash</key>
<data>
dxEumtBFtKzehtXyVAacIJk/UU4=
</data>
<key>hash2</key>
<data>
Bci4NCRbpGrT/YgMlRkA2DjX/lY/o8VmxkWPNtV+DjA=
</data>
</dict>
<key>Headers/JLDevicesAdv.h</key>
<dict>
<key>hash</key>
<data>
WG6Ivw9lqj20J5OXda4lXMvAsig=
</data>
<key>hash2</key>
<data>
Mxf6qWhX6ctmSC0RVl7gdK4koCGeaUr8omEI9+9PMvc=
</data>
</dict>
<key>Headers/JLEarphoneAdv.h</key>
<dict>
<key>hash</key>
<data>
fJODfMyuNuG59rHtw1StpNjde1A=
</data>
<key>hash2</key>
<data>
WThhDcnj1tcLW3Lrp2VUET7rXC/8iv9Y1dtAdPg0yWs=
</data>
</dict>
<key>Headers/JLOtaAdv.h</key>
<dict>
<key>hash</key>
<data>
4Mj6y77mEbeHdo+4OgFL9yf+E0c=
</data>
<key>hash2</key>
<data>
HuR8+O4ONYywZcporXuxlzO1xXOtZZqm/P9+s8yj+OI=
</data>
</dict>
<key>Headers/JLSoundBoxAdv.h</key>
<dict>
<key>hash</key>
<data>
9psoYa5IuZ6p/X9FRRnLe5THJMQ=
</data>
<key>hash2</key>
<data>
Iqjsp9NyRvmdlXu0gN7zltuwg75M+Kc9qFaTSHStolA=
</data>
</dict>
<key>Headers/JLSoundCardAdv.h</key>
<dict>
<key>hash</key>
<data>
Q5T5xqjNDkTS+Niqp/KpoD9vipY=
</data>
<key>hash2</key>
<data>
WTBLq2+eyH5+TrY08Gh3/yReEWRnKg9UOCJmz56bnkE=
</data>
</dict>
<key>Headers/JLTwsAdv.h</key>
<dict>
<key>hash</key>
<data>
whLObetTxteRXS580FiZ1/A3Yzo=
</data>
<key>hash2</key>
<data>
w6Ia/stHXZvCfmmPgTEpBj7A6haG6O+E0MeXH/fNKmA=
</data>
</dict>
<key>Headers/JLWatchAdv.h</key>
<dict>
<key>hash</key>
<data>
gK+FyDcSe6OVJK11wqqm1ppRE9k=
</data>
<key>hash2</key>
<data>
7iXBmticKJ52uKE+6RrHJt5ES0gq2Xan5WIG/w0sCyk=
</data>
</dict>
<key>Headers/JL_AdvParse.h</key>
<dict>
<key>hash</key>
<data>
gtcFkie1/FuAHO4WI/GUyN9chKY=
</data>
<key>hash2</key>
<data>
t61emyM8slC+fTJM6XnBxjTDrpY7xvhUK5gCXfQf/3E=
</data>
</dict>
<key>Modules/module.modulemap</key>
<dict>
<key>hash</key>
<data>
hBvb1e7FRkpwYoECUsVQBBscN38=
</data>
<key>hash2</key>
<data>
F65y3OGliGsHZpxzdTdQxUwgmJdHiihk1gvX6sJzhxA=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

44
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>JL_HashPair.framework/JL_HashPair</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>JL_HashPair.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>JL_HashPair.framework/JL_HashPair</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>JL_HashPair.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

25
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h

@ -1,25 +0,0 @@
//
// BtHash.h
// BtHash
//
// Created by EzioChan on 2022/6/29.
//
#import <Foundation/Foundation.h>
@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

59
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h

@ -1,59 +0,0 @@
//
// JLHashHandler.h
// JL_BLEKit
//
// Created by EzioChan on 2023/1/30.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLLogHelper/JLLogHelper.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^JLHashBlock)(BOOL ret);
@protocol JLHashHandlerDelegate <NSObject>
/// 需要发送到设备校验认证的数据
/// - Parameter data: 数据
-(void)hashOnPairOutputData:(NSData*)data;
@end
/// 设备认证
@interface JLHashHandler : NSObject
@property(nonatomic,weak)id<JLHashHandlerDelegate> 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

21
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h

@ -1,21 +0,0 @@
//
// JL_HashPair.h
// JL_HashPair
//
// Created by EzioChan on 2023/1/30.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JL_HashPair/PublicHeader.h>
#import <JL_HashPair/BtHash.h>
#import <JL_HashPair/JLHashHandler.h>
#import <JL_HashPair/JL_ble_pair.h>

20
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h

@ -1,20 +0,0 @@
//
// 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 <stdio.h>
#include <stdint.h>
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 */

BIN
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JL_HashPair {
umbrella header "JL_HashPair.h"
export *
module * { export * }
}

25
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h

@ -1,25 +0,0 @@
//
// BtHash.h
// BtHash
//
// Created by EzioChan on 2022/6/29.
//
#import <Foundation/Foundation.h>
@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

59
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h

@ -1,59 +0,0 @@
//
// JLHashHandler.h
// JL_BLEKit
//
// Created by EzioChan on 2023/1/30.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLLogHelper/JLLogHelper.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^JLHashBlock)(BOOL ret);
@protocol JLHashHandlerDelegate <NSObject>
/// 需要发送到设备校验认证的数据
/// - Parameter data: 数据
-(void)hashOnPairOutputData:(NSData*)data;
@end
/// 设备认证
@interface JLHashHandler : NSObject
@property(nonatomic,weak)id<JLHashHandlerDelegate> 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

21
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h

@ -1,21 +0,0 @@
//
// JL_HashPair.h
// JL_HashPair
//
// Created by EzioChan on 2023/1/30.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JL_HashPair/PublicHeader.h>
#import <JL_HashPair/BtHash.h>
#import <JL_HashPair/JLHashHandler.h>
#import <JL_HashPair/JL_ble_pair.h>

20
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h

@ -1,20 +0,0 @@
//
// 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 <stdio.h>
#include <stdint.h>
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 */

BIN
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JL_HashPair {
umbrella header "JL_HashPair.h"
export *
module * { export * }
}

177
local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources

@ -1,177 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Headers/BtHash.h</key>
<data>
EdZDmmVVm0KY3D72UHE3hQF42e4=
</data>
<key>Headers/JLHashHandler.h</key>
<data>
ArAEdyp9k5H5o4gFjW9zdx+0ISY=
</data>
<key>Headers/JL_HashPair.h</key>
<data>
Y9dInJ7eyVXJ8WOASyZGNDDIj9s=
</data>
<key>Headers/JL_ble_pair.h</key>
<data>
YP6GQrFs1nWR8BkMoj1fQdKHKKM=
</data>
<key>Info.plist</key>
<data>
pLA2PfPyxsguwM09KFXPq/Cy2ko=
</data>
<key>Modules/module.modulemap</key>
<data>
6wQFoRjNQqLop5Z3m/K5slHiG2k=
</data>
</dict>
<key>files2</key>
<dict>
<key>Headers/BtHash.h</key>
<dict>
<key>hash</key>
<data>
EdZDmmVVm0KY3D72UHE3hQF42e4=
</data>
<key>hash2</key>
<data>
EfOAmi/ycUONPu8OgPUuPkc9caXqUhvVXE27JNmmnPk=
</data>
</dict>
<key>Headers/JLHashHandler.h</key>
<dict>
<key>hash</key>
<data>
ArAEdyp9k5H5o4gFjW9zdx+0ISY=
</data>
<key>hash2</key>
<data>
7iuW7k7IBL4tf/bE1O3SudVyeFxG8YHoo7DqZGFdSBI=
</data>
</dict>
<key>Headers/JL_HashPair.h</key>
<dict>
<key>hash</key>
<data>
Y9dInJ7eyVXJ8WOASyZGNDDIj9s=
</data>
<key>hash2</key>
<data>
5Ow8T39Md9cD7Jb7iMaoihnIJhv8GHHIjGAsgZG//Og=
</data>
</dict>
<key>Headers/JL_ble_pair.h</key>
<dict>
<key>hash</key>
<data>
YP6GQrFs1nWR8BkMoj1fQdKHKKM=
</data>
<key>hash2</key>
<data>
ggTJvYOE/W4Tmghs665eiywakMiTsvgl7PeEayUkKqQ=
</data>
</dict>
<key>Modules/module.modulemap</key>
<dict>
<key>hash</key>
<data>
6wQFoRjNQqLop5Z3m/K5slHiG2k=
</data>
<key>hash2</key>
<data>
N+WiNcfG40LwaFvJZeLG5iNA48ZbrW0Oph/B9U+7i9U=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

44
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>BinaryPath</key>
<string>JL_OTALib.framework/JL_OTALib</string>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>JL_OTALib.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>BinaryPath</key>
<string>JL_OTALib.framework/JL_OTALib</string>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>JL_OTALib.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

52
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h

@ -1,52 +0,0 @@
//
// JLOTAFile.h
// JL_OTALib
//
// Created by EzioChan on 2024/7/26.
// Copyright © 2024 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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

62
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h

@ -1,62 +0,0 @@
//
// JLOtaCustom.h
// JL_OTALib
//
// Created by EzioChan on 2025/4/17.
// Copyright © 2025 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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 <NSObject>
/// 自定义命令回调
/// - Parameter data: 自定义命令对象
-(void)otaCustomReceiveData:(JLOtaCustomData *)data;
@end
/// 自定义命令
@interface JLOtaCustom : NSObject
/// 自定义命令
/// - Parameters:
/// - delegate: 代理回调
/// - manager: 升级对象
-(instancetype)initWithDelegate:(id<JLOtaCustomDelegate>)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

43
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h

@ -1,43 +0,0 @@
//
// JLOtaReConnectOption.h
// JL_OTALib
//
// Created by EzioChan on 2025/3/27.
// Copyright © 2025 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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

22
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h

@ -1,22 +0,0 @@
//
// JL_OTALib.h
// JL_OTALib
//
// Created by EzioChan on 2023/1/29.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JL_OTALib/PublicHeader.h>
#import <JL_OTALib/JL_OTAManager.h>
#import <JL_OTALib/jl_ufw.h>
#import <JL_OTALib/JLOTAFile.h>
#import <JL_OTALib/JLOtaReConnectOption.h>
#import <JL_OTALib/JLOtaCustom.h>

302
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h

@ -1,302 +0,0 @@
//
// JL_OTAManager.h
// JL_BLEKit
//
// Created by 杰理科技 on 2021/11/16.
// Copyright © 2021 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <JLLogHelper/JLLogHelper.h>
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 <NSObject>
/// 即将被发送的数据
/// @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<JL_OTAManagerDelegate> 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

207
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h

@ -1,207 +0,0 @@
/**
* Des:
* author: Bob
* date: 2022/11/29
* Copyright: Jieli Technology
*/
#ifndef NATIVEAPPLICATION_JL_UFW_H
#define NATIVEAPPLICATION_JL_UFW_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//#include <android/log.h>
//#include <jni.h>
//
//#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

BIN
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist

Binary file not shown.

BIN
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib

Binary file not shown.

6
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Modules/module.modulemap

@ -1,6 +0,0 @@
framework module JL_OTALib {
umbrella header "JL_OTALib.h"
export *
module * { export * }
}

52
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOTAFile.h

@ -1,52 +0,0 @@
//
// JLOTAFile.h
// JL_OTALib
//
// Created by EzioChan on 2024/7/26.
// Copyright © 2024 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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

62
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h

@ -1,62 +0,0 @@
//
// JLOtaCustom.h
// JL_OTALib
//
// Created by EzioChan on 2025/4/17.
// Copyright © 2025 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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 <NSObject>
/// 自定义命令回调
/// - Parameter data: 自定义命令对象
-(void)otaCustomReceiveData:(JLOtaCustomData *)data;
@end
/// 自定义命令
@interface JLOtaCustom : NSObject
/// 自定义命令
/// - Parameters:
/// - delegate: 代理回调
/// - manager: 升级对象
-(instancetype)initWithDelegate:(id<JLOtaCustomDelegate>)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

43
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h

@ -1,43 +0,0 @@
//
// JLOtaReConnectOption.h
// JL_OTALib
//
// Created by EzioChan on 2025/3/27.
// Copyright © 2025 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
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

22
local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h

@ -1,22 +0,0 @@
//
// JL_OTALib.h
// JL_OTALib
//
// Created by EzioChan on 2023/1/29.
// Copyright © 2023 www.zh-jieli.com. All rights reserved.
//
#import <Foundation/Foundation.h>
//! 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 <JL_OTALib/PublicHeader.h>
#import <JL_OTALib/JL_OTAManager.h>
#import <JL_OTALib/jl_ufw.h>
#import <JL_OTALib/JLOTAFile.h>
#import <JL_OTALib/JLOtaReConnectOption.h>
#import <JL_OTALib/JLOtaCustom.h>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save