diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Headers/JLAV2Lib.h b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Headers/JLAV2Lib.h new file mode 100644 index 000000000..27b7073db --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Headers/JLAV2Lib.h @@ -0,0 +1,18 @@ +// +// JLAV2Lib.h +// JLAV2Lib +// +// Created by ZPC21-032 on 2025/4/9. +// + +#import + +//! Project version number for JLAV2Lib. +FOUNDATION_EXPORT double JLAV2LibVersionNumber; + +//! Project version string for JLAV2Lib. +FOUNDATION_EXPORT const unsigned char JLAV2LibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Headers/jla_v2_codec_api.h b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Headers/jla_v2_codec_api.h new file mode 100644 index 000000000..18149ae8b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Headers/jla_v2_codec_api.h @@ -0,0 +1,96 @@ +#ifndef _JLA_V2_CODEC_h +#define _JLA_V2_CODEC_h + + +#ifndef u16 +#define u32 unsigned int +#define u16 unsigned short +#define s16 short +#define u8 unsigned char +#endif + +#define SET_DECODE_MODE 0x80 +#define SET_DEC_CH_MODE 0x81 +//#define SET_FADE_IN_TMS 0x82 //for dec plc deleted +#define SET_FADE_IN_OUT 0x82 //淡入淡出 设置生效. +#define SET_NEW_BITRATE 0x90 //enc. +#define GET_EDFRAME_LEN 0x91 // +#define SET_EDFRAME_LEN 0x92 //only for dec. + +#define SET_HW_FFT_CALLBACK 0xA0 //br56_fft. + +enum +{ + JLA_V2_NORMAL_CH = 0, //仅在此模式下,音源为双声道时输出双声道pcm数据. + JLA_V2_L_OUT, + JLA_V2_R_OUT, + JLA_V2_LR_MEAN +}; + +enum +{ + JLA_V2_2CH_L_OR_R = 0x80 +}; + +struct audio_decode_para +{ + u32 mode; /*通过codec_config,cmd=SET_DECODE_MODE设置解码输出模式*/ +}; + + +struct audio_set_bitrate +{ + u32 br; +}; + +struct jla_v2_dec_ch_oput_para +{ + u32 mode; + short pL; //mode_3_channel_L_coefficient Q13 8192:50% + short pR; //mode_3_channel_R_coefficient Q13 +}; + + +struct jla_v2_codec_info +{ + u32 sr; ///< sample rate + u32 br; ///< bit rate + u16 fr_idx; ///< 帧长索引. JLA_V2_FRLEN[9 + 4 +1] = {32, 40, 48, 60, 64, 80, 96, 120, 128, 160, 240, 320, 400, 480}; 0~13. + u16 nch; + u16 if_s24; ///< 编码输入数据 或者解码输出数据位宽是否为24比特. +}; ///< enc_para + dec_para + + +struct jla_v2_codec_io +{ + void* priv; + u16(*input_data)(void* priv, u8* buf, u16 len); //bytes + u16(*output_data)(void* priv, u8* buf, u16 len); //bytes /*解码器在struct audio_decode_para参数mode=1时判断是否输出完整*/ +}; + + +struct jla_v2_codec_ops { + u32(*open)(void* work_buf, const struct jla_v2_codec_io* audioIO, void* para); ///<打开解码器 + u32(*run)(void* work_buf, void* scratch); ///<解码主循环(buffer 32bit对齐) + u32(*need_dcbuf_size)(void* para); ///<获取编解码需要的空间work_buf + u32(*need_stbuf_size)(void* para); ///<获取编解码需要的堆栈scratch + u32(*codec_config)(void* work_buf, u32 cmd, void* parm); +}; + + +extern struct jla_v2_codec_ops* get_jla_v2_enc_ops(); +extern struct jla_v2_codec_ops* get_jla_v2_dec_ops(); + + +extern const int JLA_V2_PLC_EN; +extern const int JLA_V2_HW_FFT; +extern const int JLA_V2_ENCODE_I24bit_ENABLE; +extern const int JLA_V2_DECODE_O24bit_ENABLE; +extern const int JLA_V2_PLC_FADE_OUT_START_POINT; +extern const int JLA_V2_PLC_FADE_OUT_POINTS; +extern const int JLA_V2_PLC_FADE_IN_POINTS; +extern const unsigned short JLA_V2_FRAMELEN_MASK; + + + +#endif \ No newline at end of file diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Info.plist new file mode 100644 index 000000000..ccf3f1eb5 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/JLAV2Lib b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/JLAV2Lib new file mode 100644 index 000000000..917688ff3 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/JLAV2Lib differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Modules/module.modulemap new file mode 100644 index 000000000..62072c3f3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAV2Lib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JLAV2Lib { + umbrella header "JLAV2Lib.h" + + export * + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/Info.plist new file mode 100644 index 000000000..bdcd92945 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/Info.plist @@ -0,0 +1,43 @@ + + + + + AvailableLibraries + + + BinaryPath + JLAudioUnitKit.framework/JLAudioUnitKit + LibraryIdentifier + ios-x86_64-simulator + LibraryPath + JLAudioUnitKit.framework + SupportedArchitectures + + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + JLAudioUnitKit.framework/JLAudioUnitKit + LibraryIdentifier + ios-arm64 + LibraryPath + JLAudioUnitKit.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h new file mode 100644 index 000000000..e6b3af64f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h @@ -0,0 +1,26 @@ +// +// JLAudioUnitKit.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// + +#import + +//! 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 + +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h new file mode 100644 index 000000000..7da831c67 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h @@ -0,0 +1,58 @@ +// +// JLAudioUnitPlayer.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/4/16. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, JLAudioUnitPlayerType) { + JLAudioUnitPlayerTypeFile, // 支持 MP3/WAV/AAC 等文件格式(AVAudioPlayer) + JLAudioUnitPlayerTypePCM // 支持 PCM 流式播放(Audio Queue) +}; + +@class JLAudioUnitPlayer; + +@protocol JLAudioPlayerDelegate +@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 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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h new file mode 100644 index 000000000..711e2e99a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h @@ -0,0 +1,66 @@ +// +// JLOpusDecoder.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOpusDecoder; + +/// Opus 解码代理 +@protocol JLOpusDecoderDelegate + +/// 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 delegate; + +- (instancetype)init NS_UNAVAILABLE; + +/// 初始化 +/// - Parameters: +/// - format: 解码格式 +/// - delegate: 代理 +- (instancetype)initDecoder:(JLOpusFormat *)format delegate:(id)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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h new file mode 100644 index 000000000..037284e00 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h @@ -0,0 +1,83 @@ +// +// JLOpusEncodeConfig.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/8/27. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h new file mode 100644 index 000000000..24886a038 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h @@ -0,0 +1,69 @@ +// +// JLOpusEncoder.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOpusEncoder; + +/// Opus 编码代理 +@protocol JLOpusEncoderDelegate + +/// 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 delegate; + +-(instancetype)init NS_UNAVAILABLE; + +/// 初始化 +/// - Parameters: +/// - config: 音频格式 +/// - delegate: 代理 +-(instancetype)initFormat:(JLOpusEncodeConfig *)format delegate:(id)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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h new file mode 100644 index 000000000..016548791 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusFormat.h @@ -0,0 +1,59 @@ +// +// JLOpusOptions.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h new file mode 100644 index 000000000..27b919bde --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h @@ -0,0 +1,67 @@ +// +// JLOpusToOgg.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/5/16. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h new file mode 100644 index 000000000..b32ecef2d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWav.h @@ -0,0 +1,55 @@ +// +// JLPcmToWav.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/4/15. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h new file mode 100644 index 000000000..231b3e837 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h @@ -0,0 +1,51 @@ +// +// JLPcmToWtg.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/1/21. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLPcm2WtgModel : NSObject + +/// 音频文件 +@property (nonatomic, copy) NSString *pcmPath; + +/// 输出文件 +@property (nonatomic, copy) NSString *wtgPath; + +@end + + +/// JLPcmToWtgProtocol +@protocol JLPcmToWtgDelegate + +/// 音频转码完成 +/// - Parameter model: 音频转码模型 +- (void)convertPcmToWtgDone:(JLPcm2WtgModel *)model; + +@end + +/// 音频转码 +/// PCM 转 WTG +@interface JLPcmToWtg : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/// 音频转码初始化 +/// - Parameter delegate: 音频转码代理 +- (instancetype)initWithDelegate:(id)delegate; + +/// 音频转码 +/// 当前接口模型只限制 PCM 文件格式为:8k 16bit +/// 输入的pcm文件(16bit,小端,8k采样率),wtg_filename:输出的wtg文件 +/// - Parameter model: 音频转码模型 +-(void)convertPcmToWtg:(JLPcm2WtgModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h new file mode 100644 index 000000000..ad223d087 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h @@ -0,0 +1,54 @@ +// +// JLSpeexUnit.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLSpeexDecoder; + +@protocol JLSpeexDelegate + +/// 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)delegate; + +/// 委托 +@property (nonatomic, weak) id 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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist new file mode 100644 index 000000000..2651c6526 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit new file mode 100755 index 000000000..871fc91fe Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/JLAudioUnitKit differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap new file mode 100644 index 000000000..5e1ae1d3d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JLAudioUnitKit { + umbrella header "JLAudioUnitKit.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt new file mode 100644 index 000000000..6789fe6e1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-arm64/JLAudioUnitKit.framework/readme.txt @@ -0,0 +1,52 @@ +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 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h new file mode 100644 index 000000000..e6b3af64f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitKit.h @@ -0,0 +1,26 @@ +// +// JLAudioUnitKit.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// + +#import + +//! 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 + +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h new file mode 100644 index 000000000..7da831c67 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLAudioUnitPlayer.h @@ -0,0 +1,58 @@ +// +// JLAudioUnitPlayer.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/4/16. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, JLAudioUnitPlayerType) { + JLAudioUnitPlayerTypeFile, // 支持 MP3/WAV/AAC 等文件格式(AVAudioPlayer) + JLAudioUnitPlayerTypePCM // 支持 PCM 流式播放(Audio Queue) +}; + +@class JLAudioUnitPlayer; + +@protocol JLAudioPlayerDelegate +@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 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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h new file mode 100644 index 000000000..711e2e99a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusDecoder.h @@ -0,0 +1,66 @@ +// +// JLOpusDecoder.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOpusDecoder; + +/// Opus 解码代理 +@protocol JLOpusDecoderDelegate + +/// 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 delegate; + +- (instancetype)init NS_UNAVAILABLE; + +/// 初始化 +/// - Parameters: +/// - format: 解码格式 +/// - delegate: 代理 +- (instancetype)initDecoder:(JLOpusFormat *)format delegate:(id)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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h new file mode 100644 index 000000000..037284e00 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncodeConfig.h @@ -0,0 +1,83 @@ +// +// JLOpusEncodeConfig.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/8/27. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h new file mode 100644 index 000000000..24886a038 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusEncoder.h @@ -0,0 +1,69 @@ +// +// JLOpusEncoder.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOpusEncoder; + +/// Opus 编码代理 +@protocol JLOpusEncoderDelegate + +/// 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 delegate; + +-(instancetype)init NS_UNAVAILABLE; + +/// 初始化 +/// - Parameters: +/// - config: 音频格式 +/// - delegate: 代理 +-(instancetype)initFormat:(JLOpusEncodeConfig *)format delegate:(id)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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h new file mode 100644 index 000000000..016548791 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusFormat.h @@ -0,0 +1,59 @@ +// +// JLOpusOptions.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// Copyright © 2024 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h new file mode 100644 index 000000000..27b919bde --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLOpusToOgg.h @@ -0,0 +1,67 @@ +// +// JLOpusToOgg.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/5/16. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h new file mode 100644 index 000000000..b32ecef2d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWav.h @@ -0,0 +1,55 @@ +// +// JLPcmToWav.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/4/15. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h new file mode 100644 index 000000000..231b3e837 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLPcmToWtg.h @@ -0,0 +1,51 @@ +// +// JLPcmToWtg.h +// JLAudioUnitKit +// +// Created by EzioChan on 2025/1/21. +// Copyright © 2025 ZhuHai JieLi Technology Co.,Ltd. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLPcm2WtgModel : NSObject + +/// 音频文件 +@property (nonatomic, copy) NSString *pcmPath; + +/// 输出文件 +@property (nonatomic, copy) NSString *wtgPath; + +@end + + +/// JLPcmToWtgProtocol +@protocol JLPcmToWtgDelegate + +/// 音频转码完成 +/// - Parameter model: 音频转码模型 +- (void)convertPcmToWtgDone:(JLPcm2WtgModel *)model; + +@end + +/// 音频转码 +/// PCM 转 WTG +@interface JLPcmToWtg : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/// 音频转码初始化 +/// - Parameter delegate: 音频转码代理 +- (instancetype)initWithDelegate:(id)delegate; + +/// 音频转码 +/// 当前接口模型只限制 PCM 文件格式为:8k 16bit +/// 输入的pcm文件(16bit,小端,8k采样率),wtg_filename:输出的wtg文件 +/// - Parameter model: 音频转码模型 +-(void)convertPcmToWtg:(JLPcm2WtgModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h new file mode 100644 index 000000000..ad223d087 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Headers/JLSpeexDecoder.h @@ -0,0 +1,54 @@ +// +// JLSpeexUnit.h +// JLAudioUnitKit +// +// Created by EzioChan on 2024/11/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLSpeexDecoder; + +@protocol JLSpeexDelegate + +/// 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)delegate; + +/// 委托 +@property (nonatomic, weak) id 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 diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist new file mode 100644 index 000000000..832461042 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit new file mode 100755 index 000000000..52a56616b Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/JLAudioUnitKit differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap new file mode 100644 index 000000000..5e1ae1d3d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JLAudioUnitKit { + umbrella header "JLAudioUnitKit.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..dab32655b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/_CodeSignature/CodeResources @@ -0,0 +1,234 @@ + + + + + files + + Headers/JLAudioUnitKit.h + + hE2nr+4q2/NdSgBaayJc7ZoOXb0= + + Headers/JLAudioUnitPlayer.h + + QPMLV/XA8hjk39d+vT+S57t0fDU= + + Headers/JLOpusDecoder.h + + K1bYcaJ67prImNlGuldy8csTRHc= + + Headers/JLOpusEncodeConfig.h + + NArAew5QxnSJGsD0tRzQ2V7bHrY= + + Headers/JLOpusEncoder.h + + 7DYUlvXrp1QC9l2XZ5tNHtsmsBQ= + + Headers/JLOpusFormat.h + + Du1x3VNk87NstmspRk7ElijuZrk= + + Headers/JLOpusToOgg.h + + fSJT6LcyylJHTHX1wsN3JHG2FxU= + + Headers/JLPcmToWav.h + + /BbZmqmWpWVBusXqjnzbjaBNCNg= + + Headers/JLPcmToWtg.h + + zoOdOFpIulND0F1OrfIXR1H0kh0= + + Headers/JLSpeexDecoder.h + + 5ecBKtD3BDGccLiKpTs0fS0CSgs= + + Info.plist + + pXqOzYCqPnMLY0nonWZTcbfnlhU= + + Modules/module.modulemap + + 2vYf0m+hGTOTapX6sliv/F1E1VI= + + readme.txt + + wijZX0Dr2OlODWS6XYbpeKabb7g= + + + files2 + + Headers/JLAudioUnitKit.h + + hash2 + + J5pq6Ed3fR+cQ7CGPXDoPl7BZzix7Cjf5yJZFRRvxqs= + + + Headers/JLAudioUnitPlayer.h + + hash2 + + qBz0OA82HUH4kBtO8xiUw7Q4ohtiIvCSYfCqax5xjJY= + + + Headers/JLOpusDecoder.h + + hash2 + + cnAj6Nt6vgRLoEH6QY3Q+gYpjcxGPN1OLLZbCgdLymI= + + + Headers/JLOpusEncodeConfig.h + + hash2 + + qrPpsrXaNCvyxf0/gUZtvveL+ywsfgBUrMPFibjneOo= + + + Headers/JLOpusEncoder.h + + hash2 + + YoHsvoGH2VEjvEIzEa7t+cAnzf8kHEU3dJTd03ABr1w= + + + Headers/JLOpusFormat.h + + hash2 + + Nm6vM9/EbFzyIWbsysu6EOO2S+vZVeplcop4NvoJaMA= + + + Headers/JLOpusToOgg.h + + hash2 + + dNSvJJnED/6E1p7TYZ4zBzUnLDVsZ8NovuNYjge6T/w= + + + Headers/JLPcmToWav.h + + hash2 + + l/SEQhSFh7ctq/pBV+Z7X+Z0/gz30eCw3s31otjMPho= + + + Headers/JLPcmToWtg.h + + hash2 + + MwtbX3Sa0nytA+m11x+1rDvP4WvJnZLljshuT5B3WD0= + + + Headers/JLSpeexDecoder.h + + hash2 + + pV0X3xn07Ps7wE+0EfL9Yu/08tp8Ug8s14iDigRU46o= + + + Modules/module.modulemap + + hash2 + + akFCUM59aSAaRM/ADWQ138YT9GD3oAjcaTvTUo24Ml8= + + + readme.txt + + hash2 + + +2GG9ORrf2yJnBe2joKWtyBZL9p2sCH8EXqK1GIgW0E= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt new file mode 100644 index 000000000..6789fe6e1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLAudioUnitKit.xcframework/ios-x86_64-simulator/JLAudioUnitKit.framework/readme.txt @@ -0,0 +1,52 @@ +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 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist new file mode 100644 index 000000000..6ce64f21d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JLLogHelper.framework/JLLogHelper + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JLLogHelper.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + BinaryPath + JLLogHelper.framework/JLLogHelper + LibraryIdentifier + ios-arm64 + LibraryPath + JLLogHelper.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h new file mode 100644 index 000000000..a681462cc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogHelper.h @@ -0,0 +1,19 @@ +// +// JLLogHelper.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JLLogHelper. +FOUNDATION_EXPORT double JLLogHelperVersionNumber; + +//! Project version string for JLLogHelper. +FOUNDATION_EXPORT const unsigned char JLLogHelperVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h new file mode 100644 index 000000000..8f16c2a12 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Headers/JLLogManager.h @@ -0,0 +1,88 @@ +// +// JLLogManager.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 打印宏 +#define kJLLog(level,fmt...) [JLLogManager logLevel:level funcName:__FUNCTION__ line:__LINE__ format:fmt] + +typedef NS_ENUM(NSInteger, JLLOG_LEVEL) { + JLLOG_COMPLETE = 0, + JLLOG_DEBUG = 1, + JLLOG_INFO = 2, + JLLOG_WARN = 3, + JLLOG_ERROR = 4, +}; + +/// 日志打印 +@interface JLLogManager : NSObject + +/// 打印SDK版本 ++(void)sdkVersion; + +///清理已存储的打印 ++(void)clearLog; + +/** + * 打印文本 + */ ++(void)openLogTextFile; + +///重定向保存日志文件路径设置 +/// @param path 路径 ++(void)redirectLogPath:(NSString *)path; + +/// 收集日志回调接口 +/// @param block 回调 ++(void)collectLog:(void(^)(NSString *log))block; + +/// 打印时间 +/// @param isTimeStamp 是否打印 default is false ++(void)logWithTimestamp:(BOOL)isTimeStamp; + +/// 把日志保存存储起来 +/// @param isSave 是否保存 default is yes ++(void)saveLogAsFile:(BOOL)isSave; + +///LOG使能与等级,默认开启且debug等级。 +/// @param enable LOG使能 +/// @param isMore 是否打印【函数名&行号】 +/// @param level LOG等级 ++(void)setLog:(BOOL)enable IsMore:(BOOL)isMore Level:(JLLOG_LEVEL)level; + +/// 打印函数 +/// @param level LOG等级 +/// @param func 函数名 +/// @param line 行号 +/// @param format 内容 ++(void)logLevel:(JLLOG_LEVEL)level funcName:(const char* _Nullable)func line:(const int)line format:(NSString * _Nonnull)format,...; + +/// 打印 +/// @param something 任意字符串内容 ++(void)logSomething:(NSString *)something; + +/// 打印对象 +/// @param object 任意对象 ++(void)logObject:(id)object; + + + +/// 打印 +/// @param level LOG等级 +/// @param content 内容 ++(void)logLevel:(JLLOG_LEVEL)level content:(NSString *)content; + +/// 保存日志信息到文件中 +/// @param logContent 日志内容 ++(void)saveLog:(NSString *)logContent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist new file mode 100644 index 000000000..3c961562c Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper new file mode 100755 index 000000000..7d4cce100 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/JLLogHelper differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap new file mode 100644 index 000000000..21384c4ed --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64/JLLogHelper.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JLLogHelper { + umbrella header "JLLogHelper.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h new file mode 100644 index 000000000..a681462cc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogHelper.h @@ -0,0 +1,19 @@ +// +// JLLogHelper.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JLLogHelper. +FOUNDATION_EXPORT double JLLogHelperVersionNumber; + +//! Project version string for JLLogHelper. +FOUNDATION_EXPORT const unsigned char JLLogHelperVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h new file mode 100644 index 000000000..8f16c2a12 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Headers/JLLogManager.h @@ -0,0 +1,88 @@ +// +// JLLogManager.h +// JLLogHelper +// +// Created by EzioChan on 2024/5/8. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 打印宏 +#define kJLLog(level,fmt...) [JLLogManager logLevel:level funcName:__FUNCTION__ line:__LINE__ format:fmt] + +typedef NS_ENUM(NSInteger, JLLOG_LEVEL) { + JLLOG_COMPLETE = 0, + JLLOG_DEBUG = 1, + JLLOG_INFO = 2, + JLLOG_WARN = 3, + JLLOG_ERROR = 4, +}; + +/// 日志打印 +@interface JLLogManager : NSObject + +/// 打印SDK版本 ++(void)sdkVersion; + +///清理已存储的打印 ++(void)clearLog; + +/** + * 打印文本 + */ ++(void)openLogTextFile; + +///重定向保存日志文件路径设置 +/// @param path 路径 ++(void)redirectLogPath:(NSString *)path; + +/// 收集日志回调接口 +/// @param block 回调 ++(void)collectLog:(void(^)(NSString *log))block; + +/// 打印时间 +/// @param isTimeStamp 是否打印 default is false ++(void)logWithTimestamp:(BOOL)isTimeStamp; + +/// 把日志保存存储起来 +/// @param isSave 是否保存 default is yes ++(void)saveLogAsFile:(BOOL)isSave; + +///LOG使能与等级,默认开启且debug等级。 +/// @param enable LOG使能 +/// @param isMore 是否打印【函数名&行号】 +/// @param level LOG等级 ++(void)setLog:(BOOL)enable IsMore:(BOOL)isMore Level:(JLLOG_LEVEL)level; + +/// 打印函数 +/// @param level LOG等级 +/// @param func 函数名 +/// @param line 行号 +/// @param format 内容 ++(void)logLevel:(JLLOG_LEVEL)level funcName:(const char* _Nullable)func line:(const int)line format:(NSString * _Nonnull)format,...; + +/// 打印 +/// @param something 任意字符串内容 ++(void)logSomething:(NSString *)something; + +/// 打印对象 +/// @param object 任意对象 ++(void)logObject:(id)object; + + + +/// 打印 +/// @param level LOG等级 +/// @param content 内容 ++(void)logLevel:(JLLOG_LEVEL)level content:(NSString *)content; + +/// 保存日志信息到文件中 +/// @param logContent 日志内容 ++(void)saveLog:(NSString *)logContent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist new file mode 100644 index 000000000..b8d6b7f94 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper new file mode 100755 index 000000000..df8c2858b Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/JLLogHelper differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Modules/module.modulemap new file mode 100644 index 000000000..21384c4ed --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JLLogHelper { + umbrella header "JLLogHelper.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..1ae81019b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JLLogHelper.xcframework/ios-arm64_x86_64-simulator/JLLogHelper.framework/_CodeSignature/CodeResources @@ -0,0 +1,147 @@ + + + + + files + + Headers/JLLogHelper.h + + TahP/o16a5TgPGLNFs/QhND95FU= + + Headers/JLLogManager.h + + Be4QtnAF0IDSmlMZquwyK7LLd8w= + + Info.plist + + PJl+BYy7qbdneBUnydYicJKb/SM= + + Modules/module.modulemap + + YwPsApnJXdp+uskVahraY2UK/Jk= + + + files2 + + Headers/JLLogHelper.h + + hash + + TahP/o16a5TgPGLNFs/QhND95FU= + + hash2 + + nD5WuwBhpaoCwOGeWB5OusXVP21nYy+/Hcn6nPideIk= + + + Headers/JLLogManager.h + + hash + + Be4QtnAF0IDSmlMZquwyK7LLd8w= + + hash2 + + vOgQgQVptNwQdUKpCW2EBNruc0PL6BnkSjxVpptJsf0= + + + Modules/module.modulemap + + hash + + YwPsApnJXdp+uskVahraY2UK/Jk= + + hash2 + + ViwpXSuoKoiEUwMpetyre+mlEz0+JE8UURyNSgBuylM= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist new file mode 100644 index 000000000..ac38ab92b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JL_AdvParse.framework/JL_AdvParse + LibraryIdentifier + ios-arm64 + LibraryPath + JL_AdvParse.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + JL_AdvParse.framework/JL_AdvParse + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JL_AdvParse.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h new file mode 100644 index 000000000..844238943 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLAdvParse.h @@ -0,0 +1,72 @@ +// +// JLAdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8,JL_AdvType) { + JL_AdvTypeSoundBox = 0, //音箱类型 + JL_AdvTypeChargingBin = 1, //充电仓类型 + JL_AdvTypeTWS = 2, //TWS耳机类型 + JL_AdvTypeHeadset = 3, //普通耳机类型 + JL_AdvTypeSoundCard = 4, //声卡类型 + JL_AdvTypeWatch = 5, //手表类型 + JL_AdvTypeTradition = 6, //传统设备类型 +}; + + +typedef NS_ENUM(NSInteger,JL_DeviceType) { + JL_DeviceTypeSoundBox = 0, //AI音箱类型 + JL_DeviceTypeChargingBin = 1, //充电仓类型 + JL_DeviceTypeTWS = 2, //TWS耳机类型 + JL_DeviceTypeHeadset = 3, //普通耳机类型 + JL_DeviceTypeSoundCard = 4, //声卡类型 + JL_DeviceTypeWatch = 5, //手表类型 + JL_DeviceTypeDongle = 6, //Dongle + JL_DeviceTypeTradition = -1, //传统设备类型 +}; + + +/// 广播包解析器 +@interface JLAdvParse : NSObject + +/// 打印当前SDK的版本 ++(void)sdkVersion; + +/// 解析设备广播包内容 +/// @param key 过滤码(只针对传统设备生效,默认填空即可) +/// @param advertData 蓝牙广播字典 ++(NSDictionary*)bluetoothAdvParse:(NSData *_Nullable)key AdvData:(NSDictionary*_Nonnull)advertData; + +/// 解析蓝牙广播包 +/// @param advertData 蓝牙广播报字典 +/// @param rssi 蓝牙信号强度 ++(NSDictionary *)bluetoothAdvData:(NSDictionary *)advertData RSSI:(NSNumber *)rssi; + +#pragma mark - 回连广播包信息 +/** + * 获取广播包kCBAdvDataManufacturerData里面 'JLOTA' 标识的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (NSString * _Nullable)otaBleMacAddressFromCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +/** + * 判断当前蓝牙地址是否等于广播包kCBAdvDataManufacturerData里面的蓝牙地址 + * @param otaBleMacAddress ota升级中设备的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (Boolean)otaBleMacAddress:(NSString *)otaBleMacAddress isEqualToCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h new file mode 100644 index 000000000..27e16d177 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h @@ -0,0 +1,64 @@ +// +// JLChargingBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLChargingBoxAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否已开盖 +@property(nonatomic, assign) BOOL isOpen; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +///模式 +/// 0x00:充电模式 +/// 0x01:发射模式 +@property(nonatomic, assign) uint8_t mode; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h new file mode 100644 index 000000000..432142d06 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLDevicesAdv.h @@ -0,0 +1,54 @@ +// +// JLDevicesAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLAdvParse.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface JLDevicesAdv : NSObject + +/// 客户唯一标识 +@property(nonatomic,assign)uint16_t uid; + +/// 产品唯一标识 +@property(nonatomic,assign)uint16_t pid; + +/// 设备类型 +///JL_DeviceTypeSoundBox = 0, //AI音箱类型 +///JL_DeviceTypeChargingBin = 1, //充电仓类型 +///JL_DeviceTypeTWS = 2, //TWS耳机类型 +///JL_DeviceTypeHeadset = 3, //普通耳机类型 +///JL_DeviceTypeSoundCard = 4, //声卡类型 +///JL_DeviceTypeWatch = 5, //手表类型 +///JL_DeviceTypeTradition = -1, //传统设备类型 +@property(nonatomic,assign)JL_DeviceType type; + +/// 协议版本 +@property(nonatomic,assign)uint8_t version; + +/// 可变数据段 +@property(nonatomic,copy)NSData *variableData; + +- (instancetype)initWithData:(NSData *)data; + + +/// 转成model类型 +/// @param basicData 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataToModel:(NSData *)basicData; + +/// 转成model类型 +/// @param basicHexStr 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataHexStrToModel:(NSString *)basicHexStr; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h new file mode 100644 index 000000000..ab6475eb5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLEarphoneAdv.h @@ -0,0 +1,47 @@ +// +// JLEarphoneAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLEarphoneAdv : JLDevicesAdv + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否主机 +@property(nonatomic, assign) BOOL isMaster; + +/// 是否允许连接 +@property(nonatomic, assign) BOOL enableConnect; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h new file mode 100644 index 000000000..da40339a7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLOtaAdv.h @@ -0,0 +1,25 @@ +// +// JLOtaAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaAdv : JLDevicesAdv + +/// ble address before +@property(nonatomic,strong)NSString *BleAddrBefore; + +//MARK: - Version 1 +/// battery +@property(nonatomic,assign)uint8_t battery; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h new file mode 100644 index 000000000..9ac104121 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundBoxAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h new file mode 100644 index 000000000..792c3b378 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLSoundCardAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundCardAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundCardAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h new file mode 100644 index 000000000..7137abdc1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLTwsAdv.h @@ -0,0 +1,89 @@ +// +// JLTwsAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsAdv : JLDevicesAdv + +//MARK: - Version 0 + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +//MARK: - Version 1 +/// BLE连接属性(enableConnect) +@property(nonatomic, assign) BOOL bleEnable; + +//MARK: - Version 2 +/// 连接方式 +/// 0x00 BLE 通迅 +/// 0x01 SPP 通迅 +/// 0x02 GATT Over BR/EDR (V5/V6) +@property(nonatomic, assign) uint8_t connectWay; + +/// 是否支持智能充电仓 +@property(nonatomic, assign) BOOL isSupportChargBox; + +//MARK: - Version 3 +/// 左耳电量为挂脖耳机电量!!!,其他耳机电量使用 + +//MARK: - Version 4/5/6 扩展 +/// LeAudio连接状态值 +@property(nonatomic, assign) uint8_t leAudioStatus; +/// 是否支持LeAudio +@property(nonatomic, assign) BOOL supportLeAudio; +/// LeAudio是否已连接 +@property(nonatomic, assign) BOOL leAudioConnectedStatus; +/// RCSP是否使用LeAudio地址 +@property(nonatomic, assign) BOOL rcspUseLeAudioAddress; +/// 是否需要认证 +@property(nonatomic, assign) BOOL needAuth; +/// 协议版本号 +@property(nonatomic, assign) uint8_t protocolVersion; + +/// 设备数量 (V6) +@property(nonatomic, assign) uint8_t deviceQuantity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h new file mode 100644 index 000000000..696ad9284 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JLWatchAdv.h @@ -0,0 +1,35 @@ +// +// JLWatchAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLWatchAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 连接方式 +/// 0x00 ble +/// 0x01 spp +@property(nonatomic, assign) int8_t connectWay; + + +/// 手表状态 +/// 0x00:经典蓝牙未连接 +/// 0x01:经典蓝牙已连接 0x02:设备正在回连 +/// 0x03:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) int8_t connectState; + +/// 是否需要先连上 ble +@property(nonatomic, assign) BOOL priorityConnection; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h new file mode 100644 index 000000000..b599b7e9b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Headers/JL_AdvParse.h @@ -0,0 +1,27 @@ +// +// JL_AdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_AdvParse. +FOUNDATION_EXPORT double JL_AdvParseVersionNumber; + +//! Project version string for JL_AdvParse. +FOUNDATION_EXPORT const unsigned char JL_AdvParseVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist new file mode 100644 index 000000000..7f060a4a3 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse new file mode 100755 index 000000000..9c04419b0 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/JL_AdvParse differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap new file mode 100644 index 000000000..c072084c5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64/JL_AdvParse.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_AdvParse { + umbrella header "JL_AdvParse.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h new file mode 100644 index 000000000..844238943 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLAdvParse.h @@ -0,0 +1,72 @@ +// +// JLAdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8,JL_AdvType) { + JL_AdvTypeSoundBox = 0, //音箱类型 + JL_AdvTypeChargingBin = 1, //充电仓类型 + JL_AdvTypeTWS = 2, //TWS耳机类型 + JL_AdvTypeHeadset = 3, //普通耳机类型 + JL_AdvTypeSoundCard = 4, //声卡类型 + JL_AdvTypeWatch = 5, //手表类型 + JL_AdvTypeTradition = 6, //传统设备类型 +}; + + +typedef NS_ENUM(NSInteger,JL_DeviceType) { + JL_DeviceTypeSoundBox = 0, //AI音箱类型 + JL_DeviceTypeChargingBin = 1, //充电仓类型 + JL_DeviceTypeTWS = 2, //TWS耳机类型 + JL_DeviceTypeHeadset = 3, //普通耳机类型 + JL_DeviceTypeSoundCard = 4, //声卡类型 + JL_DeviceTypeWatch = 5, //手表类型 + JL_DeviceTypeDongle = 6, //Dongle + JL_DeviceTypeTradition = -1, //传统设备类型 +}; + + +/// 广播包解析器 +@interface JLAdvParse : NSObject + +/// 打印当前SDK的版本 ++(void)sdkVersion; + +/// 解析设备广播包内容 +/// @param key 过滤码(只针对传统设备生效,默认填空即可) +/// @param advertData 蓝牙广播字典 ++(NSDictionary*)bluetoothAdvParse:(NSData *_Nullable)key AdvData:(NSDictionary*_Nonnull)advertData; + +/// 解析蓝牙广播包 +/// @param advertData 蓝牙广播报字典 +/// @param rssi 蓝牙信号强度 ++(NSDictionary *)bluetoothAdvData:(NSDictionary *)advertData RSSI:(NSNumber *)rssi; + +#pragma mark - 回连广播包信息 +/** + * 获取广播包kCBAdvDataManufacturerData里面 'JLOTA' 标识的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (NSString * _Nullable)otaBleMacAddressFromCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +/** + * 判断当前蓝牙地址是否等于广播包kCBAdvDataManufacturerData里面的蓝牙地址 + * @param otaBleMacAddress ota升级中设备的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (Boolean)otaBleMacAddress:(NSString *)otaBleMacAddress isEqualToCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h new file mode 100644 index 000000000..27e16d177 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLChargingBoxAdv.h @@ -0,0 +1,64 @@ +// +// JLChargingBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLChargingBoxAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否已开盖 +@property(nonatomic, assign) BOOL isOpen; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +///模式 +/// 0x00:充电模式 +/// 0x01:发射模式 +@property(nonatomic, assign) uint8_t mode; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h new file mode 100644 index 000000000..432142d06 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLDevicesAdv.h @@ -0,0 +1,54 @@ +// +// JLDevicesAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLAdvParse.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface JLDevicesAdv : NSObject + +/// 客户唯一标识 +@property(nonatomic,assign)uint16_t uid; + +/// 产品唯一标识 +@property(nonatomic,assign)uint16_t pid; + +/// 设备类型 +///JL_DeviceTypeSoundBox = 0, //AI音箱类型 +///JL_DeviceTypeChargingBin = 1, //充电仓类型 +///JL_DeviceTypeTWS = 2, //TWS耳机类型 +///JL_DeviceTypeHeadset = 3, //普通耳机类型 +///JL_DeviceTypeSoundCard = 4, //声卡类型 +///JL_DeviceTypeWatch = 5, //手表类型 +///JL_DeviceTypeTradition = -1, //传统设备类型 +@property(nonatomic,assign)JL_DeviceType type; + +/// 协议版本 +@property(nonatomic,assign)uint8_t version; + +/// 可变数据段 +@property(nonatomic,copy)NSData *variableData; + +- (instancetype)initWithData:(NSData *)data; + + +/// 转成model类型 +/// @param basicData 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataToModel:(NSData *)basicData; + +/// 转成model类型 +/// @param basicHexStr 蓝牙广播数据 ++(JLDevicesAdv *__nullable)advertDataHexStrToModel:(NSString *)basicHexStr; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h new file mode 100644 index 000000000..ab6475eb5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLEarphoneAdv.h @@ -0,0 +1,47 @@ +// +// JLEarphoneAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLEarphoneAdv : JLDevicesAdv + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +/// 是否已配对 +@property(nonatomic, assign) BOOL isParied; + +/// 是否主机 +@property(nonatomic, assign) BOOL isMaster; + +/// 是否允许连接 +@property(nonatomic, assign) BOOL enableConnect; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h new file mode 100644 index 000000000..da40339a7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLOtaAdv.h @@ -0,0 +1,25 @@ +// +// JLOtaAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaAdv : JLDevicesAdv + +/// ble address before +@property(nonatomic,strong)NSString *BleAddrBefore; + +//MARK: - Version 1 +/// battery +@property(nonatomic,assign)uint8_t battery; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h new file mode 100644 index 000000000..9ac104121 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundBoxAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundBoxAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundBoxAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h new file mode 100644 index 000000000..792c3b378 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLSoundCardAdv.h @@ -0,0 +1,19 @@ +// +// JLSoundCardAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLTwsAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSoundCardAdv : JLTwsAdv + +@property(nonatomic,assign)uint8_t battery; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h new file mode 100644 index 000000000..7137abdc1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLTwsAdv.h @@ -0,0 +1,89 @@ +// +// JLTwsAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import "JLDevicesAdv.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsAdv : JLDevicesAdv + +//MARK: - Version 0 + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 耳机状态 +///0x00:不显示弹窗 +///0x01:经典蓝牙未连接 +///0x02:经典蓝牙已连接 +///0x03:设备正在回连 +///0x04:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) uint8_t status; + +/// 左耳电量 +@property(nonatomic, assign) uint8_t batteryLeft; + +/// 右耳电量 +@property(nonatomic, assign) uint8_t batteryRight; + +/// 充电仓电量 +@property(nonatomic, assign) uint8_t batteryBox; + +///左耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingLeft; + +///右耳是否在充电中 +@property(nonatomic, assign) BOOL isChargingRight; + +///充电仓是否在充电中 +@property(nonatomic, assign) BOOL isChargingBox; + +/// seq +/// 用于区分是否同一次开机。每次开机或者断开连接后 增加1 +@property(nonatomic, assign) uint8_t seq; + +/// 加密 Hash 校验值 +@property(nonatomic, copy) NSData *hashData; + +//MARK: - Version 1 +/// BLE连接属性(enableConnect) +@property(nonatomic, assign) BOOL bleEnable; + +//MARK: - Version 2 +/// 连接方式 +/// 0x00 BLE 通迅 +/// 0x01 SPP 通迅 +/// 0x02 GATT Over BR/EDR (V5/V6) +@property(nonatomic, assign) uint8_t connectWay; + +/// 是否支持智能充电仓 +@property(nonatomic, assign) BOOL isSupportChargBox; + +//MARK: - Version 3 +/// 左耳电量为挂脖耳机电量!!!,其他耳机电量使用 + +//MARK: - Version 4/5/6 扩展 +/// LeAudio连接状态值 +@property(nonatomic, assign) uint8_t leAudioStatus; +/// 是否支持LeAudio +@property(nonatomic, assign) BOOL supportLeAudio; +/// LeAudio是否已连接 +@property(nonatomic, assign) BOOL leAudioConnectedStatus; +/// RCSP是否使用LeAudio地址 +@property(nonatomic, assign) BOOL rcspUseLeAudioAddress; +/// 是否需要认证 +@property(nonatomic, assign) BOOL needAuth; +/// 协议版本号 +@property(nonatomic, assign) uint8_t protocolVersion; + +/// 设备数量 (V6) +@property(nonatomic, assign) uint8_t deviceQuantity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h new file mode 100644 index 000000000..696ad9284 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JLWatchAdv.h @@ -0,0 +1,35 @@ +// +// JLWatchAdv.h +// JL_AdvParse +// +// Created by EzioChan on 2023/12/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLWatchAdv : JLDevicesAdv + +/// 经典蓝牙地址 +@property(nonatomic, strong) NSString *edrAddr; + +/// 连接方式 +/// 0x00 ble +/// 0x01 spp +@property(nonatomic, assign) int8_t connectWay; + + +/// 手表状态 +/// 0x00:经典蓝牙未连接 +/// 0x01:经典蓝牙已连接 0x02:设备正在回连 +/// 0x03:设备不可连接 (需要手动进入配对模式) +@property(nonatomic, assign) int8_t connectState; + +/// 是否需要先连上 ble +@property(nonatomic, assign) BOOL priorityConnection; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h new file mode 100644 index 000000000..b599b7e9b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Headers/JL_AdvParse.h @@ -0,0 +1,27 @@ +// +// JL_AdvParse.h +// JL_AdvParse +// +// Created by EzioChan on 2023/1/31. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_AdvParse. +FOUNDATION_EXPORT double JL_AdvParseVersionNumber; + +//! Project version string for JL_AdvParse. +FOUNDATION_EXPORT const unsigned char JL_AdvParseVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import +#import +#import +#import +#import + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist new file mode 100644 index 000000000..284ba59ec Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse new file mode 100755 index 000000000..27d3e726d Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/JL_AdvParse differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Modules/module.modulemap new file mode 100644 index 000000000..c072084c5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_AdvParse { + umbrella header "JL_AdvParse.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..e2beeb0cb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_AdvParse.xcframework/ios-arm64_x86_64-simulator/JL_AdvParse.framework/_CodeSignature/CodeResources @@ -0,0 +1,267 @@ + + + + + files + + Headers/JLAdvParse.h + + 64SI1XBWnV1VmXIYu8XpmwMpE04= + + Headers/JLChargingBoxAdv.h + + dxEumtBFtKzehtXyVAacIJk/UU4= + + Headers/JLDevicesAdv.h + + WG6Ivw9lqj20J5OXda4lXMvAsig= + + Headers/JLEarphoneAdv.h + + fJODfMyuNuG59rHtw1StpNjde1A= + + Headers/JLOtaAdv.h + + 4Mj6y77mEbeHdo+4OgFL9yf+E0c= + + Headers/JLSoundBoxAdv.h + + 9psoYa5IuZ6p/X9FRRnLe5THJMQ= + + Headers/JLSoundCardAdv.h + + Q5T5xqjNDkTS+Niqp/KpoD9vipY= + + Headers/JLTwsAdv.h + + whLObetTxteRXS580FiZ1/A3Yzo= + + Headers/JLWatchAdv.h + + gK+FyDcSe6OVJK11wqqm1ppRE9k= + + Headers/JL_AdvParse.h + + gtcFkie1/FuAHO4WI/GUyN9chKY= + + Info.plist + + y32GLYYZ4FDhJGOjUkYUZfxaRn8= + + Modules/module.modulemap + + hBvb1e7FRkpwYoECUsVQBBscN38= + + + files2 + + Headers/JLAdvParse.h + + hash + + 64SI1XBWnV1VmXIYu8XpmwMpE04= + + hash2 + + ZG6RQ7l2Ko9IXNo517Aimfq7d03KANKIIPV09hZSFrg= + + + Headers/JLChargingBoxAdv.h + + hash + + dxEumtBFtKzehtXyVAacIJk/UU4= + + hash2 + + Bci4NCRbpGrT/YgMlRkA2DjX/lY/o8VmxkWPNtV+DjA= + + + Headers/JLDevicesAdv.h + + hash + + WG6Ivw9lqj20J5OXda4lXMvAsig= + + hash2 + + Mxf6qWhX6ctmSC0RVl7gdK4koCGeaUr8omEI9+9PMvc= + + + Headers/JLEarphoneAdv.h + + hash + + fJODfMyuNuG59rHtw1StpNjde1A= + + hash2 + + WThhDcnj1tcLW3Lrp2VUET7rXC/8iv9Y1dtAdPg0yWs= + + + Headers/JLOtaAdv.h + + hash + + 4Mj6y77mEbeHdo+4OgFL9yf+E0c= + + hash2 + + HuR8+O4ONYywZcporXuxlzO1xXOtZZqm/P9+s8yj+OI= + + + Headers/JLSoundBoxAdv.h + + hash + + 9psoYa5IuZ6p/X9FRRnLe5THJMQ= + + hash2 + + Iqjsp9NyRvmdlXu0gN7zltuwg75M+Kc9qFaTSHStolA= + + + Headers/JLSoundCardAdv.h + + hash + + Q5T5xqjNDkTS+Niqp/KpoD9vipY= + + hash2 + + WTBLq2+eyH5+TrY08Gh3/yReEWRnKg9UOCJmz56bnkE= + + + Headers/JLTwsAdv.h + + hash + + whLObetTxteRXS580FiZ1/A3Yzo= + + hash2 + + w6Ia/stHXZvCfmmPgTEpBj7A6haG6O+E0MeXH/fNKmA= + + + Headers/JLWatchAdv.h + + hash + + gK+FyDcSe6OVJK11wqqm1ppRE9k= + + hash2 + + 7iXBmticKJ52uKE+6RrHJt5ES0gq2Xan5WIG/w0sCyk= + + + Headers/JL_AdvParse.h + + hash + + gtcFkie1/FuAHO4WI/GUyN9chKY= + + hash2 + + t61emyM8slC+fTJM6XnBxjTDrpY7xvhUK5gCXfQf/3E= + + + Modules/module.modulemap + + hash + + hBvb1e7FRkpwYoECUsVQBBscN38= + + hash2 + + F65y3OGliGsHZpxzdTdQxUwgmJdHiihk1gvX6sJzhxA= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/Info.plist new file mode 100644 index 000000000..c49795494 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JL_BLEKit.framework/JL_BLEKit + LibraryIdentifier + ios-arm64 + LibraryPath + JL_BLEKit.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + JL_BLEKit.framework/JL_BLEKit + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JL_BLEKit.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECBDTManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECBDTManager.h new file mode 100644 index 000000000..7dca27218 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECBDTManager.h @@ -0,0 +1,120 @@ +// +// ECBDTManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/20. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +@protocol ECBDTManagerProtocol + +/// 大数据传输错误 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - error: 错误 +-(void)ecBDTManagerError:(JL_ManagerM *)manager Type:(uint8_t) type Error:(NSError *)error; + +/// 获取到设备端推送/ SDK 端读取的大数据内容 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - data: 数据块 +/// - progress: 进度 +-(void)ecBDTManager:(JL_ManagerM *)manager Type:(uint8_t) type GetBigData:(NSData *)data Progress:(float) progress; + +/// 获取到设备端推送/ SDK 端读取的大数据内容 结束 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - saveFilePath: 数据存放位置 +-(void)ecBDTManager:(JL_ManagerM *)manager Type:(uint8_t) type FinishBigData:(NSString *)saveFilePath; + + +@optional + +/// App 端主动发起的向写入数据进度 +/// - Parameters: +/// - manager: 设备 +/// - progress: 数据 +/// - finish: 是否完成 +-(void)ecBDTManager:(JL_ManagerM *)manager SendBigDataPresent:(float )progress Finish:(BOOL)finish; + +/// 设备端发起大数据写操作 +/// 设备端主动发起的向 App 端写入数据 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - req: 请求写入的内容 +-(void)ecBDTManager:(JL_ManagerM *)manager StartBigData:(ECBDTWriteReq *)req Type:(uint8_t) type; + + +/// 设备端发起大数据读取操作 +/// 开发者在这里需要对设备主动过来请求的内容进行回复 +/// -(void)responseDev:(JL_ManagerM *)manager resp:(ECBDTReadReq *)req Data:(NSData *)data +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - req: 请求内容 +-(void)ecBDTManager:(JL_ManagerM *)manager ReadBigData:(ECBDTReadReq *)req Type:(uint8_t) type; + +/// 发送大数据完毕 +/// - Parameter manager: 设备 +/// - Parameter type: 类型 +-(void)ecBDTManagerSendFinish:(JL_ManagerM *)manager Type:(uint8_t) type; + +@end + +@interface ECBDTManager : ECOneToMorePtl + ++(instancetype)share; + +/// APP 读取设备数据 +/// - Parameters: +/// - manager: 设备 +/// - type: 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +/// * 8:提示音文件数据 +-(void)readData:(JL_ManagerM *)manager Type:(uint8_t)type; + +/// APP 写入设备数据 +/// - Parameters: +/// - manager: 设备 +/// - type: 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +/// * 8:提示音文件数据 +/// - data: 大数据内容 +-(void)writeData:(JL_ManagerM *)manager Type:(uint8_t) type Data:(NSData*)data; + +/// 回应设备主动读取内容 +/// 此方法需要配合使用 +/// -(void)ecBDTManager:(JL_ManagerM *)manager ReadBigData:(ECBDTReadReq *)req +/// - Parameters: +/// - manager: 设备 +/// - req: 设备端请求的对象 +/// - data: 需要下发的数据内容 +-(void)responseDev:(JL_ManagerM *)manager resp:(ECBDTReadReq *)req Data:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECBDTObjc.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECBDTObjc.h new file mode 100644 index 000000000..9416bee60 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECBDTObjc.h @@ -0,0 +1,166 @@ +// +// ECBDTObjc.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/21. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ECBDTObjc : NSObject + +@end + +/// 设备传输参数回复数据 +@interface ECBDTBasic : NSObject +/// 操作类型 +/// 0:设备传输参数 +/// 1:传输数据 +@property (nonatomic, assign) uint8_t op; + +/// 方式 +/// 0:读取数据 +/// 1:发送数据 +@property (nonatomic, assign) uint8_t way; + +/// 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +@property (nonatomic, assign) uint8_t type; + +/// 版本 +@property (nonatomic, assign) uint8_t version; + +/// 数据 +@property (nonatomic, copy)NSData *paramData; + +-(instancetype)initData:(NSData *)data; + +@end + + +//MARK: - 回复大数据数据解析(设备回复) + +/// 设备传输参数(读取回复) +@interface ECBDTReadResp : ECBDTBasic +/// 结果码 +@property (nonatomic, assign) uint8_t result; + +/// 数据长度 +@property (nonatomic, assign) uint32_t dtLen; + +/// 数据总 CRC +@property (nonatomic, assign) uint16_t crc; + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + +/// 设备传输参数(发送回复) +@interface ECBDTWriteResp : ECBDTBasic +/// 结果码 +@property (nonatomic, assign) uint8_t result; + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + +//MARK: - 请求大数据数据解析(设备请求) + +/// 设备传输参数(读取请求) +@interface ECBDTReadReq: ECBDTBasic + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + + +/// 设备传输参数(发送请求) +@interface ECBDTWriteReq : ECBDTBasic + +/// 数据长度 +@property (nonatomic, assign) uint32_t dtLen; + +/// 数据总 CRC +@property (nonatomic, assign) uint16_t crc; + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + + +//传输数据命令参数 +@interface ECBDTCmdData : NSObject +/// 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +@property (nonatomic, assign) uint8_t type; + + +/// 标识位 +/// YES:结束 +/// NO:继续 +@property (nonatomic, assign) BOOL isEnd; + +///序号 +@property (nonatomic, assign) uint32_t seq; + +/// crc +@property (nonatomic, assign) uint16_t crc; + +/// 数据偏移 +@property (nonatomic, assign) uint32_t offset; + +/// 数据长度 +@property (nonatomic, assign) uint16_t len; + +/// 数据 +@property (nonatomic, copy)NSData *data; + + +-(instancetype)initData:(NSData *)data; + +-(NSData *)beData; + +/// 切块分包数据 +/// - Parameters: +/// - mtu: 发送的 mtu +/// - type: 数据类型 +/// - dt: 文件数据 ++(NSArray*)makeWithMtu:(uint16_t)mtu Type:(uint8_t) type Data:(NSData *)dt; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECOneToMorePtl.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECOneToMorePtl.h new file mode 100644 index 000000000..e88639a89 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECOneToMorePtl.h @@ -0,0 +1,28 @@ +// +// ECOneToMorePtl.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "NSData+ToUnit.h" +#import "JL_ManagerM.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface ECOneToMorePtl : NSObject + +@property(nonatomic,strong,readonly)NSHashTable *delegates; +@property(nonatomic,strong)NSLock *delegateLock; + +-(void)addDelegate:(id)delegate; +-(void)removeDelegate:(id)delegate; +-(void)removeAll; +-(void)inputPKG:(JL_PKG*)pkg; +-(void)inputPKG:(JL_PKG *)pkg Manager:(JL_ManagerM *)mgr; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECThreadHelper.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECThreadHelper.h new file mode 100644 index 000000000..a648b9649 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/ECThreadHelper.h @@ -0,0 +1,41 @@ +// +// ECThreadHelper.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/20. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol ECThreadHelperPtl + +-(void)startAction:(id)objc; +-(void)finishThreadTaskAction; + +@end + +typedef void(^EcThreadAction)(id objc); + +@interface ECThreadHelper : NSObject + + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, copy) EcThreadAction action; + ++(instancetype)share; + +-(instancetype)init; + +-(void)addTask:(id)any; + +-(void)nextTask; + +-(void)clean; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h new file mode 100644 index 000000000..be3e20abf --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h @@ -0,0 +1,82 @@ +// +// JL4GUpgradeManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/18. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLPublicSettingBlocks.h" + +NS_ASSUME_NONNULL_BEGIN +/// 4G 升级状态枚举 +typedef NS_ENUM(uint8_t, JL4GUpgradeStatus) { + /// 完成 + JL4GUpgradeStatusFinish = 0x00, + /// 开始 + JL4GUpgradeStatusStart = 0x01, + /// 传输中 + JL4GUpgradeStatusTransporting = 0x02, + /// 设备处理中 + JL4GUpgradeStatusDeviceProcessing = 0xff +}; + +@class JL4GUpgradeManager; + +/// 4G 升级代理回调 +@protocol JL4GUpgradeDelegate + +/// 升级结果 +/// - Parameters: +/// - mgr:4G升级管理对象 +/// - status: 升级状态 +/// - progress: 升级进度 +/// - code: 结果码 +/// 0x00 升级成功 +/// 0x01 升级失败 +/// 0x02 升级超时 +/// - error: 错误信息 +-(void)jl4GUpgradeResult:(JL4GUpgradeManager *)mgr Status:(JL4GUpgradeStatus) status Progress:(float)progress Code:(uint8_t)code error:(NSError * _Nullable)error; + +/// 设备 4G 信息更新 +/// - Parameter g4Model: 4G信息 +-(void)jl4GGetDeviceInfo:(JLPublic4GModel *)g4Model; + +@end + +@class JL_ManagerM; + +/// 4G模块升级管理对象 +@interface JL4GUpgradeManager : NSObject + +/// 单例 ++(instancetype)share; + +/// 4G 升级信息 +/// ⚠️需要先执行获取模块信息后获得值 +@property(nonatomic,strong)JLPublic4GModel *g4Model; + +/// 4G升级代理回调 +@property(nonatomic,weak) id delegate; + +/// 获取4G模块信息 +/// - Parameters: +/// - manager: 设备 +/// - result: 回调结果 +-(void)cmdGetDevice4GInfo:(JL_ManagerM *)manager result:(JLPSSource4GCbk)result; + + +/// 开始4G升级 +/// - Parameters: +/// - manager: 设备 +/// - data: 升级数据 +-(void)cmdStartUpgrade4G:(JL_ManagerM *)manager Data:(NSData *)data; + +/// 取消4G升级 +/// - Parameter manager: 设备 +-(void)cmdCancel4GUpgrade:(JL_ManagerM *)manager; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAIDialManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAIDialManager.h new file mode 100644 index 000000000..ea34d7d8f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAIDialManager.h @@ -0,0 +1,77 @@ +// +// JLAIDialManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/10/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_ManagerM; +@class JLAIDialManager; + +@protocol JLAIDialManagerDelegate + +/// 设备通知App AI表盘界面变化 +/// - Parameters: +/// - manager: ai dial manager +/// - status:0x00: 退出AI表盘功能 0x01: 进入AI表盘功能 +-(void)aiDialManager:(JLAIDialManager *)manager didAiDialStatusChange:(uint8_t)status; + +/// 开始AI生成表盘 +/// - Parameter manager: ai dial manager +-(void)aiDialdidStartCreateManager:(JLAIDialManager *)manager; + +/// 重新录音 +/// - Parameter manager: ai dial manager +-(void)aiDialdidRestartRecordManager:(JLAIDialManager *)manager; + +/// AI表盘开始安装 +/// - Parameter manager: ai dial manager +-(void)aiDialdidStartInstallManager:(JLAIDialManager *)manager; + + +/// 重新生成表盘 +/// - Parameter manager: ai dial manager +-(void)aiDialdidReCreateManager:(JLAIDialManager *)manager; + +@end + + + +/// ai dial manager +@interface JLAIDialManager : NSObject + +/// 进入/退出AI表盘 +@property (nonatomic, assign) BOOL isCreateing; + +/// 缩略图尺寸 默认 200*200 +/// scale zoom size default 200*200 +@property (nonatomic, strong) JLDialSize *scaleZoomSize; + + +/// 代理 +@property (nonatomic, weak) id delegate; + + +/// AI 表盘风格显示设置 +/// - Parameter manager: 设备对象 +/// - Parameter style: 风格类型 +/// - Parameter result: 回调对象 +-(void)aiDialSetManager:(JL_ManagerM *)manager AiStyle:(NSString *)style Result:(JL_CMD_RESPOND)result; + + +/// AI表盘告诉设备缩略图发送完毕 +/// - Parameter manager: 设备对象 +/// - Parameter path: 目标缩略图路径(设备端的位置)默认 "/VIE_THUMB" +/// - Parameter result: 回调对象 +-(void)aiDialSendThumbAiImageTo:(JL_ManagerM *)manager withPath:(NSString *)path Result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAiManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAiManager.h new file mode 100644 index 000000000..88abc8f81 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAiManager.h @@ -0,0 +1,121 @@ +// +// JLAiManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/8/9. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +//MARK: - JLOpenPlatformInfo +/// 平台接口认证信息 +@interface JLOpenPlatformInfo : NSObject +/// 版本号 +@property(nonatomic,assign)uint8_t version; +/// 平台 ID +@property(nonatomic,copy)NSString *appID; +/// app key +@property(nonatomic,copy)NSString *appKey; +/// app 的密钥 +@property(nonatomic,copy)NSString *appSecret; +/// 原始数据 +@property(nonatomic,copy)NSData *basicData; + +-(instancetype)initData:(NSData *)data; + +@end + +/// 平台接口认证信息 +@interface JLOpenPlatformMessage : NSObject +/// 版本号 +@property(nonatomic,assign)uint8_t version; +/// 支持平台信息 +@property(nonatomic,copy)NSArray * infoArray; + +-(instancetype)initData:(NSData *)dt; + +@end + +/// 屏幕尺寸 +@interface JLDialSize : NSObject + +/// width +@property(nonatomic,assign) uint16_t width; + +/// height +@property(nonatomic,assign) uint16_t height; + +/// 初始化 +/// - Parameters: +/// - width: width +/// - height: height ++(JLDialSize *)makeSize:(uint16_t)width Height:(uint16_t)height; + +@end + +//MARK: - JLAiManager +@class JL_ManagerM; +@class JLAiManager; + +@protocol JLAIManagerDelegate + +/// 设备回调/推送结果 +/// - Parameter mgr: JLAiManager +-(void)jlaiUpdateStatus:(JLAiManager *)mgr; + +@optional +/// 设备主动推送JLOpenPlatformInfo信息 +/// - Parameters: +/// - mgr: 设备 +/// - infoArray: [JLOpenPlatformInfo] +-(void)jlaiUpdateDevAiOpenPlatforms:(JLAiManager *)mgr Info:(JLOpenPlatformMessage *)info; + + +@end + +typedef void(^JLOpenPFBlock)(JLOpenPlatformMessage *message,JL_CMDStatus result); + +/// AI状态 管理类 +/// 当前接口适用于一些支持设备对讲的设备,在使用时需要先初始化当前类并接受代理:JLAIManagerDelegate +/// 在初始化后需要主动获取状态才可以获得首次的状态内容 +/// +@interface JLAiManager : NSObject + +/// 版本号 +@property(assign,nonatomic)uint8_t version; + +/// 0x00:默认状态 +/// 0x01:进入AI界面 +/// 0x02:退出AI界面 +@property(assign,nonatomic)uint8_t status; + +/// 回调代理 +@property(weak,nonatomic)id delegate; + +/// 获取AI 的状态 +///- Parameters: +/// - manager: 设备对象 +-(void)getStatus:(JL_ManagerM *)manager; + +/// 设置设备的状态 +/// - Parameters: +/// - manager: 设备对象 +/// - result: 回调结果 +-(void)setToDevice:(JL_ManagerM *)manager result:(JL_CMD_RESPOND _Nullable)result; + + +/// 获取平台接口认证信息,此信息需要先获取 JLDeviceConfig +/// 根据JLDeviceConfigModel 的 exportFunc 属性的 +/// spOpenInfo 判断是否支持平台开放接口信息获得 +/// - Parameters: +/// - manager: 设备对象 +/// - result: 回调结果 +-(void)getOpenPlatformInfo:(JL_ManagerM *)manager result:(JLOpenPFBlock _Nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastDevStateModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastDevStateModel.h new file mode 100644 index 000000000..3e91da062 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastDevStateModel.h @@ -0,0 +1,35 @@ +// +// JLAuracastDevStateModel.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + Auracast 设备状态数据模型 + + */ +@interface JLAuracastDevStateModel : NSObject + +typedef NS_ENUM(uint8_t, JLAuracastDevStateType) { + JLAuracastDevStateTypeLogin = 0x01, +}; +typedef NS_ENUM(uint8_t, JLAuracastLoginState) { + JLAuracastLoginStateLogout = 0, + JLAuracastLoginStateLogin = 1, +}; +/// 登录状态 +@property(nonatomic, assign) JLAuracastLoginState loginState; + +- (instancetype)initParseData:(NSData *)data; + +- (void)updateParseData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastLancerManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastLancerManager.h new file mode 100644 index 000000000..a7172d602 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastLancerManager.h @@ -0,0 +1,121 @@ +// +// JLAuracastLancerManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN +@class JLAuracastLancerSettingMode; +@class JLAuracastLancerManager; + +@protocol JLAuracastLancerManagerDelegate +@optional +-(void)lancerManager:(JLAuracastLancerManager *)mgr didUpdateSetting:(JLAuracastLancerSettingMode *)mode; +/// 设备状态更新 +/// - Parameters: +/// - mgr: 管理器 +/// - state: 最新设备状态 +-(void)lancerManager:(JLAuracastLancerManager *)mgr didUpdateDeviceState:(JLAuracastDevStateModel *)state; +@end + +/// Lancer 验证 +typedef NS_ENUM(NSUInteger, JLAuracastLancerLoginVerifyType) { + /// 验证成功 + JLLancerLoginVerifyTypeSuccess = 0x00, + /// 验证失败 + JLLancerLoginVerifyTypeFail = 0x01, + /// 已登录 + JLLancerLoginVerifyTypeLogined = 0x02 +}; + +/// 修改密码结果 +typedef NS_ENUM(NSUInteger, JLAuracastLancerChangePwdResult) { + /// 修改成功 + JLAuracastLancerChangePwdSuccess = 0x00, + /// 旧密码错误 + JLAuracastLancerChangePwdOldError = 0x01, + /// 密码没有变化 + JLAuracastLancerChangePwdNoChange = 0x02, + /// 新密码长度不对 + JLAuracastLancerChangePwdLengthError = 0x03 +}; + + + +typedef void(^JLLancerLoginVerifyBlock)(JLAuracastLancerLoginVerifyType status); + +typedef void(^JLLancerChangePwdBlock)(JLAuracastLancerChangePwdResult status); + +@interface JLAuracastLancerManager : NSObject + +@property(nonatomic, strong) JLAuracastLancerSettingMode *__nullable settingMode; + +@property(nonatomic, weak) id delegate; + + +-(instancetype)initWithManager:(JL_ManagerM *)manager; + +/// 设备状态 +@property(nonatomic,strong)JLAuracastDevStateModel *devState; + +/// 登录 +/// - Parameters: +/// - password: 登录密码 +/// - result: 结果 +-(void)loginVerify:(NSString *)password Result:(JLLancerLoginVerifyBlock)result; + +/// 修改密码 +/// - Parameters: +/// - oldPwd: 旧密码 +/// - newPwd: 新密码 +/// - result: 结果 +-(void)changePassword:(NSString *)oldPwd newPassword:(NSString *)newPwd Result:(JLLancerChangePwdBlock)result; + +/// 获取Auracast设备状态 +-(void)auracastGetDevState; + +/// 获取广播音频发射设置 +/// - Parameter type: 类型 +/// 0x01 == 广播名称 +/// 0x02 == 音频格式序号 +/// 0x03 == 加密信息 +/// 0x04 == 发射功率 +-(void)getBroadcastLancerSetting:(UInt8)type; + +/// 获取广播音频发射设置 +-(void)getBroadcastLancerSetting; + +/// 单独设置广播名称 +-(void)setBroadcastName:(NSString *)name; + +/// 单独设置音频格式序号 +-(void)setAudioFormatIndex:(JLBroadcastSetAudioFormat)index; + +/// 单独设置加密与 Broadcast Code(长度16) +-(void)setEncryptEnabled:(BOOL)enabled code:(NSData *)code; + +/// 单独设置发射功率(1~10) +-(void)setPowerLevel:(uint8_t)level; + +/// 一次性下发全部设置(来自 settingMode 或参数) +-(void)setBroadcastLancerSetting:(JLAuracastLancerSettingMode *)mode; + +///关机 +-(void)shoudown; + +///重启 +-(void)restart; + +///恢复出厂设置 +-(void)reset; + +/// 销毁 +-(void)onDestory; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastLancerSettingMode.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastLancerSettingMode.h new file mode 100644 index 000000000..0d0a547dc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastLancerSettingMode.h @@ -0,0 +1,148 @@ +// +// JLAuracastLancerSettingMode.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +/// 音频格式 +typedef NS_ENUM(UInt8, JLBroadcastSetAudioFormat) { + /// 名称: 8_1 + /// 采样率(Hz): 8000 + /// 帧间隔(us):7500 + /// 包长(Byte):26 + /// 码率(kbps):27.732 + /// 重发次数 :2 + /// 最大传输延时(ms) :8 + /// 演示延时(ms) :40 + JLBroadcastSetAudioFormat8_1 = 0x01, + /// 名称: 8_2 + /// 采样率(Hz): 8000 + /// 帧间隔(us):10000 + /// 包长(Byte):30 + /// 码率(kbps):24 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat8_2 = 0x02, + /// 名称: 16_1_1 + /// 采样率(Hz): 16000 + /// 帧间隔(us):7500 + /// 包长(Byte):30 + /// 码率(kbps):32 + /// 重发次数:2 + /// 最大传输延时(ms):8 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat16_1_1 = 0x03, + /// 名称: 16_2_1 + /// 采样率(Hz): 16000 + /// 帧间隔(us):10000 + /// 包长(Byte):40 + /// 码率(kbps):48 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat16_2_1 = 0x04, + /// 名称: 24_1_1 + /// 采样率(Hz): 24000 + /// 帧间隔(us):7500 + /// 包长(Byte):45 + /// 码率(kbps):48 + /// 重发次数:2 + /// 最大传输延时(ms):8 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat24_1_1 = 0x05, + /// 名称: 24_2_1 + /// 采样率(Hz): 24000 + /// 帧间隔(us):10000 + /// 包长(Byte):60 + /// 码率(kbps):48 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat24_2_1 = 0x06, + /// 名称: 32_1_1 + /// 采样率(Hz): 32000 + /// 帧间隔(us):7500 + /// 包长(Byte):60 + /// 码率(kbps):64 + /// 重发次数:2 + /// 最大传输延时(ms):8 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat32_1_1 = 0x07, + /// 名称: 32_2_1 + /// 采样率(Hz): 32000 + /// 帧间隔(us):10000 + /// 包长(Byte):80 + /// 码率(kbps):64 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat32_2_1 = 0x08, + /// 名称: 441_1_1 + /// 采样率(Hz): 44100 + /// 帧间隔(us):8163 + /// 包长(Byte):97 + /// 码率(kbps):95.06 + /// 重发次数:4 + /// 最大传输延时(ms):24 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat441_1_1 = 0x09, + /// 名称: 441_2_1 + /// 采样率(Hz): 44100 + /// 帧间隔(us):10884 + /// 包长(Byte):130 + /// 码率(kbps):95.55 + /// 重发次数:4 + /// 最大传输延时(ms):31 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat441_2_1 = 0x0A, + /// 名称: 48_1 + /// 采样率(Hz): 48000 + /// 帧间隔(us):7500 + /// 包长(Byte):75 + /// 码率(kbps):80 + /// 重发次数:4 + /// 最大传输延时(ms):15 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat48_1 = 0x0B, + /// 名称: 48_2 + /// 采样率(Hz): 48000 + /// 帧间隔(us):10000 + /// 包长(Byte):100 + /// 码率(kbps):80 + /// 重发次数:4 + /// 最大传输延时(ms):20 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat48_2 = 0x0C + +}; +/** + Auracast 发射端设置数据模型 + */ +@interface JLAuracastLancerSettingMode : NSObject + +/// 广播名称 +@property(nonatomic, copy) NSString *broadcastName; +/// 音频格式 +@property(nonatomic, assign) JLBroadcastSetAudioFormat audioFormatIndex; +/// 是否加密 +@property(nonatomic, assign) BOOL encryptEnabled; +/// 广播加密密码 +@property(nonatomic, copy) NSData * _Nullable broadcastCode; +/// 发射功率设置 +@property(nonatomic, assign) uint8_t powerLevel; + +-(instancetype)initParseData:(NSData *)data; + +-(void)updateParseData:(NSData *)data; + +-(NSData *)toLTVData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastManager.h new file mode 100644 index 000000000..053b987e2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAuracastManager.h @@ -0,0 +1,123 @@ +// +// JLAuracastManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLBroadcastDataModel; +@class JLAuracastDevStateModel; +@class JLAuracastManager; + +/// 搜索状态 +typedef NS_ENUM(NSUInteger, JLAuracastScanState) { + ///操作成功/不在搜索状态 + JLAuracastScanStateSuccess = 0, + ///正在搜索,请勿重复操作 + JLAuracastScanStateScanning = 1, + ///收听广播过程不允许扫描 + JLAuracastScanStateForbidden = 2, + ///设备繁忙 + JLAuracastScanStateBusy = 3, +}; + +/// 扫描类型 +typedef NS_ENUM(NSUInteger, JLAuracastScanType) { + /// 停止 + JLAuracastScanTypeStop = 0, + /// 开始 + JLAuracastScanTypeStart = 1, + /// 查询 + JLAuracastScanTypeQuery = 2, +}; + +@protocol JLAuracastManagerDelegate +@optional + +/// 搜索状态 +/// - Parameters: +/// - mgr: 管理器 +/// - state: 搜索状态 +/// - error: 错误 +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateSearchState:(BOOL)state Error:(NSError * _Nullable)error; + + +/// 广播列表更新 +/// - Parameters: +/// - mgr: 管理器 +/// - list: 最新的广播数据列表 +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateBroadcastList:(NSArray *)list; + +/// 设备状态更新 +/// - Parameters: +/// - mgr: 管理器 +/// - state: 最新设备状态 +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateDeviceState:(JLAuracastDevStateModel *)state; + +/// 当前播放源更新 +/// - Parameters: +/// - mgr: 管理器 +/// - source: 当前播放源(可空) +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateCurrentSource:(JLBroadcastDataModel * _Nullable)source; +@end + +typedef void(^JLAuracastManagerResultBlock)(JL_CMDStatus status, NSError * _Nullable error); + +@interface JLAuracastManager : NSObject + +/// 扫描状态 +@property(nonatomic, assign)BOOL isScanning; + +/// 若干个搜索到的对象 +@property(nonatomic,strong)NSMutableArray * broadcastDataModels; + +/// 设备状态 +@property(nonatomic,strong)JLAuracastDevStateModel *devState; + +/// 当前播放源 +@property(nonatomic,strong)JLBroadcastDataModel *__nullable currentSource; + +/// 回调代理 +@property(nonatomic,weak)id delegate; + +/// 初始化 +-(instancetype)initWithManager:(JL_ManagerM *)manager; + + +/// 扫描Auracast广播 +/// - Parameter type: 扫描类型 +-(void)auracastScanBroadcast:(JLAuracastScanType)type; + +/// 获取Auracast设备状态 +-(void)auracastGetDevState; + + +/// 设置Auracast当前播放源 +/// - Parameter model: 播放源 +/// - Parameter block: 回调 +/// 这里的回调仅仅是命令收发的一个回复,设备回复成功不代表添加成功 +/// 只说明了此命令交互成功,开发者仍需监听 +/// -(void)auracastManager:(JLAuracastManager *)mgr didUpdateCurrentSource:(JLBroadcastDataModel * _Nullable)source 作为判断是否成功收听的重要指标 +-(void)addSourceToDev:(JLBroadcastDataModel *)model result:(JLAuracastManagerResultBlock _Nullable)block; + +/// 移除Auracast当前播放源 +/// - Parameter block: 回调 +-(void)removeDevCurrentSource:(JLAuracastManagerResultBlock _Nullable)block; + +/// 获取Auracast当前播放源 +/// - Parameter block: 回调 +-(void)getCurrentOperationSource:(void(^)(JLBroadcastDataModel *model))block; + +/// 销毁 +-(void)onDestory; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h new file mode 100644 index 000000000..67e2329af --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h @@ -0,0 +1,87 @@ +// +// JLAutoConfigAnc.h +// JL_BLEKit +// +// Created by EzioChan on 2022/10/28. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + + +#import "ECOneToMorePtl.h" + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +typedef void(^AutoConfigResult)(BOOL status); + +@protocol JLAutoConfigAncPtl + + +/// 设备正在重新检测自适应降噪 +-(void)autoConfigDidConfiging; +///设置自适应降噪失败了 +-(void)autoConfigDidFailed; +///设置自适应降噪成功了 +-(void)autoConfigDidSucceed; +///关闭自适应降噪 +-(void)autoConfigDidClose; + +@end + + +/// 自适应降噪处理类 +@interface JLAutoConfigAnc : ECOneToMorePtl + +/// 设备开启/关闭自适应降噪的状态 +@property (assign,nonatomic)BOOL status; + +/// 开启设备自适应降噪 +/// 这里只是进入了设备开始适配降噪的命令过程 +/// 适配成功与否需要添加协议JLAutoConfigAncPtl进行监听 +/** + interface testView : UIView + + @end + + -(void)initData{ + JLAutoConfigAnc *anc = [[JLAutoConfigAnc alloc] init]; + [anc addDelegate:self]; + } + + -(void)autoConfigDidFailed{ + //设置自适应降噪失败了 + } + -(void)autoConfigDidSucceed{ + //设置自适应降噪成功了 + } + -(void)autoConfigDidClose{ + //关闭自适应降噪 + } +*/ +/// - Parameter manager: manager +-(void)atAncStartAutoConfigWithManager:(JL_ManagerM*)manager; + + +/// 打开设备自适应降噪 +/// 设备默认有一套已在运行的降噪算法 +/// 打开后设备会进入降噪模式,不会经历检测启动自适应的时间,相当于是即时生效 +/// - Parameter result: 这里回调的是一个设备命令处理的结果 +/// - Parameter manager: manager +-(void)atAncOpenAutoConfigResult:(JL_CMD_RESPOND)result Manager:(JL_ManagerM*)manager; + +/// 用户关闭设备的自适应降噪模式算法 +/// - Parameter result: 命令处理结果,不代表命令处理成功 +/// - Parameter manager: manager +-(void)atAncCloseAutoConfigResult:(JL_CMD_RESPOND)result Manager:(JL_ManagerM*)manager; + +/// 获取设备是否开启了自适应降噪 +/// - Parameter result: 这里处理的结果是,设备实际是否开启了的结果,无需从代理中获得结果 +/// - Parameter manager: manager +-(void)atAncGetAutoConfigResult:(AutoConfigResult)result Manager:(JL_ManagerM*)manager; + + +@end + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAutoPressureModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAutoPressureModel.h new file mode 100644 index 000000000..c019440d1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLAutoPressureModel.h @@ -0,0 +1,38 @@ +// +// JLAutoPressureModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +///压力自动检测模式 +typedef NS_ENUM(UInt8, WatchAPLeveType) { + ///放松 + WatchAPLeve_Relex = 0x00, + /// 正常 + WatchAPLeve_Normal = 0x01, + /// 中等 + WatchAPLeve_Middle = 0x02, + /// 偏高 + WatchAPLeve_Hight = 0x03 +}; + +@interface JLAutoPressureModel : JLwSettingModel + +///开关 +@property(nonatomic,assign)BOOL status; +/// 模式 +@property(nonatomic,assign)WatchAPLeveType model; + +-(instancetype)initWithData:(NSData *)data; + +-(instancetype)initWithModel:(WatchAPLeveType)model switchStatus:(BOOL)status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLBroadcastDataModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLBroadcastDataModel.h new file mode 100644 index 000000000..a46f5a68d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLBroadcastDataModel.h @@ -0,0 +1,65 @@ +// +// JLBroadcastDataModel.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// Auracast 广播数据模型 +@interface JLBroadcastDataModel : NSObject + +/// 广播名称 +@property(nonatomic, copy) NSString *broadcastName; +/// 广播ID +@property(nonatomic, copy) NSData *broadcastID; +/// 广播特性 +@property(nonatomic, assign) uint8_t features; +/// 是否加密 +@property(nonatomic, assign) BOOL encrypted; +/// 广播地址 +@property(nonatomic, copy) NSData *advertiserAddress; +/// 广播地址 +@property(nonatomic, copy) NSString *advertiserAddressString; + +/// 广播密钥 +@property(nonatomic, copy) NSData *broadcastKey; + +typedef NS_ENUM(uint8_t, JLBroadcastSyncState) { + JLBroadcastSyncStateIdle = 0, + JLBroadcastSyncStateSyncing = 1, + JLBroadcastSyncStateSuccess = 2, +}; +/// 同步状态 +/// Broadcast sync state +/// 当此状态为空闲时,需要查看错误码检查是否存在错误 +@property(nonatomic, assign) JLBroadcastSyncState syncState; + +typedef NS_ENUM(uint8_t, JLBroadcastErrorCode) { + JLBroadcastErrorCodeNone = 0x00, + JLBroadcastErrorCodeName = 0x01, + JLBroadcastErrorCodeAddress = 0x02, + JLBroadcastErrorCodeID = 0x03, + JLBroadcastErrorCodeKey = 0x04, + JLBroadcastErrorCodeSyncFailed = 0x05, + JLBroadcastErrorCodeSyncTimeout = 0x06, + JLBroadcastErrorCodeSyncLost = 0x07, +}; +/// 错误码 +@property(nonatomic, assign) JLBroadcastErrorCode errorCode; + +@property(nonatomic, copy) NSData *ltvData; + +- (instancetype)initParseData:(NSData *)data; + + +/// 将当前模型内容按 LTV 规则编码为数据 +- (NSData *)toLTVData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLCmdBasic.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLCmdBasic.h new file mode 100644 index 000000000..8efb36751 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLCmdBasic.h @@ -0,0 +1,23 @@ +// +// JLCmdBasic.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLCmdBasic : NSObject + +-(void)inputPKG:(JL_PKG *)pkg; + +-(void)makeCommandAction:(NSData *)targetData withManager:(JL_ManagerM *)manager Result:(JL_CMD_RESPOND _Nullable)result; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h new file mode 100644 index 000000000..3a407f6b5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h @@ -0,0 +1,45 @@ +// +// JLConsequentHeartRateModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 测量心率传感器设置 +@interface JLConsequentHeartRateModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 测量模式 +@property(nonatomic,assign)WatchConsequentType rType; + +/// 上限心率 +@property(nonatomic,assign)UInt8 maxHeartRate; + +/// 下限心率 +@property(nonatomic,assign)UInt8 minHeartRate; + +/// 是否包含上下心率区间 +@property(nonatomic,assign)BOOL hasRange; + +-(instancetype)initWithData:(NSData *)data; + +/// 创建一个新的传感器设置对象 +/// @param type 测量类型 +/// @param status 开团状态 +- (instancetype)initWithModel:(WatchConsequentType)type Status:(BOOL)status; + +/// 创建一个新的传感器设置对象 +/// 携带心率上下限的 +/// @param type 测量类型 +/// @param status 开关状态 +/// @param min 心率下限 +/// @param max 心率上限 +- (instancetype)initWithModel:(WatchConsequentType)type Status:(BOOL)status Min:(UInt8) min Max:(UInt8)max; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevAudioAIttsHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevAudioAIttsHandler.h new file mode 100644 index 000000000..cfe5d57df --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevAudioAIttsHandler.h @@ -0,0 +1,55 @@ +// +// JLDevAudioAIttsHandler.h +// JL_BLEKit +// Created by EzioChan on 2025/12/12. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@protocol JLDevAudioAIttsHandlerDelegate +/// 设备回调ai云数据 +/// - Parameters: +/// - manager: 设备 +/// - aicloud: AI云数据对象 +- (void)receiveDataFrom:(JL_ManagerM *)manager WithAiCloud:(JLSpeechAiCloud *)aicloud; + +/// 设备返回tts合成数据 +/// - Parameters: +/// - manager: 设备 +/// - tts: tts数据对象 +- (void)receiveDataFrom:(JL_ManagerM *)manager WithTTS:(JLSpeechTTSSynthesis *)tts; +@end + +/// 语音 AI/tts 传输处理(新) +/// 对外接口与旧类一致,仅更换类名,内部转发至 JL_SpeechAIttsHandler +@interface JLDevAudioAIttsHandler : NSObject + +@property (nonatomic, weak) id delegate; + +/// 初始化一个语音大数据传输实例 +/// - Parameter mgr: JL_ManagerM +- (instancetype)initWithMgr:(JL_ManagerM *)mgr; + +/// 发送tts语音合成信息 +/// - Parameters: +/// - tts: tts语音对象内容 +/// - manager: 设备 +/// - result: 回调结果 +- (void)devAudioSendTTs:(JLSpeechTTSSynthesis *)tts manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +/// 发送ai云数据到设备 +/// - Parameters: +/// - cloud: ai云数据 +/// - manager: 设备 +/// - result: 回调结果 +- (void)devAudioSendAiCloud:(JLSpeechAiCloud *)cloud manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevAudioManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevAudioManager.h new file mode 100644 index 000000000..4767be2bc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevAudioManager.h @@ -0,0 +1,95 @@ +// +// JLDevAudioManager.h +// JL_BLEKit +// Created by EzioChan on 2025/12/12. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JLDevAudioManager; + +@protocol JLDevAudioManagerDelegate + /// 录音数据回调 + /// - Parameters: + /// - manager: 操作设备 + /// - data: 数据 + - (void)devAudioManager:(JLDevAudioManager *)manager Audio:(NSData *)data; + + /// 设备端开始录音 + /// - Parameters: + /// - manager: 操作设备 + /// - param: 录音参数 + - (void)devAudioManager:(JLDevAudioManager *)manager StartByDeviceWithParam:(JLRecordParams *)param; + + /// 设备端结束录音 + /// - Parameters: + /// - manager: 操作设备 + /// - param: 语音助手配置参数 + - (void)devAudioManager:(JLDevAudioManager *)manager StopByDeviceWithParam:(JLSpeechRecognition *)param; + + /// 录音状态回调 + /// - Parameters: + /// - manager: 操作设备 + /// - status: 状态 + - (void)devAudioManager:(JLDevAudioManager *)manager Status:(JL_SpeakType)status; + +@end + +/// 设备录音管理对象(新) +/// 对外接口与旧类一致,仅更换类名,内部转发至 JL_SpeexManager +@interface JLDevAudioManager : NSObject + +@property (nonatomic, weak) id delegate; + + /// 获取单例 + /// - Parameters: + /// - delegate: 代理 + /// - manager: 操作设备 + /// - Returns: 录音管理对象实例 + + (JLDevAudioManager *)shareDevAudioManager:(id)delegate WithManager:(JL_ManagerM *)manager; + + /// 获取录音状态 + /// - Returns: 当前录音状态 + - (JL_SpeakType)cmdCheckRecordStatus; + + /// 开始录音 + /// - Parameters: + /// - manager: 操作设备 + /// - params: 录音参数 + /// - result: 命令操作结果回调 + - (void)cmdStartRecord:(JL_ManagerM *)manager Params:(JLRecordParams *)params Result:(JL_CMD_RESPOND __nullable)result; + /// 停止录音 + /// - Parameters: + /// - manager: 操作设备 + /// - reason: VAD类型 + /// - result: 命令操作结果回调 + - (void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason)reason Result:(JL_CMD_RESPOND __nullable)result; + /// 停止录音2 + /// - Parameters: + /// - manager: 操作设备 + /// - reason: vad类型 + /// - schr: 语音设置助手 + /// - result: 回调结果 + - (void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason)reason SpeechHelper:(JLSpeechRecognition *)schr Result:(JL_CMD_RESPOND __nullable)result; + + /// 允许录音(设备端主动发起时的同意响应) + /// 在收到设备主动发起录音的回调后调用,设备会播放提示音 + - (void)cmdAllowSpeak; + /// 拒绝录音(设备端主动发起时的拒绝响应) + /// 在收到设备主动发起录音的回调后调用,拒绝设备开始录音 + - (void)cmdRejectSpeak; + + /// 停止语音 + /// 发送命令给音箱,停止接收数据,即检测到断句 + - (void)cmdSpeakingDone __attribute__((deprecated("当前命令已失效,请使用cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason) reason"))); + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h new file mode 100644 index 000000000..74e171a03 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h @@ -0,0 +1,102 @@ +// +// JLDevPlayerCtrl.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/25. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JLDevPlayerCtrl; + +/// 播放器回调 +@protocol JLDevPlayerCtrlDelegate + +/// 播放状态 +/// - Parameters: +/// - ctrl: 播放器 +/// - status: 播放模式 +-(void)jlDevPlayerCtrl:(JLDevPlayerCtrl *)ctrl playMode:(uint8_t)playMode; + +/// 播放状态回调 +/// - Parameters: +/// - ctrl: 播放器 +/// - status: 播放状态 +/// - card: 当前播放的设备 +/// - time: 当前播放的时间 +/// - total: 总时长 +-(void)jlDevPlayerCtrl:(JLDevPlayerCtrl *)ctrl playStatus:(uint8_t)status currentCard:(uint8_t)card currentTime:(uint32_t)time tolalTime:(uint32_t)total; + +/// 播放文件回调 +/// - Parameters: +/// - ctrl: 播放器 +/// - name: 文件名 +/// - clus: 文件簇号 +-(void)jlDevPlayerCtrl:(JLDevPlayerCtrl *)ctrl fileName:(NSString *)name currentClus:(uint32_t)clus; + +@end + + +/// 设备播放器管理类 +@interface JLDevPlayerCtrl : JLCmdBasic + +/// 播放状态 +@property(nonatomic,assign)uint8_t playStatus; + +/// 当前播放的设备 +/// 0x00 : USB +/// 0x01 : SD_0 +/// 0x02 : SD_1 +/// 0x03 : FLASH +/// 0x04 : LineIn +/// 0x05 : FLASH2 +@property(nonatomic,assign)uint8_t currentCard; + +/// 当前播放时间 +@property(nonatomic,assign)uint32_t currentTime; + +/// 歌曲总时长 +@property(nonatomic,assign)uint32_t tolalTime; + +/// 当前播放文件名 +@property(nonatomic,strong)NSString *fileName; + +/// 当前播放文件的簇号 +@property(nonatomic,assign)uint32_t currentClus; + +/// 当前播放模式 +/// 0x01:全部循环; +/// 0x02:设备循环; +/// 0x03:单曲循环; +/// 0x04:随机播放; +/// 0x05:文件夹循环 +@property (nonatomic,assign)uint8_t playMode; + +/// 代理 +@property(nonatomic,weak)id delegate; + +/// 操控设备播放器设置 +/// - Parameters: +/// - cmd: 操作命令 +/// 0x01:PP按钮 +/// 0x02:上一曲 +/// 0x03:下一曲 +/// 0x04:切换播放模式(当前播放模式:不可指定,设备播放模式自增) +/// 0x05:EQ +/// 0x06:快退 +/// 0x07:快进 +/// - sec: 时间(当快进/快退时需要,其他功能时值为0) +/// - manager: 设备对象 +/// - result: 返回结果 +-(void)cmdPlayerCtrl:(uint8_t)cmd + Second:(uint16_t)sec + Manager:(JL_ManagerM *)manager + Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfig.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfig.h new file mode 100644 index 000000000..404011f0a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfig.h @@ -0,0 +1,113 @@ +// +// JLDeviceConfig.h +// JL_BLEKit +// +// Created by EzioChan on 2022/10/31. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +@class JL_ManagerM; +@class JLDeviceConfigModel; +@class JLDeviceConfigTws; +@class JLDeviceConfigDongle; +@class JLDeviceConfigSoundBox; + +NS_ASSUME_NONNULL_BEGIN +typedef void(^JLConfigRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigModel* __nullable config); + +typedef void(^JLConfigTwsRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigTws* __nullable config); + +typedef void(^JLConfigAuracastRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigDongle* __nullable config); + +typedef void (^JLConfigSoundBoxRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigSoundBox* __nullable config); + + +/// 固件设置配置回调协议 +/// 遵循时,可通过父类的- (void)addDelegate:(id)delegate方法添加遵循 +@protocol JLConfigPtl + +@optional +/// 监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceConfigWith:(JLDeviceConfigModel *)configModel; + +/// TWS监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceTwsConfigWith:(JLDeviceConfigTws *)configModel; + +/// SoundBox监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceSoundBoxConfigWith:(JLDeviceConfigSoundBox *)configModel; + +/// Dongle 监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceAuracastConfigWith:(JLDeviceConfigDongle *)configModel; + +@end + +@interface JLDeviceConfig : NSObject + + +@property(nonatomic,weak) id _Nullable delegate; + ++(instancetype)share; + +/// 获取设备配置信息 +-(void)deviceConfigGet:(JL_ManagerM *)manager; + + +/// 手表查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceGetConfig:(JL_ManagerM *)manager result:(JLConfigRsp)result; + +/// 手表多设备管理时,可通过对应的设备UUID 获取相关的设备配置 +/// - Parameter entity: 设备uuidStr +-(JLDeviceConfigModel *_Nullable)deviceGetConfigWithUUID:(NSString *)uuidStr; + +/// TWS查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceTwsGetConfig:(JL_ManagerM *)manager result:(JLConfigTwsRsp)result; + +/// Dongle 查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceDongleGetConfig:(JL_ManagerM *)manager result:(JLConfigAuracastRsp)result; + +/// SoundBox 查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceSoundBoxGetConfig:(JL_ManagerM *)manager result:(JLConfigSoundBoxRsp)result; + + +/// Tws多设备管理时,可通过对应的设备UUID 获取相关的设备配置 +/// - Parameter entity: 设备uuidStr +-(JLDeviceConfigTws *)deviceGetTwsConfigWithUUID:(NSString *)uuidStr; + +/// Dongle 查询设备当前固件配置内容 +/// - Parameters: +/// - uuidStr: 设备uuidStr +-(JLDeviceConfigDongle *)deviceGetAuracastConfigWithUUID:(NSString *)uuidStr; + + +/// SoundBox 多设备管理时,可通过对应的设备 UUID 获取相关的设备配置信息 +/// - Parameter uuidStr: 设备 uuid +-(JLDeviceConfigSoundBox *)deviceGetSoundBoxConfigWithUUID:(NSString *)uuidStr; + + +/// 私有测试接口请勿使用 +/// - Parameter data: 用于测试数据 +/// - Parameter st: 是否开启测试模式 +-(void)pDeviceTest:(NSData *)data Status:(BOOL)st; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigDongle.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigDongle.h new file mode 100644 index 000000000..dbdf7def0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigDongle.h @@ -0,0 +1,32 @@ +// +// JLDeviceConfigDongle.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// Auracast +@interface JLDeviceConfigDongle : JLDeviceConfigBasic +/// 是否支持Auracast +@property (nonatomic, assign, readonly) BOOL isSupportAuracast; +/// 是否支持接收Auracast +@property (nonatomic, assign, readonly) BOOL isSupportReceiveAuracast; +/// 是否支持发射端 Auracast +@property (nonatomic, assign, readonly) BOOL isSupportLancerAuracast; + +/// 是否支持TWS +/// 说明设备支持TWS设备功能。 +/// 包含设备名称,弹窗快连,按键设置,灯效设置、工作模式等功能; +@property (nonatomic, assign, readonly)BOOL isSupportTwsFunc; + +/// 是否支持重命名 +/// 设备是否支持修改设备名 +@property (nonatomic, assign, readonly)BOOL isSupportRename; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h new file mode 100644 index 000000000..859b621eb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h @@ -0,0 +1,242 @@ +// +// JLDeviceConfigFuncModel.h +// JL_BLEKit +// +// Created by EzioChan on 2022/10/31. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "ECOneToMorePtl.h" + +NS_ASSUME_NONNULL_BEGIN + +//MARK: - 必须功能 + +/// 必须功能 +@interface JLDeviceBasicFuncModel : NSObject + +/// 支持OTA +@property(nonatomic,assign)BOOL spOTA; + +/// 支持资源更新 +@property(nonatomic,assign)BOOL spSourceUpdate; + +/// 支持表盘增加/删除/查询 +@property(nonatomic,assign)BOOL spDialOperation; + +/// 支持表盘切换 +@property(nonatomic,assign)BOOL spDialSwitch; + +/// 支持表盘预览 +@property(nonatomic,assign)BOOL spDialPreview; + + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 系统功能 +/// 系统功能 +@interface JLDeviceSystemFuncModel : NSObject + +/// 支持屏幕设置 +@property(nonatomic,assign)BOOL spScreenSetting; +/// 支持震动强度 +@property(nonatomic,assign)BOOL spVibrationIntensity; +/// 支持勿扰模式 +@property(nonatomic,assign)BOOL spDoNotDisturb; +/// 支持锻炼设置 +@property(nonatomic,assign)BOOL spExerciseSettings; +/// 支持断开提醒 +@property(nonatomic,assign)BOOL spDisconnectReminder; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 功能选项 +/// 功能选项 +@interface JLDeviceExportFuncModel : NSObject +/// 支持常用联系人 +@property(nonatomic,assign)BOOL spTopContacts; +/// 支持音乐文件浏览 +@property(nonatomic,assign)BOOL spMusicFileBrows; +/// 音乐文件删除、传输 +@property(nonatomic,assign)BOOL spMusicFileOp; +/// 支持闹钟设置 +@property(nonatomic,assign)BOOL spAlarmSettings; +/// 支持信息同步 +@property(nonatomic,assign)BOOL spSyncInfo; +/// 支持天气同步 +@property(nonatomic,assign)BOOL spSyncWeather; +/// 支持找手机/设备 +@property(nonatomic,assign)BOOL spFindPhoneOrDevice; +/// Ai 云功能 +@property(nonatomic,assign)BOOL spAiCloud; +/// Ai 表盘 +@property(nonatomic,assign)BOOL spAiDial; +/// 平台接口信息获取 +@property(nonatomic,assign)BOOL spOpenInfo; +/// 支持4G模块 +@property(nonatomic,assign)BOOL sp4GModel; + +/// 支持表盘信息拓展 +@property(nonatomic,assign)BOOL spDialInfoExtend; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 运动健康 + +/// 手表综合功能支持 +@interface JLHealthFuncComprehensive : NSObject + +/// 支持健康监控 +@property(nonatomic,assign)BOOL spHealthMonitor; +/// 支持个人信息 +@property(nonatomic,assign)BOOL spPersonInfo; +/// 支持睡眠检测 +@property(nonatomic,assign)BOOL spSleepMonitor; +/// 支持运动心率提醒 +@property(nonatomic,assign)BOOL spSportHeartRateRemind; +/// 支持久坐提醒 +@property(nonatomic,assign)BOOL spSedentaryRemind; +/// 支持压力自动检测 +@property(nonatomic,assign)BOOL spStressDetection; +/// 支持跌倒检测 +@property(nonatomic,assign)BOOL spFallDetection; +/// 支持传感器设置 +@property(nonatomic,assign)BOOL spSensorSetup; + +-(instancetype)init:(NSData *)data; + +@end + +/// 手表运动模式支持功能 +@interface JLHealthFuncSportModel : NSObject +/// 支持运动记录 +@property(nonatomic,assign)BOOL spRecord; +/// 支持运动统计 +@property(nonatomic,assign)BOOL spStatistics; +/// 支持室外运动 +@property(nonatomic,assign)BOOL spOutdoor; +/// 支持室内运动 +@property(nonatomic,assign)BOOL spIndoor; + +-(instancetype)init:(NSData *)data; +@end + +/// 手表计步功能支持功能 +@interface JLHealthFuncGSensorModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; +/// 支持运动步数 +@property(nonatomic,assign)BOOL spStep; + +-(instancetype)init:(NSData *)data; + +@end + + +/// 手表心率功能支持功能 +@interface JLHealthFuncHeartRateModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; +/// 支持连续测试 +@property(nonatomic,assign)BOOL spSerialTest; + +-(instancetype)init:(NSData *)data; + +@end + +/// 手表血氧功能支持功能 +@interface JLHealthFuncBloodOxygenModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; + +-(instancetype)init:(NSData *)data; + +@end + + +/// 手表海拔功能支持功能 +@interface JLHealthFuncAltitudeModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; + +-(instancetype)init:(NSData *)data; + +@end + +/// 手表GPS功能支持功能 +@interface JLHealthFuncGPSModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; + +-(instancetype)init:(NSData *)data; + +@end + + + +@interface JLDeviceHealthFuncModel : NSObject + +/// 手表综合功能支持 +@property(nonatomic,strong)JLHealthFuncComprehensive *spComprehensive; +/// 手表运动模式支持功能 +@property(nonatomic,strong)JLHealthFuncSportModel *spSportModel; +/// 手表计步功能支持功能 +@property(nonatomic,strong)JLHealthFuncGSensorModel *spGSensor; +/// 手表心率功能支持功能 +@property(nonatomic,strong)JLHealthFuncHeartRateModel *spHeartRate; +/// 手表血氧功能支持功能 +@property(nonatomic,strong)JLHealthFuncBloodOxygenModel *spBloodOxygen; +/// 手表海拔功能支持功能 +@property(nonatomic,strong)JLHealthFuncAltitudeModel *spAltitude; +/// 手表GPS功能支持功能 +@property(nonatomic,strong)JLHealthFuncGPSModel *spGPS; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 设备配置信息 + +/// 设备配置信息 +@interface JLDeviceConfigBasic:NSObject +/// 产品标志类型 +/// 0 - 手表 +/// 1 - TWS耳机 +/// 2 - SoundBox +/// 3 - Dongle 设备配置信息 +@property(nonatomic,assign)int deviceType; +/// 版本 +@property(nonatomic,assign)int version; + +/// 数据 +@property(nonatomic,copy)NSData *basicData; + +/// 功能配置所属设备的UUID +@property(nonatomic,strong)NSString * _Nullable mbleIdentifyStr; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 手表配置信息数据结构解析 + +/// 手表配置信息数据结构 +@interface JLDeviceConfigModel:JLDeviceConfigBasic +/// - 必须功能 +@property(nonatomic,strong)JLDeviceBasicFuncModel *basicFunc; +/// - 系统功能 +@property(nonatomic,strong)JLDeviceSystemFuncModel *systemFunc; +/// - 功能选项 +@property(nonatomic,strong)JLDeviceExportFuncModel * exportFunc; +/// - 运动健康 +@property(nonatomic,strong)JLDeviceHealthFuncModel *healthFunc; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigSoundBox.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigSoundBox.h new file mode 100644 index 000000000..b7f1bac94 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigSoundBox.h @@ -0,0 +1,31 @@ +// +// JLDeviceConfigSoundBox.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/21. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLDeviceConfigSoundBox : JLDeviceConfigBasic +/// 是否支持Auracast +@property (nonatomic, assign, readonly) BOOL isSupportAuracast; +/// 是否支持接收Auracast +@property (nonatomic, assign, readonly) BOOL isSupportReceiveAuracast; +/// 是否支持发射端 Auracast +@property (nonatomic, assign, readonly) BOOL isSupportLancerAuracast; +/// 是否支持TWS +/// 说明设备支持TWS设备功能。 +/// 包含设备名称,弹窗快连,按键设置,灯效设置、工作模式等功能; +@property (nonatomic, assign, readonly)BOOL isSupportTwsFunc; + +/// 是否支持重命名 +/// 设备是否支持修改设备名 +@property (nonatomic, assign, readonly)BOOL isSupportRename; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h new file mode 100644 index 000000000..8cc50200d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h @@ -0,0 +1,59 @@ +// +// JLDeviceConfigTws.h +// JL_BLEKit +// +// Created by EzioChan on 2024/1/23. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/// TWS设备配置 +@interface JLDeviceConfigTws : JLDeviceConfigBasic + +/// 是否支持替换提示音 +@property(nonatomic, assign)BOOL isSupportReplaceTipsVoice; + +/// 是否支持语音翻译 +/// Voice translation +@property(nonatomic,assign,readonly)BOOL isSupportTranslate; + +/// 是否使用A2DP播放 +/// 翻译耳机功能扩展 +/// is use A2DP to play +@property(nonatomic,assign,readonly)BOOL isUseA2DP; + +/// 是否支持Opus立体声 +@property(nonatomic,assign,readonly)BOOL isSupportOpusStereo; + +/// 是否支持耳机健康功能 +/// is support ear health +@property(nonatomic,assign, readonly)BOOL isSupportHealthData; + +/// 是否支持Auracast +@property (nonatomic, assign, readonly) BOOL isSupportAuracast; + +/// 是否支持接收Auracast +@property (nonatomic, assign, readonly) BOOL isSupportReceiveAuracast; + +/// 是否支持发射端 Auracast +@property (nonatomic, assign, readonly) BOOL isSupportLancerAuracast; + +/// 是否支持心跳机制 +@property (nonatomic, assign, readonly) BOOL isSupportHeartBeat; + +/// 是否支持TWS +/// 说明设备支持TWS设备功能。 +/// 包含设备名称,弹窗快连,按键设置,灯效设置、工作模式等功能; +@property (nonatomic, assign, readonly)BOOL isSupportTwsFunc; + +/// 是否支持重命名 +/// 设备是否支持修改设备名 +@property (nonatomic, assign, readonly)BOOL isSupportRename; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDhaFitting.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDhaFitting.h new file mode 100644 index 000000000..61570c0e2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDhaFitting.h @@ -0,0 +1,111 @@ +// +// JLDhaFitting.h +// JL_BLEKit +// +// Created by EzioChan on 2022/6/28. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + + +@class JL_ManagerM; + +/// 左右声道类型 +typedef NS_ENUM(UInt8, DhaChannel) { + ///左声道 + DhaChannel_left = 0x00, + ///右声道 + DhaChannel_right = 0x01 +}; + +/// 左右耳验配类型 +typedef NS_ENUM(UInt8, DhaFittingType) { + ///验配左耳 + DhaFittingType_left = 0x00, + ///验配右耳 + DhaFittingType_right = 0x00, + ///验配左右耳 + DhaFittingType_All = 0x00, +}; + + +/// 辅听耳机的信息 +@interface DhaFittingInfo : NSObject +/// /*版本号:DHA_FITTING_VERSION*/ +@property(nonatomic,assign)uint8_t version; +/// /*通道数:DHA_FITTING_CHANNEL_MAX*/ +@property(nonatomic,assign)uint8_t ch_num; +/// /*通道频率组:获取通道对应的freq*/ +@property(nonatomic,strong)NSArray *ch_freq; + +- (instancetype)initWithData:(NSData *)basicData; + +@end + +@interface DhaFittingSwitch : NSObject + +@property(nonatomic,assign)BOOL leftOn; + +@property(nonatomic,assign)BOOL rightOn; + +@end + + +/// 辅听验配对象 +@interface DhaFittingData : NSObject +/// 左右声道 +@property(nonatomic,assign)DhaChannel channel; + +/// 左开关 +@property(nonatomic,assign)BOOL leftOn; +/// 右开关 +@property(nonatomic,assign)BOOL rightOn; + +/// 保留位 +@property(nonatomic,assign)uint8_t reserved; +/// 通道频率 +@property(nonatomic,assign)uint16_t freq; +/// 通道增益 +@property(nonatomic,assign)float gain; + +-(NSData*)beData; + +@end + + +typedef void(^DhaInfoBlock)(DhaFittingInfo *info,NSArray *gains); + + +@interface JLDhaFitting : NSObject + +/// 获取设备当前辅听的基础信息 +/// @param result 辅听耳机信息 +/// @param manager manager ++(void)auxiGetInfo:(DhaInfoBlock)result Manager:(JL_ManagerM*)manager; + +/// 进行辅听验配 +/// @param dhaFit 辅听设置对象 +/// @param manager manager +/// @param result 设备工作状态回调 +-(void)auxiCheckByStep:(DhaFittingData *)dhaFit Manager:(JL_ManagerM*)manager Result:(JL_CMD_RESPOND __nullable)result; + +/// 退出辅听验配 +/// @param manager 命令对象 +/// @param result 设备工作状态回调 +-(void)auxiCloseManager:(JL_ManagerM*)manager Result:(JL_CMD_RESPOND __nullable)result; + +/// 保存验配设置 +/// @param gains 验配的增益数组 +/// @param manager manager +/// @param type 左右耳类型 +/// @param result 回调结果 +-(void)auxiSaveGainsList:(NSArray *) gains Manager:(JL_ManagerM*)manager Type:(DhaFittingType)type Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h new file mode 100644 index 000000000..c434e30f0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h @@ -0,0 +1,38 @@ +// +// JLDialInfoExtentManager.h +// JL_BLEKit +// +// Created by EzioChan on 2024/2/20. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_TypeEnum.h" + +@class JLDialInfoExtentedModel; +@class JL_ManagerM; + +NS_ASSUME_NONNULL_BEGIN + +/// 表盘信息扩展内容回调 +/// Dial information extended content block +typedef void(^JLDialInfoExtentedBlock)(JL_CMDStatus status,JLDialInfoExtentedModel *_Nullable op); + +/// 请求设备表盘信息扩展内容类 +/// Request device dial information extended content class +@interface JLDialInfoExtentManager : NSObject + +/// 单例 +/// Single ++(instancetype)share; + +/// 开始请求表盘信息扩展内容 +/// Start request dial information extended content +/// - Parameters: +/// - manager: 设备 - Device manager +/// - block: 状态回调 - Dial information extended content block +-(void)getDialInfoExtented:(JL_ManagerM *)manager result:(JLDialInfoExtentedBlock)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h new file mode 100644 index 000000000..9b516dc8b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h @@ -0,0 +1,54 @@ +// +// JLDialInfoExtentedModel.h +// JL_BLEKit +// +// Created by EzioChan on 2024/2/20. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +/// 设备表盘拓展信息 +/// device dial information extended model +@interface JLDialInfoExtentedModel : NSObject + + +/// 屏幕形状 +/// shape of screen +/// 默认形状 0x01 +/// default 0x01 circular +/// 0x01 - 圆形 circular +/// 0x02 - 矩形 rectangle +/// 0x03 - 圆角矩形 rounded rectangle +@property(nonatomic, assign) uint8_t shape; + + +/// 圆形半径 +/// radius of circle +@property(nonatomic, assign) CGFloat radius; + +/// 背景颜色 +/// background color +/// default is clean color +@property(nonatomic, strong) UIColor *backgroundColor; + +/// 屏幕尺寸 +/// 此项默认值为(240 * 240) +/// default is (240 * 240) +/// device screen sice +@property(nonatomic, assign) CGSize size; + + +/// 初始化 +/// initialize +/// - Parameter data: 数据 data +/// - Returns: 实例 +-(instancetype)initWithData:(NSData *)data Manager:(JL_ManagerM*)manager; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h new file mode 100644 index 000000000..e799fb084 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h @@ -0,0 +1,26 @@ +// +// JLDisconnectRemindModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 手表蓝牙断开提醒设置 +@interface JLDisconnectRemindModel : JLwSettingModel +//开关 +@property(nonatomic,assign)BOOL status; +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; + +-(instancetype)initWithData:(NSData *)data; + +- (instancetype)initWithModel:(WatchRemindType)type Status:(BOOL)status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLEcTimerHelper.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLEcTimerHelper.h new file mode 100644 index 000000000..57e83573f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLEcTimerHelper.h @@ -0,0 +1,33 @@ +// +// JLEcTimerHelper.h +// JL_BLEKit +// +// Created by EzioChan on 2025/3/13. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLEcTimerHelper : NSObject +/// 创建单次定时器 ++ (NSString *)startTimerWithTimeout:(NSTimeInterval)timeout completion:(void (^)(NSString *timerID))completion; + +/// 创建重复定时器 ++ (NSString *)setInterval:(NSTimeInterval)interval completion:(void (^)(NSString *timerID))completion; + +/// 停止定时器 ++ (void)stopTimer:(NSString *)timerID; + +/// 停止所有定时器 ++ (void)stopAllTimers; + +/// 开始计算耗时 ++ (NSUUID *)startCalculateTime; + +/// 停止计算耗时 ++ (NSTimeInterval) stopCalculateTime:(NSUUID *)uuid; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h new file mode 100644 index 000000000..ca5e0e6bc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h @@ -0,0 +1,26 @@ +// +// JLEmergencyContactModel.h +// JL_BLEKit +// +// Created by EzioChan on 2022/2/17. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 紧急联系人设置 +@interface JLEmergencyContactModel : JLwSettingModel + +/// 联系电话 +@property(nonatomic,strong)NSString *phoneNumber; + +-(instancetype)initWithData:(NSData *)data; + +-(instancetype)initWithPhoneNumber:(NSString *)phoneNumber; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h new file mode 100644 index 000000000..f88b192e1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h @@ -0,0 +1,31 @@ +// +// JLExerciseHeartRateRemindModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" +#import "JLWatchEnum.h" +NS_ASSUME_NONNULL_BEGIN + +/// 运动心率提醒设置 +@interface JLExerciseHeartRateRemindModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 上限心率0~255 +@property(nonatomic,assign)uint8_t maxRate; + +/// 心率区间划分方式: +/// 0x00:最大心率百分比 +/// 0x01:存储心率百分比s +@property(nonatomic,assign)WatchHeartRateType way; + +-(instancetype)initWithWay:(WatchHeartRateType)way maxRate:(uint8_t)max switchStatus:(BOOL)status; + +-(instancetype)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLFallDetectionModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLFallDetectionModel.h new file mode 100644 index 000000000..fc9367ffb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLFallDetectionModel.h @@ -0,0 +1,32 @@ +// +// JLFallDetectionModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 跌到监测设置 +@interface JLFallDetectionModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; +/// 电话号码 +@property(nonatomic,strong,readonly)NSString *phoneNumber; + +-(instancetype)initWithData:(NSData *)data; + +/// 构建一个跌倒监测的设置对象 +/// @param type 提醒类型 +/// @param status 开关 +/// @param pn 电话号码 +- (instancetype)initWithModel:(WatchRemindType)type Status:(BOOL)status phoneNumber:(NSString * _Nullable)pn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLFlashOpMgr.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLFlashOpMgr.h new file mode 100644 index 000000000..af6fc6185 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLFlashOpMgr.h @@ -0,0 +1,163 @@ +// +// JLFlashOpMgr.h +// JL_BLEKit +// +// Created by EzioChan on 2025/3/14. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 表盘操作类型 +typedef NS_ENUM(NSUInteger, FlashDialOperationType) { + ///< 读取当前表盘 + FlashDialOperationTypeReadCurrent = 0, + ///< 设置表盘 + FlashDialOperationTypeSet, + ///< 通知表盘 + FlashDialOperationTypeNotify, + ///< 获取表盘额外信息 + FlashDialOperationTypeGetExtraInfo, + ///< 激活自定义表盘(设置表盘背景) + FlashDialOperationTypeActivateCustom, + ///< 获取表盘背景 + FlashDialOperationTypeGetBackground, + /// 通知表盘背景变更 + FlashDialOperationTypeNoteBackground +}; + +/// 设备 Flash 操作 +@interface JLFlashOpMgr : NSObject + +/// 超时 +@property(nonatomic, assign)NSInteger timeOutMax; + +/// 获取Flash信息 +/// - Parameters: +/// - managerM: 蓝牙管理对象 +/// - result: 回调 +-(void)flashGetInfoMode:(JL_ManagerM *)managerM + Result:(void (^)(JLModel_Flash *_Nullable model, NSError *_Nullable error))result; +/// 写数据 +/// @param managerM 蓝牙管理器 +/// @param offset 偏移 +/// @param data 写入数据 +/// @param isLast 是否是最后一次 +/// @param result 回调 +- (void)flashWriteData:(JL_ManagerM *)managerM + Offset:(uint32_t)offset + Data:(NSData*)data + isLast:(BOOL)isLast + Result:(void (^)(BOOL success, NSError *error))result; +/// 插入文件 +/// @param managerM 蓝牙管理器 +/// @param fileName 文件名称 +/// @param fileSize 文件大小 +/// @param isLast 是否是最后一次 +/// @param result 回调 +- (void)flashInsertFile:(JL_ManagerM *)managerM + fileName:(NSString *)fileName + fileSize:(uint32_t)fileSize + isLast:(BOOL)isLast + Result:(void (^)(BOOL, NSError * _Nullable error))result; +/// 操作表盘 +/// @param managerM 蓝牙管理器 +/// @param type 操作类型 +/// @param filePath 文件路径 +/// @param result 回调 +- (void)flashDialOperation:(JL_ManagerM *)managerM + type:(FlashDialOperationType)type + filePath:(nullable NSString *)filePath + result:(void (^)(BOOL success, NSData *_Nullable response, NSError *_Nullable error))result; +/// 擦除数据 +/// @param managerM 蓝牙管理器 +/// @param offset 偏移 +/// @param clusterSize 簇大小 +/// @param result 回调 +- (void)flashEraseData:(JL_ManagerM *)managerM + Offset:(uint32_t)offset + ClusterSize:(uint16_t)clusterSize + Result:(void (^)(BOOL success, NSError *_Nullable error))result; + +/// 删除文件 +/// @param managerM 蓝牙管理器 +/// @param filePath 文件路径 +/// @param isStart 是否是最后一次 +/// @param result 回调 +- (void)flashDeleteFile:(JL_ManagerM *)managerM + FilePath:(nullable NSString *)filePath + isStart:(BOOL)isStart + Result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 写保护 +/// @param managerM 蓝牙管理器 +/// @param isEnable 是否启用 +/// @param result 回调 +- (void)flashWriteProtect:(JL_ManagerM *)managerM + isEnable:(BOOL)isEnable + Result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 更新表盘标记 +/// @param managerM 蓝牙管理器 +/// @param isStart 是否开启 +/// @param result 回调 +- (void)flashUpdateWatchFace:(JL_ManagerM *)managerM + isStart:(BOOL)isStart + Result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 查询写入是否成功 版本 0 +/// @param managerM 蓝牙管理器 +/// @param crc16 crc +/// @param result 回调 +- (void)flashCheckWriteSuccessV0:(JL_ManagerM *)managerM + crc16:(uint16_t)crc16 + Result:(void (^)(BOOL success, NSError *_Nullable error))result; + +/// 查询写入是否成功 版本 1 +/// @param managerM 蓝牙管理器 +/// @param crc16 crc +/// @param isSplit 是否分包 +/// @param result 回调 +- (void)flashCheckWriteSuccessV1:(JL_ManagerM *)managerM + crc16:(uint16_t)crc16 + isSplit:(BOOL)isSplit + Result:(void (^)(BOOL success, uint16_t leftSize, NSError *_Nullable error))result; +/// 设置升级资源标志 +/// @param managerM 蓝牙管理器 +/// @param flag flag 0-2 +/// flag 0:结束 +/// flag 1:开始 +/// flag 2:特殊升级流程开启 +/// @param result 回调 +- (void)flashSetUpgradeFlag:(JL_ManagerM *)managerM + flag:(uint8_t)flag + result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 获取文件信息 +/// @param managerM 蓝牙管理器 +/// @param filePath 文件路径 +/// @param result 回调 +- (void)flashGetFileInfo:(JL_ManagerM *)managerM + filePath:(NSString *)filePath + result:(void (^)(uint32_t size, uint16_t crc16, NSError *_Nullable error))result; + +/// 获取 Flash 剩余空间 +/// @param managerM 蓝牙管理器 +/// @param result 回调 +- (void)flashGetRemainingSpace:(JL_ManagerM *)managerM + result:(void (^)(uint32_t clusterLeftNum, NSError *_Nullable error))result; +/// 还原系统 +/// @param managerM 蓝牙管理器 +/// @param result 回调 +- (void)flashRestoreSystem:(JL_ManagerM *)managerM + result:(void (^)(BOOL success, NSError *_Nullable error))result; + +/// 获取资源存储空间 +/// @param managerM 蓝牙管理器 +/// @param result 回调 +- (void)flashGetResourceSpace:(JL_ManagerM *)managerM + result:(void (^)(uint32_t resSpace, NSError *_Nullable error))result; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLHttpHelper.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLHttpHelper.h new file mode 100644 index 000000000..765483722 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLHttpHelper.h @@ -0,0 +1,24 @@ +// +// HttpHelper.h +// JL_BLEKit +// +// Created by EzioChan on 2022/7/2. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import + +typedef void(^JLHttpDataCbk)(NSData * _Nullable data); +NS_ASSUME_NONNULL_BEGIN + +@interface JLHttpHelper : NSObject + ++(instancetype)share; + +-(void)dataTask:(NSURL *)url Result:(JLHttpDataCbk)result; + +-(NSData *)dataTaskSync:(NSURL *)url; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelCardInfo.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelCardInfo.h new file mode 100644 index 000000000..2377846ae --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelCardInfo.h @@ -0,0 +1,109 @@ +// +// JLModelCardInfo.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLCardInfo : NSObject + +/// 存储类型 +/// 0x00 USB +/// 0x01 SD0 +/// 0x02 SD1 +/// 0x03 flash +/// 0x04 lineIn +/// 0x05 flash2 +/// 0x06 flash3 +/// 0x07 ReservedArea +@property(nonatomic,assign)uint8_t type; + +/// 是否在线 +@property(nonatomic,assign)BOOL isOnline; + +/// 文件句柄 +@property(nonatomic,copy)NSData *handle; + +@end + +/// 存储卡信息 +@interface JLModelCardInfo:NSObject + +/// 版本信息 +@property(nonatomic,assign)uint8_t version; + +/// 存储卡在线数组 +@property(nonatomic,strong,readonly)NSArray *cardArray; + +/// USB 在线状态 +@property (nonatomic, assign) BOOL usbOnline; + +/// SD0 在线状态 +@property (nonatomic, assign) BOOL sd0Online; + +/// SD1 在线状态 +@property (nonatomic, assign) BOOL sd1Online; + +/// lineIn 在线状态 +@property (nonatomic, assign) BOOL lineInOnline; + +/// flash 在线状态 +@property (nonatomic, assign) BOOL flashOnline; + +/// flash 2 在线状态 +@property (nonatomic, assign) BOOL flash2Online; + +/// flash 3 在线状态 +@property (nonatomic, assign) BOOL flash3Online; + +/// ReservedArea 在线状态 +@property (nonatomic, assign) BOOL reservedAreaOnline; + +/// 是否处于设备复用状态 +@property (nonatomic, assign) BOOL isComplex; + +/// USB 句柄 +@property (nonatomic, copy)NSData *usbHandle; + +/// SD0 句柄 +@property (nonatomic, copy)NSData *sd0Handle; + +/// SD1 句柄 +@property (nonatomic, copy)NSData *sd1Handle; + +/// flash 句柄 +@property (nonatomic, copy)NSData *flashHandle; + +/// flash2 句柄 +@property (nonatomic, copy)NSData *flash2Handle; + +/// flash3 句柄 +@property (nonatomic, copy)NSData *flash3Handle; + +/// ReservedArea 句柄 +@property (nonatomic, copy)NSData *reservedAreaHandle; + +/// 卡在线数组信息 +@property (nonatomic, strong)NSArray *cardInfos; + +-(instancetype)initData:(NSData *)data; + +/// 是否具备存储卡在线 +-(BOOL)hasStorageCard; + +/// 获取存储卡句柄 +/// - Parameter cardType: 存储卡类型 +-(NSData *_Nullable)getCardHandle:(JL_CardType)cardType; + +@end + + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelDevFunc.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelDevFunc.h new file mode 100644 index 000000000..c57d0ed32 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelDevFunc.h @@ -0,0 +1,70 @@ +// +// JLModelDevFunc.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/29. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModelDevFunc : NSObject + +/// 当前模式 +/// 0x16代表低功耗模式) +@property (nonatomic, assign) uint8_t currentModel; + +/// 设备是否支持蓝牙(EDR) +@property (nonatomic, assign) BOOL isSupportEDR; + +/// 设备是否支持音乐模式 +@property (nonatomic, assign) BOOL isSupportDevMusic; + +/// 设备是否支持 RTC +@property (nonatomic, assign) BOOL isSupportDevRTC; + +/// 设备是否支持 LineIn +@property (nonatomic, assign) BOOL isSupportDevLineIn; + +/// 设备是否支持 FM +@property (nonatomic, assign) BOOL isSupportDevFm; + +/// 设备是否支持氛围灯 +@property (nonatomic, assign) BOOL isSupportDevLight; + +/// 设备是否支持 FMTX +@property (nonatomic, assign) BOOL isSupportDevFMTX; + +/// 设备是否支持 EQ +@property (nonatomic, assign) BOOL isSupportDevEQ; + +/// 设备是否支持 SPDIF +@property (nonatomic, assign, readonly) BOOL isSupportSPDIF; + +/// 设备是否支持 PC Server +@property (nonatomic, assign, readonly) BOOL isSupportPCServer; + +/// 是否显示不在线的usb 、sd、linein功能 +@property (nonatomic, assign) BOOL isShowOfflineFunc; + +/// 设备是否持有 USB +@property (nonatomic, assign) BOOL isSupportUSB; + +/// 设备是否持有 SD0 +@property (nonatomic, assign) BOOL isSupportSD0; + +/// 设备是否持有 SD1 +@property (nonatomic, assign) BOOL isSupportSD1; + +/// 设备是否支持网络电台 +@property (nonatomic, assign) BOOL isSupportNetRadio; + +-(instancetype)initWithData:(NSData *)data; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h new file mode 100644 index 000000000..5b61f6797 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h @@ -0,0 +1,49 @@ +// +// JLModelNoiseDetection.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLModelNoiseDetection; + +@protocol JLModelNoiseDetectionDelegate + +-(void)noiseDetectionGetInfo:(JLModelNoiseDetection *)model; + +@end + +typedef void(^JLModelNoiseDetectionBlock)(JLModelNoiseDetection *model); + +/// TWS风噪检测 +@interface JLModelNoiseDetection : JLCmdBasic + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 风噪检测: +/// 0x00:关闭 +/// 0x01:开启 +@property(nonatomic,assign)uint8_t status; + +@property(nonatomic,weak)id delegate; + +/// 获取设备风噪检测 +/// - Parameter manager: 设备对象 +-(void)noiseDetectionStatusGet:(JL_ManagerM *)manager Result:(JLModelNoiseDetectionBlock)block; + +/// 设置设备风噪检测 +/// - Parameters: +/// - manager: 设备对象 +/// - status: 开关 +/// - result:回调 +-(void)noiseDetectionStatusSet:(JL_ManagerM *)manager Status:(uint8_t)status Result:(JL_CMD_RESPOND)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelPCServer.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelPCServer.h new file mode 100644 index 000000000..81ba71421 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelPCServer.h @@ -0,0 +1,39 @@ +// +// JLModelPCServer.h +// JL_BLEKit +// +// Created by EzioChan on 2024/10/15. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, JLPcServerOpType) { + /// previous song + /// 上一首 + JLPcServerOpTypePrevious = 0x00, + /// next song + /// 下一首 + JLPcServerOpTypeNext = 0x01, +}; + +/// PC 从机模式 +@interface JLModelPCServer : NSObject + +/// 是否正在播放 +@property(nonatomic,assign)BOOL playStatus; + +/// 操作类型 +@property(nonatomic,assign)JLPcServerOpType opType; + +-(instancetype)initParseData:(NSData *)data; + +/// 更新 +/// - Parameter data: 数据 +- (void)updateParseData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h new file mode 100644 index 000000000..80963a2ee --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h @@ -0,0 +1,51 @@ +// +// JLModelSceneNoiseReduction.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLModelSceneNoiseReduction; + +@protocol JLModelSceneNoiseReductionDelegate + +-(void)sceneNoiseReductionGetInfo:(JLModelSceneNoiseReduction *)model; + +@end + +typedef void(^JLSceneNoiseReductionBlock)(JLModelSceneNoiseReduction *model); + +/// TWS场景降噪 +@interface JLModelSceneNoiseReduction : JLCmdBasic + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 场景降噪模式: +/// 0x00:智能 +/// 0x01:轻度 +/// 0x02:均衡 +/// 0x03:深度 +@property(nonatomic,assign)uint8_t scene; + +@property(nonatomic,weak)id delegate; + +/// 获取设备场景降噪 +/// - Parameter manager: 设备对象 +-(void)sceneNoiseStatusGet:(JL_ManagerM *)manager Result:(JLSceneNoiseReductionBlock)block; + +/// 设置设备场景降噪 +/// - Parameters: +/// - manager: 设备对象 +/// - scene: 场景降噪 +/// - result:回调 +-(void)sceneNoiseStatusSet:(JL_ManagerM *)manager Scene:(uint8_t)scene Result:(JL_CMD_RESPOND)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h new file mode 100644 index 000000000..cc0c0c24c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h @@ -0,0 +1,93 @@ +// +// JLModelSmartPickFree.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JLModelSmartPickFree; + +@protocol JLModelSmartPickFreeDelegate + +-(void)smartPickFreeGetInfo:(JLModelSmartPickFree *)model; + +@end + +/// 智能免摘的耳机管理类 +@interface JLModelSmartPickFree : NSObject + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 功能类型 +/// 0x00:仅设置开关 +/// 0x01:仅设置灵敏度 +/// 0x02:仅设置启动后关闭时间 +/// 0xff:仅获取全部参数 +@property(nonatomic,assign)uint8_t funcType; + +/// 功能开关 +/// 当功能类型 funcType 为 0x00 时此属性需要对应设置 +/// 当功能类型 funcType 为 0xFF 时此属性为设备端功能开关状态 +@property(nonatomic,assign)BOOL funcStatus; + +/// 灵敏度 +/// 当功能类型 funcType 为 0x01 时此属性需要对应设置 +/// 当功能类型 funcType 为 0xFF 时此属性为设备端灵敏度 +/// 0x00:高灵敏度 +/// 0x01:低灵敏度 +@property(nonatomic,assign)uint8_t senivitiy; + +///启动后关闭时间 +///当功能类型 funcType 为 0x02 时此属性需要对应设置的时间 +///当功能类型 funcType 为 0xFF 时此属性为设备端启动后关闭时间 +///0x00:不自动关闭; +///0x01:短(5s); +///0x02:标准(15s); +///0x03:长(30s); +@property(nonatomic,assign)uint8_t autoInterval; + + +@property(nonatomic,weak)id delegate; + +/// 设置智能免摘功能开关 +/// - Parameters: +/// - manager: 设备对象 +/// - status: 开关 +/// - result: 结果回调 +-(void)smartPickFreeSetOn:(JL_ManagerM *)manager st:(BOOL)status Result:(JL_CMD_RESPOND)result; + +/// 设置智能免摘灵敏度 +/// - Parameters: +/// - manager: 设备对象 +/// - senivitiy: 灵敏度 +/// 0x00:高灵敏度 +/// 0x01:低灵敏度 +/// - result: 结果回调 +-(void)smartPickFreeSetSenivitiy:(JL_ManagerM *)manager Senivitiy:(uint8_t)senivitiy Result:(JL_CMD_RESPOND)result; + +/// 设置智能免摘启动后关闭时间 +/// - Parameters: +/// - manager: 设备对象 +/// - interval: 启动后关闭时间 +/// 0x01:短(5s); +/// 0x02:标准(15s); +/// 0x03:长(30s); +/// - result: 结果回调 +-(void)smartPickFreeSetAutoInterval:(JL_ManagerM *)manager Interval:(uint8_t)interval Result:(JL_CMD_RESPOND)result; + + +/// 查询设备状态 +/// - Parameter manager: 设备对象 +-(void)smartPickFreeGet:(JL_ManagerM *)manager; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSpdif.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSpdif.h new file mode 100644 index 000000000..da4007b33 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelSpdif.h @@ -0,0 +1,38 @@ +// +// JLModelSpdif.h +// JL_BLEKit +// +// Created by EzioChan on 2024/10/15. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, JLSpdifAudioType) { + /// HDMI + JLSpdifAudioTypeHDMI = 0x00, + /// 光纤 Fiber Optics + JLSpdifAudioTypeFO = 0x01, + /// 同轴 + JLSpdifAudioTypeCoaxial = 0x02, +}; + +@interface JLModelSpdif : NSObject + +/// 是否正在播放 +@property(nonatomic,assign)BOOL playStatus; + +/// 音源 +@property(nonatomic,assign)JLSpdifAudioType audioType; + +-(instancetype)initParseData:(NSData *)data; + +/// 更新数据 +/// - Parameter data: 数据 +-(void)updateParseData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelVocalBoost.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelVocalBoost.h new file mode 100644 index 000000000..0a64173cd --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModelVocalBoost.h @@ -0,0 +1,54 @@ +// +// JLModelVocalBoost.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@class JLModelVocalBoost; + +@protocol JLModelVocalBoostDelegate + +-(void)vocalBoostGetInfo:(JLModelVocalBoost *)model; + +@end + +typedef void(^JLModelVocalBoostBlock)(JLModelVocalBoost *model); + + +/// TWS人声增强 +@interface JLModelVocalBoost : JLCmdBasic + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 人声增强: +/// 0x00: 关闭人声增强模式; +/// 0x01: 开启人声增强模式 +@property(nonatomic,assign)uint8_t status; + +@property(nonatomic,weak)id delegate; + +/// 获取设备人声增强 +/// - Parameter manager: 设备对象 +-(void)vocalBoostStatusGet:(JL_ManagerM *)manager Result:(JLModelVocalBoostBlock)block; + +/// 设置设备人声增强 +/// - Parameters: +/// - manager: 设备对象 +/// - status: 开关 +/// 0x00: 关闭人声增强模式; +/// 0x01: 开启人声增强模式 +/// - result:回调 +-(void)vocalBoostStatusSet:(JL_ManagerM *)manager Status:(uint8_t)status Result:(JL_CMD_RESPOND)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_ANC.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_ANC.h new file mode 100644 index 000000000..7b586e92a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_ANC.h @@ -0,0 +1,47 @@ +// +// JLModel_ANC.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8,JL_AncMode) { + JL_AncMode_Normal = 0, //普通模式 + JL_AncMode_NoiseReduction = 1, //降噪模式 + JL_AncMode_Transparent = 2, //通透模式 +}; + +@interface JLModel_ANC : NSObject +@property(assign,nonatomic)JL_AncMode mAncMode; //耳机降噪模式 +@property(assign,nonatomic) uint16_t mAncMax_L; //左耳最大增益 +@property(assign,nonatomic) uint16_t mAncCurrent_L; //左耳当前增益 +@property(assign,nonatomic) uint16_t mAncMax_R; //右耳最大增益 +@property(assign,nonatomic) uint16_t mAncCurrent_R; //右耳当前增益 +-(NSData*)dataModel; +@end + + + +/// 手机名/经典蓝牙地址信息 +@interface JLTWSAddrNameInfo : NSObject + +/// 是否被绑定 +@property(nonatomic,assign)uint8_t isBind; + +/// 手机蓝牙地址 +@property(nonatomic,strong)NSData *phoneEdrAddr; + +/// 手机名称 +@property(nonatomic,strong)NSString *phoneName; + +/// 初始化数据成对象 +/// - Parameter data: 数据内容 ++(NSArray*)dataBeObjc:(NSData *)data; + +@end +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h new file mode 100644 index 000000000..a4b6f8535 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h @@ -0,0 +1,24 @@ +// +// JLModel_AlarmSetting.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_AlarmSetting : NSObject +@property(assign,nonatomic)uint8_t index; //闹钟索引 +@property(assign,nonatomic)uint8_t isCount; //是否可以设置【闹铃次数】 +@property(assign,nonatomic)uint8_t count; //闹铃次数 +@property(assign,nonatomic)uint8_t isInterval; //是否可以设置【时间间隔】 +@property(assign,nonatomic)uint8_t interval; //时间间隔 +@property(assign,nonatomic)uint8_t isTime; //是否可以设置【时间长度】 +@property(assign,nonatomic)uint8_t time; //时间长度 +-(NSData*)dataModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_BT.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_BT.h new file mode 100644 index 000000000..86b4a4098 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_BT.h @@ -0,0 +1,20 @@ +// +// JLModel_BT.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_BT : NSObject +@property(assign,nonatomic)uint32_t mBtType; +@property(strong,nonatomic)NSData *__nullable mBtAddress; +@property(assign,nonatomic)uint8_t mBtRssi; +@property(strong,nonatomic)NSString *__nullable mBtName; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Device.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Device.h new file mode 100644 index 000000000..d3af4edfe --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Device.h @@ -0,0 +1,643 @@ +// +// JLModel_Device.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Modify by EzioChan on 2023/03/16 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_DevicePlatform) { + JL_DevicePlatformTuring = 0, //适用于【图灵】 + JL_DevicePlatformDeepbrain = 1, //适用于【Deepbrain】 + JL_DevicePlatformUnknown, +}; +typedef NS_ENUM(UInt8, JL_SDKType) { + JL_SDKTypeAI = 0x0, //AI SDK AC692x + JL_SDKTypeST = 0x1, //标准 SDK AC692x + JL_SDKType693xTWS = 0x2, //TWS + JL_SDKType695xSDK = 0x3, // + JL_SDKType697xTWS = 0x4, //TWS + JL_SDKType696xSB = 0x5, //696x_soundbox + JL_SDKType696xTWS = 0x6, //TWS + JL_SDKType695xSC = 0x7, //695x_sound_card + JL_SDKType695xWATCH = 0x8, //BR23 Watch + JL_SDKType701xWATCH = 0x9, //BR28 Watch + JL_SDKTypeManifestEarphone = 0x0A, //ManifestEarphone + JL_SDKTypeManifestSoundbox = 0x0B, //ManifestSoundbox + JL_SDKTypeChargingCase = 0x0C, //ChargingCase 彩屏充电仓 + JL_SDKType707nWATCH = 0x0D, //707N Watch + JL_SDKTypeDongle = 0x0E, //Dongle + JL_SDKTypeCommon = 0x0F, //通用 + JL_SDKTypeUnknown, +}; +typedef NS_ENUM(UInt8, JL_FunctionCode) { + JL_FunctionCodeBT = 0, //BT + JL_FunctionCodeMUSIC = 1, //音乐 + JL_FunctionCodeRTC = 2, //闹钟 + JL_FunctionCodeLINEIN = 3, //LineIn + JL_FunctionCodeFM = 4, //FM + JL_FunctionCodeLIGHT = 5, //LIGHT + JL_FunctionCodeFMTX = 6, //发射频点 + JL_FunctionCodeEQ = 7, //EQ + JL_FunctionCodeSPDIF = 8, //SPDIF + JL_FunctionCodePCServer = 9, //PCServer + JL_FunctionCodeCOMMON = 0xff, //通用 +}; + +typedef NS_ENUM(UInt8, JL_FCmdMusic) { + JL_FCmdMusicPP = 0x01, //PP按钮 + JL_FCmdMusicPREV = 0x02, //上一曲 + JL_FCmdMusicNEXT = 0x03, //下一曲 + JL_FCmdMusicMODE = 0x04, //切换播放模式 + JL_FCmdMusicEQ = 0x05, //EQ + JL_FCmdMusicFastBack = 0x06, //快退 + JL_FCmdMusicFastPlay = 0x07, //快进 +}; + +typedef NS_ENUM(UInt8, JL_OtaBleAllowConnect) { + JL_OtaBleAllowConnectYES = 0, //OTA 允许BLE连接 + JL_OtaBleAllowConnectNO = 1, //OTA 禁止BLE连接 + JL_OtaBleAllowConnectUnknow = 2, //未定义 +}; +typedef NS_ENUM(UInt8, JL_BLEOnly) { //是否仅仅支持BLE + JL_BLEOnlyNO = 0, //否 + JL_BLEOnlyYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_FasheEnable) { //是否发射模式 + JL_FasheEnableNO = 0, //否 + JL_FasheEnableYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_FasheType) { //当前是否为发射模式 + JL_FasheTypeNO = 0, //否 + JL_FasheTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_MD5Type) { //是否支持MD5校验 + JL_MD5TypeNO = 0, //否 + JL_MD5TypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_GameType) { //是否为游戏模式 + JL_GameTypeNO = 0, //否 + JL_GameTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_SearchType) { //是否支持查找设备 + JL_SearchTypeNO = 0, //否 + JL_SearchTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_KaraokeType) { //是否支持卡拉OK + JL_KaraokeTypeNO = 0, //否 + JL_KaraokeTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8,JL_KaraokeEQType){ //是否禁止app调节设备音效 + JL_KaraokeEQTypeNO = 0, //不禁止 + JL_KaraokeEQTypeYES = 1, //禁止 +}; +typedef NS_ENUM(UInt8,JL_FlashType){ //是否支持外挂Flash + JL_FlashTypeNO = 0, //不支持 + JL_FlashTypeYES = 1, //支持 +}; +typedef NS_ENUM(UInt8,JL_AncType){ //是否支持ANC + JL_AncTypeNO = 0, //不支持 + JL_AncTypeYES = 1, //支持 +}; +typedef NS_ENUM(UInt8, JL_AudioFileType) { //是否支持音频文件传输 + JL_AudioFileTypeNO = 0, //否 + JL_AudioFileTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_FileSubcontractTransferCrc16Type){//文件分包传输是否支持crc16方式 + JL_FileSubcontractTransferCrc16TypeNO = 0, //不支持 + JL_FileSubcontractTransferCrc16TypeYES = 1, //支持 +}; +typedef NS_ENUM(UInt8, JL_ReadFileInNewWayType){ //是否以新的方式读取固件文件 + JL_ReadFileInNewWayTypeNO = 0, //不支持 + JL_ReadFileInNewWayTypeYES = 1, //支持 +}; + +typedef NS_ENUM(UInt8, JL_SmallFileWayType){ //是否支持小文件传输 + JL_SmallFileWayTypeNO = 0, //不支持 + JL_SmallFileWayTypeYES = 1, //支持 +}; + +typedef NS_ENUM(UInt8,JL_CALLType) { + JL_CALLType_OFF = 0, //空闲 + JL_CALLType_ON = 1, //通话中 +}; + +typedef NS_ENUM(UInt8, JL_LightState) { + JL_LightStateClose = 0x00, //关闭 + JL_LightStateOpen = 0x01, //开启 + JL_LightStateSetting = 0x02, //设置模式 +}; +typedef NS_ENUM(UInt8, JL_LightMode) { + JL_LightModeNormal = 0x00, //彩色模式 + JL_LightModeFlash = 0x01, //闪烁模式 + JL_LightModeScene = 0x02, //情景模式 +}; +typedef NS_ENUM(UInt8, JL_LightFlashModeIndex) { + JL_LightModeIndexColorfulFlash = 0x00, //七彩闪烁 + JL_LightModeIndexRedFlash = 0x01, //红色闪烁 + JL_LightModeIndexOrangeFlash = 0x02, //橙色闪烁 + JL_LightModeIndexYeallowFlash = 0x03, //黄色闪烁 + JL_LightModeIndexGreenFlash = 0x04, //绿色闪烁 + JL_LightModeIndexCyanFlash = 0x05, //青色闪烁 + JL_LightModeIndexBlueFlash = 0x06, //蓝色闪烁 + JL_LightModeIndexPurpleFlash = 0x07, //紫色闪烁 +}; + +typedef NS_ENUM(UInt8, JL_LightFlashModeFrequency) { + JL_LightFlashModeFrequencyFast = 0x00, //快闪 + JL_LightFlashModeFrequencySlow = 0x01, //慢闪 + JL_LightFlashModeFrequencyNormal = 0x02, //缓闪 + JL_LightFlashModeFrequencyMusic = 0x03, //音乐闪烁 +}; + +typedef NS_ENUM(UInt8, JL_LightSceneMode) { + JL_LightSceneModeRainbow = 0x00, //彩虹 + JL_LightSceneModeHeartbeat = 0x01, //心跳 + JL_LightSceneModeCandlelight = 0x02, //烛火 + JL_LightSceneModeNightLight = 0x03, //夜灯 + JL_LightSceneModeStage = 0x04, //舞台 + JL_LightSceneModeDiffuseColourBreathing = 0x05, //漫彩呼吸 + JL_LightSceneModeDiffuseRedBreathing = 0x06, //漫红呼吸 + JL_LightSceneModeDiffuseGreenBreathing = 0x07, //漫绿呼吸 + JL_LightSceneModeDiffuseBlueBreathing = 0x08, //漫蓝呼吸 + JL_LightSceneModeGreenMood = 0x09, //绿色心情 + JL_LightSceneModeSettingSunView = 0x10, //夕阳美景 + JL_LightSceneModeMusicRhythm = 0x11, //音乐律动 +}; + +typedef NS_ENUM(UInt8, JL_FileHandleType) { //文件句柄 + JL_FileHandleTypeSD_0 = 0, //SD_0 + JL_FileHandleTypeSD_1 = 1, //SD_1 + JL_FileHandleTypeFLASH = 2, //FLASH + JL_FileHandleTypeUSB = 3, //USB + JL_FileHandleTypeLineIn = 4, //LineIn + JL_FileHandleTypeFLASH2 = 5, //FLASH2 + JL_FileHandleTypeFLASH3 = 6, //FLASH3 + JL_FileHandleTypeReservedArea = 7, //ReservedArea +}; + +typedef NS_ENUM(UInt8, JL_MusicMode) { + JL_MusicModeLoopAll = 0x01, //全部循环 + JL_MusicModeLoopDevice = 0x02, //单设备循环 + JL_MusicModeLoopOne = 0x03, //单曲循环 + JL_MusicModeRandomDevice = 0x04, //单设备随机 + JL_MusicModeLoopFolder = 0x05, //文件夹循环 +}; + +typedef NS_ENUM(UInt8, JL_MusicStatus) { + JL_MusicStatusPlay = 0x01, //播放 + JL_MusicStatusPause = 0x00, //暂停 +}; + +typedef NS_ENUM(UInt8, JL_EQType) { //EQ段数类型 + JL_EQType10 = 0, //固定10段式 + JL_EQTypeMutable = 1, //动态EQ段 +}; + +//---------------------------------------------------------// +#pragma mark - RTC +typedef NS_ENUM(UInt8, JL_RTCAlarmType) { //是否支持闹铃设置 + JL_RTCAlarmTypeNO = 0, //不支持 + JL_RTCAlarmTypeYES = 1, //支持 +}; +//---------------------------------------------------------// +#pragma mark - LINEIN +typedef NS_ENUM(UInt8, JL_LineInStatus) { + JL_LineInStatusPause = 0x00, //暂停 + JL_LineInStatusPlay = 0x01, //播放 + JL_LineInStatusUnknown, +}; +//---------------------------------------------------------// +#pragma mark - FM +typedef NS_ENUM(UInt8, JL_FMStatus) { + JL_FMStatusPause = 0x01, //播放 + JL_FMStatusPlay = 0x02, //暂停 + JL_FMStatusSearching = 0x03, //搜索中 + JL_FMStatusUnknown, +}; +typedef NS_ENUM(UInt8, JL_FMMode) { + JL_FMMode875Mhz = 0x00, //87.5-108.0Mhz + JL_FMMode760Mhz = 0x01, //76.5-108.0Mhz + JL_FMModeUnknown, +}; + +typedef NS_ENUM(UInt8,JL_ReverberationType) { + JL_ReverberationTypeNormal = 0, //混响 + JL_ReverberationTypeDynamic = 1, //限幅器 +}; + + +@interface JLModel_Device : NSObject + +///设备UUID +@property (copy, nonatomic) NSString *mBLE_UUID; + +///协议版本 +@property (copy, nonatomic) NSString *versionProtocol; + +///固件版本 +@property (copy, nonatomic) NSString *versionFirmware; + +/// 单包固件最大发送值,APP单次能收到最大的值 +@property (assign,nonatomic) NSInteger getMtu; + +/// 单包固件最大接收值(MaxMtu)APP单次可发送最大值 +@property (assign,nonatomic) NSInteger sendMtu; + +///SDK类型 +@property (assign,nonatomic) JL_SDKType sdkType; + +///电量0~9 +@property (assign,nonatomic) NSUInteger battery; + +/// 是否支持音量同步 +@property (assign,nonatomic) BOOL isSyncVoice; + +/// 最低允许升级资源/OTA电量 +@property (assign,nonatomic) NSInteger lowBattery; + +///当前音量 +@property (assign,nonatomic) NSUInteger currentVol; + +///最大音量 +@property (assign,nonatomic) NSUInteger maxVol; + +///经典蓝牙地址 +@property (copy, nonatomic) NSString *btAddr; + +///平台序列号 +@property (copy, nonatomic) NSString *license; + +///平台类型(图灵,Deepbrain) +@property (assign,nonatomic) JL_DevicePlatform platform; + +///经典蓝牙状态 +@property (assign,nonatomic) JL_DeviceBTStatus btStatus; + +///BIT(0):BT BIT(1):MUSIC BIT(2):RTC +@property (assign,nonatomic) uint32_t function __deprecated_msg("已过时,可使用deviceFuncs"); + +///当前处于的模式 +@property (assign,nonatomic) JL_FunctionCode currentFunc; + +///USb,SD,LineIn,网络电台是否在线 +@property (assign,nonatomic) uint8_t funcOnlineStatus; + +/// 设备功能模式支持 +@property (strong,nonatomic) JLModelDevFunc *deviceFuncs; + +///uboot版本 +@property (copy, nonatomic) NSString *versionUBoot; + +///设备单、双备份 +@property (assign,nonatomic) JL_Partition partitionType __deprecated_msg("已过时,可使用JL_OTAManager"); + + +/// 是否支持复用空间进行 OTA +@property (assign,nonatomic) BOOL isSupportReuseSpaceOTA __deprecated_msg("已过时,可使用JL_OTAManager"); + + +///OTA状态 +@property (assign,nonatomic) JL_OtaStatus otaStatus __deprecated_msg("已过时,可使用JL_OTAManager"); + +///耳机单备份 是否需要强制升级 +@property (assign,nonatomic) JL_OtaHeadset otaHeadset __deprecated_msg("已过时,可使用JL_OTAManager"); + +///手表资源 是否需要强制升级 +@property (assign,nonatomic) JL_OtaWatch otaWatch __deprecated_msg("已过时,可使用JL_OTAManager"); + +///资源是否需要强制升级 +@property (assign,nonatomic) JLOtaSourcesExtendMode otaSourceMode __deprecated_msg("已过时,可使用JL_OTAManager"); + + +///厂商ID +@property (copy, nonatomic) NSString *pidvid; + +///授权Key +@property (copy, nonatomic) NSString *authKey; + +///授权Code +@property (copy, nonatomic) NSString *proCode; + +///是否下载BootLoader +@property (assign,nonatomic) JL_BootLoader bootLoaderType; + +///OTA是否允许BLE连接 +@property (assign,nonatomic) JL_OtaBleAllowConnect otaBleAllowConnect; + +///是否仅仅支持BLE +@property (assign,nonatomic) JL_BLEOnly bleOnly; + +///ble蓝牙地址 +@property (copy, nonatomic) NSString *bleAddr; + +///是否支持发射模式 +@property (assign,nonatomic) JL_FasheEnable fasheEnable; + +///当前是否为发射模式 +@property (assign,nonatomic) JL_FasheType fasheType; + +///是否支持MD5固件校验 +@property (assign,nonatomic) JL_MD5Type md5Type; + +///是否为游戏模式 +@property (assign,nonatomic) JL_GameType gameType; + +///是否支持游戏模式 +@property (assign,nonatomic) BOOL isSupportGameModel; + +///是否支持查找设备 +@property (assign,nonatomic) JL_SearchType searchType; + +///是否支持卡拉OK +@property (assign,nonatomic) JL_KaraokeType karaokeType; + +///是否禁止app调节设备音效 +@property (assign,nonatomic) JL_KaraokeEQType karaokeEQType; + +///是否外挂flash +@property (assign,nonatomic) JL_FlashType flashType; + +///是否支持ANC +@property (assign,nonatomic) JL_AncType ancType; + +///是否支持音频文件传输功能 +@property (assign,nonatomic) JL_AudioFileType audioFileType; + +/// 是否支持日志获取 +@property (assign,nonatomic) BOOL isSupportLog; + +/// 是否支持辅听设置 +@property (assign,nonatomic) BOOL isSupportDhaFitting; + +///验配信息交互:版本、通道数、通道频率 +///Fitting information interaction: version, channel number, channel frequency +@property (strong,nonatomic) DhaFittingInfo *dhaFitInfo; + +/// 验配中断/开启的对象,仅限于监听 +/// Fitting interrupted/opened object, only for listening +@property (strong,nonatomic) DhaFittingSwitch *dhaFitSwitch; + +/// 通道增益值数组,先左耳后右耳,个数和验配信息中返回的一致 +/// Array of channel gain values, first left ear then right ear, the number is the same as the one returned in the fitting information +@property (strong,nonatomic) NSArray *dhaFittingList; + +/// 是否支持获取设备配置信息 +@property (assign,nonatomic) BOOL isSupportDevConfigInfo; + +/// 是否支持自适应ANC +@property (assign,nonatomic) BOOL isSupportAutoANC; + +///低音 +@property (assign,nonatomic) int pitchLow; + +///高音 +@property (assign,nonatomic) int pitchHigh; + +///外挂flash信息 +@property (copy, nonatomic) JLModel_Flash *flashInfo; + +/// 设备信息中指明,外部SD卡/U盘引脚是否被复用 +/// Specify in the device information, whether the external SD card/U disk pins are multiplexed +@property (assign,nonatomic) BOOL devPinMultiplex; + + +/*--- File INFO ---*/ +///当前文件传输句柄 +@property (assign,nonatomic) JL_FileHandleType currentFileHandleType; +///当前文件所存放的位置 +@property (assign,nonatomic,readonly) JL_CardType currentCardType; +///文件分包传输是否支持crc16方式 +@property (assign,nonatomic) JL_FileSubcontractTransferCrc16Type fileSubcontractTransferCrc16Type; +///是否以新的方式读取固件文件 +@property (assign,nonatomic) JL_ReadFileInNewWayType readFileInNewWayType; +///是否小文件方式传输 +@property (assign,nonatomic) JL_SmallFileWayType smallFileWayType; + +/*--- 公用INFO ---*/ +//MARK: - 存储信息 +///卡的数组 +@property (copy, nonatomic) NSArray *cardArray __attribute__((deprecated ( "Use the instance property cardArray of the JLModelCardInfo class instead, this property is about to become invalid"))); +///USB handle +@property (copy, nonatomic) NSString *handleUSB __attribute__((deprecated ( "Use the instance property usbHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_0 handle +@property (copy, nonatomic) NSString *handleSD_0 __attribute__((deprecated ( "Use the instance property sd0Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_1 handle +@property (copy, nonatomic) NSString *handleSD_1 __attribute__((deprecated ( "Use the instance property sd1Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash handle +@property (copy, nonatomic) NSString *handleFlash __attribute__((deprecated ( "Use the instance property flashHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash2 handle +@property (copy, nonatomic) NSString *handleFlash2 __attribute__((deprecated ( "Use the instance property flash2Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +///Flash3 handle +@property (copy, nonatomic) NSString *handleFlash3 __attribute__((deprecated ( "Use the instance property flash3Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +///USB handle Data +@property (copy, nonatomic) NSData *handleUSBData __attribute__((deprecated ( "Use the instance property usbHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_0 handle Data +@property (copy, nonatomic) NSData *handleSD_0Data __attribute__((deprecated ( "Use the instance property sd0Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_1 handle Data +@property (copy, nonatomic) NSData *handleSD_1Data __attribute__((deprecated ( "Use the instance property sd1Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash handle Data +@property (copy, nonatomic) NSData *handleFlashData __attribute__((deprecated ( "Use the instance property flashHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash2 handle Data +@property (copy, nonatomic) NSData *handleFlash2Data __attribute__((deprecated ( "Use the instance property flash2Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +///Flash3 handle Data +@property (copy, nonatomic) NSData *handleFlash3Data __attribute__((deprecated ( "Use the instance property flash3Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +/// 设备存储信息(卡信息) +@property (strong, nonatomic)JLModelCardInfo *cardInfo; + +/// 错误原因 +@property (copy, nonatomic) NSString *errReason; + +/// 发射频点 +@property (assign,nonatomic) uint16_t fmtxPoint; +/// 0x00:普通模式 0x01:发射模式 +@property (assign,nonatomic) uint8_t mTWS_Mode; +/// 0x00:未连接 0x01:已连接 +@property (assign,nonatomic) uint8_t mTWS_Status; +/// 发射模式中,连接的外设地址 +@property (copy ,nonatomic) NSString *mTWS_Addr; +/// 当前ANC的模式 +@property (copy ,nonatomic) JLModel_ANC *mAncModeCurrent; +/// ANC模式数组 +@property (copy ,nonatomic) NSMutableArray *mAncModeArray; +///通话状态 +@property (assign,nonatomic) JL_CALLType mCallType; + +/// 混响所支持的类型 +@property (strong,nonatomic) NSArray *reverberationTypes; +/// 混响的开关 +@property (assign,nonatomic) int reverberationSwitchState; +/// 深度值 +@property (assign,nonatomic) int depthValue; +/// 混响度值 +@property (assign,nonatomic) int intensityValue; +/// 混响幅值 +@property (assign,nonatomic) int dynamicLimiterValue; + +//MARK: - 卡拉OK +///卡拉OK 固件返回的掩码 +@property (assign,nonatomic)uint64_t kalaokMask __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SoundCardManager class instead, this property is about to become invalid"))); + +///卡拉OK 频率数组 +@property (strong,nonatomic)NSArray *mKaraokeMicFrequencyArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SoundCardManager class instead, this property is about to become invalid"))); + +///卡拉OK EQ数组 +@property (strong,nonatomic)NSArray *mKaraokeMicEQArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SoundCardManager class instead, this property is about to become invalid"))); + +//MARK: - EQ 属性列表 +/// EQ模式 +@property (assign,nonatomic) JL_EQMode eqMode __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; +/// EQ参数值(只适用于EQ Mode == CUSTOM情况) +@property (copy, nonatomic) NSArray *eqArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; +///自定义EQ +@property (copy, nonatomic) NSArray *eqCustomArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; + +///EQ频率 +@property (copy, nonatomic) NSArray *eqFrequencyArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; +///EQ段数类型 +@property (assign,nonatomic) JL_EQType eqType __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; + +///EQ的预设值数组 数组元素类型-->【JLEQModel】 +@property (strong,nonatomic) NSArray *eqDefaultArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; + +//MARK: - 灯光属性列表 +/// 0:关闭 1:打开 2:设置模式(彩色/闪烁/情景) +@property (assign,nonatomic) JL_LightState lightState __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 0:彩色 1:闪烁 2: 情景 +@property (assign,nonatomic) JL_LightMode lightMode __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 灯光红色 +@property (assign,nonatomic) uint8_t lightRed __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 灯光绿色 +@property (assign,nonatomic) uint8_t lightGreen __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 灯光蓝色 +@property (assign,nonatomic) uint8_t lightBlue __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 闪烁模式Index +@property (assign,nonatomic) JL_LightFlashModeIndex lightFlashIndex __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 闪烁频率Index +@property (assign,nonatomic) JL_LightFlashModeFrequency lightFrequencyIndex __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 情景模式Index +@property (assign,nonatomic) JL_LightSceneMode lightSceneIndex __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 色调,范围0-360 +@property (assign,nonatomic) uint16_t lightHue __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 饱和度,0-100 +@property (assign,nonatomic) uint8_t lightSat __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 亮度,0-100 +@property (assign,nonatomic) uint8_t lightLightness __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); + + +//MARK: - BT INFO +@property (strong,nonatomic) NSString *ID3_Title; +@property (strong,nonatomic) NSString *ID3_Artist; +@property (strong,nonatomic) NSString *ID3_AlBum; +@property (assign,nonatomic) uint8_t ID3_Number; +@property (assign,nonatomic) uint16_t ID3_Total; +@property (strong,nonatomic) NSString *ID3_Genre; +@property (assign,nonatomic) uint32_t ID3_Time; +/// 0x01:播放 0x00:暂停 +@property (assign,nonatomic) uint8_t ID3_Status; + +@property (assign,nonatomic) uint32_t ID3_CurrentTime; + +//MARK: - Music INFO +///播放状态 +@property (assign,nonatomic) JL_MusicStatus playStatus __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///播放模式 +@property (assign,nonatomic) JL_MusicMode playMode __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///当前播放文件的簇号 +@property (assign,nonatomic) uint32_t currentClus __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///当前时间 +@property (assign,nonatomic) uint32_t currentTime __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///总时长 +@property (assign,nonatomic) uint32_t tolalTime __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///当前卡 +@property (assign,nonatomic) JL_CardType currentCard __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///名字 +@property (copy, nonatomic) NSString *fileName __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///目录浏览文件类型(所支持解码音频格式) +@property (copy, nonatomic) NSString *typeSupport; + +//MARK: - RTC INFO + +///RTC 版本 +@property (assign,nonatomic) uint8_t rtcVersion __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///是否支持闹铃设置 +@property (assign,nonatomic) JL_RTCAlarmType rtcAlarmType __attribute__((deprecated ( "Use the instance property rtcAlarmType of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///设备当前时间 +@property (strong,nonatomic) JLModel_RTC *rtcModel __attribute__((deprecated ( "Use the instance property rtcModel of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///设备闹钟数组 +@property (strong,nonatomic) NSMutableArray *rtcAlarms __attribute__((deprecated ( "Use the instance property rtcAlarms of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///默认铃声 +@property (strong,nonatomic) NSMutableArray *rtcDfRings __attribute__((deprecated ( "Use the instance property rtcDfRings of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +//MARK: - LineIn INFO + +///LineIn状态 +@property (assign,nonatomic) JL_LineInStatus lineInStatus; + + +//MARK: - Fm 模式 +///Fm状态 +@property (assign,nonatomic) JL_FMStatus fmStatus; + +///Fm 频段范围 +///76.5-108.0Mhz +///87.5-108.0Mhz +@property (assign,nonatomic) JL_FMMode fmMode; + +///当前fm +@property (strong,nonatomic) JLModel_FM *currentFm; + +///Fm列表 +@property (strong,nonatomic) NSArray *fmArray; + +//MARK: - custom version info +/// 自定义版本信息 +@property(strong,nonatomic) NSData *customizeInfo; + + +-(void)cleanMe; ++(void)observeModelProperty:(NSString*)prty Action:(SEL)action Own:(id)own __attribute__((deprecated("This method has been abandoned. You can use the system's KVO to monitor object changes."))); ++(void)removeModelProperty:(NSString*)prty Own:(id)own __attribute__((deprecated("This method has been abandoned. You can use the system's KVO to monitor object changes."))); + +#pragma mark ---> 设备信息 +-(void)deviceInfoData:(NSData*)infoData; + +#pragma mark ---> 各个模式信息 +-(void)deviceModeInfoData:(NSData*)infoData; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_EQ.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_EQ.h new file mode 100644 index 000000000..0d3cc7820 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_EQ.h @@ -0,0 +1,31 @@ +// +// JLModel_EQ.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_EQMode) { + JL_EQModeNORMAL = 0, //自然 + JL_EQModeROCK = 1, //摇滚 + JL_EQModePOP = 2, //流行 + JL_EQModeCLASSIC = 3, //经典 + JL_EQModeJAZZ = 4, //爵士 + JL_EQModeCOUNTRY = 5, //乡村 + JL_EQModeCUSTOM = 6, //用户自定义 + JL_EQModeLATIN = 7, //拉丁 + JL_EQModeDANCE = 8, //舞蹈 +}; + +@interface JLModel_EQ : NSObject +@property(assign,nonatomic)JL_EQMode mMode; +@property(strong,nonatomic)NSArray *__nullable mEqArray; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_FM.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_FM.h new file mode 100644 index 000000000..34cd84535 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_FM.h @@ -0,0 +1,18 @@ +// +// JLModel_FM.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_FM : NSObject +@property (assign,nonatomic) uint8_t fmChannel; +@property (assign,nonatomic) uint16_t fmFrequency; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_File.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_File.h new file mode 100644 index 000000000..b2d508dc4 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_File.h @@ -0,0 +1,40 @@ +// +// JLModel_File.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_BrowseType) { + JL_BrowseTypeFolder = 0, //文件夹 + JL_BrowseTypeFile = 1, //文件 +}; +typedef NS_ENUM(UInt8, JL_CardType) { + JL_CardTypeUSB = 0, //USB + JL_CardTypeSD_0 = 1, //SD_0 + JL_CardTypeSD_1 = 2, //SD_1 + JL_CardTypeFLASH = 3, //FLASH + JL_CardTypeLineIn = 4, //LineIn + JL_CardTypeFLASH2 = 5, //FLASH2 + JL_CardTypeFLASH3 = 6, //FLASH3 + JL_CardTypeReservedArea = 7, //ReservedArea +}; + +@interface JLModel_File : NSObject +@property (assign,nonatomic) JL_BrowseType fileType; +@property (assign,nonatomic) JL_CardType cardType; +@property (assign,nonatomic) uint32_t fileClus; +@property (assign,nonatomic) uint16_t fileIndex; +@property (copy, nonatomic) NSString *fileHandle; +@property (copy, nonatomic) NSString *fileName; +@property (copy, nonatomic) NSString *folderName; +@property (copy, nonatomic) NSData *__nullable pathData; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Flash.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Flash.h new file mode 100644 index 000000000..293ab53bf --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Flash.h @@ -0,0 +1,58 @@ +// +// JLModel_Flash.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_FlashSystemType) { + JL_FlashSystemType_FATFS = 0, + JL_FlashSystemType_RCSP = 1, +}; + +@interface JLModel_Flash : NSObject + +/// flash大小 +@property(assign,nonatomic)uint32_t mFlashSize; + +/// FAT系统大小 +@property(assign,nonatomic)uint32_t mFatfsSize; + +/// 系统类型 0:FATFS,1:RCSP +@property(assign,nonatomic)JL_FlashSystemType mFlashType; + +/// 系统当前状态,0x00正常,0x01异常 +@property(assign,nonatomic)uint8_t mFlashStatus; + +/// Flash版本 +@property(assign,nonatomic)uint16_t mFlashVersion; + +/// 读数MTU +@property(assign,nonatomic)uint16_t mFlashReadMtu; + +/// 扇区大小 +@property(assign,nonatomic)uint16_t mFlashCluster; + +/// 手表兼容列表"W001,W002,W003" +@property(strong,nonatomic)NSString *mFlashMatchVersion; + +/// 写数MTU +@property(assign,nonatomic)uint16_t mFlashWriteMtu; + +/// 屏幕宽度 +@property(assign,nonatomic)uint16_t mScreenWidth; + +/// 屏幕高度 +@property(assign,nonatomic)uint16_t mScreenHeight; + ++(JLModel_Flash*)modelWithFlash:(NSData *)flashData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Headset.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Headset.h new file mode 100644 index 000000000..6c4d84336 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Headset.h @@ -0,0 +1,31 @@ +// +// JLModel_Headset.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_Headset : NSObject +@property(assign,nonatomic)BOOL mCharging_L; +@property(assign,nonatomic)BOOL mCharging_R; +@property(assign,nonatomic)BOOL mCharging_C; +@property(assign,nonatomic)uint8_t mPower; +@property(assign,nonatomic)uint8_t mPower_L; +@property(assign,nonatomic)uint8_t mPower_R; +@property(assign,nonatomic)uint8_t mPower_C; +@property(assign,nonatomic)uint8_t mLedScene; +@property(assign,nonatomic)uint8_t mLedEffect; +@property(assign,nonatomic)uint8_t mKeyLR; +@property(assign,nonatomic)uint8_t mKeyAction; +@property(assign,nonatomic)uint8_t mKeyFunction; +@property(assign,nonatomic)uint8_t mMicMode; +@property(assign,nonatomic)uint8_t mWorkMode; +@property(strong,nonatomic)NSString *mEdr; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_RTC.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_RTC.h new file mode 100644 index 000000000..e9731e9d5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_RTC.h @@ -0,0 +1,64 @@ +// +// JLModel_RTC.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_RTC : NSObject + +/// 年 +@property (assign,nonatomic) uint16_t rtcYear; + +/// 月 +@property (assign,nonatomic) uint8_t rtcMonth; + +/// 日 +@property (assign,nonatomic) uint8_t rtcDay; + +/// 时 +@property (assign,nonatomic) uint8_t rtcHour; + +/// 分 +@property (assign,nonatomic) uint8_t rtcMin; + +/// 秒 +@property (assign,nonatomic) uint8_t rtcSec; + +/// RTC使能 +@property (assign,nonatomic) BOOL rtcEnable; + +/// RTC循环模式 +/// mode: 值为 0 时只响一次 +/// bit0: 每天 +/// bit1: 周一 +/// bit2: 周二 +/// bit3: 周三 +/// bit4: 周四 +/// bit5: 周五 +/// bit6: 周六 +/// bit7: 周日 +@property (assign,nonatomic) uint8_t rtcMode; + + +/// RTC索引 +@property (assign,nonatomic) uint8_t rtcIndex; + +/// 名称 +@property (copy ,nonatomic) NSString *rtcName; + +/// 自定义闹铃内容 +/// 这部分内容取自设备音乐浏览所获得的句柄以及簇号 +@property (strong,nonatomic) RTC_RingInfo *ringInfo; + +/// 闹铃数据 +@property (strong,nonatomic) NSData *RingData; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Ring.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Ring.h new file mode 100644 index 000000000..c227fa6d2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_Ring.h @@ -0,0 +1,24 @@ +// +// JLModel_Ring.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_Ring : NSObject + +/// 默认铃声序号 +/// alarm default rings index +@property(assign,nonatomic) uint8_t index; + +/// 默认铃声名称 +/// alarm default rings name +@property(strong,nonatomic) NSString *name; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_SPEEX.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_SPEEX.h new file mode 100644 index 000000000..9fba122d5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_SPEEX.h @@ -0,0 +1,142 @@ +// +// JLModel_SPEEX.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Modify By EzioChan on 2023/03/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_SpeakType) { + JL_SpeakTypeDo = 0, //开始录音 + JL_SpeakTypeDone = 1, //结束录音 + JL_SpeakTypeDoing = 2, //正在录音 + JL_SpeakTypeDoneFail = 0x0f, //结束失败 +}; +typedef NS_ENUM(UInt8, JL_SpeakDataType) { + JL_SpeakDataTypePCM = 0x00, //PCM数据 + JL_SpeakDataTypeSPEEX = 0x01, //SPEEX数据 + JL_SpeakDataTypeOPUS = 0x02, //OPUS数据 + JL_SpeakDataTypeMSBC = 0x03, //MSBC数据 + JL_SpeakDataTypeJLA_V2 = 0x04, //JLA_V2 +}; + +/// 结束原因 +typedef NS_ENUM(UInt8, JLSpeakDownReason) { + ///正常 + JLSpeakDownNormal = 0x00, + ///取消 + JLSpeakDownByDevice = 0x01 +}; + +/// SampleRate +typedef NS_ENUM(UInt8, JLRecordSampleRate) { + ///8000 + JLRecordSampleRate8K = 0x08, + ///16000 + JLRecordSampleRate16K = 0x10 +}; + + + + + + +@interface JLModel_SPEEX : NSObject +@property(assign,nonatomic)JL_SpeakType mSpeakType; +@property(assign,nonatomic)JL_SpeakDataType mDataType; +@property(assign,nonatomic)JLSpeakDownReason mDownReason; +@property(assign,nonatomic)uint8_t mSampleRate; //0x08=8k,0x10=16k +@property(assign,nonatomic)uint8_t mVad; //断句方: 0:固件 1:APP +@end + + +///语音助手配置参数 +@interface JLSpeechRecognition:NSObject + +///是否下发识别文本,0:否 1:是 +@property(assign,nonatomic)BOOL sendText; + +/// 是否下发AI文本,0:否 1:是 +@property(assign,nonatomic)BOOL sendAIText; + +/// 是否播放AI TTS语音,0:否 1:是 +@property(assign,nonatomic)BOOL needPlayTTS; + ++(JLSpeechRecognition *)beObjc:(NSData *)data; + +-(NSData *)beData; + +@end + + +/// 录音参数对象 +@interface JLRecordParams : NSObject + +/// 音频类型 +@property(nonatomic,assign)JL_SpeakDataType mDataType; + +/// VAD方式 +@property(assign,nonatomic)JLSpeakDownReason mVadWay; + +/// 采样率 +@property(assign,nonatomic)JLRecordSampleRate mSampleRate; + +/// 语音助手配置参数 +@property(strong,nonatomic)JLSpeechRecognition *speechRecognit; + +@end + + +/// speech 语音:AI云数据格式 +@interface JLSpeechAiCloud : NSObject + +/// 版本信息 +@property(nonatomic,assign)uint8_t version; + +/// 文本类型 +/// 0 : 手表本地文本(语音识别) +/// 1 : AI应答文本 +/// 2 : 错误提示文本 +@property(nonatomic,assign)uint8_t type; + +/// 供应商 +/// 0 : 杰理 +/// 1 : 科大讯飞 +@property(nonatomic,assign)uint8_t vendorID; + +/// 有效数据长度 +@property(nonatomic,assign)uint16_t lenght; + +/// 数据内容 +@property(nonatomic,strong)NSData *playload; + ++(JLSpeechAiCloud *)beObject:(NSData *)data; + +-(NSData *)beData; + +@end + +/// TTS语音合成数据格式 +@interface JLSpeechTTSSynthesis : NSObject + +/// 版本信息 +@property(nonatomic,assign)uint8_t version; + +/// 有效数据长度 +@property(nonatomic,assign)uint16_t lenght; + +/// 数据内容 +@property(nonatomic,strong)NSData *playload; + +-(NSData *)beData; + ++(JLSpeechTTSSynthesis *)beObject:(NSData *)data; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_SmallFile.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_SmallFile.h new file mode 100644 index 000000000..88bc3b756 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLModel_SmallFile.h @@ -0,0 +1,32 @@ +// +// JLModel_SmallFile.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/14. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(UInt8, JL_SmallFileType) { + JL_SmallFileTypeContacts = 0x01, //联系人 + JL_SmallFileTypeMotionRecord = 0x02, //运动记录 + JL_SmallFileTypeHeartRate = 0x03, //心率数据 + JL_SmallFileTypeSpoData = 0x04, //血氧数据 + JL_SmallFileTypeSleepData = 0x05, //睡眠数据 + JL_SmallFileTypeMassage = 0x06, //消息数据 + JL_SmallFileTypeWeather = 0x07, //天气数据 + JL_SmallFileTypeCallLog = 0x08, //通话记录 + JL_SmallFileTypeStepCount = 0x09, //步数数据 + JL_SmallFileTypeWeight = 0xFF, //体重数据 +}; + +@interface JLModel_SmallFile : NSObject +@property(nonatomic,assign)JL_SmallFileType file_type; +@property(nonatomic,assign)uint8_t file_ver; +@property(nonatomic,assign)uint16_t file_id; +@property(nonatomic,assign)uint16_t file_size; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h new file mode 100644 index 000000000..0474d40f7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h @@ -0,0 +1,29 @@ +// +// JLOxygenSturationRemindModel.h +// JL_BLEKit +// +// Created by EzioChan on 2022/2/17. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 血氧检测控制 +@interface JLOxygenSturationRemindModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 测量模式 +@property(nonatomic,assign)WatchOxygenMsmType rType; + + +-(instancetype)initWithData:(NSData *)data; + +/// 创建一个新的传感器设置对象 +/// @param type 测量类型 +/// @param status 开闭状态 +- (instancetype)initWithModel:(WatchOxygenMsmType)type Status:(BOOL)status; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPersonInfoModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPersonInfoModel.h new file mode 100644 index 000000000..9cf61b11a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPersonInfoModel.h @@ -0,0 +1,33 @@ +// +// JLPersonInfoModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 个人信息设置 +@interface JLPersonInfoModel : JLwSettingModel + +/// 身高,cm +@property(nonatomic,assign)uint16_t height; +/// 体重,kg +@property(nonatomic,assign)uint16_t weight; +/// 生日 +@property(nonatomic,strong)NSDate *birthDay; +/// 性别 +/// 女性:0x00 +/// 男性:0x01 +@property(nonatomic,assign)uint8_t gender; + +-(instancetype)initWith:(NSDate *)birthDay height:(uint16_t)h weight:(uint16_t)w gener:(uint8_t)gender; + +-(instancetype)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPublicSetting.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPublicSetting.h new file mode 100644 index 000000000..c905ac186 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPublicSetting.h @@ -0,0 +1,135 @@ +// +// JLPublicSetting.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/1. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLPublicSettingBlocks.h" + + +NS_ASSUME_NONNULL_BEGIN +@class JL_ManagerM; + +/// 公共 设置/通知/读取 交互类 0x33 回调协议 +@protocol JLPublicSettingProtocol +@optional + +/// 屏幕亮度设置回调/通知 +/// - Parameters: +/// - manager: 设备 +/// - light: 亮度 +-(void)publicSettingScreenLight:(JL_ManagerM *)manager Value:(uint8_t)light; + +/// 手电筒设置回调/通知 +/// - Parameters: +/// - manager: 设备 +/// - isOn: 是否打开 +-(void)publicSettingFlashLight:(JL_ManagerM *)manager Value:(BOOL)isOn; + +/// 设备绑定状态回调/通知 +/// - Parameters: +/// - manager: 设备 +/// - model: 绑定信息 +-(void)publicSettingBindStatus:(JL_ManagerM *)manager Model:(JLPublicBindDeviceModel *)model; + +/// 功能使用资源通知/回调 +/// - Parameters: +/// - manager: 设备 +/// - model: 资源信息 +-(void)publicSettingFuncSource:(JL_ManagerM *)manager Model:(JLPublicSourceInfoModel *)model; + +/// 功能使用资源通知/回调 +/// - Parameters: +/// - manager: 设备 +/// - model: +/// 0x00 结束 +/// 0x01 开始推送 +-(void)publicSettingReplaceTipsVoiceStatus:(JL_ManagerM *)manager Model:(uint8_t )model Reason:(NSError *_Nullable)err; + +/// +/// - Parameters: +/// - manager: 设备 +/// - mode: 设备 SDK 信息 +-(void)publicSettingDeviceSDKMessage:(JL_ManagerM *)manager Mode:(JLPublicSDKInfoModel *_Nullable)mode; + +@end + + +/// 公共 设置/通知/读取 交互类 0x33 +@interface JLPublicSetting : NSObject + +/// 代理 +@property(nonatomic,assign)id delegate; + +/// 读取设备当前屏幕亮度 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdScreenLightGet:(JL_ManagerM *)manager result:(JLPSScreenLightCbk)block; + +/// 设置设备的屏幕亮度 +/// - Parameters: +/// - manager: 设备 +/// - value: 亮度值 0~100 +/// - block: 回调 +-(void)cmdScreenLightSet:(JL_ManagerM *)manager Value:(uint8_t)value result:(JLPSScreenLightCbk)block; + +/// 读取手电筒开关 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdFlashLightGet:(JL_ManagerM *)manager result:(JLPSFlashLightCbk)block; + +/// 设置手电筒开关 +/// - Parameters: +/// - manager: 设备 +/// - isOn: 开关 +/// - block: 回调 +-(void)cmdFlashLightSet:(JL_ManagerM *)manager Status:(BOOL)isOn result:(JLPSFlashLightCbk)block; + + +/// 获取绑定设备状态 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdDeviceBindStatusGet:(JL_ManagerM *)manager result:(JLPSBindStatusCbk)block; + + +/// 获取功能使用资源设置(彩屏舱) +/// - Parameters: +/// - manager: 设备 +/// - funcType: 功能码 +/// 0x01 屏幕保护程序 +/// 0x02 开机动画 +/// 0x03 墙纸 +/// - block: 回调 +-(void)cmdDeviceFuncUsedSourceGet:(JL_ManagerM *)manager Type:(uint8_t)funcType result:(JLPSSourceInfoCbk)block; + +/// 设置功能使用资源(彩屏舱) +/// - Parameters: +/// - manager: 设备 +/// - info: 设置内容对象 +/// - block: 回调 +-(void)cmdDeviceFuncUseSourceSet:(JL_ManagerM *)manager Info:(JLPublicSourceInfoModel *)info result:(JLPSSourceInfoCbk)block; + + +/// 开始发起替换提示音 +/// - Parameters: +/// - manager: 设备 +/// - info: 提示音包 tone.cfg 信息 +/// - block: 状态回调 +-(void)cmdDeviceReplaceTipsVoiceStart:(JL_ManagerM *)manager Info:(JLPublicTipsVoiceRpInfo *)info result:(JLPSTipsVoiceRpCbk)block; + + +/// 获取设备 SDK 信息 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdDeviceGetDeviceSDKInfo:(JL_ManagerM *)manager result:(JLPSSDKInfoCbk)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h new file mode 100644 index 000000000..f43f6c086 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h @@ -0,0 +1,183 @@ +// +// JLPublicSettingBlocks.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/1. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +#define PUBLIC_SCREEN_LIGHT 0x0001 //屏幕亮度 +#define PUBLIC_FLASH_LIGHT 0x0002 //手电筒 +#define PUBLIC_DEVICE_BIND_STATUS 0x0003 //设备绑定 +#define PUBLIC_FUNC_SOURCE 0x0004 //功能使用资源(彩屏舱) +#define PUBLIC_FUNC_4G 0x0005 //4G功能升级功能 +#define PUBLIC_TIPS_VOICE 0x0006 //替换提示音 +#define PUBLIC_SDK_INFO 0x0008 //SDK信息 +#define PUBLIC_TWS_HEALTH_INFO 0x0009 //TWS健康信息 + +@class JLPublicBindDeviceModel; +@class JLPublicSourceInfoModel; +@class JLPublic4GModel; +@class JLPublicSDKInfoModel; + +/// 屏幕亮度回调 +typedef void(^JLPSScreenLightCbk)(JL_CMDStatus status,uint8_t value); + +/// 手电筒开关 +typedef void(^JLPSFlashLightCbk)(JL_CMDStatus status,BOOL isOn); + +/// 绑定状态 +typedef void(^JLPSBindStatusCbk)(JL_CMDStatus status,JLPublicBindDeviceModel *_Nullable model); +/// 彩屏舱资源 +typedef void (^JLPSSourceInfoCbk)(JL_CMDStatus status,JLPublicSourceInfoModel *_Nullable model); + +/// 4G模块升级回调 +typedef void (^JLPSSource4GCbk)(JL_CMDStatus status,JLPublic4GModel *_Nullable model); + +/// 替换提示音回调 +typedef void(^JLPSTipsVoiceRpCbk)(JL_CMDStatus status,uint8_t op); + +/// 设备 SDK 信息回调 +typedef void(^JLPSSDKInfoCbk)(JL_CMDStatus status,JLPublicSDKInfoModel *_Nullable model); + +//MARK: - 绑定设备状态(彩屏舱) +/// 绑定设备状态 +@interface JLPublicBindDeviceModel : NSObject + +/// 设备类型 +/// 1 耳机 +/// 2 充电仓 +@property(nonatomic,assign)uint8_t type; + +/// 经典蓝牙地址 +/// 若不支持经典蓝牙,此值为 0 +@property(nonatomic,copy)NSString *edrAddr; + +/// ble 蓝牙地址 +/// 若不支持 ble 蓝牙,此值为 0 +@property(nonatomic,copy)NSString *bleAddr; + +/// 连接状态 +/// 0 未连接 +/// 1 已连接 +/// 2 正在回连 +/// 0xff 不可连接 +@property(nonatomic,assign)uint8_t status; + +/// 连接方式 +/// 0 BLE +/// 1 SPP +@property(nonatomic,assign)uint8_t way; + ++(JLPublicBindDeviceModel *)initData:(NSData *)data; +@end + +//MARK: -公有设置的资源信息(彩屏舱) +/// 公有设置的资源信息 +@interface JLPublicSourceInfoModel:NSObject + +/// 功能码 +/// 0x01 屏幕保护程序 +/// 0x02 开机动画 +/// 0x03 墙纸 +@property(nonatomic,assign)uint8_t type; + +/// 存储器的句柄 +@property(nonatomic,copy)NSData *fileHandle; + +/// 文件簇号 +/// 设置时当前字段设为 0 +@property(nonatomic,assign)uint32_t cluster; + +/// 文件内容 CRC +/// 设置时当前字段为 0 +@property(nonatomic,assign)uint16_t crc; + +/// 文件路径数据 +@property(nonatomic,strong)NSString *filePath; + +-(NSData *)beData; + ++(JLPublicSourceInfoModel *)initData:(NSData *)data; + +@end + +//MARK: - 4G 模块基本信息 + +/// 4G 模块基本信息 +@interface JLPublic4GModel:NSObject + +/// 供应商信息 +/// 0x01:紫光展锐 +/// 0x02:归芯科技 +@property(nonatomic,assign)uint8_t vendor; + +/// 强制升级标识位 +/// 0x00:不强制 +/// 0x01:强制升级 +@property(nonatomic,assign)uint8_t updateStatus; + +/// 版本 +@property(nonatomic,copy)NSString *version; + +/// 开始 OTA 等待时间 +@property(nonatomic,assign)NSTimeInterval startOtaMaxTimeout; + +/// 结束 OTA 等待时间 +@property(nonatomic,assign)NSTimeInterval endOtaMaxTimeout; + + ++(JLPublic4GModel *)initData:(NSData *)data; + +@end + +//MARK: - 替换提示音参数 +@interface JLPublicTipsVoiceRpInfo : NSObject + +/// 目标存储器句柄 +/// 这个要从 JLModel_Device 中获得 +/// JLModelCardInfo *cardInfo; +@property(nonatomic,copy)NSData *devHandle; + +/// 下发的文件名 +@property(nonatomic,strong)NSString *fileName; + +/// 下发的文件内容 +@property(nonatomic,copy)NSData *sendData; + +-(NSData *)createData; + +@end + +// MARK: - 设备 SDK 信息 + +/// 设备 SDK 信息 +@interface JLPublicSDKInfoModel : NSObject + +/// 项目对应 ID +/// 0x0001 充电仓 +@property(nonatomic,assign)uint16_t projectId; + +/// 产品对应 ID +/// 0x0001 彩屏舱 +@property(nonatomic,assign)uint16_t productId; + +/// 芯片 ID +/// 0x0001 AC701N +/// 0x0002 AC707N +@property(nonatomic,assign)uint16_t chipId; + +/// 是否支持 gif +@property(nonatomic,assign)BOOL isSupportGif; + +/// 初始化 +/// - Parameter data: 数据 ++ (JLPublicSDKInfoModel *)initData:(NSData *)data; + +@end +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h new file mode 100644 index 000000000..06cf049ec --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h @@ -0,0 +1,43 @@ +// +// JLSedentaryRmdModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 久坐提醒 +@interface JLSedentaryRmdModel : JLwSettingModel + +///开关 +@property(nonatomic,assign)BOOL status; + +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; + +/// 午休免打扰:关闭/打开(午休时段为12:00-14:00) +@property(nonatomic,assign)BOOL doNotDisturb; + +/// 开始时间 +@property(nonatomic,strong)WatchTimer *begin; + +/// 结束时间 +@property(nonatomic,strong)WatchTimer *end; + +- (instancetype)initWithData:(NSData *)data; + +/// 创建一个设置久坐提醒的位置 +/// @param type 提醒模式 +/// @param status 开关 +/// @param dnd 午休免打扰 +/// @param start 开始时间 +/// @param ed 结束时间 +- (instancetype)initWithModel:(WatchRemindType)type Status:(BOOL)status DoNotDisturb:(BOOL)dnd Begin:(WatchTimer *)start End:(WatchTimer *)ed; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSensorFuncModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSensorFuncModel.h new file mode 100644 index 000000000..39779cfea --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSensorFuncModel.h @@ -0,0 +1,47 @@ +// +// JLSensorFuncModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" +#import "JLWatchEnum.h" + +NS_ASSUME_NONNULL_BEGIN + + +/// 传感器开关设置 +@interface JLSensorFuncModel : JLwSettingModel + +/// 计步器开关 +@property(nonatomic,assign)BOOL pedometerStatus; +/// 计步器记录开关 +@property(nonatomic,assign)BOOL pedometerRecordStatus; +/// 心率传感器开关 +@property(nonatomic,assign)BOOL heartRateStatus; +/// 心率传感器记录开关 +@property(nonatomic,assign)BOOL heartRateRecordStatus; +/// 血氧传感器开关 +@property(nonatomic,assign)BOOL bloodOxygenStatus; +/// 血氧传感器记录开关 +@property(nonatomic,assign)BOOL bloodOxygenRecordStatus; +///海拔气压传感器开关 +@property(nonatomic,assign)BOOL AltitudeAirPressureStatus; +///海拔气压传感器记录开关 +@property(nonatomic,assign)BOOL AltitudeAirPressureRecordStatus; + + +/// 传感器功能 +/// @param status 功能的开关状态 +-(void)setFuncBy:(JL_SENSOR_FUNC_SWITCH)status; + +/// @param funcByte 功能的开关状态 +-(instancetype)initWhthFuncByte:(JL_SENSOR_FUNC_SWITCH)funcByte; + +-(instancetype)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h new file mode 100644 index 000000000..5e51a67d3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h @@ -0,0 +1,33 @@ +// +// JLSleepMonitorModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 睡眠监测设置 +@interface JLSleepMonitorModel : JLwSettingModel +///开关类型 +@property(nonatomic,assign)WatchSwitchType status; +///开始时间 +@property(nonatomic,strong)WatchTimer *start; +/// 结束时间 +@property(nonatomic,strong)WatchTimer *end; + +-(instancetype)initWithData:(NSData *)data; + +/// 构建一个睡眠监测设置 +/// @param status 状态开关 +/// @param begin 开始时间 +/// @param end 结束时间 +-(instancetype)initWithSwitchStatus:(WatchSwitchType)status Begin:(WatchTimer *)begin End:(WatchTimer *)end; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSpdifPCManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSpdifPCManager.h new file mode 100644 index 000000000..d2c594c0c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSpdifPCManager.h @@ -0,0 +1,74 @@ +// +// JLSpdifPCManager.h +// JL_BLEKit +// +// Created by EzioChan on 2024/10/15. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol JLSpdifPCProtocol + +/// 更新 SPDIF 模式 +/// - Parameter spdifModel: SPDIF 模式 +-(void)updateSpdifModel:(JLModelSpdif *)spdifModel; + +/// 更新 PC 从者模式 +/// - Parameter pcServerModel: PC Server +-(void)updatePcServerModel:(JLModelPCServer *)pcServerModel; + +@end + +/// SPDIF 与 PC 从者模式管理 +@interface JLSpdifPCManager : ECOneToMorePtl + +/// SPDIF 模式信息 +@property(nonatomic,strong)JLModelSpdif *spdifModel; + +/// PC 从者模式信息 +@property(nonatomic,strong)JLModelPCServer *pcServerModel; + + +/// 获取 SPDIF 模式的状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)getSpdifStatus:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 获取 PC 从者模式的状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)getPcServerStatus:(JL_ManagerM *)manager callBack: (JL_CMD_RESPOND)callBack; + +/// 设置 SPDIF 模式的播放状态 +/// - Parameter status: 播放状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setSpdifPlayStatus:(BOOL)status Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 设置 SPDIF 模式音源 +/// - Parameter type: 音源类型 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setSpdifAction:(JLSpdifAudioType)type Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 设置 PC 从者模式的播放状态 +/// - Parameter status: 播放状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setPcServerPlayStatus:(BOOL)status Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 设置 PC 从者模式的操作类型 +/// - Parameter type: 操作类型 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setPcServerAction:(JLPcServerOpType)type Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSportDataModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSportDataModel.h new file mode 100644 index 000000000..4483e041f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLSportDataModel.h @@ -0,0 +1,27 @@ +// +// JLSportDataModel.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSportDataModel : NSObject + +/// 设备的UUID +@property(nonatomic,strong)NSString *dev_uuid; + +/// 请求内容数据 +@property(nonatomic,strong)NSData *rqData; + +/// 功能掩码 +@property(nonatomic,assign)uint32_t funcMask; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTaskChain.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTaskChain.h new file mode 100644 index 000000000..8d5d33661 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTaskChain.h @@ -0,0 +1,117 @@ +// +// TaskChain.h +// JL_BLEKit +// +// Created by EzioChan on 2025/3/20. +// + +#import + +/** + JLTaskChain 任务链 + 用于按顺序执行一组异步任务,每个任务接收上一个任务的输出并通过 completion 回传结果或错误。 + 特性: + - 串行执行:内部使用 `NSOperationQueue` 串行队列保证顺序执行 + - 错误中断:任意任务返回错误后链路立即中断并回调最终 completion + - 取消能力:支持全局与实例级取消 + - 运行保护:运行中禁止追加任务,避免并发修改导致的不确定行为 + */ + +NS_ASSUME_NONNULL_BEGIN +/* + // 创建 TaskChain 实例 + JLTaskChain *chain = [[JLTaskChain alloc] init]; + + // 添加第一个任务:模拟耗时操作返回结果 + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"任务1开始执行"); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:2]; + NSLog(@"任务1执行完毕"); + completion(@"结果1", nil); + }); + }]; + + // 添加第二个任务:接收任务1的结果,模拟错误情况 + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"任务2接收到结果:%@", input); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:2]; + NSLog(@"任务2发生错误"); + NSError *error = [NSError errorWithDomain:@"com.example.task" code:100 userInfo:@{NSLocalizedDescriptionKey:@"任务2失败"}]; + completion(nil, error); + }); + }]; + + // 添加第三个任务:如果前面的任务成功则执行,否则不会被执行 + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"任务3接收到结果:%@", input); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:2]; + NSLog(@"任务3执行完毕"); + completion(@"结果3", nil); + }); + }]; + + // 启动任务链,并传入初始输入 + [chain runWithInitialInput:nil completion:^(id result, NSError *error) { + if (error) { + NSLog(@"任务链执行中断,错误:%@", error.localizedDescription); + } else { + NSLog(@"任务链全部执行完毕,最终结果:%@", result); + } + }]; +*/ + + +/****************************************************************************************************************************** +// 假设 JLTaskChain 和 TaskOperation 已经定义好 +// 模拟一个任务链处理一个字符串列表 +NSArray *taskList = @[@"任务A", @"任务B", @"任务C"]; + + JLTaskChain *chain = [[JLTaskChain alloc] init]; + +// 遍历列表,为每个元素添加一个任务 +for (NSString *taskName in taskList) { + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"开始处理:%@", taskName); + // 模拟异步耗时操作 + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:1.0]; + // 模拟:如果任务名称为“任务B”,产生错误,后续任务不再执行 + if ([taskName isEqualToString:@"任务B"]) { + NSError *error = [NSError errorWithDomain:@"com.example.task" code:100 userInfo:@{NSLocalizedDescriptionKey:@"任务B 执行失败"}]; + NSLog(@"处理 %@ 时发生错误", taskName); + completion(nil, error); + } else { + // 模拟正常处理,返回结果 + NSString *result = [NSString stringWithFormat:@"%@ 已处理", taskName]; + NSLog(@"处理完成:%@", result); + completion(result, nil); + } + }); + }]; +} + +// 启动任务链,初始输入可以为 nil(或者根据需求传递其他数据) +[chain runWithInitialInput:nil completion:^(id result, NSError *error) { + if (error) { + NSLog(@"任务链中断,错误信息:%@", error.localizedDescription); + } else { + NSLog(@"所有任务完成,最终结果:%@", result); + } +}]; + */ + + +@interface JLTaskChain : NSObject + +// 任务块数组,每个任务块的签名:^(id input, void(^completion)(id output, NSError *error)) +@property (nonatomic, strong) NSMutableArray *taskBlocks; ++ (void)cancelAllTasks; +- (void)addTask:(void (^)(id _Nullable input, void (^completion)(id _Nullable output, NSError *_Nullable error)))task; +- (void)runWithInitialInput:(id _Nullable)input completion:(void (^ _Nullable)(id _Nullable result, NSError *_Nullable error))completion; +- (void)cancel; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTipsSoundReplaceMgr.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTipsSoundReplaceMgr.h new file mode 100644 index 000000000..a0d19f7df --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTipsSoundReplaceMgr.h @@ -0,0 +1,48 @@ +// +// JLTipsSoundReplay.h +// JL_BLEKit +// +// Created by EzioChan on 2025/5/14. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^JLTipsVoiceBlock)(JL_CMDStatus,NSData *_Nullable info); + +/// 提示音替换 +@interface JLTipsSoundReplaceMgr : NSObject + +/// 单例 ++(instancetype)share; + +/// 是否处于替换中 +-(BOOL)isReplacing; + +/// 是否支持提示音替换查询 +/// - Parameters: +/// - manager: 设备 +/// - result: 回调结果 +-(void)isSupportTipsVoiceReplace:(JL_ManagerM *)manager result:(JLConfigTwsRsp)result; + +/// 获取设备端提示音的信息 +/// - Parameters: +/// - manager: 设备 +/// - result: 回调 +-(void)voicesReplaceGetVoiceInfo:(JL_ManagerM *)manager Result:(JLTipsVoiceBlock)result; + +/// 推送提示音数据到设备 +/// - Parameters: +/// - mgr: 设备 +/// - devhandle: 设备句柄,当前句柄需要通过获取设备存储信息获得,可参考 JLModel_Device 类的 cardInfo 属性,当设备不作要求时,此值填 0xffffffff +/// - path: 提示音本地存放路径 +/// - isReborn: 完成后是否重启设备 +/// - result: 回调结果 +-(void)voicesReplacePushDataRequest:(JL_ManagerM *)mgr DevHandle:(NSData *)devhandle TonePath:(NSString *)path IsReborn:(BOOL)isReborn Result:(JL_BIGFILE_RT __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateAudio.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateAudio.h new file mode 100644 index 000000000..e93155045 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateAudio.h @@ -0,0 +1,61 @@ +// +// JLTranslateAudio.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLModel_SPEEX.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 音频类型 +typedef NS_ENUM(NSUInteger, JLTranslateAudioSourceType) { + /// 音频文件 + JLTranslateAudioTypeFile = 0, + /// 设备麦克风 + JLTranslateAudioTypeDeviceMic = 1, + /// 手机麦克风 + JLTranslateAudioTypePhoneMic = 2, + /// eSCO上行 + JLTranslateAudioTypeESCOUp = 3, + /// eSCO下行 + JLTranslateAudioTypeESCODown = 4, + /// A2DP + JLTranslateAudioTypeA2DP = 5, + /// eSCO_Max 上下行 + JLTranslateAudioTypeESCOMax = 6 +}; + +/// 翻译音频 +@interface JLTranslateAudio : NSObject + +/// 来源类型 +@property (assign, nonatomic) JLTranslateAudioSourceType sourceType; + +/// 音频数据类型 +@property (assign, nonatomic) JL_SpeakDataType audioType; + +/// 包计数,倒序,0 为结束包 +@property (assign, nonatomic) int count; + +/// 音频数据的CRC +@property (assign, nonatomic) uint16_t crc; + +/// 数据长度 +@property (assign, nonatomic) int len; + +/// 音频数据 +@property (strong, nonatomic) NSData *data; + ++(JLTranslateAudio *)beObjc:(NSData *)data; + +-(NSData *)toData; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateSet.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateSet.h new file mode 100644 index 000000000..caa5547a5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateSet.h @@ -0,0 +1,105 @@ +// +// JLTranslateSet.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLTranslateSetMode; + +/// 翻译设置结果 +typedef NS_ENUM(NSUInteger, JLTranslateSetResultType) { + /// 成功 + JLTranslateSetResultTypeSuccess = 0x00, + /// 模式相同 + JLTranslateSetResultTypeSameMode = 0x01, + /// 参数错误 + JLTranslateSetResultTypeParamErr = 0x02, + /// 通话中 + JLTranslateSetResultTypeCall = 0x03, + /// 音频播放中 + JLTranslateSetResultTypeAudioPlaying = 0x04, + /// 系统繁忙 + JLTranslateSetResultTypeBusy = 0x05, + /// 操作失败 + JLTranslateSetResultTypeFail = 0x06 +}; + +@protocol JLTranslateSetDelegate + +/// 翻译模式通知 +/// - Parameter mode: 翻译模式 +-(void)translateNotifyMode:(JLTranslateSetMode *)mode; + +/// 翻译音频通知 +/// - Parameter mode: 翻译音频 +-(void)translateReceiveAudioMode:(JLTranslateAudio *)mode; + +/// 翻译缓存 +/// - Parameters: +/// - sourceType: 来源类型 +/// - cacheSize: 剩余缓存大小 +-(void)translateNoteCacheInfo:(JLTranslateAudioSourceType)sourceType cacheSize:(uint32_t)cacheSize; + +@end + + + +typedef void(^JLTranslateGetModeInfoBlock)(JLTranslateSetMode *_Nullable mode,JL_CMDStatus status); + +typedef void(^JLTranslateSetModeBlock)(JLTranslateSetResultType type,JL_CMDStatus status); + +typedef void(^JLTranslateGetCacheInfoBlock)(JL_CMDStatus status,JLTranslateAudioSourceType sourceType,uint32_t cacheSize); + +/// 翻译交互 API +@interface JLTranslateSet : ECOneToMorePtl + +@property(nonatomic, assign)NSTimeInterval cmdMaxTime; + +/// 获取翻译模式 +/// - Parameters: +/// - manager: 设备对象 +/// - result: 结果回调 +-(void)cmdGetModeInfo:(JL_ManagerM *)manager + Result:(JLTranslateGetModeInfoBlock)result; + +/// 设置翻译模式 +/// - Parameters: +/// - mode: 模式 +/// - manager: 设备 +/// - result: 结果 +-(void)cmdSetMode:(JLTranslateSetMode *)mode + Manager:(JL_ManagerM *)manager + Result:(JLTranslateSetModeBlock)result; + + +/// 获取设备可用缓存 +/// - Parameters: +/// - manager: 设备 +/// - type: 来源类型 +/// - result: 结果 +-(void)cmdCheckCache:(JL_ManagerM *)manager SourceType:(JLTranslateAudioSourceType) type Result:(JLTranslateGetCacheInfoBlock)result; + +/// 通知翻译模式 +/// - Parameters: +/// - mode: 模式 +/// - manager: 设备 +-(void)cmdNoteMode:(JLTranslateSetMode *)mode + Manager:(JL_ManagerM *)manager; + +/// 推送翻译音频 +/// - Parameters: +/// - audio: 音频 +/// - manager: 设备 +-(void)cmdPushAudioMode:(JLTranslateAudio *)audio + Manager:(JL_ManagerM *)manager; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateSetMode.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateSetMode.h new file mode 100644 index 000000000..fae797576 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslateSetMode.h @@ -0,0 +1,65 @@ +// +// JLTranslateSetMode.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLModel_SPEEX.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 翻译模式 +typedef NS_ENUM(NSUInteger, JLTranslateSetModeType) { + /// 空闲 + JLTranslateSetModeTypeIdle = 0x00, + /// 仅录音 + JLTranslateSetModeTypeOnlyRecord = 0x01, + /// 录音翻译 + JLTranslateSetModeTypeRecordTranslate = 0x02, + /// 通话翻译 + JLTranslateSetModeTypeCallTranslate = 0x03, + /// 音频翻译 + JLTranslateSetModeTypeAudioTranslate = 0x04, + /// 面对面翻译 + JLTranslateSetModeTypeFaceToFaceTranslate = 0x05, + /// 通话翻译立体声模式 + JLTranslateSetModeTypeCallTranslateStereo = 0x06 +}; + +/// 录音策略 +typedef NS_ENUM(NSInteger, JLTranslateRecordType) { + /// 手机端录音 + JLTranslateRecordByPhone = 0x00, + /// 设备录音 + JLTranslateRecordByDevice = 0x01 +}; + +/// 翻译模式 +@interface JLTranslateSetMode : NSObject + +/// 翻译模式 +/// default is JLTranslateSetModeTypeIdle +@property (nonatomic, assign) JLTranslateSetModeType modeType; + +/// 音频数据类型 +/// default is JL_SpeakDataTypeOPUS +@property (nonatomic, assign) JL_SpeakDataType dataType; + +/// 声道 +/// 默认是1 +@property (nonatomic, assign) NSInteger channel; + +/// 采样率 +/// 默认是16000 +@property (nonatomic, assign) NSInteger sampleRate; + ++(JLTranslateSetMode *)beObjc:(NSData *)data; + +-(NSData *)toData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslationManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslationManager.h new file mode 100644 index 000000000..46243dfc9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTranslationManager.h @@ -0,0 +1,160 @@ +// +// JLTranslationManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/1/3. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLTranslateAudio.h" +#import "JLModel_SPEEX.h" +#import "JLTranslateSetMode.h" +#import "JLTranslateSet.h" + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +/// 翻译回调 +@protocol JLTranslationManagerDelegate + +/// 初始化成功 +/// @param uuid 设备UUID +-(void)onInitSuccess:(NSString *)uuid; + +/// 模式改变 +/// @param uuid 设备UUID +/// @param mode 翻译模式 +-(void)onModeChange:(NSString *)uuid Mode:(JLTranslateSetMode *)mode; + +/// 音频数据 +/// @param uuid 设备UUID +/// @param data 音频数据 +-(void)onReceiveAudioData:(NSString *)uuid AudioData:(JLTranslateAudio *)data; + +/// 错误 +/// @param uuid 设备UUID +/// @param err 错误 +-(void)onError:(NSString *)uuid Error:(NSError *) err; + +@optional + +/// 通话状态 +/// @param isCalling 是否在通话 +/// @param uuid 设备UUID +-(void)isOnCalling:(BOOL)isCalling UUID:(NSString *)uuid; + + +/// 音频队列结束(或空闲/已结束/中间传输时短暂的播空了) +/// @param uuid 设备UUID +-(void)onSendAudioQueueOver:(NSString *)uuid; + +@end + +typedef void(^JLTranslationManagerGetBlock)(JLTranslateSetMode *_Nullable mode,NSError *_Nullable err); + +typedef void(^JLTranslationManagerSetBlock)(JLTranslateSetResultType status,NSError *_Nullable err); + +/// 翻译传输管理对象 +/// Translation transmission management object +@interface JLTranslationManager : NSObject + +/// 代理 +@property (nonatomic, weak) id delegate; + +/// 命令最大超时时间 +/// 默认是 10s +/// Command maximum timeout time +/// Default is 10s +@property (nonatomic, assign) NSTimeInterval cmdMaxTimeOut; + + + +/// 设备蓝牙 UUID +/// Device Bluetooth UUID +@property (nonatomic, strong, readonly) NSString *uuid; + +/// 当前的翻译模式 +/// Current translation mode +@property (nonatomic, strong, readonly) JLTranslateSetMode *translateMode; + +/// 录音策略,默认是手机端录音 +/// Recording policy, the default is to record on the phone +@property (nonatomic, assign) JLTranslateRecordType recordtype; + +/// 是否在通话中 +/// Whether in a call +@property (nonatomic, assign) BOOL isCalling; + +/// 设备对象 +/// Device object +@property (nonatomic, strong, readonly) JL_ManagerM *manager; + +/// 初始化 +/// init +/// - Parameters: +/// - delegate: 代理 JLTranslationManagerDelegate +/// - manager: 设备对象 DeviceManager +/// - result: 回调 +- (instancetype)initWithDelegate:(id)delegate Manager:(JL_ManagerM *)manager Result:(void(^)(BOOL success, NSError *_Nullable err))result; + +/// 是否支持翻译功能 +/// Does it support translation function +- (BOOL)trIsSupportTranslate; + +/// 是否通过 a2dp 播放 +/// Is it played through a2dp +- (BOOL)trIsPlayWithA2dp; + + +/// 是否正在工作 +/// Is it working +- (BOOL)trIsWorking; + +/// 获取当前翻译模式 +/// Get the current translation mode +/// 回复的内容通过 JLTranslationManagerDelegate 代理回调 +/// Reply content through JLTranslationManagerDelegate delegate +/// - Parameter block: 回调 +- (void)trGetCurrentTranslationMode:(JLTranslationManagerGetBlock _Nullable)block; + +/// 开始翻译模式 +/// Start translation mode +/// - Parameter mode: 翻译模式 translation mode +/// - Parameter block: 回调 +- (void)trStartTranslateMode:(JLTranslateSetMode *)mode Block:(JLTranslationManagerSetBlock _Nullable)block; + +/// 退出翻译模式 +/// Exit translation mode +/// - Parameter block: 回调 +- (void)trExitMode:(JLTranslationManagerSetBlock _Nullable)block; + +/// 写入翻译音频,翻译完/操作完后的音频需要携带原音频的音频类型 JLTranslateAudio 进行回复 +/// Write in translation audio, translation complete/operation complete audio need to carry the original audio JLTranslateAudio reply +/// - Parameters: +/// - audio: JLTranslateAudio 原返回音频类型 +/// - audioData: 处理完的音频数据 +- (void)trWriteAudio:(JLTranslateAudio *)audio TranslateData:(NSData *)audioData; + + +/// 写入翻译音频,翻译完/操作完后的音频需要携带原音频的音频类型 JLTranslateAudio 进行回复 +/// 此方案是采取无交互式的下发方法,根据数据对应可能需要的播放时长来进行直接下发,可能存在风险 +/// 当前默认的时长是 20ms 42 byte 的 jlv2 压缩数据,不支持修改 +/// - Parameters: +/// - audio: JLTranslateAudio 原返回音频类型 +/// - audioData: 处理完的音频数据 +-(void)trWriteAudioV2:(JLTranslateAudio *)audio TranslateData:(NSData *)audioData; + +/// 已准备好发送队列 +-(void)trSendIsRelay; + +/// 销毁 +/// Destroy +/// 如果销毁,需要重新生成对象,此对象的回调将会失效 +/// Destroy, if it is destroyed, the callback of this object will be invalidated +- (void)trDestory; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthConfig.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthConfig.h new file mode 100644 index 000000000..61006d6eb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthConfig.h @@ -0,0 +1,89 @@ +// +// JLTwsHealthMode.h +// JL_BLEKit +// +// Created by EzioChan on 2025/10/11. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +/// tws 健康配置 +@interface JLTwsHealthConfig : NSObject + +//是否支持单次心率采集 +@property (nonatomic, assign) BOOL isSupportOnceHeartRate; + +//是否支持全天心率采集 +@property (nonatomic, assign) BOOL isSupportAllDayHeartRate; + +//是否支持单次血氧采集 +@property (nonatomic, assign) BOOL isSupportOnceBloodOxygen; + +//是否支持全天步数采集 +@property (nonatomic, assign) BOOL isSupportAllDayStep; + + +-(JLTwsHealthConfig *)initWithData:(NSData *)data; + +@end + +/// 心率模型 +@interface JLTwsHeartRateModel : NSObject + +/// 实时心率 +@property(nonatomic,assign)NSInteger avgHeartRate; +/// 静息心率 +@property(nonatomic,assign)NSInteger restHeartRate; +/// 最大心率 +@property(nonatomic,assign)NSInteger maxHeartRate; +/// 单次测量心率 +@property(nonatomic,assign)NSInteger onceHeartRate; + +/// 初始化心率模型 +/// @param data 数据 +/// @param subMask 子掩码 +-(instancetype)initWithData:(NSData *)data subMask:(uint8_t)subMask; + +@end + + +/// 血氧模型 +@interface JLTwsSpO2Model : NSObject + +///血氧饱和度 +@property(nonatomic,assign)NSInteger avgSpO2; +/// 最大值 +@property(nonatomic,assign)NSInteger maxSpO2; +/// 最小值 +@property(nonatomic,assign)NSInteger minSpO2; +/// 单次测量血氧饱和度 +@property(nonatomic,assign)NSInteger onceSpO2; + +/// 初始化血氧模型 +/// @param data 数据 +/// @param subMask 子掩码 +-(instancetype)initWithData:(NSData *)data subMask:(uint8_t)subMask; + +@end + + +/// 步数模型 +@interface JLTwsStepModel : NSObject + +/// 实时步数 +@property(nonatomic,assign)NSInteger realTimeStep; +/// 距离,单位:0.01公里 +@property(nonatomic,assign)NSInteger distance; +/// 热量:单位:千卡 +@property(nonatomic,assign)NSInteger calorie; + +/// 初始化步数模型 +/// @param data 数据 +/// @param subMask 子掩码 +-(instancetype)initWithData:(NSData *)data subMask:(uint8_t)subMask; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthHeartRateModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthHeartRateModel.h new file mode 100644 index 000000000..d79e78cf5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthHeartRateModel.h @@ -0,0 +1,22 @@ +// +// JLTwsHealthHeartRateModel.h +// JL_BLEKit +// +// Created by EzioChan on 2025/12/9. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsHealthHeartRateModel : NSObject + +/// 全天心率数组,需要使用小文件格式解析进行解读 +@property (strong, nonatomic) NSArray *heartRateList; + +-(JLTwsHealthHeartRateModel *)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthManager.h new file mode 100644 index 000000000..ae24850fa --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsHealthManager.h @@ -0,0 +1,210 @@ +// +// JLTwsHealthManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/10/11. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_ManagerM; +@class JLTwsHealthConfig; +@class JLTwsSpO2Model; +@class JLTwsHeartRateModel; +@class JLTwsStepModel; +@class JLTwsHealthHeartRateModel; + +/// 心率、血氧、步数回调 +@protocol JLTwsHealthManagerDelegate + +/// Tws 耳机设备的心率、血氧、步数 +/// @param model Tws 耳机设备的心率、血氧、步数 +-(void)twsHealthConfigModel:(JLTwsHealthConfig *)model; + +/// Tws 耳机设备的心率、血氧、步数传感器状态 +/// @param heartRateStatus 心率传感器状态 +/// @param bloodOxygenStatus 血氧传感器状态 +/// @param stepStatus 步数传感器状态 +/// @param inEarSensorStatus 入耳检测传感器状态 +-(void)twsHealthSensorStatus:(BOOL)heartRateStatus bloodOxygenStatus:(BOOL)bloodOxygenStatus stepStatus:(BOOL)stepStatus inEarSensorStatus:(BOOL)inEarSensorStatus; + +@optional +/// Tws 耳机设备的心率 +/// @param heartRate 心率 +-(void)twsHealthHeartRate:(JLTwsHeartRateModel *) heartRate; + +/// Tws 耳机设备的血氧 +/// @param spO2 血氧 +-(void)twsHealthBloodOxygen:(JLTwsSpO2Model *) spO2; + +/// Tws 耳机设备的步数 +/// @param step 步数 +-(void)twsHealthStep:(JLTwsStepModel *) step; + +/// Tws 耳机设备的全天心率 +/// @param dailyHeartRate 全天心率 +-(void)twsHealthDailyHeartRate:(JLTwsHealthHeartRateModel *) dailyHeartRate; + +/// Tws 耳机设备开启了心率监测 +-(void)twsHealthStartHeartRate; + +/// Tws 耳机设备取消了心率监测 +-(void)twsHealthCancelHeartRate; + +/// Tws 耳机设备开启了血氧监测 +-(void)twsHealthStartBloodOxygen; + +/// Tws 耳机设备取消了血氧监测 +-(void)twsHealthCancelBloodOxygen; + +/// Tws 耳机设备开启了步数监测 +-(void)twsHealthStartStep; + +/// Tws 耳机设备取消了步数监测 +-(void)twsHealthCancelStep; + +/// Tws 耳机设备开启同步全天心率数据 +-(void)twsHealthStartDailyHeartSync; + +/// Tws 耳机设备结束同步全天心率数据 +-(void)twsHealthEndDailyHeartSync; + +@end + +typedef NS_ENUM(NSUInteger, JLTwsHealthOpType) { + JLTwsHealthOpTypeStartHeartRate = 1, + JLTwsHealthOpTypeCancelHeartRate = 2, + JLTwsHealthOpTypeStartBloodOxygen = 3, + JLTwsHealthOpTypeCancelBloodOxygen = 4, + JLTwsHealthOpTypeStartStep = 5, + JLTwsHealthOpTypeCancelStep = 6, + JLTwsHealthOpTypeStartDailyHeartSync = 32, + JLTwsHealthOpTypeEndDailyHeartSync = 33, +}; + +typedef void(^JLTwsHealthModeBlock)(JLTwsHealthConfig *_Nullable mode, NSError * _Nullable error); + +typedef void(^JLTwsHealthSensorStatusBlock)(BOOL heartRateStatus, BOOL bloodOxygenStatus, BOOL stepStatus, BOOL inEarSensorStatus, NSError * _Nullable error); + +typedef void(^JLTwsHealthResultBlock)(NSError * _Nullable error); + +/// 管理 TWS 耳机健康数据的统一入口,负责: +/// 1) 发送健康相关指令(心率、血氧、步数、全天心率同步等) +/// 2) 解析设备应答与设备主动推送事件,并通过回调/代理分发 +/// 3) 管理传感器状态、最近一次检测结果与超时配置 +@interface JLTwsHealthManager : ECOneToMorePtl + +/// 心率传感器状态 +/// YES:开启检测中 +/// NO:关闭 +@property(nonatomic, assign)BOOL heartRateSensorStatus; + +/// 血氧传感器状态 +/// YES:开启检测中 +/// NO:关闭 +@property(nonatomic, assign)BOOL bloodOxygenSensorStatus; + +/// 步数传感器状态 +/// YES:开启检测中 +/// NO:关闭 +@property(nonatomic, assign)BOOL stepSensorStatus; + +/// 入耳检测传感器状态 +/// YES:入耳 +/// NO:出耳 +@property(nonatomic, assign)BOOL inEarSensorStatus; + +/// 代理 +@property(nonatomic, weak)id delegate; + +-(instancetype)init NS_UNAVAILABLE; + +-(instancetype) init:(JL_ManagerM *)manager delegate:(id)delegate; + +/// 查询配置 +/// - Parameters: +/// - block: 回调 +-(void)cmdGetHealthConfigWithResult:(JLTwsHealthModeBlock)block; + +/// 查询状态 +/// - Parameters: +/// - block: 回调 +-(void)cmdCheckSensorStatus:(JLTwsHealthSensorStatusBlock __nullable)block; + + +/// 控制耳机进行健康数据相关的操作 +/// 操作类型: +/// JLTwsHealthOpTypeStartHeartRate 开启心率监测 +/// JLTwsHealthOpTypeCancelHeartRate 取消心率监测 +/// JLTwsHealthOpTypeStartBloodOxygen 开启血氧监测 +/// JLTwsHealthOpTypeCancelBloodOxygen 取消血氧监测 +/// JLTwsHealthOpTypeStartStep 开启步数监测 +/// JLTwsHealthOpTypeCancelStep 取消步数监测 +/// JLTwsHealthOpTypeStartDailyHeartSync 开启同步全天心率数据 +/// JLTwsHealthOpTypeEndDailyHeartSync 结束同步全天心率数据 +/// 示例:开启心率监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartHeartRate result:^(void){ +/// NSLog(@"心率监测已开启"); +/// }]; +/// +/// 示例:取消心率监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeCancelHeartRate result:^(void){ +/// NSLog(@"心率监测已取消"); +/// }]; +/// +/// 示例:开启血氧监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartBloodOxygen result:^(void){ +/// NSLog(@"血氧监测已开启"); +/// }]; +/// +/// 示例:取消血氧监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeCancelBloodOxygen result:^(void){ +/// NSLog(@"血氧监测已取消"); +/// }]; +/// +/// 示例:开启步数监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartStep result:^(void){ +/// NSLog(@"步数监测已开启"); +/// }]; +/// +/// 示例:取消步数监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeCancelStep result:^(void){ +/// NSLog(@"步数监测已取消"); +/// }]; +/// +/// 示例:开启同步全天心率数据 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartDailyHeartSync result:^(void){ +/// NSLog(@"全天心率同步已开启"); +/// }]; +/// +/// 示例:结束同步全天心率数据 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeEndDailyHeartSync result:^(void){ +/// NSLog(@"全天心率同步已结束"); +/// }]; +/// - Parameters: +/// - type: 操作类型 +/// - block: 回调 +-(void)twsHealthOpActionWithType:(JLTwsHealthOpType)type result:(JLTwsHealthResultBlock __nullable)block; + +/// 查询实时步数 +/// 轮询策略 +/// - Parameter time: 轮询间隔 单位 s +/// 一般固件要求时间为 5min 内轮询一次 +/// 例子:[manager loopQueryRealStep:4 * 60]; +-(void)loopQueryRealStep:(NSTimeInterval)time; + +/// 取消轮询 +/// 例子:[manager cancelLoopQueryRealStep]; +-(void)cancelLoopQueryRealStep; + +/// 查询实时步数 +/// 例子:[manager queryRealStep]; +-(void)queryRealStep; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsSupportFuncs.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsSupportFuncs.h new file mode 100644 index 000000000..49cb420bb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLTwsSupportFuncs.h @@ -0,0 +1,51 @@ +// +// JLTwsSupportFuncs.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsSupportFuncs : NSObject + +/// 是否支持ANC功能 +@property(nonatomic,assign)BOOL isSupportAnc; + +/// 是否支持游戏模式 +@property(nonatomic,assign)BOOL isSupportGameMode; + +/// 是否支持自适应ANC +@property(nonatomic,assign)BOOL isSupportAutoAnc; + +/// 是否支持智能免摘 +@property(nonatomic,assign)BOOL isSupportSmartPickFree; + +/// 是否支持场景降噪 +/// scene noise reduction +@property(nonatomic,assign)BOOL isSupportSceneNoiseReduction; + +/// 是否支持风噪检测 +/// Noise detection +@property(nonatomic,assign)BOOL isSupportNoiseDetection; + +/// 是否支持人声增强模式 +/// Vocal Boost Mode +@property(nonatomic,assign)BOOL isSupportVocalBoostMode; + +/// 固件是否支持“一拖二”开 关功能 +/// Does the firmware support the "one drag two" switch function +@property(nonatomic,assign)BOOL isSupportDragWithMore; + + + +-(void)configWithTargetFeature:(NSData *)data; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWatchEnum.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWatchEnum.h new file mode 100644 index 000000000..b939ec1eb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWatchEnum.h @@ -0,0 +1,228 @@ +// +// JLWatchEnum.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/2. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +extern NSString *_Nonnull const JL_Watch_HeartRate; +extern NSString *_Nonnull const JL_Watch_AirPressure; +extern NSString *_Nonnull const JL_Watch_Altitude; +extern NSString *_Nonnull const JL_Watch_MoveSteps; +extern NSString *_Nonnull const JL_Watch_Stress; +extern NSString *_Nonnull const JL_Watch_Oxsaturation; +extern NSString *_Nonnull const JL_Watch_MaxOxg; +extern NSString *_Nonnull const JL_Watch_RecTime; +extern NSString *_Nonnull const JL_Watch_SportMsg; +extern NSString *_Nonnull const JL_Watch_WatchLog; + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_WATCH_LOG_MASK) { + /// 加速度 + JL_WATCH_LOG_MASK_Acceleration = 0x80000000 >> 31, + /// 心率和血氧 + JL_WATCH_LOG_MASK_HeartRate_BloodOxy = 0x80000000 >> 30, +}; + +typedef NS_ENUM(UInt8, JL_WATCH_LOG_TYPE) { + ///设备回的加速度 + JL_WATCH_LOG_TYPE_Res_Acceleration = 0x00, + /// 设备回的心率血氧 + JL_WATCH_LOG_TYPE_Res_HeartRate_BloodOxy = 0x01, +}; + +/// 运动记录标记包类型 +typedef NS_ENUM(UInt8, JL_SRMDataType) { + ///开始包 + JL_SRM_Start = 0x00, + ///基础包 + JL_SRM_Basic = 0x01, + ///暂停包 + JL_SRM_Pause = 0x02, + ///每公里配速包 + JL_SRM_Pace = 0x03, + ///结束包 + JL_SRM_End = 0xff, +}; + +// 实时健康数据类型 +typedef NS_ENUM(UInt8, JL_SportDataType) { + ///心率 + JL_SportDataTypeHeartRate = 0, + ///空气压强 + JL_SportDataTypeAirPressure = 1, + ///海拔高度 + JL_SportDataTypeAltitude = 2, + ///运动步数 + JL_SportDataTypeMovementSteps = 3, + ///压力 + JL_SportDataTypeStress = 4, + ///血氧饱和度 + JL_SportDataTypeOxygenSaturation = 5, + ///训练负荷 + JL_SportDataTypeTrainingLoad = 6, + ///最大摄氧量 + JL_SportDataTypeMaxOxygenUptake = 7, + ///运动恢复时间 + JL_SportDataTypeRecoveryTime = 8, + ///运动信息 + JL_SportDataTypeSportMessage = 9, +}; + +// 运动模式 +typedef NS_ENUM(UInt8, JL_SportPattern) { + JL_SportPatternRun = 0, ///跑步 + JL_SportPatternClimb = 1, ///爬山 + JL_SportPatternSwim = 2, ///游泳 +}; + +// 运动数据格式 +typedef NS_ENUM(UInt8, JL_SportDataFormat) { + JL_SportDataFormatBeUint8 = 1, + JL_SportDataFormatBeBigendUint16 = 2, + JL_SportDataFormatBeBigendUint32 = 4, +}; + +typedef NS_ENUM(UInt8, JL_WATCH_SETTING_MASK) { + JL_WATCH_SETTING_MASK_READ_INFO = 0x00,///App读取设备信息 + JL_WATCH_SETTING_MASK_SET_INFO = 0x01,///向设备写入设置信 息 + JL_WATCH_SETTING_MASK_RECIVE_INFO = 0x02,///收到设备推送设置信息 +}; + +/// 查询读取设备信息 +///使用示例: +/// 如查询:传感器、连续测量心率、跌到监察 +/// 则对应的uint32_t 为:0x0000008A +/// 即对应的Bit位指示为:0000 0000 0000 0000 0000 0000 1000 1010 +/// Bit0:保留(考虑是否用于做功能支持位)------ 0 +/// Bit1:传感器功能 +/// Bit2:久坐提醒 +/// Bit3:连续测量心率 +/// Bit4:运动心率提醒 +/// Bit5:压力自动检测 +/// Bit6:睡眠检测 +/// Bit7:跌到监察 +/// Bit8:抬腕监察 +/// Bit9:个人信息 +/// Bit10:蓝牙断开提醒 +/// Bit11:血氧测量提醒 +/// Bit12:紧急联系人 +typedef NS_ENUM(uint32_t, JL_WATCH_SETTING) { + JL_WATCH_SETTING_SENSOR_FUNC = 0x0002, // Bit1:传感器功能 + JL_WATCH_SETTING_SEDENTARY_REMIND = 0x0004, // Bit2:久坐提醒 + JL_WATCH_SETTING_CONTINUOUS_HEARTRATE_MEASUREMENT = 0x0008, // Bit3:连续测量心率 + JL_WATCH_SETTING_EXERCISE_HEARTRATE_REMINDER = 0x0010, // Bit4:运动心率提醒 + JL_WATCH_SETTING_AUTOMATIC_PRESSURE_DETECTION = 0x0020, // Bit5:压力自动检测 + JL_WATCH_SETTING_SLEEP_DETECTION = 0x0040, // Bit6:睡眠检测 + JL_WATCH_SETTING_FALL_DETECTION = 0x0080, // Bit7:跌到监察 + JL_WATCH_SETTING_LIFTWRIST_DETECTION = 0x0100, // Bit8:抬腕监察 + JL_WATCH_SETTING_PERSONAL_INFO = 0x0200, // Bit9:个人信息 + JL_WATCH_SETTING_BLUETOOTH_DISCONECTED_REMINDER = 0x0400, // Bit10:蓝牙断开提醒 + JL_WATCH_SETTING_OXIMETRY = 0x0800, //Bit11:血氧测量提醒 + JL_WATCH_SETTING_EMERGENCY_CONTACT = 0x1000, //Bit12:紧急联系人 +}; + +/// 传感器功能开关 +/// ///使用示例: +/// 如设置打开:计步器、计步器记录、血氧、血氧记录、海拔 +/// 则对应的uint16_t 为:0x73 +/// 即对应的Bit位指示为: 0111 0011 +/// Bit0:计步器开关 +/// Bit1:计步器记录开关 +/// Bit2:心率传感器开关 +/// Bit3:心率传感器记录开关 +/// Bit4:血氧传感器开关 +/// Bit5:血氧传感器记录开关 +/// Bit6:海拔气压传感器开关 +/// Bit7:海拔气压传感器记录开关 +typedef NS_ENUM(uint16_t, JL_SENSOR_FUNC_SWITCH) { + JL_SENSOR_FUNC_SWITCH_PEDOMETER = 0x01, // Bit0:计步器开关 + JL_SENSOR_FUNC_SWITCH_PEDOMETER_RECORD = 0x02, // Bit1:计步器记录开关 + JL_SENSOR_FUNC_SWITCH_HEARTRATE = 0x04, // Bit2:心率传感器开关 + JL_SENSOR_FUNC_SWITCH_HEARTRATE_RECORD = 0x08, // Bit3:心率传感器记录开关 + JL_SENSOR_FUNC_SWITCH_BLOODOXYGEN = 0x10, // Bit4:血氧传感器开关 + JL_SENSOR_FUNC_SWITCH_BLOODOXYGEN_RECORD = 0x20, // Bit5:血氧传感器记录开关 + JL_SENSOR_FUNC_SWITCH_ALTITUDE_AIRPRESSURE = 0x40, // Bit6:海拔气压传感器开关 + JL_SENSOR_FUNC_SWITCH_ALTITUDE_AIRPRESSURE_RECORD = 0x80, // Bit7:海拔气压传感器记录开关 +}; + +///运动状态同步相关命令 +typedef NS_ENUM(UInt8, JL_WearSyncStatus) { + /// 读取运动信息 + JL_WearSyncStatus_ReadInfo = 0x00, + /// 开始运动 + JL_WearSyncStatus_Start = 0x01, + /// APP结束运动 + JL_WearSyncStatus_EndByApp = 0x02, + /// 固件结束运动 + JL_WearSyncStatus_EndByDevice = 0x03, + /// 暂停运动 + JL_WearSyncStatus_Pause = 0x04, + /// 继续运动 + JL_WearSyncStatus_Continue = 0x05, + /// 请求运动实时数据 + JL_WearSyncStatus_RealTimeInfoRequire = 0x06, +}; + + +///运动状态 +typedef NS_ENUM(UInt8, WatchSportStatus) { + /// 暂停 + WatchSportStatus_Pause = 0x00, + /// 运动中 + WatchSportStatus_Motion = 0x01 +}; + +///心率模式 +typedef NS_ENUM(UInt8, WatchHeartRateType) { + ///最大心率模式 + WatchHeartRate_Max = 0x00, + ///存储心率模式 + WatchHeartRate_Save = 0x01 +}; +/// 运动强度类型 +typedef NS_ENUM(UInt8, WatchExerciseIntensityType) { + ///非运动模式 + WatchExercise_Not = 0x00, + ///最大心率模式:热身 储备心率模式:有氧基础 + WatchExercise_Level1 = 0x01, + ///最大心率模式:燃脂 储备心率模式:有氧进阶 + WatchExercise_Level2 = 0x02, + ///最大心率模式:有氧耐力 储备心率模式:乳酸阈值 + WatchExercise_Level3 = 0x03, + ///最大心率模式:无氧耐力 储备心率模式:无氧基础 + WatchExercise_Level4 = 0x04, + ///最大心率模式:极限 储备心率模式:无氧进阶 + WatchExercise_Level5 = 0x05 +}; +///睡眠类型 +typedef NS_ENUM(UInt8, WatchSleepType) { + ///清醒 + WatchSleep_WideAwake = 0xFF, + /// 浅睡 + WatchSleep_Light = 0x01, + /// 深睡 + WatchSleep_Deep = 0x02, + /// 快速眼动 + WatchSleep_RapidEyeMovement = 0x03, + /// 零星小睡 + WatchSleep_SporadicNaps = 0x04 +}; + + +@interface JLWatchEnum : NSObject + +/** + * 运动数据类型转换为运动数据格式 + * @param sportDataType 运动数据类型 + * @return JL_SportDataFormat 运动数据格式 + */ ++ (JL_SportDataFormat)sportDataFormatFromSportDataType:(JL_SportDataType)sportDataType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSync.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSync.h new file mode 100644 index 000000000..b4cd9509d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSync.h @@ -0,0 +1,76 @@ +// +// JLWearSync.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/26. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_RCSP.h" +#import "JLWatchEnum.h" +#import "JL_EntityM.h" +#import "JL_SDM_Header.h" +#import "JL_WatchSyncProtocol.h" + + +NS_ASSUME_NONNULL_BEGIN + +/// 穿戴设备状态同步指令 +@interface JLWearSync : NSObject + ++(instancetype)share; + +/// 加入协议响应 +/// @param delegate 对象 +-(void)addProtocol:(id)delegate; + +/// 移除协议响应 +/// @param delegate 对象 +-(void)removeProtocol:(id)delegate; + +/// 读取运动信息 +/// @param entity 设备entity +/// @param block JLWearSyncInfoModel 回调 +/// 本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncSportInfo:(JLWearSyncInfoModel *_Nonnull)model; +-(void)w_requireSportInfoWith:(JL_EntityM *)entity Block:(JL_CB_SyncSportInfo _Nullable)block; + +///开始运动命令 +/// @param type 运动类型 +/// 0x00 :非运动模式 +/// 0x01 :室外跑步 +/// 0x02 :室内跑步 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportStart:(uint8_t)type With:(JL_EntityM *)entity Block:(JL_CB_Status _Nullable)block; + +/// 结束运动命令 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncStopMotion:(JLWearSyncFinishModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; +-(void)w_SportFinishWith:(JL_EntityM*)entity; + +///暂停运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportPauseWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +///继续运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportContinueWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +/// 读取运动实时数据 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +-(void)w_requireRealTimeSportInfoWith:(JL_EntityM *)entity; + +/// 实时数据获取时间间隔设置 +/// @param interval 时间间隔,单位:ms +/// @param entity 设备entity +-(void)pr_setTimeInterval:(UInt16)interval With:(JL_EntityM *)entity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncCustom.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncCustom.h new file mode 100644 index 000000000..130e23941 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncCustom.h @@ -0,0 +1,97 @@ +// +// JLWearSyncCustom.h +// JL_BLEKit +// +// Created by EzioChan on 2022/4/13. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_RCSP.h" +#import "JL_EntityM.h" +#import "JL_SDM_Header.h" + + + +NS_ASSUME_NONNULL_BEGIN + +@protocol JLWearSyncCustomPtl + +/// 运动信息返回 +/// @param model 运动信息对象 +/// @param entity 设备entity +-(void)jlWearSyncSportInfo:(JLWearSyncDataModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 结束运动返回内容 +/// @param model 结束时间相隔信息对象 +/// @param entity 设备entity +-(void)jlWearSyncStopMotion:(JLWearSyncFinishDataModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 开始运动返回消息 +/// @param entity 设备entity +-(void)jlWearSyncStartMotionWith:(JL_EntityM *_Nonnull)entity; + +/// 暂停运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusPauseWith:(JL_EntityM *_Nonnull)entity; + +/// 继续运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusContiuneWith:(JL_EntityM *_Nonnull)entity; + +/// 实时数据回调 +/// @param model 实时数据模型 +/// @param entity 设备entity +-(void)jlWearSyncRealTimeData:(JLWearSyncRealTimeData *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +@end + + + +@interface JLWearSyncCustom : NSObject + +@property(nonatomic,weak)id delegate; + +/// 读取运动信息 +/// @param entity 设备entity +/// @param block JLWearSyncInfoModel 回调 +/// 本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncSportInfo:(JLWearSyncInfoModel *_Nonnull)model; +-(void)w_requireSportInfoWith:(JL_EntityM *)entity Block:(JL_CB_SyncSportDataInfo _Nullable)block; + +///开始运动命令 +/// @param type 运动类型 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportStart:(UInt8)type With:(JL_EntityM *)entity Block:(JL_CB_Status _Nullable)block; + +/// 结束运动命令 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncStopMotion:(JLWearSyncFinishModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; +-(void)w_SportFinishWith:(JL_EntityM*)entity; + +///暂停运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportPauseWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +///继续运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportContinueWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +/// 读取运动实时数据 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +-(void)w_requireRealTimeSportInfoWith:(JL_EntityM *)entity; + +/// 实时数据获取时间间隔设置 +/// @param interval 时间间隔,单位:ms +/// @param entity 设备entity +-(void)pr_setTimeInterval:(UInt16)interval With:(JL_EntityM *)entity; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h new file mode 100644 index 000000000..8ef17f472 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h @@ -0,0 +1,54 @@ +// +// JLWearSyncFinishModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLWatchEnum.h" +NS_ASSUME_NONNULL_BEGIN + + +@interface JLWearSyncFinishDataModel:NSObject + +@property(nonatomic,strong)NSData *basicData; + +@end + + +@interface JLWatchExerciseIntens:NSObject + +/// 运动强度类型 +@property(nonatomic,assign)WatchExerciseIntensityType type; + +/// 持续时间 +@property(nonatomic,assign)UInt32 duration; + +@end + +@interface JLWearSyncFinishModel : JLWearSyncFinishDataModel + +/// 结束时间 +@property(nonatomic,strong)NSDate *endTime; + +/// 运动恢复时间 +/// 格式 :hour : min +@property(nonatomic,strong)NSString *recyleTime; + +/// 运动记录文件ID +@property(nonatomic,assign)UInt16 sportId; + +/// 运动记录文件大小 +@property(nonatomic,assign)UInt16 fileSize; + +/// 运动强度类型数组 +@property(nonatomic,strong)NSArray *durationArray; + + ++(JLWearSyncFinishModel *)initWithData:(NSData*)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h new file mode 100644 index 000000000..9dc5086a3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h @@ -0,0 +1,51 @@ +// +// JLWearSyncInfoModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLWatchEnum.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLWearSyncDataModel : NSObject + +/// 基础返回对象 +@property(nonatomic,strong)NSData *basicData; + +@end + + +@interface JLWearSyncInfoModel : JLWearSyncDataModel + +///运动模式类型 +/// 0x00 非运动模式 +/// 0x01 户外跑步 +/// 0x02 室内跑步 +@property(nonatomic,assign)uint8_t sportType; + +/// 运动状态 +@property(nonatomic,assign)WatchSportStatus status; + +///运动Id +@property(nonatomic,assign)double sportID; + +///设备是否包含GPS +@property(nonatomic,assign)BOOL hasGPS; + +///心率模式 +@property(nonatomic,assign)WatchHeartRateType heartRateType; + +///建议实时数据读取时间间隔,单位:ms +@property(nonatomic,assign)UInt16 interval; + +/// 利用设备返回的数据初始化一个运动信息对象 +/// @param data 设备返回数据 ++(JLWearSyncInfoModel *)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h new file mode 100644 index 000000000..ed10d1e50 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h @@ -0,0 +1,57 @@ +// +// JLWearSyncRealTimeModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLWatchEnum.h" + +NS_ASSUME_NONNULL_BEGIN + + +@interface JLWearSyncRealTimeData : NSObject + +@property(nonatomic,strong)NSData *basicData; + +@end + +@interface JLWearSyncRealTimeModel : JLWearSyncRealTimeData + +/// 类型 +@property(nonatomic,assign)UInt8 type; + +/// 运动步数 +@property(nonatomic,assign)UInt32 sportStep; + +/// 运动距离,单位:0.01公里 +@property(nonatomic,assign)UInt16 distance; + +/// 运动时长:单位:秒 +@property(nonatomic,assign)UInt32 exerciseTime; + +/// 速度,单位0:0.01公里/小时,(倒数为配速,单位:秒/公里) +@property(nonatomic,assign)UInt16 speed; + +/// 热量,单位:千卡 +@property(nonatomic,assign)UInt16 calories; + +/// 步频,单位:步/分钟 +@property(nonatomic,assign)UInt16 cadence; + +///步幅,单位:厘米 +@property(nonatomic,assign)UInt16 stride; + +///实时运动强度状态 +@property(nonatomic,assign)WatchExerciseIntensityType statusType; + +///运动实时心率 +@property(nonatomic,assign)UInt8 heartRate; + ++(JLWearSyncRealTimeModel *)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearable.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearable.h new file mode 100644 index 000000000..6096f3264 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWearable.h @@ -0,0 +1,137 @@ +// +// JLWearable.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import +#import "JL_RCSP.h" +#import "JL_EntityM.h" +#import "JL_SDM_Header.h" +#import "JL_WatchProtocol.h" +#import "JLWearSync.h" +#import "JLWearSyncCustom.h" + +NS_ASSUME_NONNULL_BEGIN + +#define JL_RECIVED_DATA @"JL_RECIVED_DATA" + + +/// 穿戴设备基础命令控制 +@interface JLWearable : NSObject + +@property(nonatomic,assign,readonly)uint8_t version; +@property(nonatomic,strong)JL_CB_HeartRate heartRate; +@property(nonatomic,strong)JL_CB_AirPressure airPressure; +@property(nonatomic,strong)JL_CB_Altitude alititude; +@property(nonatomic,strong)JL_CB_MoveSteps moveStep; +@property(nonatomic,strong)JL_CB_Stress stress; +@property(nonatomic,strong)JL_CB_Oxsaturation oxStaturation; +@property(nonatomic,strong)JL_CB_TrainLoad trainLoad; +@property(nonatomic,strong)JL_CB_MaxOxg maxOxg; +@property(nonatomic,strong)JL_CB_RecTime rectime; +@property(nonatomic,strong)JL_CB_SportMsg sportMsg; +@property(nonatomic,strong)JL_CB_WatchLog logMsg; +@property(nonatomic,strong,readonly)JL_EntityM* responseEntity; + ++(instancetype)sharedInstance; + +/// 把对象加入协议 +/// @param delegate 对象 +-(void)w_addDelegate:(id)delegate; + +/// 移除对象的协议 +/// @param delegate 对象 +-(void)w_removeDelegate:(id)delegate; + +/// 移除所有对象的协议 +-(void)w_removeAll; + +/// 请求穿戴设备的数据 +/// 使用例子: +/** + JLWearable *w = [JLWearable sharedInstance]; + NSMutableArray *array = [NSMutableArray new]; + [array addObject:[JL_SDM_HeartRate requireRealTime:YES Resting:YES Max:YES]]; + [array addObject:[JL_SDM_Altitude requireRealTime:YES min:NO Max:NO]]; + [array addObject:[JL_SDM_MoveSteps require]]; + w.heartRate = ^(JL_SDM_HeartRate *heartRate) { + //心率信息 + }; + w.alititude = ^(JL_SDM_Altitude *altitude) { + //海拔信息 + }; + JL_EntityM *entity = [[JL_EntityM alloc] init]; + [w requestSportData:array withEntity:entity]; +*/ +/// @param reqModels 数据模型,可参考JL_SDM_相关的类型请求,这是个父类,这里是通过多态的方式来实现选择性的请求 +/// @param entity 当前设备的entity +/// +-(void)w_requestSportData:(NSMutableArray*)reqModels withEntity:(JL_EntityM *)entity; + +/// 私有测试接口 +/// @param data 数据 +/// @param entity 当前设备entity +/// @param opcode 操作 +-(void)pr_requestSportDataMask:(NSData *)data withEntity:(JL_EntityM *)entity opCode:(uint16_t)opcode; + + +/// 收到数据解析 +/// @param pkg 收到的数据包 +/// @param entity 当前的entity +-(void)w_inputPKG:(JL_PKG*)pkg withEntity:(JL_EntityM *)entity; + +/// 推送天气到手表 +/// @param weather 天气内容 +/// @param entity 服务对象 +/// @param block 推送回调 +-(void)w_syncWeather:(JL_MSG_Weather *)weather withEntity:(JL_EntityM *)entity result:(JL_CB_Status)block; + + +/** + 请求设备传感器的log + 使用示例 + [[JLWearable shareInstance] w_transportLog:Log_Acceleration | Log_HeartRate_BloodOxy withEntity:entity]; + */ +/// 请求设备传感器的log +/// @param model 请求类型(Log_Acceleration | Log_HeartRate_BloodOxy) +/// @param entity 当前的entity +-(void)w_transportLog:(JL_WATCH_LOG_MASK)model withEntity:(JL_EntityM *)entity; + + +//MARK: - 设备设置命令 + +/// 查询读取设备信息 +/// @param target JL_WATCH_SETTING枚举,支持|运算同时设置多个设备类型信息 +/// @param entity 当前的entity +/// /// 本方法的返回结果,需要接收对应的协议:JL_WatchProtocol ,并把遵循协议的对象加入到本单例中 +/// -(void)w_addDelegate:(id)delegate; +-(void)w_InquireDeviceFuncWith:(JL_WATCH_SETTING)target withEntity:(JL_EntityM *)entity; + +/// 向设备写入设置信息 +/// @param models 设置对应的功能模型 +/// @param entity 当前的entity +/// @param block 回复设置的状态 +/// 使用示例: +/// 如设置:传感器、久坐提醒、蓝牙断开提醒 +/// NSMutableArray * models = [NSMutableArray new]; +/// /*计步相关传感器*/ +/// JLSensorFuncModel *model = [[JLSensorFuncModel alloc] initWhthFuncByte:0x0073];//详情设置可参考相关接口 +/// [models addObject:model]; +/// /*久坐设置*/ +/// JLSedentaryRmdModel *model1 = [[JLSedentaryRmdModel alloc] initWithModel:s_Shake Status:true]; +/// [models addObject:model1]; +/// /*蓝牙断开提醒*/ +/// JLDisconnectRemindModel *model2 = [[JLDisconnectRemindModel alloc] initWithModel:s_BrightScreen Status:true]; +/// [models addObject:model2]; +/// [[JLWearable sharedInstance] w_SettingDeviceFuncWith:models withEntity:requestEntity] +/// 本方法的返回结果,需要接收对应的协议:JL_WatchProtocol ,并把遵循协议的对象加入到本单例中 +/// -(void)w_addDelegate:(id)delegate; +-(void)w_SettingDeviceFuncWith:(NSArray *)models withEntity:(JL_EntityM *)entity result:(JL_CB_Status)block; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h new file mode 100644 index 000000000..c7a838e27 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h @@ -0,0 +1,37 @@ +// +// JLWristLiftDetectionModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 抬腕监测设置 +@interface JLWristLiftDetectionModel : JLwSettingModel +///开关 +@property(nonatomic,assign)WatchSwitchType status; +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; +/// 开始时间 +@property(nonatomic,strong)WatchTimer *start; + +/// 结束时间 +@property(nonatomic,strong)WatchTimer *end; + + +-(instancetype)initWithData:(NSData *)data; + +/// 构建一个抬腕提醒设置对象 +/// @param type 提醒类型 +/// @param status 开关类型 +/// @param begin 开始时间 +/// @param ed 结束时间 +- (instancetype)initWithModel:(WatchRemindType)type Status:(WatchSwitchType )status Begin:(WatchTimer *)begin End:(WatchTimer *)ed; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h new file mode 100644 index 000000000..5b2f837f2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h @@ -0,0 +1,116 @@ +// +// JL_AlarmClockManager.h +// JL_BLEKit +// +// Created by EzioChan on 2021/12/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_RtcOperate) { + JL_FlashOperateFlagRead = 0x00, //读取 + JL_FlashOperateFlagWrite = 0x01, //设置 +}; + +typedef void(^JL_RTC_ALARM_BK)(NSArray * __nullable array, uint8_t flag); + +typedef void(^JL_RTC_GET_ALARM_BK)(NSArray * __nullable alarms,NSError * __nullable error); + +#pragma mark ---> 闹钟响与停止 +///闹钟正在响 +extern NSString *kJL_MANAGER_RTC_RINGING; + +///闹钟停止响 +extern NSString *kJL_MANAGER_RTC_RINGSTOP; + +//闹钟铃声试听 +extern NSString *kJL_MANAGER_RTC_AUDITION; + + +/// RTC闹钟管理者 +@interface JL_AlarmClockManager : JL_FunctionBaseManager + +///RTC 版本 +@property (assign,nonatomic) uint8_t rtcVersion; +///是否支持闹铃设置 +@property (assign,nonatomic) JL_RTCAlarmType rtcAlarmType; +///设备当前时间 +@property (strong,nonatomic) JLModel_RTC *rtcModel; +///设备闹钟数组 +@property (strong,nonatomic) NSMutableArray *rtcAlarms; +///默认铃声 +@property (strong,nonatomic) NSMutableArray *rtcDfRings; + + +/// 查询设备闹钟 +/// - Parameter result: 设备回调 +-(void)cmdRtcGetAlarms:(JL_RTC_GET_ALARM_BK)result; + + +/// 设置/增加闹钟 +/// - Parameters: +/// - array: array 闹钟模型数组 +/// - result: 结果回调 +-(void)cmdRtcSetArray:(NSArray*)array Result:(JL_CMD_RESPOND __nullable)result; + + +/// 删除闹钟 +/// - Parameters: +/// - array: 闹钟序号数组 +/// - result: 设备回复 +-(void)cmdRtcDeleteIndexArray:(NSArray*)array Result:(JL_CMD_RESPOND __nullable)result; + + +/// 停止闹钟响声 +/// - Parameter result: 设备回复 +-(void)cmdRtcStopResult:(JL_CMD_RESPOND __nullable)result; + + +/// 闹钟试听响铃 +/// - Parameters: +/// - rtc: 闹钟模型 +/// - option: 启停标记 +/// - result: 设备回复 +-(void)cmdRtcAudition:(JLModel_RTC *)rtc Option:(BOOL)option result:(JL_CMD_RESPOND __nullable)result; + + +/// 闹铃设置 +/// @param operate 0x00:读取 0x01:设置 +/// @param index 掩码 (0x01设置第1个闹钟,0x03设置第一个和第二个闹钟) +/// @param setting 设置选项,读取时无需传入 +/// @param result 设备回复 +-(void)cmdRtcOperate:(JL_RtcOperate)operate + Index:(uint8_t)index + Setting:(JLModel_AlarmSetting* __nullable)setting + Result:(JL_RTC_ALARM_BK __nullable)result; + + +/// 解析闹钟数据内容 +/// @param infoData 数据内容 +/// @param ltvVersion LTV的版本 +-(void)parseData:(NSData *)infoData WithLtyType:(uint8_t)ltvVersion; + +/// 【闹钟信息】解析 +/// - Parameters: +/// - data: 需要解析的数据 +/// - rtcType: RTC类型 ++(NSMutableArray *)makeOutRtc:(NSData*)data RtcType:(uint8_t)rtcType; + + +/// [默认闹钟铃声]解析 +/// - Parameter data: [默认闹钟铃声]数据 ++(NSMutableArray *)makeOutRtcDefaultRing:(NSData *)data; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Assist.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Assist.h new file mode 100644 index 000000000..6cdb50fa5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Assist.h @@ -0,0 +1,81 @@ +// +// JL_Assist.h +// QCY_Demo +// +// Created by 杰理科技 on 2021/8/12. +// Copyright © 2021 杰理科技. All rights reserved. +// + +#import +#import + + +@protocol JL_AssistDelegate + +-(void)assistDidWriteData:(NSData *_Nonnull)data; + +@end + +NS_ASSUME_NONNULL_BEGIN +typedef void(^JL_Assist_BK)(BOOL isPaired); + +@class JL_ManagerM; + +@interface JL_Assist : NSObject +@property(strong,nonatomic)JL_ManagerM *mCmdManager; //命令中心 +@property(strong,nonatomic)NSString *mService; //服务号 +@property(strong,nonatomic)NSString *mRcsp_W; //特征:RCSP写 +@property(strong,nonatomic)NSString *mRcsp_R; //特征:RCSP读 +///握手(配对)秘钥 +@property(strong,nonatomic)NSData *__nullable mPairKey __attribute__((deprecated("Use mAuthKey instead"))); +@property(assign,nonatomic)BOOL mNeedPaired __attribute__((deprecated("Use mAuthEnable instead"))); //是否需要配对 +/// 设备认证密钥 +@property(strong,nonatomic)NSData *__nullable mAuthKey; +/// 是否需要设备认证 +@property(assign,nonatomic)BOOL mAuthEnable; +@property(assign,nonatomic)BOOL mLogData; //是否打印裸数据 +@property(assign,nonatomic)NSInteger mLimitMtu; //(默认40)在最大的MTU基础上减少数据量 +@property(strong,nonatomic)CBPeripheral *__nullable mRcspPeripheral; +@property(strong,nonatomic)CBCharacteristic *__nullable mRcspWrite; +@property(strong,nonatomic)CBCharacteristic *__nullable mRcspRead; +@property(strong,nonatomic)NSString *mBleName; //设备名字 + +///代理,如果实现了此代理则发出的数据都需要走回调发送,内部不处理 +/// @discussion JL_AssistDelegate +@property(assign,nonatomic)id __nullable mDelegate; + +/// Execute in a method 「- (void)centralManagerDidUpdateState:」 +/// @param state CBManagerState +-(void)assistUpdateState:(CBManagerState)state; + +/// Execute in a method 「- (void)centralManager:didDisconnectPeripheral:error:」 +/// @param peripheral CBPeripheral +-(void)assistDisconnectPeripheral:(CBPeripheral *)peripheral; + + +/// Execute in a method 「- (void)peripheral:didDiscoverServices:」 +/// @param service CBService +/// @param peripheral CBPeripheral +-(void)assistDiscoverCharacteristicsForService:(CBService*)service + Peripheral:(CBPeripheral*)peripheral; + +/// Execute in a method 「- (void)peripheral:didUpdateNotificationStateForCharacteristic:error:」 +/// @param characteristic CBCharacteristic +/// @param peripheral CBPeripheral +/// @param result JL_Assist_BK (YES:配对成功 NO:配对失败) +-(void)assistUpdateCharacteristic:(nonnull CBCharacteristic *)characteristic + Peripheral:(CBPeripheral*)peripheral + Result:(JL_Assist_BK)result; + +/// Execute in a method 「- (void)peripheral:didUpdateValueForCharacteristic:error:」 +/// @param characteristic CBCharacteristic +-(void)assistUpdateValueForCharacteristic:(CBCharacteristic *)characteristic; + + +/// Execute in a method 「- (void)peripheral:didWriteValueForCharacteristic:error:」 +/// Execute in a method 「- (void)peripheral:didIsReadyForWrite:error:」 +-(void)assistDidReady; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEAction.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEAction.h new file mode 100644 index 000000000..7a5a3f66b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEAction.h @@ -0,0 +1,66 @@ +// +// JL_BLEAction.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * BLE数据通知 + */ +extern NSString *kJL_RCSP_RECEIVE; //Rcsp数据【接收】 +extern NSString *kJL_RCSP_SEND; //Rcsp数据【发送】 + + +typedef void(^ATC_Block)(BOOL ret); +@protocol JL_BLEActionDelegate +@optional +-(void)onPairOutputData:(NSData*)data; + +@end + +@interface JL_BLEAction : NSObject +@property(nonatomic,weak)iddelegate; + ++(id)sharedMe; + +/** + 过滤其余蓝牙设备 + @param key 过滤码 + @param advertData 蓝牙广播字典 + @return NSDictionary 广播包含信息字典 + */ ++(NSDictionary*)bluetoothKey_1:(NSData*)key Filter:(NSDictionary*)advertData; + +/** + 蓝牙设备配对 + @param pKey 配对码 + @param bk 配对回调YES:成功 NO:失败 + */ +-(void)bluetoothPairingKey:(NSData *__nullable)pKey Result:(ATC_Block)bk; +-(void)inputPairData:(NSData*)rData; +-(void)cancelPair; + +#pragma mark - 蓝牙根据广播包回连 + +/** + * 获取广播包kCBAdvDataManufacturerData里面 'JLOTA' 标识的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (NSString * _Nullable)otaBleMacAddressFromCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +/** + * 判断当前蓝牙地址是否等于广播包kCBAdvDataManufacturerData里面的蓝牙地址 + * @param otaBleMacAddress ota升级中设备的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (Boolean)otaBleMacAddress:(NSString *)otaBleMacAddress isEqualToCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEKit.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEKit.h new file mode 100644 index 000000000..6cb524ff9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEKit.h @@ -0,0 +1,138 @@ +// +// JL_BLEKit.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/9. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import +//! Project version number for JL_BLEKit. +FOUNDATION_EXPORT double JL_BLEKitVersionNumber; + +//! Project version string for JL_BLEKit. +FOUNDATION_EXPORT const unsigned char JL_BLEKitVersionString[]; + +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEMultiple.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEMultiple.h new file mode 100644 index 000000000..d935e6bfa --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BLEMultiple.h @@ -0,0 +1,153 @@ +// +// JL_BLEMultiple.h +// JL_BLEKit +// +// Created by 杰理科技 on 2020/9/1. +// Copyright © 2020 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * BLE状态通知 + */ +extern NSString *kJL_BLE_M_FOUND; //发现设备 +extern NSString *kJL_BLE_M_FOUND_SINGLE; //发现单个设备 +extern NSString *kJL_BLE_M_ENTITY_CONNECTED; //连接有更新 +extern NSString *kJL_BLE_M_ENTITY_DISCONNECTED; //断开连接 +extern NSString *kJL_BLE_M_ON; //BLE开启 +extern NSString *kJL_BLE_M_OFF; //BLE关闭 +extern NSString *kJL_BLE_M_EDR_CHANGE; //经典蓝牙输出通道变化 +extern NSString *kJL_BLE_M_SAVE_BLEADDR; //存储EDR地址 +extern NSString *kJL_BLE_M_ANCS_UPDATE; //设备ANCS权限变更 + + +@interface JL_BLEMultiple : NSObject +@property (strong, nonatomic) NSData *__nullable filterKey; //过滤码 +@property (strong, nonatomic) NSData *__nullable pairKey __attribute__((deprecated("use authKey instead"))); //配对码 +@property (copy, nonatomic) NSData *__nullable authKey; //配对码 +@property (assign, nonatomic) BOOL BLE_IS_CONNECTING; //是否有设备正在连接 +@property (assign, nonatomic) BOOL BLE_FILTER_ENABLE; //是否【开启过滤】 +///是否【开启配对】 +@property (assign, nonatomic) BOOL BLE_PAIR_ENABLE __attribute__((deprecated("Use authEnable instead"))); +///是否【开启认证】 +@property (assign, nonatomic) BOOL authEnable; +@property (assign, nonatomic) int BLE_TIMEOUT; //连接超时时间 + +@property (strong, nonatomic) NSMutableArray *blePeripheralArr; //发现的设备 +@property (strong, nonatomic) NSArray *bleAttDevices; //ATT发现的设备 +@property (strong, nonatomic) NSMutableArray *bleConnectedArr; //已连接的设备 +@property (assign, nonatomic) CBManagerState bleManagerState; //蓝牙状态 +@property (strong, nonatomic) NSArray *__nullable bleDeviceTypeArr; //选择的设备类型<@(JL_DeviceType)> +@property (strong, nonatomic) NSArray *__nullable managerClassArr; //实例化的业务逻辑<@(JL_CLASS)> + + +@property (strong, nonatomic) NSString *JL_BLE_SERVICE; //服务号 +@property (strong, nonatomic) NSString *JL_BLE_RCSP_W; //命令【写】通道 +@property (strong, nonatomic) NSString *JL_BLE_RCSP_R; //命令【读】通道 + ++(NSString*)versionOfSDK; + +/** + 开始搜索 + */ +-(void)scanStart; + +/** + 继续搜索 + */ +-(void)scanContinue; + +/** + 停止搜索 + */ +-(void)scanStop; + + +/// 蓝牙中心管理器 +-(CBCentralManager *)getCenterManaer; + +/** + 通过UUID生成Entity。 + */ +-(JL_EntityM *_Nullable)makeEntityWithUUID:(NSString*)uuid; + +/// 通过UUID获得一个已连接过的entity +/// @param uuid uuid +/// @param status 获取后是否继续蓝牙搜索 +/// @param result 结果 +-(void)getEntityWithSearchUUID:(NSString *)uuid SearchStatus:(BOOL)status Result:(void(^)(JL_EntityM *_Nullable entity))result; +/** + 连接设备 + @param entity 蓝牙设备类 + */ +-(void)connectEntity:(JL_EntityM*)entity Result:(JL_EntityM_STATUS_BK)result; + + +/// 根据设备 ADV 广播报中的 Mac 连接设备 +/// ADV 的数据格式必须满足 JL 设备的标准 TWS 系列的数据结构 +/// @param advMac 广播报中的蓝牙地址 +/// 一般是指 EDR 地址,当然开发者也可以跟固件端协商,采取其他的地址,但是要求数据结构不变 +/// @param result 回调 +-(void)connectEntityWithAdvMac:(NSString *)advMac Result:(JL_EntityM_STATUS_BK) result; + +/// 根据设备Mac去回连 +/// @param mac Mac地址 +/// @param result 回调 +-(void)connectEntityForMac:(NSString *)mac Result:(JL_EntityM_STATUS_BK)result; + +/** + 断开连接 + */ +-(void)disconnectEntity:(JL_EntityM*)entity Result:(JL_EntityM_STATUS_BK)result; + +/** + 更新名字信息 +*/ +-(void)updateHistoryRename:(NSString*)name withUuid:(NSString*)uuid; + +/// 清除历史记录 +/// 删除后,可能会导致使用历史纪录回连时,信息为空 +/// 一般是在删除了绑定设备后使用 +-(void)cleanHistoryDeviceCache; + +/// 获取当前正在连接的entity +-(JL_EntityM *__nullable)connectingEntity; + +/** + 返回经典蓝牙信息 + @return @{@"ADDRESS":@"7c9a1da7330e", + @"TYPE" :@"BluetoothA2DPOutput", + @"NAME" :@"earphone"} + */ ++(NSDictionary*)outputEdrInfo; + +/** + 返回经典蓝牙edr列表 + @return 蓝牙edr列表 + */ ++(NSArray*)outputEdrList; + + +#pragma mark - ota升级 +/** + * ota升级功能 + * @param mBleEntityM 当前ota升级的蓝牙设备(JL_EntityM) + * @param otaFilePath ota升级文件路径 + * @param result ota升级过程回调 + */ +- (void)otaFuncWithEntityM:(JL_EntityM *)mBleEntityM + withFilePath:(NSString *)otaFilePath + Result:(JL_OTA_RT __nullable)result; +- (void)setOtaReconnectBleAddr:(NSString* __nullable)addr; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BatchManger.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BatchManger.h new file mode 100644 index 000000000..c28d75b66 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BatchManger.h @@ -0,0 +1,47 @@ +// +// JL_BatchManger.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/21. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_BatchType) { + ///开始 + BatchType_Begin = 0x00, + ///结束 + BatchType_Finish = 0x80, + ///取消 + BatchType_Cancel = 0x81, +}; + +typedef NS_ENUM(NSUInteger, JL_BatchOptionType) { + /// 格式化操作 + BatchOption_Format = 0x00, + /// 未知操作 + BatchOption_unKnow = 0xFF, +}; + +@interface JL_BatchManger : JL_FunctionBaseManager + +#pragma mark ---> 批操作命令 +typedef void(^JL_BATCH_BK)(uint8_t flag); +/** + @param type 0x00:开始 0x80:结束 0x81:结束 + @param array @[@(JL_BatchOptionType)],0x00代表格式化操作。 + @param result 操作回调 0x00:成功 0x01:失败 + */ +-(void)cmdBatchType:(JL_BatchType)type + Operations:(NSArray*)array + Result:(JL_BATCH_BK __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BigDataManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BigDataManager.h new file mode 100644 index 000000000..c1b94cffa --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BigDataManager.h @@ -0,0 +1,57 @@ +// +// JL_BigDataManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2022/12/7. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@class JL_BigData; + +typedef NS_ENUM(UInt8, JL_BigDataStatus) { + JL_BigDataStatusSendSuccess = 0, //成功 + JL_BigDataStatusSendFailCRC = 1, //CRC校验失败 + JL_BigDataStatusSendFailSEQ = 2, //SEQ不对 + JL_BigDataStatusSendFailFormat = 3, //数据类型不支持 + JL_BigDataStatusSendFailWay = 4, //传输方式不支持 + JL_BigDataStatusSendFailOutOfRange = 5, //数据长度超范围 + JL_BigDataStatusSendFailWrite = 6, //写入数据失败 + JL_BigDataStatusSendFailMissingParameter = 7, //缺少配置参数 + JL_BigDataStatusSendFailCmd = 8, //命令错误 + JL_BigDataStatusSendFailTimeout = 9, //超时 + JL_BigDataStatusGet = 10, //收到数据 + JL_BigDataStatusSendFailUnknown = 0xff, //未知错误 +}; +typedef void(^JL_BIGDATA_RT)(JL_BigData *bigData); + +@interface JL_BigDataManager : JL_FunctionBaseManager + +//设立大数据监听(接收阿里数据,必须放在单利类中!!!) +-(void)cmdBigDataMonitor:(JL_BIGDATA_RT)result; + +//发送大数据 +-(void)cmdInputBigData:(JL_BigData*)data; + +@end + +@interface JL_BigData : NSObject +@property(nonatomic,assign)JL_BigDataStatus mResult; +@property(nonatomic,assign)NSInteger mIndex; + +///0:原始数据 +///1:阿里云数据 +///2:RTC数据 +///3: AI云 +///4:TTS语音合成 +///5: 平台接口认证信息 +@property(nonatomic,assign)uint8_t mType; +@property(nonatomic,assign)uint8_t mVersion; +@property(nonatomic,strong)NSData *mData; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BinChargeManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BinChargeManager.h new file mode 100644 index 000000000..2077c2e47 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_BinChargeManager.h @@ -0,0 +1,116 @@ +// +// JL_BinCharge.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_ScanSetting) { + JL_ScanTimeout = 0x00, //超时结束 + JL_ScanInterrupt = 0x01, //打断结束 + JL_ScanFail = 0x02, //开启扫描失败 + JL_Scaning = 0x03, //正在扫描 +}; + +typedef NS_ENUM(UInt8, JL_ReverberationFunType) { + JL_ReverberationAndDynamicType = 0x00, //支持混响和动态限幅器 + JL_OnlyReverberationType = 0x01, //仅支持混响 + JL_OnlyDynamicLimiterType = 0x02, //仅支持动态限幅器 +}; + +typedef void(^JL_CMD_VALUE_BK)(uint32_t value); +typedef void(^JL_LOW_DELAY_BK)(uint16_t mtu, uint32_t delay); + +@interface JL_BinChargeManager : JL_FunctionBaseManager + +#pragma mark ---> 通知固件App的信息 +// @param flag 未知 +-(void)cmdSetAppInfo:(uint8_t)flag; + +#pragma mark ---> 设置通讯MTU +// @param mtu app请求mtu⼤⼩ +// @param result 实际设置的Mtu⼤⼩ +-(void)cmdSetMTU:(uint16_t)mtu Result:(JL_CMD_VALUE_BK __nullable)result; + +#pragma mark ---> 开启蓝⽛扫描 +// @param timeout 超时时间 +// @param result 0:成功 1:失败 +-(void)cmdBTScanStartTimeout:(uint16_t)timeout Result:(JL_CMD_VALUE_BK __nullable)result; + +#pragma mark ---> 推送蓝⽛扫描结果 +// 返回【蓝⽛数据结构】数组 +// @see JLBTModel +extern NSString *kJL_MANAGER_BT_LIST_RESULT; + +#pragma mark ---> 停⽌蓝⽛扫描(APP-->固件) +// @param reason 0:超时结束 1:打断结束 2:开启扫描失败 3:正在扫描 +// @param result 0:成功 1:失败 +-(void)cmdBTScanStopReason:(JL_ScanSetting)reason Result:(JL_CMD_VALUE_BK __nullable)result; + +#pragma mark ---> 停⽌蓝⽛扫描(固件-->APP) +// 0:超时结束 1:打断结束 2:开启扫描失败 3:正在扫描 +extern NSString *kJL_MANAGER_BT_SCAN_STOP_NOTE; + +#pragma mark ---> 通知固件连接指定的蓝⽛设备 +// @param addr 蓝⽛设备地址【设置0x00 00 00 00 00 00 则是断开外设的连接】 +// @param result 0:成功 1:失败 +-(void)cmdBTConnectAddress:(NSData*)addr Result:(JL_CMD_VALUE_BK __nullable)result; + +extern NSString *kJL_MANAGER_ID3_Title; +extern NSString *kJL_MANAGER_ID3_Artist; +extern NSString *kJL_MANAGER_ID3_Album; +extern NSString *kJL_MANAGER_ID3_Time; +extern NSString *kJL_MANAGER_ID3_Current; +extern NSString *kJL_MANAGER_ID3_PlayPush; + +#pragma mark ---> 主动设置ID3播放状态 +-(void)setID3_Status:(uint8_t)st; + +#pragma mark ---> ID3 播放/暂停 +-(void)cmdID3_PP; + +#pragma mark ---> ID3 上一曲 +-(void)cmdID3_Before; + +#pragma mark ---> ID3 下一曲 +-(void)cmdID3_Next; + +#pragma mark ---> ID3 开启/暂停 音乐信息推送 +-(void)cmdID3_PushEnable:(BOOL)enable; + +#pragma mark ---> 设置高低音 [-12,+12] + +/// 设置高低音 +/// - Parameters: +/// - p_low: 低音 (-12,12) +/// - p_high: 高音 (-12,12) +-(void)cmdSetLowPitch:(int)p_low HighPitch:(int)p_high; + +#pragma mark ---> 设置混响值[深度和强度][0,100]、限幅值[-60,0] +/// 设置混响值 +/// @param depthValue 深度 0-100 +/// @param intensityValue 强度 0-100 +/// @param dynamicLimiterValue 动态限幅值 -60 - 0 +/// @param reverOn 是否开启 +/// @param type 混响类型 +-(void)cmdSetReverberation:(int)depthValue + IntensityValue:(int)intensityValue + DynamicLimiterValue:(int)dynamicLimiterValue + SwtichReverState:(int)reverOn + FunType:(JL_ReverberationFunType)type; + +#pragma mark ---> 获取低延时参数 +-(void)cmdGetLowDelay:(JL_LOW_DELAY_BK __nullable)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_CallManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_CallManager.h new file mode 100644 index 000000000..2b704cdb6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_CallManager.h @@ -0,0 +1,37 @@ +// +// JL_CallManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface JL_CallManager : JL_FunctionBaseManager + +#pragma mark ---> 拨打电话 +/** + @param number 电话号码 + @param result 回复 + */ +-(void)cmdPhoneCall:(NSString*)number Result:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 设备通话状态 +extern NSString *kJL_MANAGER_CALL_STATUS; + +#pragma mark - 案子API +#pragma mark ---> 通知设备播放来电号码的方式 +/** + 通知设备播放来电号码的方式 + @param way 正常模式:0x00 播放文件模式:0x01 + */ +-(void)cmdPhoneNumberOnWay:(uint8_t)way; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_CustomManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_CustomManager.h new file mode 100644 index 000000000..f2224efc2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_CustomManager.h @@ -0,0 +1,73 @@ +// +// JL_CustomManager.h +// JL_BLEKit +// Created by 李放 on 2021/12/21. +// Modify by EzioChan on 2023/03/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_FunctionBaseManager.h" +#import "JL_TypeEnum.h" +#import "JL_Tools.h" + +NS_ASSUME_NONNULL_BEGIN + +///设备返回的自定义数据 +extern NSString *kJL_MANAGER_CUSTOM_DATA; +/// 设备返回的自定义数据(回复包) +extern NSString *kJL_MANAGER_CUSTOM_DATA_RSP; + + +@protocol JLCustomCmdPtl + +/// 设备回复自定义数据内容 +/// - Parameters: +/// - device: 设备句柄 +/// - data: 回复数据内容 +-(void)customCmdResponse:(JL_ManagerM *)manager Status:(uint8_t)status WithData:(NSData *)data; + +/// 设备主动请求 +/// - Parameters: +/// - device: 设备 +/// - data: 请求数据内容 +/// - isNeedResponse: 是否需要回复 +/// - sn: 序号 +-(void)customCmdRequire:(JL_ManagerM *)manager WithData:(NSData *)data isNeedResponse:(BOOL)isNeedResponse SN:(uint8_t)sn; + + +@end + +/// 用户自定义数据 +@interface JL_CustomManager : JL_FunctionBaseManager + +/// 数据回调委托 +@property(nonatomic,weak)id delegate; + +/// timeout max +/// default 3s +@property(nonatomic,assign)NSInteger maxTime; + +#pragma mark ---> 用户自定义数据 + +/// 用户自定义数据 +/// @param data 数据内容 +/// @param result 回复 +-(void)cmdCustomData:(NSData* __nullable)data + Result:(JL_CMD_RESPOND __nullable)result __attribute__((deprecated("use cmdCustomData:isNeedResponse:Result:"))); + +/// 用户自定义数据 +/// @param data 数据内容 +/// @param isNeedResponse 是否需要回复 +/// @param result 回复 +-(void)cmdCustomData:(NSData *)data isNeedResponse:(BOOL)isNeedResponse Result:(JL_CMD_RESPOND __nullable)result; + +/// 用户自定义数据回复 +/// @param sn 序号(设备发过来的序号) +/// @param data 数据 +-(void)cmdCustomResponse:(uint8_t)sn + Data:(NSData* __nullable)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_DeviceLogs.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_DeviceLogs.h new file mode 100644 index 000000000..01d1776f9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_DeviceLogs.h @@ -0,0 +1,32 @@ +// +// JL_DeviceLogs.h +// JL_BLEKit +// +// Created by EzioChan on 2022/5/12. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "JL_FunctionBaseManager.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef enum : UInt8 { + LogTypeDownloading = 0x00, + LogTypeFailed = 0x01, + LogTypeSucceed = 0x02, + LogTypeNoLog = 0x03 +} DeviceLogType; + +typedef void(^JLDeviceLogBK)(DeviceLogType type,float progress,NSString *_Nullable tempSavePath); + +@interface JL_DeviceLogs : JL_FunctionBaseManager + + +/// 检查获取设备log日志 +/// @param block 回调结果 +-(void)deviceLogDownload:(JLDeviceLogBK)block; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_EntityM.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_EntityM.h new file mode 100644 index 000000000..613aa5a73 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_EntityM.h @@ -0,0 +1,222 @@ +// +// JL_EntityM.h +// JL_BLEKit +// +// Created by 杰理科技 on 2020/9/1. +// Copyright © 2020 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +//@class JL_EntityM; +typedef NS_ENUM(NSInteger, JL_EntityM_Status) { + JL_EntityM_StatusBleOFF = 0, //BLE蓝牙未开启 + JL_EntityM_StatusConnectFail = 1, //BLE连接失败 + JL_EntityM_StatusConnecting = 2, //BLE正在连接 + JL_EntityM_StatusConnectRepeat = 3, //BLE重复连接 + JL_EntityM_StatusConnectTimeout = 4, //BLE连接超时 + JL_EntityM_StatusConnectRefuse = 5, //BLE被拒绝 + JL_EntityM_StatusPairFail = 6, //配对失败 + JL_EntityM_StatusPairTimeout = 7, //配对超时 + JL_EntityM_StatusPaired = 8, //已配对 + JL_EntityM_StatusMasterChanging = 9, //正在主从切换 + JL_EntityM_StatusDisconnectOk = 10, //已断开成功 + JL_EntityM_StatusNull = 11, //Entity为空 +}; + +/// 连接类型 +typedef NS_ENUM(NSUInteger, JLEntityConnectType) { + JLEntityConnectTypeBLE = 0, + JLEntityConnectTypeSPP = 1, + JLEntityConnectTypeATT = 2, +}; + +typedef void(^JL_EntityM_STATUS_BK)(JL_EntityM_Status status); + +@interface JL_EntityM : NSObject + +///命令中心 +@property(nonatomic,strong) JL_ManagerM *mCmdManager; + +/// BLE外设备 +@property(nonatomic,readonly,copy) CBPeripheral *mPeripheral; +///服务号AE00 +@property(nonatomic,strong) NSString *mSERVICE; +///命令【写】通道AE01 +@property(nonatomic,strong) NSString *mRCSP_W; +///命令【读】通道AE02 +@property(nonatomic,strong) NSString *mRCSP_R; +///过滤码 +@property(nonatomic,strong) NSData *__nullable mFilterKey; +///配对码 +@property(nonatomic,strong) NSData *__nullable mPairKey __attribute__((deprecated("Use mAuthKey instead"))); +/// 设备认证码 +@property(nonatomic,copy) NSData *__nullable mAuthKey; +///广播数据 +@property(strong,nonatomic) NSData *mAdvData; + +///连接超时时间 +@property(nonatomic,assign) int mBLE_TIMEOUT; +///是否【开启过滤】 +@property(nonatomic,assign) BOOL mBLE_FILTER_ENABLE; +///是否【开启配对】 +@property(nonatomic,assign) BOOL mBLE_PAIR_ENABLE __attribute__((deprecated("Use mAuthEnable instead"))); +/// 是否开启设备认证 +@property(nonatomic,assign) BOOL mAuthEnable; +///是否完成配对 +@property(nonatomic,assign) BOOL mBLE_IS_PAIRED __attribute__((deprecated("Use mIsAuth instead"))); +/// 是否已认证 +@property(nonatomic,assign) BOOL mIsAuth; +///是否需要OTA +@property(nonatomic,assign) BOOL mBLE_NEED_OTA; +@property(nonatomic,assign) BOOL isFrom_HISTROY; +@property(nonatomic,assign) BOOL isBLE_CHANGE; +@property(nonatomic,assign) BOOL isCMD_PREPARED; + +@property(strong,nonatomic) NSString *mUUID; +@property(strong,nonatomic) NSNumber *mRSSI; +@property(readonly,copy,nonatomic)NSString *mItem; +/** + * mType值说明: + * -1:传统设备 + * 0:AI音箱 + * 1:TWS + * 2:数码充电仓 + * 3:普通耳机 + * 4:声卡类型 + * 5:手表类型 + */ +@property(assign,nonatomic) JL_DeviceType mType; +@property(assign,nonatomic) BOOL isExclusive; +@property(assign,nonatomic) BOOL isBound; +@property(assign,nonatomic) BOOL isEdrLinked; +@property(assign,nonatomic) BOOL isCharging; +@property(assign,nonatomic) BOOL isCharging_L; +@property(assign,nonatomic) BOOL isCharging_R; +@property(assign,nonatomic) BOOL isCharging_C; +@property(assign,nonatomic) uint8_t mPower; +@property(assign,nonatomic) uint8_t mPower_L; +@property(assign,nonatomic) uint8_t mPower_R; +@property(assign,nonatomic) uint8_t mPower_C; +@property(strong,nonatomic) NSString *mVID __attribute__((deprecated("Deprecated, use mUID instead"))); +@property(strong,nonatomic) NSString *mUID; +@property(strong,nonatomic) NSString *mPID; +@property(strong,nonatomic) NSString *mEdr; +@property(strong,nonatomic) NSString *mBleAddr; //OTA设备需要 +@property(assign,nonatomic) uint8_t mChipType; //0:690x 1:692x 2:693x +@property(assign,nonatomic) uint8_t mProtocolType; //默认0x00 +/** + 0x00 - dismiss 不显示弹窗 + 0x01 - unconnected 经典蓝牙未连接 + iOS : 不显示电量,请手动连接XXX + Android:不显示电量,显示连接按钮 + 0x02 - connected 经典蓝牙已连接 + iOS:判断已连接的经典蓝牙名是否一致,若未连接或蓝牙名不一致, + 显示“设备已被占用”。若一致,显示电量等信息。 + Android:判断已连接的经典蓝牙Mac是否一致,若未连接或蓝牙Mac不一致, + 显示“设备已被占用”。若一致,显示电量等信息。 + 0x03 - connecting 设备正在自动回连 + Android 和 iOS 显示“设备正在自动回连 ” + 0x04 - connectionless 设备不可连接(需要按下配对按键) + Android 和 iOS 显示配对操作方式 + */ +@property(assign,nonatomic) int8_t mScene; + +///Seq 每次开机会加 1,用于app区分是否同一次开机 +@property(assign,nonatomic) uint8_t mSeq; + +///TWS配对标识,0:未配对 1:已配对 +@property(assign,nonatomic) uint8_t mTWS_Paired; + +///0:关盖 1:开盖 +@property(assign,nonatomic) uint8_t mTWS_Cap; + +///0:充电模式 1:发射模式 +@property(assign,nonatomic) uint8_t mTWS_Mode; +///主从标识 (0:从机, 1:主机) +@property(assign,nonatomic) uint8_t mHeadsetMaster; + +///连接标识 (0:可以连接 1:不可连接) +@property(assign,nonatomic) uint8_t mHeadsetLinkEnable; +/** + * mWatchScene值说明: + * 0x00:经典蓝牙未连接 + * 0x01:经典蓝牙已连接 + * 0x02:设备正在回连 + * 0x03:设备不可连接 (需要手动进入配对模式) + */ +///连接标识 (0:可以连接 1:不可连接) +@property(assign,nonatomic) uint8_t mWatchScene; + +///连接方式 +///0:ble +///1:spp +///2:att +@property(assign,nonatomic) JLEntityConnectType mConnectWay; + +/// 是否支持充电仓 +@property(assign,nonatomic) BOOL mIsSupportChargeBin; + +/// 是否支持蓝牙Le Audio音频 +@property(assign,nonatomic) BOOL mIsSupportLeAudio; + +/// Le Audio 的连接状态 +@property(assign,nonatomic) BOOL mLeAudioConnected; + +/// RCSP 是否复用 LEAudio 的地址 +@property(assign,nonatomic) BOOL mLeAudioIsReUseRCSPAddr; + +/// 设备特殊类型 +@property(assign,nonatomic) JLDevSpecialType mSpecialType; + +-(void)setBlePeripheral:(CBPeripheral *)mPeripheral; +-(void)setBleItem:(NSString *)mItem; + +/** + 更新代理 +*/ +-(void)updateDelegate; + +/** + 释放定时器 +*/ +-(void)releaseEntityTimer; + +/** + 发送RCSP数据 + @param data 数据 + @return 是否已发送 + */ +-(BOOL)writeRcspData:(NSData*)data; + +/** +调整发数参数 +@param isGame 是否为游戏模式 +@param mtu 每包发数字节数 +@param delay 延时时间 (毫秒) +*/ +-(void)setGameMode:(BOOL)isGame MTU:(NSUInteger)mtu Delay:(int)delay; + + +-(void)flashFinishedAction; + + +#pragma mark - 连接超时管理 +-(void)startTimeout:(int)code; +-(void)stopTimeout; +-(void)cancelAuthPair; +#pragma mark - EntityM 模型转换 +-(void)updateEntity:(NSDictionary*)dic; ++(JL_EntityM*)changeToEntity:(NSDictionary*)dic; ++(NSArray*)turnToEntityArray:(NSArray*)array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FileManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FileManager.h new file mode 100644 index 000000000..582b95659 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FileManager.h @@ -0,0 +1,249 @@ +// +// JL_FileManager.h +// JL_BLEKit +// +// Created by 凌煊峰 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +//MARK: - 枚举 +typedef NS_ENUM(UInt8, JL_FileOperationEnvironmentType) { + JL_FileOperationEnvironmentTypeBigFileTransmission = 0x00, //大文件传输 + JL_FileOperationEnvironmentTypeDeleteFile = 0x01, //删除文件 + JL_FileOperationEnvironmentTypeFormatting = 0x02, //格式化 + JL_FileOperationEnvironmentTypeFatfsTransmission = 0x03, //FAT文件传输 +}; +typedef NS_ENUM(UInt8, JL_DeleteFileLastType) { + JL_DeleteFileLastTypeIsNotLast = 0x00, //不是最后一个文件 + JL_DeleteFileLastTypeIsLast = 0x01, //是最后一个文件 +}; +typedef NS_ENUM(UInt8, JL_BrowseReason) { + JL_BrowseReasonCommandEnd = 0, //读取完当前命令请求的文件 + JL_BrowseReasonFolderEnd = 1, //读取完当前目录的文件 + JL_BrowseReasonPlaySuccess = 2, //点播成功 + JL_BrowseReasonBusy = 3, //设备繁忙 + JL_BrowseReasonDataFail = 4, //目录数据发送失败 + JL_BrowseReasonReading = 0x0f, //正在读取中 + JL_BrowseReasonUnknown, //未知原因 +}; +typedef NS_ENUM(UInt8, JL_FileContentResult) { + JL_FileContentResultStart = 0x00, //开始传输 + JL_FileContentResultReading = 0x01, //正在读取 + JL_FileContentResultEnd = 0x02, //读取结束 + JL_FileContentResultCancel = 0x03, //取消读取 + JL_FileContentResultFail = 0x04, //读取失败 + JL_FileContentResultNull = 0x05, //文件不存在 + JL_FileContentResultDataError = 0x06, //数据错误 + JL_FileContentResultCrcFail = 0x07, //crc校验失败 +}; +typedef NS_ENUM(UInt8, JL_FileDataType) { + JL_FileDataTypeDo = 0, //开始传输文件数据 + JL_FileDataTypeDone = 1, //结束传输文件数据 + JL_FileDataTypeDoing = 2, //正在传输文件数据 + JL_FileDataTypeCancel = 3, //取消传输文件数据 + JL_FileDataTypeError = 4, //传输文件数据出错 + JL_FileDataTypeUnknown, +}; +typedef NS_ENUM(UInt8, JL_BigFileTransferCode) { + JL_BigFileTransferCodeSuccess = 0x00, //成功 + JL_BigFileTransferCodeFail = 0x01, //写失败 + JL_BigFileTransferCodeOutOfRange = 0x02, //数据超出范围 + JL_BigFileTransferCodeCrcFail = 0x03, //crc校验失败 + JL_BigFileTransferCodeOutOfMemory = 0x04, //内存不足 +}; +typedef NS_ENUM(UInt8, JL_BigFileResult) { + JL_BigFileTransferStart = 0x00, //开始大文件数据传输 + JL_BigFileTransferDownload = 0x01, //传输大文件有效数据 + JL_BigFileTransferEnd = 0x02, //结束大文件数据传输 + JL_BigFileTransferOutOfRange = 0x03, //大文件传输数据超范围 + JL_BigFileTransferFail = 0x04, //大文件传输失败 + JL_BigFileCrcError = 0x05, //大文件校验失败 + JL_BigFileOutOfMemory = 0x06, //空间不足 + JL_BigFileTransferCancel = 0x07, //取消传输 + JL_BigFileTransferNoResponse = 0xF1, //设备没有响应 +}; + +//MARK: - 回调 + +typedef void(^JL_FILE_BK)(NSArray* __nullable array,JL_BrowseReason reason); +typedef void(^JL_FILE_CONTENT_BK)(JL_FileContentResult result, uint32_t size, NSData* __nullable data, float progress); +typedef void(^JL_FILE_DATA_BK)(NSData* __nullable data, NSString* __nullable path, uint16_t size, JL_FileDataType type); +typedef void(^JL_BIGFILE_BK)(NSArray* __nullable array); +typedef void(^JL_BIGFILE_RT)(JL_BigFileResult result, float progress); + + +/// 文件浏览与下载、上载、删除等相关的操作类 +@interface JL_FileManager : JL_FunctionBaseManager + +/// 超时时间 +@property(nonatomic,assign)NSInteger maxTimeout; + +///大文件名是否使用其他编码 +///Default:false +///短文件名:GBK CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) +///长文件名:Unicode16L (NSUTF16LittleEndianStringEncoding) +///Other: true +///需要设置encodeType属性的值,默认为Unicode16L +@property(nonatomic,assign)BOOL isOtherEncode; + +/// 大文件名使用的编码 +/// default :NSUTF16LittleEndianStringEncoding +@property(nonatomic,assign)NSStringEncoding encodeType; + +/// 停止超时计算 +- (void)closeTimer; + + +//MARK: - 浏览目录 + +/// 发起文件目录浏览 +/// - Parameters: +/// - model: 文件Model +/// - number: 读取的数量 单次请求建议 < 20 条 +/// - result: 回调操作结果 +-(void)cmdBrowseModel:(JLModel_File*)model + Number:(uint8_t)number + Result:(JL_CMD_RESPOND __nullable)result; + +/// 监听目录数据回调 +/// - Parameter result: 回调内容 +-(void)cmdBrowseMonitorResult:(JL_FILE_BK __nullable)result; + + + +//MARK: - 删除文件 + +/// 删除文件(必须异步执行) +/// @param array 文件Model数组 +-(BOOL)cmdDeleteFileModels:(NSArray*)array; + +/// 删除单个JLModel_File文件 +/// @param model 文件对象 JLModel_File +/// @param last 是否最后一个文件 +/// @param result 删除成功回调 +-(void)cmdDeleteFile:(JLModel_File*)model + IsLast:(JL_DeleteFileLastType)last + Result:(JL_CMD_RESPOND __nullable)result; + +/// 通过名字删除文件 +/// 仅部分设备支持(设备要求支持文件系统支持唯一文件名) +/// - Parameters: +/// - name: 文件名 +/// - result: 回调结果 +-(void)cmdFileDeleteWithName:(NSString*)name Result:(JL_CMD_RESPOND __nullable)result; + + + +/// 设备格式化 +/// @param handle 设备句柄 +/// @param result 格式化回调 +-(void)cmdDeviceFormat:(NSString*)handle Result:(JL_CMD_RESPOND __nullable)result; + +/// 清除设备音乐缓存记录 +/// @param type 卡的类型 +-(void)cmdCleanCacheType:(JL_CardType)type; + + +//MARK: - 通讯文件句柄相关 + +/// 设置文件传输句柄 +/// 大文件传输,设置当前传输句柄 +/// - Parameter currentFileHandleType: 传输句柄 +- (void)setCurrentFileHandleType:(JL_FileHandleType)currentFileHandleType; + +/// 获取当前的传输文件句柄 +- (JL_FileHandleType)getCurrentFileHandleType; + +/// 文件传输的句柄数据 +- (NSData *)currentDeviceHandleData; + +/// 设置当前使用的存储设备 +/// @param devHandle 存储设备句柄 +/// 可参考JLModel_Device 中获取到的设备句柄内容 +/// @param result 命令回调结果 +-(void)cmdSetDeviceStorage:(NSData *)devHandle Result:(JL_CMD_RESPOND)result; + + +//MARK: - 文件传输 固件-->APP + +/// 监听文件数据 固件-->APP +/// - Parameter result: 数据内容监听回调 +-(void)cmdFileDataMonitorResult:(JL_FILE_DATA_BK __nullable)result __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result"))); + +/// app 端回复设备的请求文件传输 固件-->APP +/// 允许传输文件数据 +-(void)cmdAllowFileData __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result"))); + +/// app 端回复设备的请求文件传输 固件-->APP +/// 拒绝传输文件数据 +-(void)cmdRejectFileData __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result"))); + +/// 传输文件数据 固件-->APP +/// 停止传输文件数据 +-(void)cmdStopFileData __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentCancel"))); + +/// 读取外置卡的文件内容 固件-->APP +/// 此方法针对部分设备(要求设备文件系统支持唯一文件名) +/// - Parameters: +/// - name: 文件名 +/// - result: 回调结果 +-(void)cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result; + +/// 簇号方式读取外置卡的文件内容 固件-->APP +/// - Parameters: +/// - fileClus: 文件簇号 +/// - result: 回调 +- (void)cmdFileReadContentWithFileClus:(uint32_t)fileClus Result:(JL_FILE_CONTENT_BK __nullable)result; + +/// 取消读取外置卡的文件内容 +-(void)cmdFileReadContentCancel; + + +//MARK: - 文件传输 APP-->固件 + +/// 请求传输文件给设备 +/// - Parameters: +/// - size: 文件大小 +/// - path: 存放路径 +-(void)cmdFileDataSize:(uint8_t)size + SavePath:(NSString*)path __attribute__((deprecated("This method is deprecated. Use newMethod cmdBigFileData:(NSString *)path WithFileName:(NSString *)fileName Result:(JL_BIGFILE_RT __nullable)result"))); + + +/// 推送文件数据给设备 +/// - Parameter data:文件数据 +-(void)cmdPushFileData:(NSData*)data __attribute__((deprecated("This method is deprecated. Use newMethod cmdBigFileData:(NSString *)path WithFileName:(NSString *)fileName Result:(JL_BIGFILE_RT __nullable)result"))); + + +/// 大文件传输 App-->固件 +/// - Parameters: +/// - path: 本地大文件下载文件路径 +/// - fileName: 目标文件路径 +/// 如想指定文件夹路径,可以使用 Download/abc/def.txt +/// 否则可以直接添加 def.txt 由系统存放到默认的文件夹下 +/// - result: 回调结果 +-(void)cmdBigFileData:(NSString *)path WithFileName:(NSString *)fileName + Result:(JL_BIGFILE_RT __nullable)result; + +/// 取消文件传输 App-->固件 +-(void)cmdStopBigFileData; + +/// 通知固件进行环境准备 +/// - Parameters: +/// - environment: +/// 0:大文件传输 +/// 1:删除文件 +/// 2:格式化 +/// - result: 回调结果 +-(void)cmdPreEnvironment:(JL_FileOperationEnvironmentType)environment Result:(JL_CMD_RESPOND __nullable)result; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h new file mode 100644 index 000000000..f4ce71cb8 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h @@ -0,0 +1,130 @@ +// +// JL_FindDeviceManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/17. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + +/// 查找设备参数 +@interface JLFindDeviceOperation : NSObject + +/// 播放方式 way: +/// 0. 全部播放 +/// 1.左侧播放 +/// 2.右侧播放 +/// 3.全部暂停 +@property(nonatomic,assign)uint8_t playWay; + +/// 超时时间 +/// 0 表示不限制时间 +/// 默认时间 60 +@property(nonatomic,assign)uint16_t timeout; + +/// 铃声操作 +/// 0x00: 关闭铃声 +/// 0x01: 播放铃声 +@property(nonatomic,assign)uint8_t sound; + + +@end + + +/// 查找手机参数 +@interface JLFindPhoneModel : NSObject + +/// 铃声操作 +/// 0x00: 关闭铃声 +/// 0x01: 播放铃声 +@property(nonatomic,assign)uint8_t sound; + +/// 超时时间 +/// 0 表示不限制时间 +/// 默认时间 10 +@property(nonatomic,assign)uint16_t timeout; + +@end + + + +@protocol JL_FindDeviceDelegate + + +/// 设备查找手机回调 +/// - Parameter model:JLFindPhoneModel +-(void)findDeviceStartFindMyPhone:(JLFindPhoneModel *)model; + +/// 查询设备当前状态 +/// 当前回调需要先查询设备状态cmdFindDeviceCheckStatus +/// - Parameter model: JLFindDeviceOperation +-(void)findDeviceCheckStatus:(JLFindDeviceOperation *)model; + +@end + +/// 查找设备类 +/// 查找设备/设备查找手机 +@interface JL_FindDeviceManager : JL_FunctionBaseManager + +#pragma mark ---> 查找设备 +// 设备查找手机的通知 +// 携带了响铃时长🔔 +// dict = @{@"op":@(操作类型),@"timeout":@(超时时间)}; +extern NSString *kJL_MANAGER_FIND_PHONE; + +// 手机查找设备 +// 携带是否停止响铃 +// dict = @{@"op":@(操作类型),@"timeout":@(超时时间)}; +extern NSString *kJL_MANAGER_FIND_DEVICE; + +/// 查询固件设备查找状态回调 +/// JLFindDeviceOperation 作为回调对象 +extern NSString *kJL_MANAGER_FIND_DEVICE_STATUS; + + +typedef void(^JL_FIND_DEVICE_CHECK_RESPOND)(JL_CMDStatus status, JLFindDeviceOperation * _Nullable model); + +/// 代理 +@property(nonatomic,weak)id delegate; + +// 查找设备命令 +// @param isVoice 是否发声 +// @param timeout 超时时间 +// @param isIphone 是否设备查找手机(默认是手机找设备) +// @param opDict 这是一个可选项,若tws未连接,则该值无效,默认是全部播放 +// 字典键值对说明: +// 播放方式 way: 0 全部播放 +// 1 左侧播放 +// 2 右侧播放 +// 播放源 player: 0 APP端播放 +// 1 设备端播放 +// etc.全部播放&APP播放音效 +// opDict:{@"way":@"0",@"player":@"0"} +-(void)cmdFindDevice:(BOOL)isVoice + timeOut:(uint16_t)timeout + findIphone:(BOOL)isIphone + Operation:( NSDictionary * _Nullable )opDict __attribute__((deprecated ( "This method will be replaced with subcommands cmdFindDeviceWith and proxy etc."))); + + + +/// 查找设备命令 +/// - Parameter operation: 查找设备对象 +-(void)cmdFindDeviceWith:(JLFindDeviceOperation *)operation; + + + +/// 查询一次固件查找设备的状态 +/// - Parameter result: 状态回调 +-(void)cmdFindDeviceCheckStatus:(JL_FIND_DEVICE_CHECK_RESPOND _Nullable)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h new file mode 100644 index 000000000..925f528c2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h @@ -0,0 +1,189 @@ +// +// JL_FlashOperateManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - 外挂FLASH操作命令 +typedef NS_ENUM(UInt8, JL_FlashOperationOPType) { + JL_FlashOperationOPTypeWriteData = 0x00, //写数据 + JL_FlashOperationOPTypeReadData = 0x01, //读数据 + JL_FlashOperationOPTypeInsertFile = 0x02, //插入文件 + JL_FlashOperationOPTypeDialOperation = 0x03, //表盘操作 + JL_FlashOperationOPTypeEraseData = 0x04, //擦除数据 + JL_FlashOperationOPTypeDeleteFile = 0x05, //删除文件 + JL_FlashOperationOPTypeWriteFileProtection = 0x06, //写文件保护 + JL_FlashOperationOPTypeUpdateDialResource = 0x07, //更新表盘资源 + JL_FlashOperationOPTypeCheckWriteDataSuccess = 0x08, //查询写数据是否成功 + JL_FlashOperationOPTypeUpdateResourceFlag = 0x09, //升级资源标志操作 + JL_FlashOperationOPTypeRestoreSystem = 0x0A, //还原系统 + JL_FlashOperationOPTypeGetFileInfo = 0x0B, //获取文件信息 + JL_FlashOperationOPTypeGetRemainingSpace = 0x0C, //获取剩余空间 + JL_FlashOperationOpTypeGetSourceStorageInfo = 0x0D, //获取源存储信息 +}; + +typedef NS_ENUM(UInt8, JL_DialSetting) { + JL_DialSettingReadCurrentDial = 0x00, //读取当前表盘 + JL_DialSettingSetDial = 0x01, //设置表盘 + JL_DialSettingVersion = 0x03, //获取表盘额外信息,如版本 + JL_DialSettingActivateCustomDial = 0x04, //激活自定义表盘 + JL_DialSettingGetDialName = 0x05, //获取对应的自定义表盘名字 +}; +typedef NS_ENUM(UInt8, JL_FlashOperateFlag) { + JL_FlashOperateFlagFinish = 0x00, //结束 + JL_FlashOperateFlagStart = 0x01, //开始 +}; + +@interface JL_FlashOperateManager : JL_FunctionBaseManager + +typedef void(^JL_FlashInfo_BK)(JLModel_Flash* __nullable model); +typedef void(^JL_FlashWrite_BK)(uint8_t flag); +typedef void(^JL_FlashWriteStatus_BK)(uint8_t flag,uint16_t leftSize); +typedef void(^JL_FlashWriteSize_BK)(uint8_t flag,uint32_t size); +typedef void(^JL_FlashRead_BK)(uint8_t flag,NSData *__nullable data); +typedef void(^JL_FlashAddOrDel_BK)(uint8_t flag); +typedef void(^JL_FlashWatch_BK)(uint8_t flag, uint32_t size, + NSString *__nullable path, + NSString *__nullable describe); +typedef void(^JL_FlashClean_BK)(uint8_t flag); +typedef void(^JL_FlashProtect_BK)(uint8_t flag); +typedef void(^JL_FlashUpdate_BK)(uint8_t flag); +typedef void(^JL_FlashFileInfo_BK)(uint32_t size,uint16_t crc16); +typedef void(^JL_FlashLeftSize_BK)(uint32_t leftSize); + +/// Flash Info +@property(nonatomic,strong)JLModel_Flash *flashInfo; + +#pragma mark ---> 获取外置Flash信息 +/** + 获取外置Flash信息 + @param result 回复 + */ +-(void)cmdGetFlashInfoResult:(JL_FlashInfo_BK __nullable)result; + +#pragma mark ---> 写数据到Flash +/** + 写数据到Flash + @param data 数据 + @param offset 偏移 + @param mtu 每包大小 + @param result 回复 + */ +-(void)cmdWriteToFlashAllData:(NSData*)data + Offset:(uint32_t)offset + Mtu:(uint16_t)mtu + Result:(JL_FlashWriteSize_BK __nullable)result; + +#pragma mark ---> 读数据从Flash +/** + 读数据从Flash + @param offset 偏移 + @param size 大小 + @param mtu 每包大小 + @param result 回复 + */ +-(void)cmdReadFromFlashAllDataOffset:(uint32_t)offset + Size:(uint16_t)size + Mtu:(uint16_t)mtu + Result:(JL_FlashRead_BK __nullable)result; + +#pragma mark ---> [开始/结束]增加表盘(文件) +/** + 开始/结束 插入文件 + @param path 路径 + @param size 大小 + @param flag 开始:0x01 结束:0x00 + @param result 回复 + */ +-(void)cmdInsertFlashPath:(NSString* __nullable)path + Size:(uint32_t)size + Flag:(JL_FlashOperateFlag)flag + Result:(JL_FlashAddOrDel_BK __nullable)result; + +#pragma mark ---> 设置表盘(文件) + +/** + 表盘操作 + @param path 路径 + @param flag 0x00:读取当前表盘 + 0x01:设置表盘 + 0x03:获取表盘额外信息,如版本 + 0x04:激活自定义表盘 + 0x05:获取对应的自定义表盘名字 + @param result 回复 + */ +-(void)cmdWatchFlashPath:(NSString*__nullable)path + Flag:(JL_DialSetting)flag + Result:(JL_FlashWatch_BK __nullable)result; + +#pragma mark ---> 设备更新表盘(文件) 【kJL_MANAGER_WATCH_FACE】?// 返回 字符串 +extern NSString *kJL_MANAGER_WATCH_FACE; + +#pragma mark ---> [开始/结束]删除表盘(文件) +/** + 开始/结束 删除文件 + @param path 路径 + @param flag 开始:0x01 结束:0x00 + @param result 回复 + */ +-(void)cmdDeleteFlashPath:(NSString* __nullable)path + Flag:(JL_FlashOperateFlag)flag + Result:(JL_FlashAddOrDel_BK __nullable)result; + +#pragma mark ---> 外挂Flash【写保护】操作 +/** + 开始/结束 + @param flag 开始:0x01 结束:0x00 + */ +-(void)cmdWriteProtectFlashFlag:(JL_FlashOperateFlag)flag Result:(JL_FlashProtect_BK __nullable)result; + +#pragma mark ---> 外挂Flash【资源更新】操作 +/** + 开始/结束 更新UI + @param flag 开始:0x01 结束:0x00 + */ +-(void)cmdUpdateResourceFlashFlag:(JL_FlashOperateFlag)flag Result:(JL_FlashUpdate_BK __nullable)result __attribute__((deprecated ( "The current interface is about to be canceled in version 2.0.0, please use cmdUpdateResourceFlashFlagAsync:Result: instead"))); +-(void)cmdUpdateResourceFlashFlag:(JL_FlashOperateFlag)flag; +/// 外挂Flash(资源更新)操作 +/// 异步回调 +/// - Parameters: +/// - flag: flag +/// - result: 操作结果 +-(void)cmdUpdateResourceFlashFlagAsync:(JL_FlashOperateFlag)flag Result:(JL_FlashUpdate_BK __nullable)result; + +#pragma mark ---> 断开连接,对FATFS处理。 +-(void)cmdFlashActionDisconnect; + +#pragma mark ---> 外挂Flash 手表资源更新标志位 +-(void)cmdWatchUpdateResource __attribute__((deprecated ( "The current interface is about to be canceled in version 2.0.0, please use cmdWatchUpdateResourceWith:(JL_CMD_RESPOND __nullable)result instead"))); + +/// 打开设备升级资源标记操作 +/// - Parameter result: 设备回复结果 +/// 当设备回复的cmd代号为非 0 时,属于异常结束,不可继续升级 +-(void)cmdWatchUpdateResourceWith:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 外挂Flash 还原系统 +-(void)cmdFlashRecovery; + +#pragma mark ---> 外挂Flash 获取文件信息 +-(void)cmdFlashInformationOfFile:(NSString*)file Result:(JL_FlashFileInfo_BK)result; + +#pragma mark ---> 外挂Flash 剩余空间 +-(void)cmdFlashLeftSizeResult:(JL_FlashLeftSize_BK)result; + +/// 获取资源存储空间 +/// 例如:res_space= 8192 (Kb), 即realSize = res_space* 1024= 8192 * 1024 = 8Mb +/// - Parameter result: 回复 +-(void)cmdFlashGetSourceStorageInfo:(JL_FlashLeftSize_BK)result; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FmManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FmManager.h new file mode 100644 index 000000000..d912b6af7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FmManager.h @@ -0,0 +1,70 @@ +// +// JL_FmManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + + +typedef NS_ENUM(UInt8, JL_FCmdFM) { + JL_FCmdFMPP = 0x01, //FM 暂停/播放 + JL_FCmdFMPonitBefore = 0x02, //上一个频点 + JL_FCmdFMPonitNext = 0x03, //下一个频点 + JL_FCmdFMChannelBefore = 0x04, //上一个频道 + JL_FCmdFMChannelNext = 0x05, //下一个频道 + JL_FCmdFMSearch = 0x06, //扫描 + JL_FCmdFMChannelSelect = 0x07, //选择频道 + JL_FCmdFMChannelDelete = 0x08, //删除频道 + JL_FCmdFMFrequencySelect = 0x09, //选择频点 + JL_FCmdFMFrequencyDelete = 0x0a, //删除频点 +}; + +typedef NS_ENUM(UInt8, JL_FMSearch) { + JL_FMSearchALL = 0x00, //FM 暂停/播放 + JL_FMSearchForward = 0x01, //向前搜索 + JL_FMSearchBackward = 0x02, //向后搜索 + JL_FMSearchStop = 0x03, //停止搜索 +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_FmManager : JL_FunctionBaseManager + +///Fm状态 +@property (assign,nonatomic) JL_FMStatus fmStatus; + +///Fm 频段范围 +///76.5-108.0Mhz +///87.5-108.0Mhz +@property (assign,nonatomic) JL_FMMode fmMode; + +///当前fm +@property (strong,nonatomic) JLModel_FM *currentFm; + +///Fm列表 +@property (strong,nonatomic) NSArray *fmArray; + +#pragma mark ---> FM相关操作 +/** + @param cmd FM功能 + @param search FM搜索 + @param channel FM频道 + @param frequency FM频点 + @param result 返回结果 + */ +-(void)cmdFm:(JL_FCmdFM)cmd + Saerch:(JL_FMSearch)search + Channel:(uint8_t)channel + Frequency:(uint16_t)frequency + Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h new file mode 100644 index 000000000..7a3a0b5f8 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h @@ -0,0 +1,28 @@ +// +// JL_FunctionBaseManager.h +// JL_BLEKit +// +// Created by 凌煊峰 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@interface JL_FunctionBaseManager : NSObject + +@property (assign, nonatomic) uint8_t mCmdSN; +@property (strong, nonatomic) NSString *mBLE_UUID; +@property (strong, nonatomic) NSString *mBLE_NAME; +@property (weak , nonatomic) JLModel_Device *deviceModel; +@property (weak , nonatomic) JL_ManagerM *centerManagerM; + +- (void)inputPKG:(JL_PKG *)pkg; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Handle.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Handle.h new file mode 100644 index 000000000..add95b44e --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Handle.h @@ -0,0 +1,46 @@ +// +// JL_Handle.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * 收到设备返回的XM_PKG的回调。 + */ +extern NSString *kJL_CMD_RECEIVE; //XM_RCSP【接收】 + +@protocol JL_HandleDelegate +@optional +-(void)onHandleOutputPKG:(JL_PKG*)pkg; +@end + +@interface JL_Handle : NSObject +@property(nonatomic,weak)iddelegate; + +/** +输入BLE数据 +@param data 设备过来的数据 +*/ +-(void)inputHandleData:(NSData*)data; + +/**[实例] +向设备发送JL_PKG数据包。 +@param pkg JL_PKG数据模型 +@param name 设备名字 +*/ +-(NSData*)sendPackage:(JL_PKG*)pkg WithName:(NSString*)name; + ++(void)logPackage:(JL_PKG*)pkg WithName:(NSString *__nullable)name IsSend:(BOOL)isSend; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_LRCManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_LRCManager.h new file mode 100644 index 000000000..1a4942643 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_LRCManager.h @@ -0,0 +1,35 @@ +// +// JL_LRCManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/17. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_LRCType) { + JL_LRCTypeDone = 1, //LRC已传输完 + JL_LRCTypeBusy = 2, //设备忙碌 + JL_LRCTypeDoneFail = 0x0e, //传输失败 +}; +typedef void(^JL_LRC_BK)(NSString* __nullable lrc, JL_LRCType type); +typedef void(^JL_LRC_BK_1)(NSData* __nullable lrc, JL_LRCType type); + +@interface JL_LRCManager : JL_FunctionBaseManager + +#pragma mark ---> 获取LRC歌词 +/** + @param result 返回LRC数据 + */ +-(void)cmdLrcMonitorResult:(JL_LRC_BK __nullable)result; +-(void)cmdLrcMonitorResult_1:(JL_LRC_BK_1 __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_LightManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_LightManager.h new file mode 100644 index 000000000..22b7c87ae --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_LightManager.h @@ -0,0 +1,99 @@ +// +// JL_LightManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/16. +// Modify by EzioChan on 2023/03/16 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +@class JL_LightManager; + +@protocol JLLightStatusPtl + +-(void)jlLightStatus:(JL_LightManager *)lightManager; + +@end + + +@interface JL_LightManager : JL_FunctionBaseManager + +/// 当前设备是否支持灯光设置 +@property(nonatomic,assign)BOOL isSupportLight; + +/// 0:关闭 1:打开 2:设置模式(彩色/闪烁/情景) +@property (assign,nonatomic) JL_LightState lightState; + +// 0:彩色 1:闪烁 2: 情景 +@property (assign,nonatomic) JL_LightMode lightMode; + +/// 灯光红色 +@property (assign,nonatomic) uint8_t lightRed; + +/// 灯光绿色 +@property (assign,nonatomic) uint8_t lightGreen; + +/// 灯光蓝色 +@property (assign,nonatomic) uint8_t lightBlue; + +/// 闪烁模式Index +@property (assign,nonatomic) JL_LightFlashModeIndex lightFlashIndex; + +/// 闪烁频率Index +@property (assign,nonatomic) JL_LightFlashModeFrequency lightFrequencyIndex; + +/// 情景模式Index +@property (assign,nonatomic) JL_LightSceneMode lightSceneIndex; + +// 色调,范围0-360 +@property (assign,nonatomic) uint16_t lightHue; + +// 饱和度,0-100 +@property (assign,nonatomic) uint8_t lightSat; + +// 亮度,0-100 +@property (assign,nonatomic) uint8_t lightLightness; + +/// 状态更新代理委托 +@property (weak,nonatomic)id delegate; + + +/// 获取灯光设置,通过代理返回 +-(void)cmdGetLightStatus; +/** + * 设置灯光 + * @param lightState 灯光状态 + * @param lightMode 灯光模式 + * @param red 红色色值 + * @param green 绿色色值 + * @param blue 蓝色色值 + * @param flashIndex 闪烁模式index + * @param flashFreqIndex 闪烁频率 + * @param sceneIndex 情景模式 + * @param hue 色调,范围0-360 + * @param saturation 饱和度,0-100 + * @param lightness 亮度,0-100 + */ +-(void)cmdSetState:(JL_LightState)lightState + Mode:(JL_LightMode)lightMode + Red:(uint8_t)red + Green:(uint8_t)green + Blue:(uint8_t)blue + FlashInex:(JL_LightFlashModeIndex)flashIndex + FlashFreq:(JL_LightFlashModeFrequency)flashFreqIndex + SceneIndex:(JL_LightSceneMode)sceneIndex + Hue:(uint16_t)hue + Saturation:(uint8_t)saturation + Lightness:(uint8_t)lightness; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MSG_Func.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MSG_Func.h new file mode 100644 index 000000000..91d914f48 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MSG_Func.h @@ -0,0 +1,22 @@ +// +// JL_MSG_Func.h +// JL_BLEKit +// +// Created by EzioChan on 2021/5/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef enum : uint8_t { + Func_Location, + Func_Weather, + Func_Notify, +} FuncMsgType; + +@interface JL_MSG_Func : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MSG_Weather.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MSG_Weather.h new file mode 100644 index 000000000..6ff75d805 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MSG_Weather.h @@ -0,0 +1,143 @@ +// +// JL_MSG_Weather.h +// JL_BLEKit +// +// Created by EzioChan on 2021/5/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +typedef NS_ENUM(UInt8, JLWeatherType) { + ///晴 + JLWeatherTypeSunny = 0x00, + ///少云 + JLWeatherTypeCloudLess, + ///晴间多云 + JLWeatherTypePartlyCloudy, + ///多云 + JLWeatherTypeCloudiness, + ///阴 + JLWeatherTypeOvercastSky, + ///有风/和风/清风/微风 + JLWeatherTypeBreeze, + ///平静 + JLWeatherTypeCalmWind, + ///大风/强风/劲风/疾风 + JLWeatherTypeHighWind, + ///飓风/狂爆风 + JLWeatherTypeHurricane, + ///热带风暴/风暴 + JLWeatherTypeTropicalStorm, + ///霾/中度霾/重度霾/严重霾 + JLWeatherTypeHaze, + ///阵雨 + JLWeatherTypeShower, + ///雷阵雨 + JLWeatherTypeThunderShower, + ///雷阵雨并伴有冰雹 + JLWeatherTypeHallThunderShower, + ///雨/小雨/毛毛雨/细雨/小雨-中雨 + JLWeatherTypeLightRain, + ///中雨/中雨-大雨 + JLWeatherTypeModerateRain, + ///大雨/大雨-暴雨 + JLWeatherTypeHeavyRain, + ///暴雨/暴雨-大暴雨 + JLWeatherTypeDownpour, + ///大暴雨/大暴雨-特大暴雨 + JLWeatherTypeExtraordinaryRainstorm, + ///特大暴雨 + JLWeatherTypeHeavyDownpour, + ///强阵雨 + JLWeatherTypeStrongRainShower, + ///强雷阵雨 + JLWeatherTypeStrongThunderShower, + ///极端降雨 + JLWeatherTypeExtremeRainfall, + ///雨夹雪/阵雨夹雪/冻雨/雨雪天气 + JLWeatherTypeRainySnowy, + ///雪 + JLWeatherTypeSnowy, + ///阵雪 + JLWeatherTypeSnowShower, + ///小雪/小雪-中雪 + JLWeatherTypeLightSnow, + ///中雪/中雪-大雪 + JLWeatherTypeModerateSnow, + ///大雪/大雪-暴雪 + JLWeatherTypeHeavySnow, + ///暴雪 + JLWeatherTypeSnowstorm, + ///浮尘 + JLWeatherTypeDust, + ///扬沙 + JLWeatherTypeblowingSand, + ///沙尘暴 + JLWeatherTypedustStorm, + ///强沙尘暴 + JLWeatherTypeSevereSandstorm, + ///龙卷风 + JLWeatherTypeTornado, + ///雾/轻雾/浓雾/强浓雾/特强浓雾 + JLWeatherTypeFog, + ///未知 + JLWeatherTypeUnknow, + ///冷 + JLWeatherTypeCold, + ///未知2 + JLWeatherTypeUnknown1, + +}; + +typedef NS_ENUM(UInt8, JLWindDirectionType) { + ///无风向 + JLWindDirectionTypeNone = 0x00, + ///东 + JLWindDirectionTypeEast, + ///南 + JLWindDirectionTypeSouth, + ///西 + JLWindDirectionTypeWest, + ///北 + JLWindDirectionTypeNorth, + ///东南 + JLWindDirectionTypeEastSouth, + ///东北 + JLWindDirectionTypeEastNorth, + ///西北 + JLWindDirectionTypeWestNorth, + ///西南 + JLWindDirectionTypeWestSouth, + ///旋转不定 + JLWindDirectionTypeUnknow +}; + +@interface JL_MSG_Weather : NSObject + +/// 省份 +@property(nonatomic,strong)NSString *province; +///城市 +@property(nonatomic,strong)NSString *city; +///天气编码 +@property(nonatomic,assign)JLWeatherType code; +///温度 +@property(nonatomic,assign)NSInteger temperature; +///湿度 +@property(nonatomic,assign)NSInteger humidity; +///风向编码 +@property(nonatomic,assign)JLWindDirectionType direction; +///风力 +@property(nonatomic,assign)NSInteger wind; +/// 时间 +@property(nonatomic,strong)NSDate *date; + + +-(NSData *)beData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_ManagerM.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_ManagerM.h new file mode 100644 index 000000000..e95426053 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_ManagerM.h @@ -0,0 +1,232 @@ +// +// JL_ManagerM.h +// JL_BLEKit +// +// Created by 杰理科技 on 2020/9/4. +// Modify By EzioChan on 2023/03/27. +// Copyright © 2020 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +/* + * 从JL_ManagerM发出去的通知都是字典,如下所示: + * + * @{ kJL_MANAGER_KEY_UUID :当前设备的UUID, + * kJL_MANAGER_KEY_OBJECT:外抛的对象 } + */ +extern NSString *kJL_MANAGER_KEY_UUID; //KEY --> UUID +extern NSString *kJL_MANAGER_KEY_OBJECT; //KEY --> 对象 + + +@protocol JL_ManagerMDelegate +@optional +-(void)onManagerSendPackage:(JL_PKG*)pkg; +@end + +@class JL_EntityM; +@interface JL_ManagerM : NSObject +@property(nonatomic,weak)iddelegate; +@property(nonatomic,readonly,copy)NSString *mBLE_UUID; +@property(nonatomic,readonly,copy)NSString *mBLE_NAME; +@property(nonatomic,readonly,assign)uint8_t mCmdSN; +@property(nonatomic,weak)JL_EntityM *mEntity; + +@property(nonatomic,strong)JL_SmallFileManager *mSmallFileManager; +@property(nonatomic,strong)JL_FileManager *mFileManager; +@property(nonatomic,strong)JL_OTAManager *mOTAManager; +@property(nonatomic,strong)JL_FlashOperateManager *mFlashManager; +@property(nonatomic,strong)JL_BinChargeManager *mChargingBinManager; +@property(nonatomic,strong)JL_CallManager *mCallManager; +@property(nonatomic,strong)JL_AlarmClockManager *mAlarmClockManager; +@property(nonatomic,strong)JL_LightManager *mLightManager; +@property(nonatomic,strong)JL_TwsManager *mTwsManager; +@property(nonatomic,strong)JL_SpeexManager *mSpeexManager __attribute__((deprecated("alloc with JL_SpeexManager shareSpeexManager"))); +@property(nonatomic,strong)JL_LRCManager *mLrcManager; +@property(nonatomic,strong)JL_FindDeviceManager *mFindDeviceManager; +@property(nonatomic,strong)JL_MusicControlManager *mMusicControlManager; +@property(nonatomic,strong)JL_FmManager *mFmManager; +@property(nonatomic,strong)JL_SystemEQ *mSystemEQ; +@property(nonatomic,strong)JL_SystemTime *mSystemTime; +@property(nonatomic,strong)JL_SystemVolume *mSystemVolume; +@property(nonatomic,strong)JL_CustomManager *mCustomManager; +@property(nonatomic,strong)JL_BatchManger *mBatchManger; + +@property(nonatomic,strong)JL_SoundCardManager *mSoundCardManager; +@property(nonatomic,strong)JL_DeviceLogs *mDeviceLogs; + +@property(nonatomic,strong)JL_BigDataManager *mBigDataManager; + + +-(void)setPropertyUpdate:(BOOL)isUpdate; +-(void)setBleUuid:(NSString*)uuid; +-(void)setBleName:(NSString*)name; +-(void)inputPKG:(JL_PKG*)pkg; + +-(void)noteEntityConnected; +-(void)noteEntityDisconnected; +-(void)noteEntityBleOff; + +/** + 发送【命令包】 + @param cmdCode 具体要发送的命令 + @param needResponse 是否需要回复 + @param sendData 具体要发送的数据 + @discussion 只有isCommand是YES时needResponse才有意义,即只有命令才需要回复 + */ +-(void)xmCommandCode:(uint8_t)cmdCode + needRep:(BOOL)needResponse + data:(NSData *)sendData; + +/** + 发送【回复包】 + @param code 命令号 + @param sn 序号 + @param st 状态码 + @param data 回复的命令的内容 + */ +-(void)cmdResponseCode:(uint8_t)code + OpSN:(UInt8)sn + Status:(JL_CMDStatus)st + Data:(NSData* __nullable)data; + +/** + 发送【通知命令】 + @param name 通知名字 + @param obj 携带对象 + */ +-(void)managerPost:(NSString*)name Object:(id __nullable)obj; + +/** + 获取当前命令序号 + */ +-(uint8_t)xmCommandSN; + +#pragma mark ---> 取出设备信息 + +/// copy出来的原值 +-(JLModel_Device *)outputDeviceModel; + +/// 取出原本的值 +-(JLModel_Device *)getDeviceModel; + +#pragma mark ---> 获取设备信息 +extern NSString *kJL_MANAGER_TARGET_INFO; +-(void)cmdTargetFeatureResult:(JL_CMD_RESPOND __nullable)result; +-(void)cmdTargetFeature:(uint32_t)feature Result:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 断开经典蓝牙 +-(void)cmdDisconnectEdrResult:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 重置配对流程标志(使适配连接ANCS设备) +-(void)cmdResetPairingResult:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 获取系统信息(全获取) +/** + @param function JL_FunctionCode + @param result 回复 + */ +-(void)cmdGetSystemInfo:(JL_FunctionCode)function + Result:(JL_CMD_RESPOND __nullable)result; +-(void)cmdGetSystemInfoResult; + +#pragma mark ---> 获取系统信息(选择性获取) +/** + @param function JL_FunctionCode + @param result 回复 + */ +-(void)cmdGetSystemInfo:(JL_FunctionCode)function + SelectionBit:(uint32_t)bits + Result:(JL_CMD_RESPOND __nullable)result; +-(void)cmdGetSystemInfoResult_1; + +#pragma mark ---> 设备主动返回的系统信息 +extern NSString *kJL_MANAGER_SYSTEM_INFO; + +#pragma mark ---> 通用、BT、Music、RTC、Aux +/** + @param function 功能类型 + @param cmd 操作命令 + @param ext 扩展数据 + @param result 回复 + */ +-(void)cmdFunction:(JL_FunctionCode)function + Command:(UInt8)cmd + Extend:(UInt8)ext + Result:(JL_CMD_RESPOND __nullable)result; + +typedef void(^JL_IMAGE_RT)(NSMutableDictionary* __nullable dict); +#pragma mark ---> 获取设备的图片 +/** + @param vid 设备vid + @param pid 设备pid + @param result 图片数据 + */ +-(void)cmdRequestDeviceImageVid:(NSString*)vid + Pid:(NSString*)pid + Result:(JL_IMAGE_RT __nullable)result; + +-(void)cmdRequestDeviceImageVid:(NSString*)vid + Pid:(NSString*)pid + ItemArray:(NSArray *__nullable)itemArray + Result:(JL_IMAGE_RT __nullable)result; + +-(NSDictionary*)localDeviceImage:(NSString*)jsonFile; + +#pragma mark ---> 通知固件开始播放TTS内容 + +/// 通知固件SDK播放tts +/// @param status 0:开始播放,1:播放结束 +-(void)cmdStartTTSNote:(uint8_t)status; + + +/// 获取MD5信息 +/// @param result 回调 +-(void)cmdGetMD5_Result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MusicControlManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MusicControlManager.h new file mode 100644 index 000000000..bfa2d952d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_MusicControlManager.h @@ -0,0 +1,40 @@ +// +// JL_MusicControlManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +__attribute__((deprecated("已废弃,请使用JLDevPlayerCtrl类"))) + +@interface JL_MusicControlManager : JL_FunctionBaseManager + + +#pragma mark ---> 设置播放模式 +/** + @param mode 模式 + 0x01:全部循环; 0x02:设备循环; 0x03:单曲循环; 0x04:随机播放; 0x05:文件夹循环 + */ +-(void)cmdSetSystemPlayMode:(JL_MusicMode)mode __attribute__((deprecated("cmdSetPlayMode:已废弃"))); + +#pragma mark ---> 快进快退 +/** + @param cmd 快进或者快退枚举 + @param sec 时间 + @param result 返回结果 + */ +-(void)cmdFastPlay:(JL_FCmdMusic)cmd + Second:(uint16_t)sec + Result:(JL_CMD_RESPOND __nullable)result __attribute__((deprecated("cmdFastPlay:已废弃,需要使用JLDevPlayerCtrl类里的方法设置"))); + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_NFC.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_NFC.h new file mode 100644 index 000000000..a3be1d723 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_NFC.h @@ -0,0 +1,96 @@ +// +// JL_NFC.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/2. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_TypeEnum.h" +#import "JL_ManagerM.h" + +@class JL_RCSP; +@class JL_EntityM; +@class NfcFileModel; +@class NfcModel; +NS_ASSUME_NONNULL_BEGIN + +typedef void(^NfcSyncResult)(UInt8 result,NSArray * _Nullable models); + +typedef void(^NfcIDResult)(UInt16 result); + +typedef void(^NfcDefaultResult)(BOOL result); + +typedef void(^NfcBeginAddResult)(JL_EntityM *entity); + + +@interface JL_NFC : NSObject + +-(instancetype)initWith:(JL_EntityM *)entity FileHandler:(JL_FileHandleType)handler; + + +/// 同步NFC信息开始 +-(void)w_syncNfcStart:(NfcSyncResult)result; + + +/// 修改NFC的信息 +/// @param dict 修改的内容 +/** + dict 的内容 + { + @"timestamp" : NSDate() + @"nickname" : @"我的家" + } + 如果key值找不到对应的value,那就说明该项值不参与被修改 + */ +-(void)w_modifyNfc:(NSDictionary *)dict WithID:(UInt16)nfcID; + + +/// 删除NFC信息 +/// @param model nfc头部model +-(void)w_deleteNfc:(NfcModel *)model; + + +/// 获取当前正在使用着的默认NFC卡ID +/// @param result NFC卡id +-(void)w_getNfcDefaultCard:(NfcIDResult)result; + + +/// 设置默认的NFC信息 +/// @param model NFC头部model +-(void)w_setNfcDefalutCard:(NfcModel *)model result:(NfcDefaultResult)result; + + +/// 通知默认NFC改变 +/// @param model NFC信息头部 +-(void)w_NfcDefaultNotify:(NfcModel *)model; + +/// 添加NFC文件 +/// @param model NFC文件模型 +/// @param result 开始传输操作 +/** examp. + NfcFileModel *fm = [[NfcFileModel alloc] init]; +// fm.idCard = ... +// fm.nfcFileName = ... + JL_NFC *mgr = [[JL_NFC alloc] init]; + [mgr w_NfcAddCard:fm BeginAdd:^(JL_EntityM * _Nonnull entity) { + //大文件传输开始 + [entity.mCmdManager cmdBigFileData:#path WithFileName:#fileName Result:^(JL_BigFileResult result, float progress) { + if (result == JL_BigFileTransferEnd) { + //结束NFC文件添加 + [mgr w_NfcEndAdd:fm]; + } + + }]; + }]; + */ +-(void)w_NfcAddCard:(NfcFileModel *)model BeginAdd:(NfcBeginAddResult)result; + +/// 添加NFC文件结束 +/// @param model NFC文件模型 +-(void)w_NfcEndAdd:(NfcFileModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_OpCode.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_OpCode.h new file mode 100644 index 000000000..a7b9e7c86 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_OpCode.h @@ -0,0 +1,97 @@ +// +// JL_OpCode.h +// JL_BLEKit +// +// Created by 杰理科技 on 2022/12/28. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_OpCode_h +#define JL_OpCode_h + +#define kJL_DATA_CMD 0x0001 +#define kJL_GET_TARGET_FEATURE_MAP 0x0002 //保留 +#define kJL_GET_TARGET_FEATURE 0x0003 +#define kJL_VOICE_START 0x0004 +#define kJL_VOICE_STOP 0x0005 +#define kJL_VOICE_DISCONNECT_EDR 0x0006 +#define kJL_SYS_INFO_GET 0x0007 +#define kJL_SYS_INFO_SET 0x0008 +#define kJL_SYS_INFO_AUTO_UPDATE 0x0009 +#define kJL_PHONE_CALL_REQUEST 0x000a +#define kJL_FILE_BROWSE_START 0x000c +#define kJL_FILE_BROWSE_STOP 0x000d +#define kJL_FILE_STRUCT_CHANGE 0x00f2 //通知文件结构变化 +#define kJL_FUNCTION_CMD 0x000e +#define kJL_LRC_GET_START 0x000f +#define kJL_LRC_GET_STOP 0x0010 +#define kJL_A2F_TTS_START 0x0011 +#define kJL_BT_SCAN_START 0x0012 +#define kJL_BT_SCAN_RESULT 0x0013 +#define kJL_BT_SCAN_STOP 0x0014 +//#define kJL_BT_CONNECT 0x0015 +#define kJL_FILE_START 0x0016 +#define kJL_FILE_STOP 0x0017 +#define kJL_FIND_DEVICE 0x0019 +#define kJL_CUSTOMER_USER 0x00ff + +#define kJL_OTA_INFO_OFFSET 0x00e1 +#define kJL_OTA_CAN_UPDATE 0x00e2 +#define kJL_OTA_ENTER_UPDATE 0x00e3 +#define kJL_OTA_EXIT_UPDATE 0x00e4 +#define kJL_OTA_GET_DATA 0x00e5 +#define kJL_OTA_STATUS_UPDATE 0x00e6 +#define kJL_OTA_REBOOT 0x00e7 +#define kJL_OTA_BLE_SPP 0x000b +#define kJL_OTA_LENGTH 0x00e8 + +#define kJL_SET_ADV 0x00C0 +#define kJL_GET_ADV 0x00C1 +#define kJL_ADV_NOTIFY_DEVICE 0x00C2 +#define kJL_ADV_NOTIFY_ENABLE 0x00C3 +#define kJL_ADV_NOTIFY_TIPS 0x00C4 //主要用于ADV设置同步后需要主机操作的行为。 + +#define kJL_SET_APP_INFO 0x00D0 +#define kJL_SET_MTU 0x00D1 +#define kJL_GET_MD5 0x00D4 +#define kJL_GET_LOW_DELAY 0x00D5 +#define kJL_GET_FLASH_INFO 0x00D6 +#define kJL_SET_DEV_STORAGE 0x00D8 //设置当前使用的存储设备 +#define kJL_GET_DEV_CONFIG 0x00D9 //获取设备配置信息 +#define kJL_GET_FLASH_W_R 0x001A + +#define kJL_BIGFILE_START 0x001B +#define kJL_BIGFILE_END 0x001C +#define kJL_BIGFILE_GET_FILE 0x001D +#define kJL_BIGFILE_STOP 0x001E +#define kJL_FILE_DELETE 0x001F +#define kJL_GET_FILENAME 0x0020 +#define kJL_PRE_ENVIRONMENT 0x0021 +#define kJL_FILE_FORMAT 0x0022 +#define kJL_FILE_NAME_DEL 0x0023 +#define kJL_FILE_READ_CONTENT 0x0024 + +#define kJL_RTC_PLUS 0x0025 +#define kJL_BATCH_OPERATE 0x0026 +#define kJL_FILE_GET_CRC 0x0027 +#define kJL_SMALL_FILE 0x0028 + +#define kJL_DEVICE_LOG 0x0029 +#define kJL_BIG_DATA 0x0030 +#define kJL_TWS_NAME_LIST 0x0031 //一拖二/获取设备已连接手机名 +#define kJL_AI_CONTROL 0x0032 //AI控制命令 +#define kJL_PUBLIC_SET 0x0033 //公共设置命令 +#define kJL_TRAMSLATE 0x0034 //翻译命令 +#define kJL_AURACASTE 0x0035 //Auracast命令 + + +#define kJL_WEAR_REQ_OPCODE 0x00A0 //获取运动信息 +#define kJL_WEAR_SET_OPCODE 0x00A1 //设置运动信息 +#define kJL_WEAR_RES_OPCODE 0x00A2 //设备主动推的运动信息 +#define kJL_WEAR_CMD_LOG 0x00A3 //传感器log传输命令 +#define kJL_WEAR_CMD_SETTING 0x00A5 //健康设备设置命令 +#define kJL_WEAR_SYNC_SPORT 0x00A6 //运动模式相关命令(同步数据) + +#define kJL_PHONE_NUMBER_WAY 0x00F1 + +#endif /* JL_OpCode_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_RCSP.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_RCSP.h new file mode 100644 index 000000000..8816e633d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_RCSP.h @@ -0,0 +1,73 @@ +// +// JL_RCSP.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/9. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + + +@class JL_PKG; +@interface JL_RCSP : NSObject + +/** + 解析JL数据包 + + @param data 把数据转成JL_PKG模型。 + @return JL_PKG数据模型 + */ ++(JL_PKG*)rcspAnalysisData:(NSData*)data; + +/** + 生成XM数据包 + + @param pkg 把JL_PKG模型转成data。 + @return 数据 + */ ++(NSData*)rcspMakePackage:(JL_PKG*)pkg; + +/** + 分析JL_PKG参数 + + @param pkg 把JL_PKG的xmData参数部分解析成一列数组。 + @return 参数数组 + */ ++(NSArray*)rcspAnalysisParams:(JL_PKG*)pkg; + +/** + 分解dJL_PKG信息 + + @param data JL_PKG中的信息数据 + @return 参数c数组 + */ ++(NSArray*)rcspInfoArrFromData:(NSData*)data; + +/// 拆分LTV数据 +/// 当前方法针对的是 L 长度为 2Byte +/// @param data LTV数据 ++(NSArray*)rcspInfoFromData2ByteSize:(NSData*)data; + +/** + 生成JL_PKG参数 + + @param array 把参数数组变成data(注意:数组元素必须是NSData类型)。 + @return 数据 + */ ++(NSData*)rcspMakeParams:(NSArray*)array; +@end + +@interface JL_PKG : NSObject +@property(assign,nonatomic) uint16_t pkgIsCommand; //1Bit +@property(assign,nonatomic) uint16_t pkgNeedResponse; //1Bit +@property(assign,nonatomic) uint16_t pkgUnused; //6Bits +@property(assign,nonatomic) uint16_t pkgOpCode; //8Bits +@property(assign,nonatomic) uint16_t pkgLength; //参数长度(本身不计) +@property(strong,nonatomic) NSData *pkgData; //参数数据 +@end +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h new file mode 100644 index 000000000..766e37c23 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h @@ -0,0 +1,37 @@ +// +// JL_SDM_AirPressure.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 压力实时 +@interface JL_SDM_AirPressure : JLSportDataModel +/// 实时 +@property(nonatomic,assign)int realTime; +/// 最高 +@property(nonatomic,assign)int max; +/// 最低 +@property(nonatomic,assign)int min; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_AirPressure*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容设置 +/// @param rt 是否需要实时气压 +/// @param min 是否需要最小气压 +/// @param max 是否需要最大气压 ++(JL_SDM_AirPressure*)requireRealTime:(BOOL)rt min:(BOOL)min Max:(BOOL)max; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h new file mode 100644 index 000000000..e4e73c39d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h @@ -0,0 +1,38 @@ +// +// JL_SDM_Altitude.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +///海拔高度相关 +@interface JL_SDM_Altitude : JLSportDataModel + +/// 最大值 +@property(nonatomic,assign)float max; +/// 最小值 +@property(nonatomic,assign)float min; +/// 实时的 +@property(nonatomic,assign)float realTime; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_Altitude*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求海拔内容设置 +/// @param rt 是否需要实时海拔 +/// @param min 是否需要最小海拔 +/// @param max 是否需要最大海拔 ++(JL_SDM_Altitude*)requireRealTime:(BOOL)rt min:(BOOL)min Max:(BOOL)max; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Header.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Header.h new file mode 100644 index 000000000..d106663d0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Header.h @@ -0,0 +1,153 @@ +// +// JL_SDM_Header.h +// JL_BLEKit +// +// Created by EzioChan on 2021/4/8. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_SDM_Header_h +#define JL_SDM_Header_h + +#import +#import "JL_SDM_Stress.h" +#import "JL_SDM_Altitude.h" +#import "JL_SDM_MaxOxg.h" +#import "JL_SDM_RecTime.h" +#import "JL_SDM_HeartRate.h" +#import "JL_SDM_MoveSteps.h" +#import "JL_SDM_TrainLoad.h" +#import "JL_SDM_AirPressure.h" +#import "JL_SDM_OxSaturation.h" +#import "JL_SDM_SportMessage.h" +#import "JL_MSG_Weather.h" +#import "JL_MSG_Func.h" +#import "JLWatchEnum.h" +#import "NfcModel.h" +#import "JLwSettingModel.h" +#import "JLSensorFuncModel.h" +#import "JLSedentaryRmdModel.h" +#import "JLConsequentHeartRateModel.h" +#import "JLExerciseHeartRateRemindModel.h" +#import "JLAutoPressureModel.h" +#import "JLSleepMonitorModel.h" +#import "JLFallDetectionModel.h" +#import "JLEmergencyContactModel.h" +#import "JLOxygenSturationRemindModel.h" +#import "JLWristLiftDetectionModel.h" +#import "JLPersonInfoModel.h" +#import "JLDisconnectRemindModel.h" +#import "JLWearSyncInfoModel.h" +#import "JLWearSyncFinishModel.h" +#import "JLWearSyncRealTimeModel.h" +#import "JLeSimManager.h" + + +#include +#ifndef JL_IOS +#define JL_IOS +#endif + +#pragma - Please select your log mode and log level + +// Note: Only debug mode will print log. You could also set mode for log level. +#define kJLDebugMode +// JLLogLevelFatal , JLLogLevelError , JLLogLevelWarn , JLLogLevelInfo , JLLogLevelDebug +#define JLLogLevelError +//Note: print method name +#define kModuleName __func__ + +#pragma ---------------------------------- + +#ifdef kJLDebugMode + +static const int JL_IOS_FLAG_FATAL = 0x10; +static const int JL_IOS_FLAG_ERROR = 0x08; +static const int JL_IOS_FLAG_WARN = 0x04; +static const int JL_IOS_FLAG_INFO = 0x02; +static const int JL_IOS_FLAG_DEBUG = 0x01; + +#ifdef JLLogLevelFatal +static const int JL_IOS_LOG_LEVEL = JL_IOS_FLAG_FATAL; +#elif defined(JLLogLevelError) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR); +#elif defined(JLLogLevelWarn) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR | JL_IOS_FLAG_WARN); +#elif defined(JLLogLevelInfo) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR | JL_IOS_FLAG_WARN | JL_IOS_FLAG_INFO); +#elif defined(JLLogLevelDebug) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR | JL_IOS_FLAG_WARN | JL_IOS_FLAG_INFO | JL_IOS_FLAG_DEBUG); +#endif + + + +#define log4cplus_fatal(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_FATAL) \ +syslog(LOG_CRIT, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_error(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_ERROR) \ +syslog(LOG_ERR, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_warn(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_WARN) \ +syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_info(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_INFO) \ +syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_debug(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_DEBUG) \ +syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ + + +#else + +#define log4cplus_fatal(category, logFmt, ...); \ + +#define log4cplus_error(category, logFmt, ...); \ + +#define log4cplus_warn(category, logFmt, ...); \ + +#define log4cplus_info(category, logFmt, ...); \ + +#define log4cplus_debug(category, logFmt, ...); \ + +#endif + +///心率 +typedef void(^JL_CB_HeartRate)(JL_SDM_HeartRate *heartRate); +///气压 +typedef void(^JL_CB_AirPressure)(JL_SDM_AirPressure *ap); +///海拔 +typedef void(^JL_CB_Altitude)(JL_SDM_Altitude *altitude); +///运动步数 +typedef void(^JL_CB_MoveSteps)(JL_SDM_MoveSteps *ms); +///压力检测 +typedef void(^JL_CB_Stress)(JL_SDM_Stress *stress); +///血氧饱和度 +typedef void(^JL_CB_Oxsaturation)(JL_SDM_OxSaturation *oxs); +///训练负荷 +typedef void(^JL_CB_TrainLoad)(JL_SDM_TrainLoad *tl); +///最大摄氧量 +typedef void(^JL_CB_MaxOxg)(JL_SDM_MaxOxg *mo); +///运动恢复时间 +typedef void(^JL_CB_RecTime)(JL_SDM_RecTime *rt); +///运动信息 +typedef void(^JL_CB_SportMsg)(JL_SDM_SportMessage *sm); +///传感器log +typedef void(^JL_CB_WatchLog)(JL_WATCH_LOG_TYPE type,NSData *data); + +//MARK:设置相关 +///设置状态回复 +typedef void(^JL_CB_Status)(BOOL succeed); + +//MARK: - 同步相关 +///读取同步运动状态 +typedef void(^JL_CB_SyncSportInfo)(JLWearSyncInfoModel *infoModel); +/// 读取同步状态 +typedef void(^JL_CB_SyncSportDataInfo)(JLWearSyncDataModel *infoModel); + + +#endif /* JL_SDM_Header_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h new file mode 100644 index 000000000..0a9925ded --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h @@ -0,0 +1,49 @@ +// +// JL_SDM_HeartBeat.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// +/* + * 这是一个Sport Data Model的对象 + */ +///心率model +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 心率相关内容 +@interface JL_SDM_HeartRate : JLSportDataModel +/// 实时心率 +@property(nonatomic,assign)uint8_t realTime; +/// 静息心率 +@property(nonatomic,assign)uint8_t resting; +/// 最大心率 +@property(nonatomic,assign)uint8_t max; + +/// 单次测量的心率 +@property(nonatomic,assign)uint8_t singleRate; + +/// 是否为单次测量的数据 +@property(nonatomic,assign)BOOL isSingle; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_HeartRate*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求心率内容设置 +/// @param rt 是否需要实时心率 +/// @param rting 是否需要静息心率 +/// @param max 是否需要最大心率 ++(JL_SDM_HeartRate*)requireRealTime:(BOOL)rt Resting:(BOOL)rting Max:(BOOL)max; + +/// 单次测量 ++(JL_SDM_HeartRate*)requireSingle; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h new file mode 100644 index 000000000..a0bf6d539 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h @@ -0,0 +1,29 @@ +// +// JL_SDM_MaxOxg.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_MaxOxg : JLSportDataModel + +@property(nonatomic,assign)int max; + +///最大摄氧量 +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_MaxOxg*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_MaxOxg*)require; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h new file mode 100644 index 000000000..46fa1076f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h @@ -0,0 +1,34 @@ +// +// JL_SDM_MoveSteps.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +///实时步数 +@interface JL_SDM_MoveSteps : JLSportDataModel +/// 实时步数 +@property(nonatomic,assign)NSInteger rtStep; + +/// 热量,单位:千卡 +@property(nonatomic,assign)NSInteger calories; + +/// 距离,单位:0.01公里 +@property(nonatomic,assign)NSInteger distance; +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_MoveSteps*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 选择性请求内容 ++(JL_SDM_MoveSteps*)require:(BOOL)rst distance:(BOOL)dts calories:(BOOL)ca; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h new file mode 100644 index 000000000..f594e25c3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h @@ -0,0 +1,59 @@ +// +// JL_SDM_OxSaturation.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JLOxSaturationType) { + //当前血氧饱和度 + JLOxSaturation_nowSta = 0x01, + //最大血氧 + JLOxSaturation_max = 0x01 << 1, + //最小血氧 + JLOxSaturation_min = 0x01 << 2, + //单次测量 + JLOxSaturation_single = 0x01 << 3 +}; + +/// 血氧饱和度 +@interface JL_SDM_OxSaturation : JLSportDataModel + +/// 饱和度 +@property(nonatomic,assign)int staturation; +/// 最大饱和度 +@property(nonatomic,assign)uint8_t max; +/// 最小饱和度 +@property(nonatomic,assign)uint8_t min; + +/// 单次测量的饱和度 +@property(nonatomic,assign)uint8_t singleStaturation; + +/// 是否为单次测量的数据 +@property(nonatomic,assign)BOOL isSingle; + + +/// 血氧饱和度 +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_OxSaturation*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_OxSaturation*)require; + + +/// 请求血氧浓度 +/// @param type 类型 +/// 该类型可以同时请求多个,诸如:JLOxSaturation_nowSta | JLOxSaturation_max | JLOxSaturation_min ++(JL_SDM_OxSaturation*)requireByBit:(JLOxSaturationType)type; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h new file mode 100644 index 000000000..3e0f3c577 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h @@ -0,0 +1,28 @@ +// +// JL_SDM_RecTime.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_RecTime : JLSportDataModel + +@property(nonatomic,assign)int hour; +@property(nonatomic,assign)int min; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_RecTime*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_RecTime*)require; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h new file mode 100644 index 000000000..38e84d940 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h @@ -0,0 +1,50 @@ +// +// JL_SDM_SportMessage.h +// JL_BLEKit +// +// Created by EzioChan on 2021/4/8. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLSportDataModel.h" +#import "JLWatchEnum.h" +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_SportMessage : JLSportDataModel + +/// 运动模式 +@property(nonatomic,assign)JL_SportPattern sportPattern; +/// 距离,单位:0.01km +@property(nonatomic,assign)int distance; +/// 开始时间 +@property(nonatomic,strong)NSDate *startTime; +/// 结束时间 +@property(nonatomic,strong)NSDate *endTime; +/// 热量,单位:千卡 Kcal +@property(nonatomic,assign)int xkcal; +/// 速度。单位:0.01 km/h +@property(nonatomic,assign)int speed; + + +/// 分析返回的数据 +/// @param value subData +/// @param submask submask ++(JL_SDM_SportMessage *)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求要获取的内容 +/// @param m 是否请求模式 +/// @param d 是否请求距离 +/// @param st 是否请求开始时间 +/// @param et 是否请求结束时间 +/// @param kcal 是否请求卡路里 +/// @param sp 是否请求速度 ++(JL_SDM_SportMessage *)requireModel:(BOOL)m distance:(BOOL)d start:(BOOL)st end:(BOOL)et kcal:(BOOL)kcal speed:(BOOL)sp; + +/// 请求全部数据 ++(JL_SDM_SportMessage *)requireAll; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Stress.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Stress.h new file mode 100644 index 000000000..75d9260ad --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_Stress.h @@ -0,0 +1,28 @@ +// +// JL_SDM_Stress.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 实时压力 +@interface JL_SDM_Stress : JLSportDataModel + +@property(nonatomic,assign)int stress; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_Stress*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_Stress*)require; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h new file mode 100644 index 000000000..c93ff24c1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h @@ -0,0 +1,30 @@ +// +// JL_SDM_TrainLoad.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_TrainLoad : JLSportDataModel + +@property(nonatomic,assign)int load; + +///训练负荷 +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_TrainLoad*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_TrainLoad*)require; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SmallFileManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SmallFileManager.h new file mode 100644 index 000000000..fae3600ba --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SmallFileManager.h @@ -0,0 +1,151 @@ +// +// JL_SmallFileManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_SmallFileOperate) { + JL_SmallFileOperateFail = 0x00, //失败 + JL_SmallFileOperateDoing = 0x01, //操作中 + JL_SmallFileOperateSuceess = 0x02, //成功 + JL_SmallFileOperateUnknown = 0x03, //未知 + JL_SmallFileOperateExcess = 0x04, //超量 + JL_SmallFileOperateCrcError = 0x05, //CRC错误 + JL_SmallFileOperateTimeout = 0x06, //超时 +}; +typedef void(^JL_SMALLFILE_DEL)(JL_SmallFileOperate status); +typedef void(^JL_SMALLFILE_READ)(JL_SmallFileOperate status, + float progress, NSData* __nullable data); +typedef void(^JL_SMALLFILE_NEW)(JL_SmallFileOperate status, + float progress, uint16_t fileID); +typedef void(^JL_SMALLFILE_UPDATE)(JL_SmallFileOperate status, + float progress); +typedef void(^JL_SMALLFILE_LIST)(NSArray * __nullable array); +typedef void(^JL_SMALLFILE_RT)(uint8_t flag, uint16_t fileID,NSData* __nullable data); + +@interface JL_SmallFileManager : JL_FunctionBaseManager + +#pragma mark - 查询文件 + +/// 查询文件 +/// @param type 文件类型 +/// 文件类型除了已有的文件外,还可以扩展类型是Uint8的值 +/// @param result 列表回调 +-(void)cmdSmallFileQueryType:(JL_SmallFileType)type + Result:(JL_SMALLFILE_LIST __nullable)result; + +#pragma mark - 删除文件 + +/// 删除文件 +/// @param file 文件模型:JLModel_SmallFile +/// @param result 操作回调结果 +-(void)cmdSmallFileDelete:(JLModel_SmallFile*)file Result:(JL_SMALLFILE_DEL)result; + +#pragma mark - 读取文件 + +/// 读取文件 +/// @param file 文件模型:JLModel_SmallFile +/// @param result 回调文件数据以及进度,通过分包式回调。 +-(void)cmdSmallFileRead:(JLModel_SmallFile*)file + Result:(JL_SMALLFILE_READ)result; + +-(void)cmdSmallFileReadSync:(JLModel_SmallFile*)file + Result:(JL_SMALLFILE_READ)result;//同步 + +#pragma mark - 新增文件 + +/// 新增文件 +/// @param data 文件数据 +/// @param type 文件类型 +/// @param result 回调的结果,包含分包进度 +-(void)cmdSmallFileNew:(NSData*)data + Type:(JL_SmallFileType)type + Result:(JL_SMALLFILE_NEW)result; + +-(void)cmdSmallFileNewSync:(NSData*)data + Type:(JL_SmallFileType)type + Result:(JL_SMALLFILE_NEW)result; + +#pragma mark - 更新文件 + +/// 更新文件 +/// @param file 文件模型:JLModel_SmallFile +/// @param data 文件数据 +/// @param result 回调进度 +-(void)cmdSmallFileUpdate:(JLModel_SmallFile*)file + Data:(NSData*)data + Result:(JL_SMALLFILE_UPDATE)result; + +-(void)cmdSmallFileUpdateSync:(JLModel_SmallFile*)file + Data:(NSData*)data + Result:(JL_SMALLFILE_UPDATE)result; + +#pragma mark - 底层API + +/// 读取文件,更低等级的API +/// @param type 文件类型 +/// @param fileId 文件ID +/// @param offset 偏移值 +/// @param fileSize 数据大小 +/// @param flag 是否为第一包查询 +/// @param result 回调文件结果 +-(void)cmdSmallFileReadType:(uint8_t)type + FileID:(uint16_t)fileId + Offset:(uint16_t)offset + FileSize:(uint16_t)fileSize + Flag:(uint8_t)flag + Result:(JL_SMALLFILE_RT __nullable)result; + + +/// 插入新文件,更低等级的API +/// @param type 文件类型 +/// @param offset 偏移值 +/// @param fileSize 数据量大小 +/// @param crc16 crc校验码 +/// @param data 要插入的数据 +/// @param result 回调结果 +-(void)cmdSmallFileNewType:(uint8_t)type + Offset:(uint16_t)offset + FileSize:(uint16_t)fileSize + Crc16:(uint16_t)crc16 + FileData:(NSData*)data + Result:(JL_SMALLFILE_RT __nullable)result; + +/// 更新文件,更低等级的API +/// @param type 文件类型 +/// @param fileId 文件ID +/// @param offset 偏移值 +/// @param fileSize 数据包的大小 +/// @param crc16 数据包的crc校验 +/// @param data 数据包 +/// @param result 回调结果 +-(void)cmdSmallFileUpdateType:(uint8_t)type + FileID:(uint16_t)fileId + Offset:(uint16_t)offset + FileSize:(uint16_t)fileSize + Crc16:(uint16_t)crc16 + FileData:(NSData*)data + Result:(JL_SMALLFILE_RT __nullable)result; + +/// 小文件删除,更低等级的API +/// @param type 文件类型 +/// @param fileId 文件id +/// @param result 回调结果 +-(void)cmdSmallFileDeleteType:(uint8_t)type + FileID:(uint16_t)fileId + Result:(JL_SMALLFILE_RT __nullable)result; + +-(void)closeTimer; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SoundCardManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SoundCardManager.h new file mode 100644 index 000000000..6e23c4ce3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SoundCardManager.h @@ -0,0 +1,97 @@ +// +// JL_SoundCardManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Modify by EzioChan on 2023/09/25. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + +typedef NS_ENUM(uint8_t, JL_KalaoIndex) { + ///卡拉OK 混响 + JL_KalaoIndexReverberation = 0, + ///卡拉OK 延时 + JL_KalaoIndexDelayed = 1, + ///卡拉OK 音量 + JL_KalaoIndexVolume = 2, +}; + +@class JL_ManagerM; + +/// 声卡功能 +@interface JLSoundCardIndexValue : NSObject + +@property (assign,nonatomic)uint8_t index; + +@property (assign,nonatomic)uint16_t value; + +@end + +@protocol JLSoundCardMgrDelegate + +/// 声卡控制回调 +/// - Parameters: +/// - mask: 掩码 +/// - items: 掩码对应的值 +-(void)jlsoundCardMask:(uint64_t)mask values:(NSArray *)items; + +/// 声卡控制回调 +/// - Parameter frequencyArray: 频率数组 +-(void)jlsoundCardMicFrequency:(NSArray*)frequencyArray; + +/// 声卡控制回调 +/// - Parameter eqArray: EQ数组 +-(void)jlsoundCardMicEQ:(NSArray*)eqArray; + +@end + + +/// 卡拉OK(声卡控制相关) +@interface JL_SoundCardManager : NSObject + +/// 卡拉OK 组件索引 +@property (assign,nonatomic)long index; + +/// 卡拉OK 组件的值 +@property (assign,nonatomic)long value; + +/// 卡拉OK 固件返回的掩码 +@property (assign,nonatomic)uint64_t mask; + +/// 声卡功能参数列表 +@property (strong,nonatomic)NSArray * iVitems; + +/// 卡拉OK 频率数组 +@property (strong,nonatomic)NSArray *micFrequencyArray; + +/// 卡拉OK EQ数组 +@property (strong,nonatomic)NSArray *micEQArray; + +/// 代理 +@property (weak,nonatomic)id delegate; + +/// 设置卡拉OK【index、value】 +/// - Parameters: +/// - manager: 设备对象 +/// - index: index 参数类型 JL_KalaoIndex 目前支持混响、延时、音量的设置。(具体可以看固件的json文件) +/// - value: 0-100 +/// - result: 设置结果 +-(void)cmdSetKalaok:(JL_ManagerM *)manager Index:(JL_KalaoIndex)index Value:(uint16_t)value result:(JL_CMD_RESPOND)result; + +/// 设置卡拉OK【MIC EQ增益】 +/// - Parameters: +/// - manager: 设备对象 +/// - array: @[@(0),@(0),@(0),@(0),@(0)] 单个取值范围 [-8.0 , +8.0]。 +/// - result: 设置结果 +-(void)cmdSetKaraoke:(JL_ManagerM *)manager micEQ:(NSArray*)array result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h new file mode 100644 index 000000000..0ade1d9e8 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h @@ -0,0 +1,59 @@ +// +// JL_SpeechAIttsHandler.h +// JL_BLEKit +// +// Created by EzioChan on 2023/7/22. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@protocol JL_SpeechAIttsHandlerDelegate + +/// 设备回调ai云数据 +/// - Parameters: +/// - manager: 设备 +/// - aicloud: AI云数据对象 +-(void)receiveDataFrom:(JL_ManagerM *)manager WithAiCloud:(JLSpeechAiCloud *)aicloud; + +/// 设备返回tts合成数据 +/// - Parameters: +/// - manager: 设备 +/// - tts: tts数据对象 +-(void)receiveDataFrom:(JL_ManagerM *)manager WithTTS:(JLSpeechTTSSynthesis *)tts; + +@end + +/// 语音 AI/tts 传输处理(旧) +DEPRECATED_MSG_ATTRIBUTE("Use JL_SpeechAIttsHandler instead.") +@interface JL_SpeechAIttsHandler : NSObject + +@property(nonatomic,weak)id delegate; + + +/// 初始化一个语音大数据传输实例 +/// - Parameter mgr: JL_ManagerM +- (instancetype)initWithMgr:(JL_ManagerM *)mgr; + +/// 发送tts语音合成信息 +/// - Parameters: +/// - tts: tts语音对象内容 +/// - manager: 设备 +/// - result: 回调结果 +-(void)speechSendTTs:(JLSpeechTTSSynthesis *)tts manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +/// 发送ai云数据到设备 +/// - Parameters: +/// - cloud: ai云数据 +/// - manager: 设备 +/// - result: 回调结果 +-(void)speechSendAiCloud:(JLSpeechAiCloud *)cloud manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SpeexManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SpeexManager.h new file mode 100644 index 000000000..28c69e572 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SpeexManager.h @@ -0,0 +1,125 @@ +// +// JL_SpeexManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/17. +// Modify By EzioChan on 2023/03/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JL_SpeexManager; + +/// 录音状态代理处理 +@protocol JL_SpeexManagerDelegate +/// 录音数据回调 +/// - Parameters: +/// - manager: 操作设备 +/// - data: 数据 +-(void)speexManager:(JL_SpeexManager *)manager Audio:(NSData *)data; + +/// 设备端开始录音 +/// - Parameters: +/// - manager: 操作设备 +/// - param: 录音参数 +-(void)speexManager:(JL_SpeexManager *) manager StartByDeviceWithParam:(JLRecordParams *)param; + +/// 设备端结束录音 +/// - Parameters: +/// - manager: 操作设备 +/// - param: 语音助手配置参数 +-(void)speexManager:(JL_SpeexManager *) manager StopByDeviceWithParam:(JLSpeechRecognition *)param; + +/// 录音状态回调 +/// - Parameters: +/// - manager: 操作设备 +/// - status: 状态 +-(void)speexManager:(JL_SpeexManager *)manager Status:(JL_SpeakType)status; + +@optional +/// 录音状态回调 +/// - Parameters: +/// - manager: 操作设备 +/// - status: 录音状态 +/// - originator: 状态变更发起端 +/// 当发起者是Device时,才会具备params的参数,其中结束录音时,params的属性仅有mVadWay为可使用内容 +/// - params: 录音参数 +-(void)speexManager:(JL_SpeexManager *)manager Status:(JL_SpeakType)status By:(JLCMDOriginator)originator With:(JLRecordParams *_Nullable) params __attribute__((deprecated("Use several other callbacks to implement callback methods"))); +@end + +/// 设备录音管理对象 +DEPRECATED_MSG_ATTRIBUTE("Use JLDevAudioManager instead.") +@interface JL_SpeexManager : NSObject + +//MARK: - Sync Android Interface + +@property(nonatomic,weak)id delegate; + +-(instancetype)init __attribute__((unavailable("Use +shareSpeexManager:WithManager: instead."))); + + +/// 获取单例 +/// - Parameters: +/// - delegate: 代理 +/// - manager: 操作设备 ++(JL_SpeexManager *)shareSpeexManager:(id) delegate WithManager:(JL_ManagerM *)manager; + + +/// 获取录音状态 +-(JL_SpeakType)cmdCheckRecordStatus; + + + +/// 开始录音 +/// - Parameters: +/// - manager: 操作设备 +/// - params: 录音参数 +/// - result: 命令操作结果回调 +-(void)cmdStartRecord:(JL_ManagerM *)manager Params:(JLRecordParams *)params Result:(JL_CMD_RESPOND __nullable)result; + + +/// 停止录音 +/// - Parameters: +/// - manager: 操作设备 +/// - reason: VAD类型 +/// - result: 命令操作结果回调 +-(void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason) reason Result:(JL_CMD_RESPOND __nullable)result; + +/// 停止录音2 +/// - Parameters: +/// - manager: 操作设备 +/// - reason: vad类型 +/// - schr: 语音设置助手 +/// - result: 回调结果 +-(void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason)reason SpeechHelper:(JLSpeechRecognition *)schr Result:(JL_CMD_RESPOND __nullable)result; + + +/// 发送命令给音箱,允许音箱端开始接收语音,音箱收到这个消息后会发一个提示音 +/// 当前命令用于收到设备主动发起的录音时,同意开始录音。 +/// 即在 speexManagerStatus:(JL_SpeakType)status By:(JLCMDOriginator)originator With:(JLRecordParams *_Nullable) params 的代理回调收到之后的回复处理 +-(void)cmdAllowSpeak; + + +/// 拒绝录音 +/// 发送命令给音箱,不允许接收语音 +/// 当前命令用于收到设备主动发起的录音时,拒绝开始录音。 +/// 即在 speexManagerStatus:(JL_SpeakType)status By:(JLCMDOriginator)originator With:(JLRecordParams *_Nullable) params 的代理回调收到之后的回复处理 +-(void)cmdRejectSpeak; + +/** 停止语音 + 发发送命令给音箱,停止接收数据,即检测到断句 + */ +-(void)cmdSpeakingDone __attribute__((deprecated ( "当前命令已失效,请使用cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason) reason"))); + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemEQ.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemEQ.h new file mode 100644 index 000000000..3286776c9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemEQ.h @@ -0,0 +1,54 @@ +// +// JL_SystemEQ.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Modify by EzioChan on 2023/09/22 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN +@class JL_SystemEQ; +typedef void(^JLSystemEQResult)(JL_CMDStatus status,JL_SystemEQ * _Nullable model); + +@interface JL_SystemEQ : JL_FunctionBaseManager + +/// 当前EQ模式 +@property (assign,nonatomic) JL_EQMode eqMode; + +/// EQ段数类型 +@property (assign,nonatomic) JL_EQType eqType; + +/// EQ参数值 +/// (只适用于EQ Mode == CUSTOM情况) +@property (strong, nonatomic) NSArray *eqArray; + +/// 自定义 EQ数组 +@property (strong, nonatomic) NSArray *eqCustomArray; + +/// EQ频率 +@property (strong, nonatomic) NSArray *eqFrequencyArray; + +/// EQ的预设值数组 +@property (strong,nonatomic) NSArray *eqDefaultArray; + + +/// 设置系统EQ +/// - Parameters: +/// - eqMode: EQ模式 +/// - params: EQ参数 +-(void)cmdSetSystemEQ:(JL_EQMode)eqMode Params:(NSArray* __nullable)params; + +/// 查询系统EQ内容 +-(void)cmdGetSystemEQ:(JLSystemEQResult)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemTime.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemTime.h new file mode 100644 index 000000000..9e862aaeb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemTime.h @@ -0,0 +1,45 @@ +// +// JL_SystemTime.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SystemTime : JL_FunctionBaseManager + + +/// 设备当前时间 +@property(nonatomic,strong)JLModel_RTC *rtc; + +#pragma mark ---> 设置系统时间 +/** + @param date 时间类 + */ +-(void)cmdSetSystemTime:(NSDate*)date __attribute__((deprecated ( "Please use the (cmdSetSystemYear: Month: Day: Hour: Minute: Second) method instead. The current method will be invalid"))); + + +/// 设置系统年月日时分秒 +/// @param year 年 +/// @param month 月 +/// @param day 日 +/// @param hour 时 +/// @param min 分 +/// @param sec 秒 +-(void)cmdSetSystemYear:(uint16_t)year + Month:(uint8_t)month + Day:(uint8_t)day + Hour:(uint8_t)hour + Minute:(uint8_t)min + Second:(uint8_t)sec; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemVolume.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemVolume.h new file mode 100644 index 000000000..490d8ce10 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_SystemVolume.h @@ -0,0 +1,27 @@ +// +// JL_SystemVolume.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SystemVolume : JL_FunctionBaseManager + +#pragma mark ---> 设置系统音量 +/** + @param volume 音量值 + */ +-(void)cmdSetSystemVolume:(UInt8)volume; +-(void)cmdSetSystemVolume:(UInt8)volume Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Tools.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Tools.h new file mode 100644 index 000000000..64d4c42c1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_Tools.h @@ -0,0 +1,412 @@ +// +// JL_Tools.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/9. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +typedef void(^JL_Action)(void); +typedef void(^JL_Timer_BK)(void); + +@class JL_Timer; +@interface JL_Tools : NSObject + + +/** + Data自定义截取。 + + @param data 数据 + @param index 偏移 + @param length 长度 + @return 截取后的数据 + */ ++(NSData*)data:(NSData*)data R:(NSInteger)index L:(NSInteger)length; ++(NSDictionary*)dictionaryData:(NSData*)data R:(NSInteger)index L:(NSInteger)length; + +/** + NSData 转成 10进制 + + @param data 数据类型 + @return NSInteger类型 + */ ++(NSInteger)dataToInt:(NSData*)data; + +/** + NSData 转成 NSString + + @param data 数据 + @return 字符串 + */ ++(NSString*)dataChangeToString:(NSData*)data; + +/** + uint8_t 转成 NSData + + @param value uint8_t类型 + @return NSData + */ ++(NSData*)uInt8_data:(uint8_t)value; + +/** + uint16_t 转成 NSData + + @param value uint16_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)uInt16_data:(uint16_t)value Endian:(BOOL)endian; + +/** + uint32_t 转成 NSData + + @param value uint32_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)uInt32_data:(uint32_t)value Endian:(BOOL)endian; + +/** + uint64_t 转成 NSData + + @param value uint64_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)uInt64_data:(uint64_t)value Endian:(BOOL)endian; + +/** + int64_t 转成 NSData + + @param value int64_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)int64_data:(int64_t)value Endian:(BOOL)endian; + +/** + 大小端转换 + + @param data 数据 + @return 转换后的数据 + */ ++(NSData*)changeBigOrSmall:(NSData*)data; + +/** + @"ffff0000" 转成 ,16进制的字符串变成NSData。 + + @param hex 类似@"ffff0000" + @return NSData类型 => + */ ++(NSMutableData*)HexToData:(NSString*)hex; +/** + * 去除结束符 + */ ++(NSData*)cleanEOF:(NSData*)data; +/** + 求自然数:aByte ==> -2 -1 0 1 2 3... + @param aByte 数据 + @return 自然数 + */ ++(int)getNaturalNumber:(NSData*)aByte; ++(int)getNaturalNumber_u16:(NSData*)u16Bytes; ++(int)getNaturalNumber_u32:(NSData*)u32Bytes; + +/** + 发出通知事件 + + @param name 通知名字 + @param object 传递的对象 + */ ++(void)post:(NSString*)name Object:(id __nullable)object; + +/** + 发出通知事件 + + @param name 通知名字 + @param object 传递的对象 + @param info 传递的信息 + */ ++(void)post:(NSString*)name Object:(id __nullable)object UserInfo:(NSDictionary* __nullable)info; +/** + 监听通知事件 + + @param name 通知名字 + @param action 实现方法 + @param own 监听者 + */ ++(void)add:(NSString*__nullable)name Action:(SEL)action Own:(id)own; + +/** + 取消通知监听 + + @param name 通知名字 + @param own 监听者 + */ ++(void)remove:(NSString*__nullable)name Own:(id)own; + +/** + 往NSUserDefault存入对象(注意:可变类型对象不适用)。 + + @param objc 对象 + @param key 键值 + */ ++(void)setUser:(id)objc forKey:(NSString*)key; + +/** + 从NSUserDefault取出对象(注意:可变类型对象不适用)。 + + @param key 键值 + @return 返回对象 + */ ++(id _Nullable)getUserByKey:(NSString*)key; + +/** + 移除NSUserDefault相对应的对象 + + @param key 键值 + */ ++(void)removeUserByKey:(NSString*)key; + + +/** + 延时执行block。 + + @param sec 延时时间(秒) + @param block 代码块 + */ ++(void)delay:(double)sec Task:(JL_Action)block; + +/** + 异步执行block。 + + @param block 代码块 + */ ++(void)subTask:(JL_Action)block; + +/** + 主线程执行block。 + + @param block 代码块 + */ ++(void)mainTask:(JL_Action)block; + + +/** + 新建定时器 + + @param sel 执行方法 + @param objc 执行对象 + @param sec 间隔时间(秒) + @return NSTimer + */ ++(NSTimer*)timingStart:(SEL)sel target:(id)objc Time:(NSTimeInterval)sec; + + +/** + 暂停定时间器 + + @param timer 定时器指针 + */ ++(void)timingPause:(__weak NSTimer*)timer; + +/** + 继续定时器 + + @param timer 定时器指针 + */ ++(void)timingContinue:(__weak NSTimer*)timer; + + +/** + 摧毁定时器 + + @param timer 定时器指针 + */ ++(void)timingStop:(__weak NSTimer*)timer; + + +/** + 在存在的文件路径上,建立新的文件。 + + @param sPath 沙盒 + @param mPath 中间路径 + @param file 文件名 + @return 完成路径 + */ ++(NSString*)createOn:(NSSearchPathDirectory)sPath + MiddlePath:(NSString*)mPath + File:(NSString*)file; + +/** + 列出文件路径 + + @param sPath 沙盒 + @param mPath 中间路径 + @param file 文件名 + @return 完整路径 + */ ++(NSString*)listPath:(NSSearchPathDirectory)sPath + MiddlePath:(NSString*)mPath + File:(NSString*)file; + +/** + * 用途:【查找】一个文件,在你想要的路径下。 + * @param sPath 系统路径 + * @param mPath 中途路径 -->> @"test1/test2/test3" <<-- + * @param file 文件名 + */ ++(NSString*)findPath:(NSSearchPathDirectory)sPath + MiddlePath:(NSString*)mPath + File:(NSString*)file; + +/** + * 用途:从Project资源里寻找文件。 + * (先把资源文件添加至工程内的Copy Bundle Resources内。) + * @param file 文件名 + * @return 该文件的路径。 + */ ++(NSString*)find:(NSString *)file; + +/** + * 是否存在某个路径。 + * @param path 文件路径 + * @return YES or NO。 + */ ++(BOOL)isExistsPath:(NSString*)path; +/** + 删除文件 + @param path 完整路径 + @return 成功与否 + */ ++(BOOL)removePath:(NSString*)path; + +/** + * 用途:文件夹内文件元素。 + * @param path 文件夹路径 + */ ++(NSArray*)subPaths:(NSString*)path; + +/** + * 用途:解析JSON文件。 + * @param path 文件路径 + */ ++(id)JsonPath:(NSString*)path; + +/** + * NSArray ==> NSString. + */ ++(NSString*)arrayToJson:(NSArray *)array; + +/** + 数据覆盖写进文件 + + @param data 数据 + @param path 文件路径 + @return 成功与否 + */ ++(BOOL)writeData:(NSData*)data fillFile:(NSString*)path; + +/** + 数据写进文件的末端 + + @param data 数据 + @param path 文件路径 + */ ++(void)writeData:(NSData*)data endFile:(NSString*)path; + +/** + 数据写进文件的偏移位置 + + @param data 数据 + @param seek 偏移 + @param path 文件路径 + */ ++(void)writeData:(NSData*)data Seek:(unsigned long long)seek File:(NSString*)path; + +/** + * UNICODE 编码字符串(小端) + */ ++(NSString*)stringUnicode:(NSData*)data; + +/** + * UNICODE 编码字符串(大端) + */ ++(NSString*)stringUnicodeBig:(NSData*)data; + +/** + * ANSI 编码字符串 + */ ++(NSString*)stringANSI:(NSData*)data; + +/** + * GBK 编码字符串 + */ ++(NSString*)stringGBK:(NSData*)data; + +/** + * 大文件传输,长短文件名(移除不必要字符) + */ ++(NSData*)stringBigFileWithNeedRemoveUnnecessaryPunctuationCharactersWithString:(NSString*)name withFileNameIndex:(int)fileNameIndex; + + +/// 大文件传输文件名设置 +/// Unicode编码 +/// - Parameters: +/// - name: 文件名 +/// - fileNameIndex: index +/// - encodeType: 编码格式 ++(NSData *)stringBigFileUnicode:(NSString *)name withFileNameIndex:(int)fileNameIndex WithEncode:(NSStringEncoding) encodeType; +/** + * 移除不必要字符 \ / : " < > . + */ ++(NSString *)removeUnnecessaryPunctuationCharactersWithString:(NSString *)textString; + +/** + * 名字移除目标字符 + * @param pattern 目标需要移除的字符 + * NSString *pattern = @"[/:*?\"<>|]"; + * @param textString 源字符串 + */ ++(NSString *)removeCharacters:(NSString*)pattern WithString:(NSString *)textString; + +/** + * 大文件传输,长短文件名 + */ ++(NSData*)stringBigFile:(NSString*)name withFileNameIndex:(int)fileNameIndex; + +/** + * 去除特殊字符串 + */ ++(NSString*)removeSpecialStrings:(NSString*)name; +/** + * 返回时间戳(单位:秒) + */ ++(long)dateCurrent; + + +/// 把data变成LTV格式 +/// @param type 类型 +/// @param data 数据 ++(NSData *)beLtv:(uint8_t)type Data:(NSData*)data; + + + +@end + +@interface JL_Timer : NSObject +@property(nonatomic,assign)NSInteger subTimeout; //超时时间(默认5s) +@property(nonatomic,assign)NSTimeInterval subScale; //默认1.0s +-(void)waitForTimeoutResult:(JL_Timer_BK)result; +-(void)continueTimeout; +-(void)cancelTimeout; +-(void)threadWait; +-(void)threadContinue; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_TwsManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_TwsManager.h new file mode 100644 index 000000000..d3f8cf977 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_TwsManager.h @@ -0,0 +1,367 @@ +// +// JL_TwsManager.h +// JL_BLEKit +// +// Created by 凌煊峰 on 2021/12/17. +// Modify by EzioChan on 2023/08/18 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +//MARK: - 耳机电量 +/// 耳机电量 +/// TWS earphones Electricity +@interface TwsElectricity:NSObject +/// 左耳充电中 +@property(nonatomic,assign) BOOL isChargingLeft; + +/// 右耳充电中 +@property(nonatomic,assign) BOOL isChargingRight; + +/// 充电仓正在充电中 +@property(nonatomic,assign) BOOL isChargingCenter; + +/// 左耳电量 +@property(nonatomic,assign) int powerLeft; + +/// 右耳电量 +@property(nonatomic,assign) int powerRight; + +/// 充电舱电量 +@property(nonatomic,assign) int powerCenter; + +@end + + + +//MARK: - TWS 控制类 +/// TWS 管理者 +@interface JL_TwsManager : JL_FunctionBaseManager + +/// 扩展功能支持 +@property(nonatomic,strong,readonly)JLTwsSupportFuncs *supports; + +///耳机电量 +///TWS earphones Electricity +@property (nonatomic,strong)TwsElectricity *electricity; + +/// 设备名称 +@property (nonatomic,strong)NSString *edrName; + +/// 按键功能设置 +@property (nonatomic,strong)NSArray *keySettings; + +/// 灯光场景类型 +@property (nonatomic,assign)int ledScen; + +/// 灯光效果类型 +@property (nonatomic,assign)int ledEffect; + +/// 设备麦克风channel +/// 若为空或者0则视为此功能不支持 +/// 1:自动切换 +/// 2:始终左耳 +/// 3:始终右耳 +@property (nonatomic,assign)int micMode; + +/// 工作模式 +/// 若为空或者0则视为此功能不支持 +/// 1:普通模式 +/// 2:游戏模式 +@property (nonatomic,assign)int workMode; + +/// 供应商ID +@property (nonatomic,assign)uint16_t vid; + +/// 厂商ID +@property (nonatomic,assign)uint16_t uid; + +/// 产品ID +@property (nonatomic,assign)uint16_t pid; + +/// 连接时长 +@property (nonatomic,assign)uint32_t linkTime; + +/// 入耳检测 +/// 0 -- 不支持此功能 +/// 1 -- 关闭 +/// 2 -- 打开 +@property (nonatomic,assign)uint8_t earEntryDection; + +/// 设备语言类型 +/// zh -- 中文 +/// en -- 英文 +@property (nonatomic,strong)NSString *deviceLanguage; + +///ANC的模式数组 +@property (nonatomic,strong)NSArray *ancModels; + +/// HeadSetInfoDict +/// 耳机信息字典 +/// 当app端收到设备返回的信息时会更新此值 +/// 此值变化较大不适合作为唯一判断依据,容易发生部分值获取失败的问题 +@property (nonatomic,strong)NSDictionary *_Nullable headSetInfoDict; + + +/// 一拖二开关状态 +@property(nonatomic,readonly,assign)BOOL dragWithMore; + + + +/// 设置设备名称 +/// - Parameter name: 设置对耳设备的EDR名字 +-(void)cmdHeadsetEdrName:(NSData*)name; + +#pragma mark ---> 按键设置(对耳) +typedef NS_ENUM(UInt8, JL_HeadsetButtonSettingKey) { + JL_HeadsetButtonSettingKeyOnlyLeftEar = 0x01, //左耳 + JL_HeadsetButtonSettingKeyOnlyRightEar = 0x02, //右耳 +}; +typedef NS_ENUM(UInt8, JL_HeadsetButtonSettingAction) { + JL_HeadsetButtonSettingActionClick = 0x01, //单击 + JL_HeadsetButtonSettingActionDoubleClick = 0x02, //双击 +}; +typedef NS_ENUM(UInt8, JL_HeadsetButtonSettingFunction) { + JL_HeadsetButtonSettingFunctionNone = 0x00, //无作用 + JL_HeadsetButtonSettingFunctionBoot = 0x01, //开机 + JL_HeadsetButtonSettingFunctionTurnOff = 0x02, //关机 + JL_HeadsetButtonSettingFunctionPlayPrevious = 0x03, //上一曲 + JL_HeadsetButtonSettingFunctionPlayNext = 0x04, //下一曲 + JL_HeadsetButtonSettingFunctionPlayOrPause = 0x05, //播放/暂停 + JL_HeadsetButtonSettingFunctionAnswerOrHangup = 0x06, //接听/挂断 + JL_HeadsetButtonSettingFunctionReject = 0x07, //拒听 + JL_HeadsetButtonSettingFunctionTakePhoto = 0x08, //拍照 +}; +/** + @param key 左耳0x01 右耳0x02 + @param act 单击0x01 双击0x02 + @param fuc 0x00 无作用 + 0x01 开机 + 0x02 关机 + 0x03 上一曲 + 0x04 下一曲 + 0x05 播放/暂停 + 0x06 接听/挂断 + 0x07 拒听 + 0x08 拍照 + */ +-(void)cmdHeadsetKeySettingKey:(uint8_t)key + Action:(uint8_t)act + Function:(uint8_t)fuc; + +#pragma mark ---> LED设置(对耳) + +typedef NS_ENUM(UInt8, JL_HeadsetScene) { + JL_HeadsetSceneNotPaired = 0x01, //未配对 + JL_HeadsetSceneDisConnected = 0x02, //未连接 + JL_HeadsetSceneConnected = 0x03, //已连接 + JL_HeadsetScenePlayDeviceMusic = 0x04, //播放设备音乐 + JL_HeadsetScenePauseDeviceMusic = 0x05, //暂停设备音乐 + JL_HeadsetScenePlayExternalAudioSource = 0x06, //外部音源播放 + JL_HeadsetScenePauseExternalAudioSource = 0x07, //外部音源暂停 +}; +typedef NS_ENUM(UInt8, JL_HeadsetLedEffect) { + JL_HeadsetLedEffectAllClose = 0x00, //全灭 + JL_HeadsetLedEffectRedLightOn = 0x01, //红灯常亮 + JL_HeadsetLedEffectBlueLightOn = 0x02, //蓝灯常亮 + JL_HeadsetLedEffectRedLightBreathing = 0x03, //红灯呼吸 + JL_HeadsetLedEffectBlueLightBreathing = 0x04, //蓝灯呼吸 + JL_HeadsetLedEffectRedBlueLightQuickFlash = 0x05, //红蓝交替快闪 + JL_HeadsetLedEffectRedBlueLightSlowFlash = 0x06, //红蓝交替慢闪 +}; +/** + @param scene 0x01 未配对 + 0x02 未连接 + 0x03 连接 + 0x04: 播放设备音乐 + 0x05:暂停设备音乐 + 0x06:外部音源播放 + 0x07:外部音源暂停 + @param effect 0x00 全灭 + 0x01 红灯常亮 + 0x02 蓝灯常亮 + 0x03 红灯呼吸 + 0x04 蓝灯呼吸 + 0x05 红蓝交替快闪 + 0x06 红蓝交替慢闪 + */ +-(void)cmdHeadsetLedSettingScene:(uint8_t)scene + Effect:(uint8_t)effect; + +#pragma mark ---> MIC设置(耳机) +typedef NS_ENUM(UInt8, JL_HeadsetMicSettingMode) { + JL_HeadsetMicSettingModeOnlyLeftEar = 0x00, //仅左耳 + JL_HeadsetMicSettingModeOnlyRightEar = 0x01, //仅右耳 + JL_HeadsetMicSettingModeAutomatic = 0x02, //自动选择 +}; +/** + @param mode JL_HeadsetMicSettingMode + */ +-(void)cmdHeadsetMicSettingMode:(JL_HeadsetMicSettingMode)mode + Result:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 工作模式(耳机) +typedef NS_ENUM(UInt8, JL_HeadsetWorkingMode) { + JL_HeadsetWorkingModeNormal = 0x01, //普通模式 + JL_HeadsetWorkingModeGame = 0x02, //游戏模式 +}; +/** + @param mode 1: 普通模式 + 2: 游戏模式 + */ +-(void)cmdHeadsetWorkSettingMode:(uint8_t)mode; + +#pragma mark ---> 同步时间戳(耳机) +/** + @param date 当前系统时间 +*/ +-(void)cmdHeadsetTimeSetting:(NSDate*)date; + +#pragma mark ---> 获取设备信息(耳机) +typedef void(^JL_HEADSET_BK)(NSDictionary* __nullable dict); +typedef NS_ENUM(uint32_t, JL_HeadsetAdviceFlag) { + JL_HeadsetAdviceFlagGetElectricity = 1, //小机电量获取 + JL_HeadsetAdviceFlagEdrName = 1 << 1, //Edr名称 + JL_HeadsetAdviceFlagButtonFunction = 1 << 2, //按键功能 + JL_HeadsetAdviceFlagLedStatus = 1 << 3, //LED显示状态 + JL_HeadsetAdviceFlagMicMode = 1 << 4, //MIC模式 + JL_HeadsetAdviceFlagWorkMode = 1 << 5, //工作模式 + JL_HeadsetAdviceFlagProductInfo = 1 << 6, //产品信息 + JL_HeadsetAdviceFlagConnectingTime = 1 << 7, //连接时间 + JL_HeadsetAdviceFlagEarDetection = 1 << 8, //入耳检测 + JL_HeadsetAdviceFlagLanguage = 1 << 9, //语言类型 + JL_HeadsetAdviceFlagAll = 0xFFFFFFFF //全部 +}; +/** + @param flag BIT0 小机电量获取 格式为3个字节 参考广播包格式 + BIT1 Edr 名称 + BIT2 按键功能 + BIT3 LED 显示状态 + BIT4 MIC 模式 + BIT5 工作模式 + BIT6 产品信息 + BIT7 连接时间 + BIT8 入耳检测 + BIT9 语言类型 + @param result 返回字典: + @"ISCHARGING_L" + @"ISCHARGING_R" + @"ISCHARGING_C" + @"POWER_L" + @"POWER_R" + @"POWER_C" + @"EDR_NAME" + @"KEY_LR" + @"KEY_ACTION" + @"KEY_FUNCTION" + @"LED_SCENE" + @"LED_EFFECT" + @"MIC_MODE" + @"WORK_MODE" + @"UID" + @"UID" + @"PID" + @"LINK_TIME" + @""IN_EAR_TEST" + @"DEVICE_LANGUAGE" + @"KEY_ANC_MODE" ANC的模式数组 + */ +-(void)cmdHeadsetGetAdvFlag:(JL_HeadsetAdviceFlag)flag + Result:(JL_HEADSET_BK __nullable)result; + +#pragma mark ---> 设备广播通知(耳机) +/** + @{@"JLID": 杰理ID, + @"UID": , + @"PID": , + @"EDR": , + @"SCENE": , + @"ISCHARGING_L": , + @"ISCHARGING_R": , + @"ISCHARGING_C": , + @"POWER_L": , + @"POWER_R": , + @"POWER_C": , + @"CHIP_TYPE": , + @"PROTOCOL_TYPE": , + @"SEQ":}; + */ +extern NSString *kJL_MANAGER_HEADSET_ADV; + +#pragma mark ---> 设置命令成功/错误回复(耳机) +/** + 0x00:成功 + 0x01:游戏模式导致设置失效 + 0x02:蓝牙名字长度超出限制 + 0x03:非蓝牙模式设置闪灯失败 + */ +extern NSString *kJL_MANAGER_HEADSET_SET_ERR; + +#pragma mark ---> 关闭或开启设备广播(耳机) +/** + @param enable 使能位 + */ +-(void)cmdHeadsetAdvEnable:(BOOL)enable; + +#pragma mark ---> 用于ADV设置同步后需要主机操作的行为。 +/** + 1:更新配置信息,需要重启生效。 + 2:同步时间戳 + 3:请求手机回连BLE + 4:同步设备信息 + */ +extern NSString *kJL_MANAGER_HEADSET_TIPS; + +#pragma mark ---> 发射频点 +/** +@param fmtx 频点 +*/ +-(void)cmdSetFMTX:(uint16_t)fmtx; + +#pragma mark ---> 设置耳机ANC模式列表 +/** + * 设置耳机ANC模式列表 + * @param array 频点 JL_AncMode的NSNumber对象数组 @[@(JL_AncMode_Normal), @(JL_AncMode_NoiseReduction)] + */ +-(void)cmdHeadsetAncArray:(NSArray*)array; + +#pragma mark ---> 耳机主动降噪ANC设置 +-(void)cmdSetANC:(JLModel_ANC*)model; + + + +//MARK: - 一拖二相关命令 + +typedef void(^JL_MulitLinksInfo_BK)(JL_CMDStatus status,NSArray * __nullable phoneInfos); + +/// 设备上传一拖二设备信息列表 +extern NSString* kJL_MULIT_NAME_LIST; + +/// 获取设备已连接手机名 +/// 通知设备上传一拖二设备信息列表 +/// @param result 设备所连接的手机名字列表 +-(void)cmdGetDeviceInfoListResult:(JL_MulitLinksInfo_BK)result; + +/// 通知设备一连上手机地址和绑定信息 +/// - Parameters: +/// - addr: 手机EDR地址 +/// - name: 手机蓝牙名称 +/// - result: 结果 +-(void)cmdBindDeviceInfo:(NSData *)addr phone:(NSString *)name result:(JL_MulitLinksInfo_BK)result; + +/// 一拖二开关 +/// @param dragWithMore 开关状态 +/// @param addr 手机的经典蓝牙地址(通过cmdGetDeviceInfoList 获取) +/// @param result 结果回调 +-(void)setDragWithMore:(BOOL)dragWithMore phoneBleAddr:(NSData *) addr result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_TypeEnum.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_TypeEnum.h new file mode 100644 index 000000000..c231c9177 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_TypeEnum.h @@ -0,0 +1,83 @@ +// +// JL_TypeEnum.h +// JL_BLEKit +// +// Created by DFung on 2018/11/29. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +typedef NS_ENUM(NSInteger, JL_BLEStatus) { + JL_BLEStatusFound, //发现设备,对应 kUI_JL_BLE_FOUND + JL_BLEStatusPaired, //已配对, 对应 kUI_JL_BLE_PAIRED + JL_BLEStatusDisconnected, //断开连接,对应 kUI_JL_BLE_DISCONNECTED + JL_BLEStatusOn, //蓝牙开启,对应 kUI_JL_BLE_ON + JL_BLEStatusOff, //蓝牙关闭,对应 kUI_JL_BLE_OFF + JL_BLEStatusUnknown, //状态未知 +}; +typedef NS_ENUM(NSInteger, JL_DeviceBTStatus) { + JL_DeviceBTStatusDisconnected = 0, //设备经典蓝牙已断开 + JL_DeviceBTStatusConnected = 1, //设备经典蓝牙已连接 + JL_DeviceBTStatusUnknown, +}; +typedef NS_ENUM(UInt8, JL_CMDStatus) { + JL_CMDStatusSuccess = 0x00, //成功 + JL_CMDStatusFail = 0x01, //失败 + JL_CMDStatusUnknownCmd = 0x02, //未定义命令 + JL_CMDStatusBusy = 0x03, //忙碌 + JL_CMDStatusNoResponse = 0x04, //没有收到回复 + JL_CMDStatusCrcErr = 0x05, //CRC错误 + JL_CMDStatusDataCrcErr = 0x06, //数据CRC错误 + JL_CMDStatusParamErr = 0x07, //参数错误 + JL_CMDStatusOverLimit = 0x08, //数据溢出 + JL_CMDStatusLrcError = 0x09, //LRC获取出错 + JL_CMDStatusUnknown, +}; +typedef void(^JL_CMD_RESPOND)(JL_CMDStatus status, uint8_t sn, NSData* __nullable data); + +//---------------------------------------------------------// + +typedef NS_ENUM(UInt8,JLDevSpecialType) { + ///普通正常设备 + JLDevSpecialType_Normal = 0x00, + ///回连设备 + JLDevSpecialType_Reconnect = 0x01, +}; + +typedef NS_ENUM(int64_t,JL_CLASS) { + JL_CLASS_SmallFile = 0, + JL_CLASS_File = 1, + JL_CLASS_OTA = 2, + JL_CLASS_Flash = 3, + JL_CLASS_ChargingBin = 4, + JL_CLASS_AlarmClock = 5, + JL_CLASS_Light = 6, + JL_CLASS_Tws = 7, + JL_CLASS_SoundCard = 8, + JL_CLASS_Call = 9, + JL_CLASS_Speex = 10, + JL_CLASS_Lrc = 11, + JL_CLASS_FindDevice = 12, + JL_CLASS_MusicControl = 13, + JL_CLASS_Fm = 14, + JL_CLASS_SystemEQ = 15, + JL_CLASS_SystemTime = 16, + JL_CLASS_SystemVolume = 17, + JL_CLASS_Custom = 18, + JL_CLASS_Batch = 19, + JL_CLASS_DeviceLogs = 20, + JL_CLASS_BigData = 21, +}; + +//---------------------------------------------------------// + + +///命令发起者 +typedef NS_ENUM(UInt8, JLCMDOriginator) { + ///SDK端发起 + JLCMDOriginatorApp = 0x00, + ///设备端发起 + JLCMDOriginatorDevice = 0x01 +}; diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_WatchProtocol.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_WatchProtocol.h new file mode 100644 index 000000000..7dec3d76b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_WatchProtocol.h @@ -0,0 +1,126 @@ +// +// JL_WatchProtocolDelegate.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/11. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_SDM_Header.h" + + +NS_ASSUME_NONNULL_BEGIN + +@protocol JL_WatchProtocol + +@optional +/// 设备回调心率相关内容 +/// @param heartRate 心率对象 +-(void)jlWatchHeartRate:(JL_SDM_HeartRate *)heartRate; + +/// 设备回调大气压强相关内容 +/// @param airPressure 气压对象 +-(void)jlWatchAirPressure:(JL_SDM_AirPressure *)airPressure; + +/// 设备回调海拔高度相关内容 +/// @param alititude 海拔对象 +-(void)jlWatchAltitude:(JL_SDM_Altitude *)alititude; + +/// 设备回调步数相关内容 +/// @param moveStep 步数对象 +-(void)jlWatchMoveSteps:(JL_SDM_MoveSteps *)moveStep; + +/// 设备回调压力相关内容 +/// @param stress 压力对象 +-(void)jlWatchStress:(JL_SDM_Stress *)stress; + +/// 设备回调血氧饱和度相关内容 +/// @param oxStaturation 血氧饱和度对象 +-(void)jlWatchOxsaturation:(JL_SDM_OxSaturation*)oxStaturation; + +/// 设备回调训练负荷相关内容 +/// @param trainLoad 训练负荷对象 +-(void)jlWatchTrainLoad:(JL_SDM_TrainLoad *)trainLoad; + +/// 设备回调最大摄氧量相关内容 +/// @param maxOxg 最大摄氧量对象 +-(void)jlWatchMaxOxg:(JL_SDM_MaxOxg *)maxOxg; + +/// 设备回调运动恢复时间相关内容 +/// @param rectime 运动恢复时间对象 +-(void)jlWatchRecTime:(JL_SDM_RecTime *)rectime; + +/// 设备回调运动数据的相关内容 +/// @param sportMsg 运动数据对象 +-(void)jlWatchSportMessage:(JL_SDM_SportMessage *)sportMsg; + + +/// 设备回调无法区分的数据内容 +/// @param value 数据区域,根据类型解析数据 +/// @param submask 对应查询的参数,描述功能类型,作用域 +/// @param type 数据类型 +-(void)jlWatchUnDefineData:(NSData *)value subMask:(NSData *)submask Type:(UInt8)type; + +/// 设备回调传感器相关数据 +/// @param type 数据类型 +/// @param data 数据内容 +-(void)jlWatchWatchLog:(JL_WATCH_LOG_TYPE) type with:(NSData *)data; + +//MARK: - 健康设置回调 + +/// 接收整个设置返回的数组 +/// @param models JLwSettingModels +-(void)jlWatchSetAllFunc:(NSArray *)models; + +/// 回调传感器相关设置 +/// @param model 传感器功能 +-(void)jlWatchSetSensorFunc:(JLSensorFuncModel *)model; + +/// 久坐提醒 +/// @param model 久坐提醒功能 +-(void)jlWatchSetSedentaryRmd:(JLSedentaryRmdModel *)model; + +/// 心率测量功能 +/// @param model 心率模块 +-(void)jlWatchSetConsequentHeartRate:(JLConsequentHeartRateModel *)model; + +/// 运动心率测试功能 +/// @param model 运动心率 +-(void)jlWatchSetExerciseHeartRateRemind:(JLExerciseHeartRateRemindModel *)model; + +/// 自动压力测试 +/// @param model 压力测试 +-(void)jlWatchSetAutoPressure:(JLAutoPressureModel *)model; + +/// 睡眠监测 +/// @param model 睡眠 +-(void)jlWatchSetSleepMonitor:(JLSleepMonitorModel *)model; + +/// 跌到监测 +/// @param model 跌倒监测 +-(void)jlWatchSetFallDetectionModel:(JLFallDetectionModel *)model; + +/// 抬腕监测 +/// @param model 抬腕监测 +-(void)jlWatchSetWristLiftDetectionModel:(JLWristLiftDetectionModel *)model; + +/// 个人信息 +/// @param model 个人信息 +-(void)jlWatchSetPersonInfoModel:(JLPersonInfoModel *)model; + +/// 蓝牙断开设置 +/// @param model 断开设置 +-(void)jlWatchSetDisconnectRemindModel:(JLDisconnectRemindModel *)model; + +/// 紧急联系人 +/// @param model 紧急联系人设置 +-(void)jlWatchSetEmergencyContactModel:(JLEmergencyContactModel *)model; + +/// 血氧测量 +/// @param model 血氧测量模式 +-(void)jlWatchSetOxygenSturationRemindModel:(JLOxygenSturationRemindModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h new file mode 100644 index 000000000..132a29179 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h @@ -0,0 +1,47 @@ +// +// JL_WatchSyncProtocol.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// +#import +#import "JL_SDM_Header.h" +#import "JL_EntityM.h" + +#ifndef JL_WatchSyncProtocol_h +#define JL_WatchSyncProtocol_h + +@protocol JLWearSyncProtocol + +@optional +/// 运动信息返回 +/// @param model 运动信息对象 +/// @param entity 设备entity +-(void)jlWearSyncSportInfo:(JLWearSyncInfoModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 结束运动返回内容 +/// @param model 结束时间相隔信息对象 +/// @param entity 设备entity +-(void)jlWearSyncStopMotion:(JLWearSyncFinishModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 开始运动返回消息 +/// @param entity 设备entity +-(void)jlWearSyncStartMotionWith:(JL_EntityM *_Nonnull)entity; + +/// 暂停运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusPauseWith:(JL_EntityM *_Nonnull)entity; + +/// 继续运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusContiuneWith:(JL_EntityM *_Nonnull)entity; + +/// 实时数据回调 +/// @param model 实时数据模型 +/// @param entity 设备entity +-(void)jlWearSyncRealTimeData:(JLWearSyncRealTimeModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +@end + +#endif /* JL_WatchSyncProtocol_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_vad.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_vad.h new file mode 100644 index 000000000..9b8719250 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JL_vad.h @@ -0,0 +1,144 @@ +// +// JL_vad.h +// Test +// +// Created by DFung on 2018/2/28. +// Copyright © 2018年 DFung. All rights reserved. +// + +#ifndef JL_vad_h +#define JL_vad_h + + + +#define CONT_AD_ADFRMSIZE 16 +#define DEFAULT_RADIX 12 +#define SMOOTH_WINDOW 4 +#define MIN_FIXLOG -2829416 +#define KWSNUM 1 //¥˝ ∂±¥ ∏ˆ ˝ + + +//typedef long long __int64; +typedef int int32; +typedef short int16; +typedef signed char int8; +typedef unsigned int uint32; +typedef unsigned short uint16; +typedef unsigned char uint8; +typedef long long int64; +typedef int32 fixed32; +typedef float float32; + + + + +struct noise_stats_s { + /* Smoothed power */ + int power[40]; + int max_power[40]; + /* Noise estimate */ + int noise[40]; + int max_noise[40]; + /* Signal floor estimate */ + int floor[40]; + int max_floor[40]; + /* Peak for temporal masking */ + int peak[40]; + int max_peak[40]; + + int signal[40]; + int gain[40]; + char remove_noi; + /* Initialize it next time */ + uint8 undefined; + /* Number of items to process */ + uint32 num_filters; + + /* Sum of slow peaks for VAD */ + int64 slow_peak_sum; + int64 max_slow_peak_sum; + + /* Precomputed constants */ + int lambda_power; + int comp_lambda_power; + int lambda_a; + int comp_lambda_a; + int lambda_b; + int comp_lambda_b; + int lambda_t; + int mu_t; + int max_gain; + int inv_max_gain; + + int smooth_scaling[2 * 4 + 3]; +}; +typedef struct noise_stats_s noise_stats_t; +struct htk_fe_s +{ + unsigned short pow_hist[98]; + noise_stats_t *noise_stats; + + + int fe_prior; + uint32 int_frame; + char int_flag; + + + unsigned char sum_cnt; + + uint8 voice_state; + uint8 in_speech; + int16 pre_speech_frames; + int16 post_speech_frames; + + int16 inout_spch[410]; + int fe_tmp_spch[250]; + int fe_fft_buf[512]; + int fe_mfspec[40]; + int cmn_sum[13]; + int mfcc_fifo[9][13]; + int *cmn_mfcc_fifo[9]; + //int fe_prior; + char speech_fifo[16]; + char init_speech_n; + char vad_cnt; + int buf_cep[21][13]; + int buf_pow[21]; + uint8 speech_indexw; + uint8 speech_indexr; + uint8 speech_cnt; + + + int16 sp_threshold; + int16 nsp_threshold; +}; + +typedef struct htk_fe_s htk_fe_t; +/* + * How to use? See follow... + * + * 1、开启录音前: + * /--- 开启Vad ---/ + * int need_buf_size = vad_get_need_buf_size(); + * vad_hdl = malloc(need_buf_size); + * vad_init(vad_hdl, 10, 51); + * + * 2、结束录音后: + * /--- 关闭Vad ---/ + * free(vad_hdl); + * + * 3、录音数据回调: + * buf:录音数据 ,需要320Bytes! + * ret:0->静音状态 1->正在说话 2->结束说话 + * int ret = vad_main(vad_hdl, (int*)buf); + */ +int vad_get_need_buf_size(void); +int vad_init(void *p, short sp_threshold, short nsp_threshold); +int vad_main(void *p,int *inout_spch); + +fixed32 fe_log_add(fixed32 x, fixed32 y); +fixed32 fe_log_sub(fixed32 x, fixed32 y); +int32 fixlog2(uint32 x); +int fixlog(uint32 x); + +#endif /* JL_vad_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLeSimManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLeSimManager.h new file mode 100644 index 000000000..0d1f4e10d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLeSimManager.h @@ -0,0 +1,41 @@ +// +// JLeSimManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/4. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +@protocol JLEsimFinishDelegate + +/// 设备推送esim 信息内容 +/// - Parameters: +/// - version: 版本 +/// - data: 内容 +-(void)jlEsimDidGetData:(uint8_t)version ESimData:(NSData *)data; + +@end + +typedef void(^JLESimFinishBlock)(NSError * _Nullable err); + +/// esim 信息交互类 +@interface JLeSimManager : NSObject + +@property(nonatomic,assign)id delegate; + +/// 下发 esim 信息到设备 +/// - Parameters: +/// - mgr: 设备 +/// - data: esim 信息 +/// - block: 完成回调 +-(void)sendToDev:(JL_ManagerM *)mgr Data:(NSData *)data Result:(JLESimFinishBlock)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLwSettingModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLwSettingModel.h new file mode 100644 index 000000000..17be0dc71 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/JLwSettingModel.h @@ -0,0 +1,104 @@ +// +// LtvSettingModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + + +typedef NS_ENUM(UInt8, WatchSettingFunc) { + ///传感器功能 + WatchSettingFunc_SensorFunction = 0x01 , + ///久坐提醒 + WatchSettingFunc_SedentaryReminder = 0x02, + ///连续测量心率 + WatchSettingFunc_ContinuousHeartRateMeasurement = 0x03, + ///运动心率提醒 + WatchSettingFunc_ExerciseHeartRateReminder = 0x04, + ///压力自动检测 + WatchSettingFunc_AutomaticPressureDetection = 0x05, + ///睡眠检测 + WatchSettingFunc_SleepMonitoring = 0x06, + ///跌倒检测 + WatchSettingFunc_FallDetection = 0x07, + ///抬腕检测 + WatchSettingFunc_WristLiftDetection = 0x08, + ///个人信息 + WatchSettingFunc_PersonInfo = 0x09, + /// 蓝牙断开提醒 + WatchSettingFunc_DisconnectReminder = 0xA, + /// 血氧测量提醒 + WatchSettingFunc_OxygenSturation = 0x0B, + /// 紧急联系人 + WatchSettingFunc_EmergencyContact = 0x0C +}; + +///提醒模式 +typedef NS_ENUM(UInt8, WatchRemindType) { + /// 亮屏 + WatchRemind_BrightScreen = 0x00, + ///震动 + WatchRemind_Shake = 0x01, + /// 打电话(抬腕不支持该提示) + WatchRemind_Call = 0x02 +}; + +///连续测量心率模式 +typedef NS_ENUM(UInt8, WatchConsequentType) { + //智能 + WatchConsequent_Intelligent = 0x00, + //实时 + WatchConsequent_realTime = 0x01 +}; + +/// 连续血氧测量模式 +typedef NS_ENUM(UInt8,WatchOxygenMsmType){ + //智能 + WatchOxygenMsm_Intelligent = 0x00, + //定时 + WatchOxygenMsm_runTime = 0x01 +}; + +///监察开关类型 +typedef NS_ENUM(UInt8, WatchSwitchType) { + ///关闭 + WatchSwitchType_Close = 0x00, + ///全天开启 + WatchSwitchType_AllDay = 0x01, + ///自定义时间 + WatchSwitchType_Customer = 0x02, +}; + +@interface WatchTimer : NSObject +/// 时 +@property(nonatomic,assign,readonly)UInt8 hour; +/// 分 +@property(nonatomic,assign,readonly)UInt8 min; + +-(instancetype _Nonnull)initWithData:(NSData *_Nonnull)data; + +-(instancetype _Nonnull)initWith:(uint8_t)h Min:(uint8_t)m; + +@end + +NS_ASSUME_NONNULL_BEGIN + +@interface JLwSettingModel : NSObject +@property(nonatomic,assign)uint8_t length; +@property(nonatomic,assign)WatchSettingFunc type; +@property(nonatomic,strong)NSData *value; + +/// 设备UUID +@property(nonatomic,strong)NSString *deviceID; + + +-(NSData *)beData; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NSData+ToUnit.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NSData+ToUnit.h new file mode 100644 index 000000000..ec6140e85 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NSData+ToUnit.h @@ -0,0 +1,64 @@ +// +// NSData+ToUnit.h +// JL_BLEKit +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSData (ToUnit) + + +-(BOOL)beBool; + +-(uint8_t)beUint8; + +-(UInt16)beLittleUint16; + +-(UInt16)beBigendUint16; + +-(UInt32)beLittleUint32; + +-(UInt32)beBigendUint32; + +-(UInt64)beLittleUint64; + +-(UInt64)beBigendUint64; + +-(NSString *)dataToAltitude; + +-(NSString *)beHexStr; + +-(NSDate *)toDate; + +/// 裁剪Data +/// @param from 开始 +/// @param to 长度 +-(NSData *)subf:(NSInteger)from t:(NSInteger)to; + +-(uint16_t)crc:(uint16_t)baseCrc; + +@end + + +@interface NSMutableData(WithUnit) + +-(void)appendUint8:(uint8_t)k; + +-(void)appendUint16:(uint16_t)k; + +-(void)appendUint32:(uint32_t)k; +@end + + +@interface NSString(WithUnit) + +-(NSString *)formatLog; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NSObject+JLTools.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NSObject+JLTools.h new file mode 100644 index 000000000..68deb4ed1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NSObject+JLTools.h @@ -0,0 +1,20 @@ +// +// NSObject+JLTools.h +// JL_BLEKit +// +// Created by EzioChan on 2023/8/17. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSObject (JLTools) + + +- (NSString *) logProperties; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NfcModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NfcModel.h new file mode 100644 index 000000000..eee6a69fc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/NfcModel.h @@ -0,0 +1,69 @@ +// +// NfcModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/3. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@interface NfcModel : NSObject + +/// NFC标签 +@property(nonatomic,assign)UInt16 idCard; + +/// 保留位 +@property(nonatomic,strong)NSData *reserver; + +/// 设备索引 +@property(nonatomic,strong)NSData *devHandler; + +/// 更新时间戳,用于排序 +@property(nonatomic,strong)NSDate *updateTime; + +/// nfc数据文件名,格式如下:XX.nfc,XX是0~9 +@property(nonatomic,strong)NSString *nfcFileName; + +/// 别名,最大字符长度为26, 不足部分补‘\0’ 编码格式:UTF-8(以后可以保留位决定) 例如:公司门禁卡,家里门禁等等 +@property(nonatomic,strong)NSString *nickName; + +/// 可变字段长度,包含crc + nfc_id +@property(nonatomic,assign)UInt16 variableLength; + +/// NFC 数据的CRC +@property(nonatomic,strong)NSData *crc; + +/// nfc数据的唯一值 +@property(nonatomic,strong)NSData *nfc_id; + + ++(NfcModel *)initMsgModel:(NSData *)data; + +/// 解析NFC头部数据 +/// @param basicData 裸数据 ++(NSArray *)initMSGModels:(NSData *)basicData; + +@end + +NS_ASSUME_NONNULL_END + + + + + +@interface NfcFileModel : NfcModel + +/// NFC 数据 +@property(nonatomic,strong)NSData * _Nonnull nfcData; +@property(nonatomic,assign,readonly)UInt32 length; ++(NfcFileModel *_Nonnull)initFileModel:(NSData *_Nonnull)data; + +@end + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/RTC_RingInfo.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/RTC_RingInfo.h new file mode 100644 index 000000000..f995c1a9e --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Headers/RTC_RingInfo.h @@ -0,0 +1,39 @@ +// +// RTC_RingInfo.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 闹铃信息 +@interface RTC_RingInfo : NSObject + +/// 铃声类型 +/// 0x00 设备默认 +/// 0x01 多媒体选取 +@property (assign,nonatomic) uint8_t type; + +/// 设备索引 +/// 当type = 0时,dev保留 +/// 当type = 1时,dev为选取的设备 +@property (assign,nonatomic) uint8_t dev; + +/// 闹铃文件簇号 +/// 当type = 0时,clust 为对应 JLModel_Ring 的 index +/// 当type = 1时,clust为选取的闹铃文件簇号 +@property (assign,nonatomic) uint32_t clust; + +/// 铃声名称长度 +@property (assign,nonatomic) uint8_t len; + +/// 铃声名称 +@property (strong,nonatomic) NSData *data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Info.plist new file mode 100644 index 000000000..038f93f66 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/JL_BLEKit b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/JL_BLEKit new file mode 100755 index 000000000..1a618c3c3 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/JL_BLEKit differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Modules/module.modulemap new file mode 100644 index 000000000..ee22d27e6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64/JL_BLEKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_BLEKit { + umbrella header "JL_BLEKit.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECBDTManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECBDTManager.h new file mode 100644 index 000000000..7dca27218 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECBDTManager.h @@ -0,0 +1,120 @@ +// +// ECBDTManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/20. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +@protocol ECBDTManagerProtocol + +/// 大数据传输错误 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - error: 错误 +-(void)ecBDTManagerError:(JL_ManagerM *)manager Type:(uint8_t) type Error:(NSError *)error; + +/// 获取到设备端推送/ SDK 端读取的大数据内容 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - data: 数据块 +/// - progress: 进度 +-(void)ecBDTManager:(JL_ManagerM *)manager Type:(uint8_t) type GetBigData:(NSData *)data Progress:(float) progress; + +/// 获取到设备端推送/ SDK 端读取的大数据内容 结束 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - saveFilePath: 数据存放位置 +-(void)ecBDTManager:(JL_ManagerM *)manager Type:(uint8_t) type FinishBigData:(NSString *)saveFilePath; + + +@optional + +/// App 端主动发起的向写入数据进度 +/// - Parameters: +/// - manager: 设备 +/// - progress: 数据 +/// - finish: 是否完成 +-(void)ecBDTManager:(JL_ManagerM *)manager SendBigDataPresent:(float )progress Finish:(BOOL)finish; + +/// 设备端发起大数据写操作 +/// 设备端主动发起的向 App 端写入数据 +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - req: 请求写入的内容 +-(void)ecBDTManager:(JL_ManagerM *)manager StartBigData:(ECBDTWriteReq *)req Type:(uint8_t) type; + + +/// 设备端发起大数据读取操作 +/// 开发者在这里需要对设备主动过来请求的内容进行回复 +/// -(void)responseDev:(JL_ManagerM *)manager resp:(ECBDTReadReq *)req Data:(NSData *)data +/// - Parameters: +/// - manager: 设备 +/// - type: 类型 +/// - req: 请求内容 +-(void)ecBDTManager:(JL_ManagerM *)manager ReadBigData:(ECBDTReadReq *)req Type:(uint8_t) type; + +/// 发送大数据完毕 +/// - Parameter manager: 设备 +/// - Parameter type: 类型 +-(void)ecBDTManagerSendFinish:(JL_ManagerM *)manager Type:(uint8_t) type; + +@end + +@interface ECBDTManager : ECOneToMorePtl + ++(instancetype)share; + +/// APP 读取设备数据 +/// - Parameters: +/// - manager: 设备 +/// - type: 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +/// * 8:提示音文件数据 +-(void)readData:(JL_ManagerM *)manager Type:(uint8_t)type; + +/// APP 写入设备数据 +/// - Parameters: +/// - manager: 设备 +/// - type: 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +/// * 8:提示音文件数据 +/// - data: 大数据内容 +-(void)writeData:(JL_ManagerM *)manager Type:(uint8_t) type Data:(NSData*)data; + +/// 回应设备主动读取内容 +/// 此方法需要配合使用 +/// -(void)ecBDTManager:(JL_ManagerM *)manager ReadBigData:(ECBDTReadReq *)req +/// - Parameters: +/// - manager: 设备 +/// - req: 设备端请求的对象 +/// - data: 需要下发的数据内容 +-(void)responseDev:(JL_ManagerM *)manager resp:(ECBDTReadReq *)req Data:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECBDTObjc.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECBDTObjc.h new file mode 100644 index 000000000..9416bee60 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECBDTObjc.h @@ -0,0 +1,166 @@ +// +// ECBDTObjc.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/21. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ECBDTObjc : NSObject + +@end + +/// 设备传输参数回复数据 +@interface ECBDTBasic : NSObject +/// 操作类型 +/// 0:设备传输参数 +/// 1:传输数据 +@property (nonatomic, assign) uint8_t op; + +/// 方式 +/// 0:读取数据 +/// 1:发送数据 +@property (nonatomic, assign) uint8_t way; + +/// 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +@property (nonatomic, assign) uint8_t type; + +/// 版本 +@property (nonatomic, assign) uint8_t version; + +/// 数据 +@property (nonatomic, copy)NSData *paramData; + +-(instancetype)initData:(NSData *)data; + +@end + + +//MARK: - 回复大数据数据解析(设备回复) + +/// 设备传输参数(读取回复) +@interface ECBDTReadResp : ECBDTBasic +/// 结果码 +@property (nonatomic, assign) uint8_t result; + +/// 数据长度 +@property (nonatomic, assign) uint32_t dtLen; + +/// 数据总 CRC +@property (nonatomic, assign) uint16_t crc; + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + +/// 设备传输参数(发送回复) +@interface ECBDTWriteResp : ECBDTBasic +/// 结果码 +@property (nonatomic, assign) uint8_t result; + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + +//MARK: - 请求大数据数据解析(设备请求) + +/// 设备传输参数(读取请求) +@interface ECBDTReadReq: ECBDTBasic + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + + +/// 设备传输参数(发送请求) +@interface ECBDTWriteReq : ECBDTBasic + +/// 数据长度 +@property (nonatomic, assign) uint32_t dtLen; + +/// 数据总 CRC +@property (nonatomic, assign) uint16_t crc; + +/// 发送 MTU 协商值 +@property (nonatomic, assign) uint16_t sendMtu; + +/// 接收 MTU 协商值 +@property (nonatomic, assign) uint16_t receiveMtu; + +@end + + +//传输数据命令参数 +@interface ECBDTCmdData : NSObject +/// 数据类型 +/// * 0 :原始数据 +/// * 1 : 阿里云数据 +/// * 2:RTC数据 +/// * 3:AI云 +/// * 4:TTS语音合成 +/// * 5:平台接口认证信息 +/// * 6:esim 卡信息 +/// * 7:4G 模块升级数据 +@property (nonatomic, assign) uint8_t type; + + +/// 标识位 +/// YES:结束 +/// NO:继续 +@property (nonatomic, assign) BOOL isEnd; + +///序号 +@property (nonatomic, assign) uint32_t seq; + +/// crc +@property (nonatomic, assign) uint16_t crc; + +/// 数据偏移 +@property (nonatomic, assign) uint32_t offset; + +/// 数据长度 +@property (nonatomic, assign) uint16_t len; + +/// 数据 +@property (nonatomic, copy)NSData *data; + + +-(instancetype)initData:(NSData *)data; + +-(NSData *)beData; + +/// 切块分包数据 +/// - Parameters: +/// - mtu: 发送的 mtu +/// - type: 数据类型 +/// - dt: 文件数据 ++(NSArray*)makeWithMtu:(uint16_t)mtu Type:(uint8_t) type Data:(NSData *)dt; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECOneToMorePtl.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECOneToMorePtl.h new file mode 100644 index 000000000..e88639a89 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECOneToMorePtl.h @@ -0,0 +1,28 @@ +// +// ECOneToMorePtl.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "NSData+ToUnit.h" +#import "JL_ManagerM.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface ECOneToMorePtl : NSObject + +@property(nonatomic,strong,readonly)NSHashTable *delegates; +@property(nonatomic,strong)NSLock *delegateLock; + +-(void)addDelegate:(id)delegate; +-(void)removeDelegate:(id)delegate; +-(void)removeAll; +-(void)inputPKG:(JL_PKG*)pkg; +-(void)inputPKG:(JL_PKG *)pkg Manager:(JL_ManagerM *)mgr; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECThreadHelper.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECThreadHelper.h new file mode 100644 index 000000000..a648b9649 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/ECThreadHelper.h @@ -0,0 +1,41 @@ +// +// ECThreadHelper.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/20. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol ECThreadHelperPtl + +-(void)startAction:(id)objc; +-(void)finishThreadTaskAction; + +@end + +typedef void(^EcThreadAction)(id objc); + +@interface ECThreadHelper : NSObject + + +@property (nonatomic, weak) id delegate; + +@property (nonatomic, copy) EcThreadAction action; + ++(instancetype)share; + +-(instancetype)init; + +-(void)addTask:(id)any; + +-(void)nextTask; + +-(void)clean; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h new file mode 100644 index 000000000..be3e20abf --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL4GUpgradeManager.h @@ -0,0 +1,82 @@ +// +// JL4GUpgradeManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/18. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLPublicSettingBlocks.h" + +NS_ASSUME_NONNULL_BEGIN +/// 4G 升级状态枚举 +typedef NS_ENUM(uint8_t, JL4GUpgradeStatus) { + /// 完成 + JL4GUpgradeStatusFinish = 0x00, + /// 开始 + JL4GUpgradeStatusStart = 0x01, + /// 传输中 + JL4GUpgradeStatusTransporting = 0x02, + /// 设备处理中 + JL4GUpgradeStatusDeviceProcessing = 0xff +}; + +@class JL4GUpgradeManager; + +/// 4G 升级代理回调 +@protocol JL4GUpgradeDelegate + +/// 升级结果 +/// - Parameters: +/// - mgr:4G升级管理对象 +/// - status: 升级状态 +/// - progress: 升级进度 +/// - code: 结果码 +/// 0x00 升级成功 +/// 0x01 升级失败 +/// 0x02 升级超时 +/// - error: 错误信息 +-(void)jl4GUpgradeResult:(JL4GUpgradeManager *)mgr Status:(JL4GUpgradeStatus) status Progress:(float)progress Code:(uint8_t)code error:(NSError * _Nullable)error; + +/// 设备 4G 信息更新 +/// - Parameter g4Model: 4G信息 +-(void)jl4GGetDeviceInfo:(JLPublic4GModel *)g4Model; + +@end + +@class JL_ManagerM; + +/// 4G模块升级管理对象 +@interface JL4GUpgradeManager : NSObject + +/// 单例 ++(instancetype)share; + +/// 4G 升级信息 +/// ⚠️需要先执行获取模块信息后获得值 +@property(nonatomic,strong)JLPublic4GModel *g4Model; + +/// 4G升级代理回调 +@property(nonatomic,weak) id delegate; + +/// 获取4G模块信息 +/// - Parameters: +/// - manager: 设备 +/// - result: 回调结果 +-(void)cmdGetDevice4GInfo:(JL_ManagerM *)manager result:(JLPSSource4GCbk)result; + + +/// 开始4G升级 +/// - Parameters: +/// - manager: 设备 +/// - data: 升级数据 +-(void)cmdStartUpgrade4G:(JL_ManagerM *)manager Data:(NSData *)data; + +/// 取消4G升级 +/// - Parameter manager: 设备 +-(void)cmdCancel4GUpgrade:(JL_ManagerM *)manager; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAIDialManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAIDialManager.h new file mode 100644 index 000000000..ea34d7d8f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAIDialManager.h @@ -0,0 +1,77 @@ +// +// JLAIDialManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/10/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_ManagerM; +@class JLAIDialManager; + +@protocol JLAIDialManagerDelegate + +/// 设备通知App AI表盘界面变化 +/// - Parameters: +/// - manager: ai dial manager +/// - status:0x00: 退出AI表盘功能 0x01: 进入AI表盘功能 +-(void)aiDialManager:(JLAIDialManager *)manager didAiDialStatusChange:(uint8_t)status; + +/// 开始AI生成表盘 +/// - Parameter manager: ai dial manager +-(void)aiDialdidStartCreateManager:(JLAIDialManager *)manager; + +/// 重新录音 +/// - Parameter manager: ai dial manager +-(void)aiDialdidRestartRecordManager:(JLAIDialManager *)manager; + +/// AI表盘开始安装 +/// - Parameter manager: ai dial manager +-(void)aiDialdidStartInstallManager:(JLAIDialManager *)manager; + + +/// 重新生成表盘 +/// - Parameter manager: ai dial manager +-(void)aiDialdidReCreateManager:(JLAIDialManager *)manager; + +@end + + + +/// ai dial manager +@interface JLAIDialManager : NSObject + +/// 进入/退出AI表盘 +@property (nonatomic, assign) BOOL isCreateing; + +/// 缩略图尺寸 默认 200*200 +/// scale zoom size default 200*200 +@property (nonatomic, strong) JLDialSize *scaleZoomSize; + + +/// 代理 +@property (nonatomic, weak) id delegate; + + +/// AI 表盘风格显示设置 +/// - Parameter manager: 设备对象 +/// - Parameter style: 风格类型 +/// - Parameter result: 回调对象 +-(void)aiDialSetManager:(JL_ManagerM *)manager AiStyle:(NSString *)style Result:(JL_CMD_RESPOND)result; + + +/// AI表盘告诉设备缩略图发送完毕 +/// - Parameter manager: 设备对象 +/// - Parameter path: 目标缩略图路径(设备端的位置)默认 "/VIE_THUMB" +/// - Parameter result: 回调对象 +-(void)aiDialSendThumbAiImageTo:(JL_ManagerM *)manager withPath:(NSString *)path Result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAiManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAiManager.h new file mode 100644 index 000000000..88abc8f81 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAiManager.h @@ -0,0 +1,121 @@ +// +// JLAiManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/8/9. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +//MARK: - JLOpenPlatformInfo +/// 平台接口认证信息 +@interface JLOpenPlatformInfo : NSObject +/// 版本号 +@property(nonatomic,assign)uint8_t version; +/// 平台 ID +@property(nonatomic,copy)NSString *appID; +/// app key +@property(nonatomic,copy)NSString *appKey; +/// app 的密钥 +@property(nonatomic,copy)NSString *appSecret; +/// 原始数据 +@property(nonatomic,copy)NSData *basicData; + +-(instancetype)initData:(NSData *)data; + +@end + +/// 平台接口认证信息 +@interface JLOpenPlatformMessage : NSObject +/// 版本号 +@property(nonatomic,assign)uint8_t version; +/// 支持平台信息 +@property(nonatomic,copy)NSArray * infoArray; + +-(instancetype)initData:(NSData *)dt; + +@end + +/// 屏幕尺寸 +@interface JLDialSize : NSObject + +/// width +@property(nonatomic,assign) uint16_t width; + +/// height +@property(nonatomic,assign) uint16_t height; + +/// 初始化 +/// - Parameters: +/// - width: width +/// - height: height ++(JLDialSize *)makeSize:(uint16_t)width Height:(uint16_t)height; + +@end + +//MARK: - JLAiManager +@class JL_ManagerM; +@class JLAiManager; + +@protocol JLAIManagerDelegate + +/// 设备回调/推送结果 +/// - Parameter mgr: JLAiManager +-(void)jlaiUpdateStatus:(JLAiManager *)mgr; + +@optional +/// 设备主动推送JLOpenPlatformInfo信息 +/// - Parameters: +/// - mgr: 设备 +/// - infoArray: [JLOpenPlatformInfo] +-(void)jlaiUpdateDevAiOpenPlatforms:(JLAiManager *)mgr Info:(JLOpenPlatformMessage *)info; + + +@end + +typedef void(^JLOpenPFBlock)(JLOpenPlatformMessage *message,JL_CMDStatus result); + +/// AI状态 管理类 +/// 当前接口适用于一些支持设备对讲的设备,在使用时需要先初始化当前类并接受代理:JLAIManagerDelegate +/// 在初始化后需要主动获取状态才可以获得首次的状态内容 +/// +@interface JLAiManager : NSObject + +/// 版本号 +@property(assign,nonatomic)uint8_t version; + +/// 0x00:默认状态 +/// 0x01:进入AI界面 +/// 0x02:退出AI界面 +@property(assign,nonatomic)uint8_t status; + +/// 回调代理 +@property(weak,nonatomic)id delegate; + +/// 获取AI 的状态 +///- Parameters: +/// - manager: 设备对象 +-(void)getStatus:(JL_ManagerM *)manager; + +/// 设置设备的状态 +/// - Parameters: +/// - manager: 设备对象 +/// - result: 回调结果 +-(void)setToDevice:(JL_ManagerM *)manager result:(JL_CMD_RESPOND _Nullable)result; + + +/// 获取平台接口认证信息,此信息需要先获取 JLDeviceConfig +/// 根据JLDeviceConfigModel 的 exportFunc 属性的 +/// spOpenInfo 判断是否支持平台开放接口信息获得 +/// - Parameters: +/// - manager: 设备对象 +/// - result: 回调结果 +-(void)getOpenPlatformInfo:(JL_ManagerM *)manager result:(JLOpenPFBlock _Nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastDevStateModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastDevStateModel.h new file mode 100644 index 000000000..3e91da062 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastDevStateModel.h @@ -0,0 +1,35 @@ +// +// JLAuracastDevStateModel.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + Auracast 设备状态数据模型 + + */ +@interface JLAuracastDevStateModel : NSObject + +typedef NS_ENUM(uint8_t, JLAuracastDevStateType) { + JLAuracastDevStateTypeLogin = 0x01, +}; +typedef NS_ENUM(uint8_t, JLAuracastLoginState) { + JLAuracastLoginStateLogout = 0, + JLAuracastLoginStateLogin = 1, +}; +/// 登录状态 +@property(nonatomic, assign) JLAuracastLoginState loginState; + +- (instancetype)initParseData:(NSData *)data; + +- (void)updateParseData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastLancerManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastLancerManager.h new file mode 100644 index 000000000..a7172d602 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastLancerManager.h @@ -0,0 +1,121 @@ +// +// JLAuracastLancerManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import +NS_ASSUME_NONNULL_BEGIN +@class JLAuracastLancerSettingMode; +@class JLAuracastLancerManager; + +@protocol JLAuracastLancerManagerDelegate +@optional +-(void)lancerManager:(JLAuracastLancerManager *)mgr didUpdateSetting:(JLAuracastLancerSettingMode *)mode; +/// 设备状态更新 +/// - Parameters: +/// - mgr: 管理器 +/// - state: 最新设备状态 +-(void)lancerManager:(JLAuracastLancerManager *)mgr didUpdateDeviceState:(JLAuracastDevStateModel *)state; +@end + +/// Lancer 验证 +typedef NS_ENUM(NSUInteger, JLAuracastLancerLoginVerifyType) { + /// 验证成功 + JLLancerLoginVerifyTypeSuccess = 0x00, + /// 验证失败 + JLLancerLoginVerifyTypeFail = 0x01, + /// 已登录 + JLLancerLoginVerifyTypeLogined = 0x02 +}; + +/// 修改密码结果 +typedef NS_ENUM(NSUInteger, JLAuracastLancerChangePwdResult) { + /// 修改成功 + JLAuracastLancerChangePwdSuccess = 0x00, + /// 旧密码错误 + JLAuracastLancerChangePwdOldError = 0x01, + /// 密码没有变化 + JLAuracastLancerChangePwdNoChange = 0x02, + /// 新密码长度不对 + JLAuracastLancerChangePwdLengthError = 0x03 +}; + + + +typedef void(^JLLancerLoginVerifyBlock)(JLAuracastLancerLoginVerifyType status); + +typedef void(^JLLancerChangePwdBlock)(JLAuracastLancerChangePwdResult status); + +@interface JLAuracastLancerManager : NSObject + +@property(nonatomic, strong) JLAuracastLancerSettingMode *__nullable settingMode; + +@property(nonatomic, weak) id delegate; + + +-(instancetype)initWithManager:(JL_ManagerM *)manager; + +/// 设备状态 +@property(nonatomic,strong)JLAuracastDevStateModel *devState; + +/// 登录 +/// - Parameters: +/// - password: 登录密码 +/// - result: 结果 +-(void)loginVerify:(NSString *)password Result:(JLLancerLoginVerifyBlock)result; + +/// 修改密码 +/// - Parameters: +/// - oldPwd: 旧密码 +/// - newPwd: 新密码 +/// - result: 结果 +-(void)changePassword:(NSString *)oldPwd newPassword:(NSString *)newPwd Result:(JLLancerChangePwdBlock)result; + +/// 获取Auracast设备状态 +-(void)auracastGetDevState; + +/// 获取广播音频发射设置 +/// - Parameter type: 类型 +/// 0x01 == 广播名称 +/// 0x02 == 音频格式序号 +/// 0x03 == 加密信息 +/// 0x04 == 发射功率 +-(void)getBroadcastLancerSetting:(UInt8)type; + +/// 获取广播音频发射设置 +-(void)getBroadcastLancerSetting; + +/// 单独设置广播名称 +-(void)setBroadcastName:(NSString *)name; + +/// 单独设置音频格式序号 +-(void)setAudioFormatIndex:(JLBroadcastSetAudioFormat)index; + +/// 单独设置加密与 Broadcast Code(长度16) +-(void)setEncryptEnabled:(BOOL)enabled code:(NSData *)code; + +/// 单独设置发射功率(1~10) +-(void)setPowerLevel:(uint8_t)level; + +/// 一次性下发全部设置(来自 settingMode 或参数) +-(void)setBroadcastLancerSetting:(JLAuracastLancerSettingMode *)mode; + +///关机 +-(void)shoudown; + +///重启 +-(void)restart; + +///恢复出厂设置 +-(void)reset; + +/// 销毁 +-(void)onDestory; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastLancerSettingMode.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastLancerSettingMode.h new file mode 100644 index 000000000..0d0a547dc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastLancerSettingMode.h @@ -0,0 +1,148 @@ +// +// JLAuracastLancerSettingMode.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +/// 音频格式 +typedef NS_ENUM(UInt8, JLBroadcastSetAudioFormat) { + /// 名称: 8_1 + /// 采样率(Hz): 8000 + /// 帧间隔(us):7500 + /// 包长(Byte):26 + /// 码率(kbps):27.732 + /// 重发次数 :2 + /// 最大传输延时(ms) :8 + /// 演示延时(ms) :40 + JLBroadcastSetAudioFormat8_1 = 0x01, + /// 名称: 8_2 + /// 采样率(Hz): 8000 + /// 帧间隔(us):10000 + /// 包长(Byte):30 + /// 码率(kbps):24 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat8_2 = 0x02, + /// 名称: 16_1_1 + /// 采样率(Hz): 16000 + /// 帧间隔(us):7500 + /// 包长(Byte):30 + /// 码率(kbps):32 + /// 重发次数:2 + /// 最大传输延时(ms):8 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat16_1_1 = 0x03, + /// 名称: 16_2_1 + /// 采样率(Hz): 16000 + /// 帧间隔(us):10000 + /// 包长(Byte):40 + /// 码率(kbps):48 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat16_2_1 = 0x04, + /// 名称: 24_1_1 + /// 采样率(Hz): 24000 + /// 帧间隔(us):7500 + /// 包长(Byte):45 + /// 码率(kbps):48 + /// 重发次数:2 + /// 最大传输延时(ms):8 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat24_1_1 = 0x05, + /// 名称: 24_2_1 + /// 采样率(Hz): 24000 + /// 帧间隔(us):10000 + /// 包长(Byte):60 + /// 码率(kbps):48 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat24_2_1 = 0x06, + /// 名称: 32_1_1 + /// 采样率(Hz): 32000 + /// 帧间隔(us):7500 + /// 包长(Byte):60 + /// 码率(kbps):64 + /// 重发次数:2 + /// 最大传输延时(ms):8 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat32_1_1 = 0x07, + /// 名称: 32_2_1 + /// 采样率(Hz): 32000 + /// 帧间隔(us):10000 + /// 包长(Byte):80 + /// 码率(kbps):64 + /// 重发次数:2 + /// 最大传输延时(ms):10 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat32_2_1 = 0x08, + /// 名称: 441_1_1 + /// 采样率(Hz): 44100 + /// 帧间隔(us):8163 + /// 包长(Byte):97 + /// 码率(kbps):95.06 + /// 重发次数:4 + /// 最大传输延时(ms):24 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat441_1_1 = 0x09, + /// 名称: 441_2_1 + /// 采样率(Hz): 44100 + /// 帧间隔(us):10884 + /// 包长(Byte):130 + /// 码率(kbps):95.55 + /// 重发次数:4 + /// 最大传输延时(ms):31 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat441_2_1 = 0x0A, + /// 名称: 48_1 + /// 采样率(Hz): 48000 + /// 帧间隔(us):7500 + /// 包长(Byte):75 + /// 码率(kbps):80 + /// 重发次数:4 + /// 最大传输延时(ms):15 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat48_1 = 0x0B, + /// 名称: 48_2 + /// 采样率(Hz): 48000 + /// 帧间隔(us):10000 + /// 包长(Byte):100 + /// 码率(kbps):80 + /// 重发次数:4 + /// 最大传输延时(ms):20 + /// 演示延时(ms):40 + JLBroadcastSetAudioFormat48_2 = 0x0C + +}; +/** + Auracast 发射端设置数据模型 + */ +@interface JLAuracastLancerSettingMode : NSObject + +/// 广播名称 +@property(nonatomic, copy) NSString *broadcastName; +/// 音频格式 +@property(nonatomic, assign) JLBroadcastSetAudioFormat audioFormatIndex; +/// 是否加密 +@property(nonatomic, assign) BOOL encryptEnabled; +/// 广播加密密码 +@property(nonatomic, copy) NSData * _Nullable broadcastCode; +/// 发射功率设置 +@property(nonatomic, assign) uint8_t powerLevel; + +-(instancetype)initParseData:(NSData *)data; + +-(void)updateParseData:(NSData *)data; + +-(NSData *)toLTVData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastManager.h new file mode 100644 index 000000000..053b987e2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAuracastManager.h @@ -0,0 +1,123 @@ +// +// JLAuracastManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLBroadcastDataModel; +@class JLAuracastDevStateModel; +@class JLAuracastManager; + +/// 搜索状态 +typedef NS_ENUM(NSUInteger, JLAuracastScanState) { + ///操作成功/不在搜索状态 + JLAuracastScanStateSuccess = 0, + ///正在搜索,请勿重复操作 + JLAuracastScanStateScanning = 1, + ///收听广播过程不允许扫描 + JLAuracastScanStateForbidden = 2, + ///设备繁忙 + JLAuracastScanStateBusy = 3, +}; + +/// 扫描类型 +typedef NS_ENUM(NSUInteger, JLAuracastScanType) { + /// 停止 + JLAuracastScanTypeStop = 0, + /// 开始 + JLAuracastScanTypeStart = 1, + /// 查询 + JLAuracastScanTypeQuery = 2, +}; + +@protocol JLAuracastManagerDelegate +@optional + +/// 搜索状态 +/// - Parameters: +/// - mgr: 管理器 +/// - state: 搜索状态 +/// - error: 错误 +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateSearchState:(BOOL)state Error:(NSError * _Nullable)error; + + +/// 广播列表更新 +/// - Parameters: +/// - mgr: 管理器 +/// - list: 最新的广播数据列表 +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateBroadcastList:(NSArray *)list; + +/// 设备状态更新 +/// - Parameters: +/// - mgr: 管理器 +/// - state: 最新设备状态 +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateDeviceState:(JLAuracastDevStateModel *)state; + +/// 当前播放源更新 +/// - Parameters: +/// - mgr: 管理器 +/// - source: 当前播放源(可空) +-(void)auracastManager:(JLAuracastManager *)mgr didUpdateCurrentSource:(JLBroadcastDataModel * _Nullable)source; +@end + +typedef void(^JLAuracastManagerResultBlock)(JL_CMDStatus status, NSError * _Nullable error); + +@interface JLAuracastManager : NSObject + +/// 扫描状态 +@property(nonatomic, assign)BOOL isScanning; + +/// 若干个搜索到的对象 +@property(nonatomic,strong)NSMutableArray * broadcastDataModels; + +/// 设备状态 +@property(nonatomic,strong)JLAuracastDevStateModel *devState; + +/// 当前播放源 +@property(nonatomic,strong)JLBroadcastDataModel *__nullable currentSource; + +/// 回调代理 +@property(nonatomic,weak)id delegate; + +/// 初始化 +-(instancetype)initWithManager:(JL_ManagerM *)manager; + + +/// 扫描Auracast广播 +/// - Parameter type: 扫描类型 +-(void)auracastScanBroadcast:(JLAuracastScanType)type; + +/// 获取Auracast设备状态 +-(void)auracastGetDevState; + + +/// 设置Auracast当前播放源 +/// - Parameter model: 播放源 +/// - Parameter block: 回调 +/// 这里的回调仅仅是命令收发的一个回复,设备回复成功不代表添加成功 +/// 只说明了此命令交互成功,开发者仍需监听 +/// -(void)auracastManager:(JLAuracastManager *)mgr didUpdateCurrentSource:(JLBroadcastDataModel * _Nullable)source 作为判断是否成功收听的重要指标 +-(void)addSourceToDev:(JLBroadcastDataModel *)model result:(JLAuracastManagerResultBlock _Nullable)block; + +/// 移除Auracast当前播放源 +/// - Parameter block: 回调 +-(void)removeDevCurrentSource:(JLAuracastManagerResultBlock _Nullable)block; + +/// 获取Auracast当前播放源 +/// - Parameter block: 回调 +-(void)getCurrentOperationSource:(void(^)(JLBroadcastDataModel *model))block; + +/// 销毁 +-(void)onDestory; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h new file mode 100644 index 000000000..67e2329af --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAutoConfigAnc.h @@ -0,0 +1,87 @@ +// +// JLAutoConfigAnc.h +// JL_BLEKit +// +// Created by EzioChan on 2022/10/28. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + + +#import "ECOneToMorePtl.h" + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +typedef void(^AutoConfigResult)(BOOL status); + +@protocol JLAutoConfigAncPtl + + +/// 设备正在重新检测自适应降噪 +-(void)autoConfigDidConfiging; +///设置自适应降噪失败了 +-(void)autoConfigDidFailed; +///设置自适应降噪成功了 +-(void)autoConfigDidSucceed; +///关闭自适应降噪 +-(void)autoConfigDidClose; + +@end + + +/// 自适应降噪处理类 +@interface JLAutoConfigAnc : ECOneToMorePtl + +/// 设备开启/关闭自适应降噪的状态 +@property (assign,nonatomic)BOOL status; + +/// 开启设备自适应降噪 +/// 这里只是进入了设备开始适配降噪的命令过程 +/// 适配成功与否需要添加协议JLAutoConfigAncPtl进行监听 +/** + interface testView : UIView + + @end + + -(void)initData{ + JLAutoConfigAnc *anc = [[JLAutoConfigAnc alloc] init]; + [anc addDelegate:self]; + } + + -(void)autoConfigDidFailed{ + //设置自适应降噪失败了 + } + -(void)autoConfigDidSucceed{ + //设置自适应降噪成功了 + } + -(void)autoConfigDidClose{ + //关闭自适应降噪 + } +*/ +/// - Parameter manager: manager +-(void)atAncStartAutoConfigWithManager:(JL_ManagerM*)manager; + + +/// 打开设备自适应降噪 +/// 设备默认有一套已在运行的降噪算法 +/// 打开后设备会进入降噪模式,不会经历检测启动自适应的时间,相当于是即时生效 +/// - Parameter result: 这里回调的是一个设备命令处理的结果 +/// - Parameter manager: manager +-(void)atAncOpenAutoConfigResult:(JL_CMD_RESPOND)result Manager:(JL_ManagerM*)manager; + +/// 用户关闭设备的自适应降噪模式算法 +/// - Parameter result: 命令处理结果,不代表命令处理成功 +/// - Parameter manager: manager +-(void)atAncCloseAutoConfigResult:(JL_CMD_RESPOND)result Manager:(JL_ManagerM*)manager; + +/// 获取设备是否开启了自适应降噪 +/// - Parameter result: 这里处理的结果是,设备实际是否开启了的结果,无需从代理中获得结果 +/// - Parameter manager: manager +-(void)atAncGetAutoConfigResult:(AutoConfigResult)result Manager:(JL_ManagerM*)manager; + + +@end + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAutoPressureModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAutoPressureModel.h new file mode 100644 index 000000000..c019440d1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLAutoPressureModel.h @@ -0,0 +1,38 @@ +// +// JLAutoPressureModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +///压力自动检测模式 +typedef NS_ENUM(UInt8, WatchAPLeveType) { + ///放松 + WatchAPLeve_Relex = 0x00, + /// 正常 + WatchAPLeve_Normal = 0x01, + /// 中等 + WatchAPLeve_Middle = 0x02, + /// 偏高 + WatchAPLeve_Hight = 0x03 +}; + +@interface JLAutoPressureModel : JLwSettingModel + +///开关 +@property(nonatomic,assign)BOOL status; +/// 模式 +@property(nonatomic,assign)WatchAPLeveType model; + +-(instancetype)initWithData:(NSData *)data; + +-(instancetype)initWithModel:(WatchAPLeveType)model switchStatus:(BOOL)status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLBroadcastDataModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLBroadcastDataModel.h new file mode 100644 index 000000000..a46f5a68d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLBroadcastDataModel.h @@ -0,0 +1,65 @@ +// +// JLBroadcastDataModel.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// Auracast 广播数据模型 +@interface JLBroadcastDataModel : NSObject + +/// 广播名称 +@property(nonatomic, copy) NSString *broadcastName; +/// 广播ID +@property(nonatomic, copy) NSData *broadcastID; +/// 广播特性 +@property(nonatomic, assign) uint8_t features; +/// 是否加密 +@property(nonatomic, assign) BOOL encrypted; +/// 广播地址 +@property(nonatomic, copy) NSData *advertiserAddress; +/// 广播地址 +@property(nonatomic, copy) NSString *advertiserAddressString; + +/// 广播密钥 +@property(nonatomic, copy) NSData *broadcastKey; + +typedef NS_ENUM(uint8_t, JLBroadcastSyncState) { + JLBroadcastSyncStateIdle = 0, + JLBroadcastSyncStateSyncing = 1, + JLBroadcastSyncStateSuccess = 2, +}; +/// 同步状态 +/// Broadcast sync state +/// 当此状态为空闲时,需要查看错误码检查是否存在错误 +@property(nonatomic, assign) JLBroadcastSyncState syncState; + +typedef NS_ENUM(uint8_t, JLBroadcastErrorCode) { + JLBroadcastErrorCodeNone = 0x00, + JLBroadcastErrorCodeName = 0x01, + JLBroadcastErrorCodeAddress = 0x02, + JLBroadcastErrorCodeID = 0x03, + JLBroadcastErrorCodeKey = 0x04, + JLBroadcastErrorCodeSyncFailed = 0x05, + JLBroadcastErrorCodeSyncTimeout = 0x06, + JLBroadcastErrorCodeSyncLost = 0x07, +}; +/// 错误码 +@property(nonatomic, assign) JLBroadcastErrorCode errorCode; + +@property(nonatomic, copy) NSData *ltvData; + +- (instancetype)initParseData:(NSData *)data; + + +/// 将当前模型内容按 LTV 规则编码为数据 +- (NSData *)toLTVData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLCmdBasic.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLCmdBasic.h new file mode 100644 index 000000000..8efb36751 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLCmdBasic.h @@ -0,0 +1,23 @@ +// +// JLCmdBasic.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLCmdBasic : NSObject + +-(void)inputPKG:(JL_PKG *)pkg; + +-(void)makeCommandAction:(NSData *)targetData withManager:(JL_ManagerM *)manager Result:(JL_CMD_RESPOND _Nullable)result; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h new file mode 100644 index 000000000..3a407f6b5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLConsequentHeartRateModel.h @@ -0,0 +1,45 @@ +// +// JLConsequentHeartRateModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 测量心率传感器设置 +@interface JLConsequentHeartRateModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 测量模式 +@property(nonatomic,assign)WatchConsequentType rType; + +/// 上限心率 +@property(nonatomic,assign)UInt8 maxHeartRate; + +/// 下限心率 +@property(nonatomic,assign)UInt8 minHeartRate; + +/// 是否包含上下心率区间 +@property(nonatomic,assign)BOOL hasRange; + +-(instancetype)initWithData:(NSData *)data; + +/// 创建一个新的传感器设置对象 +/// @param type 测量类型 +/// @param status 开团状态 +- (instancetype)initWithModel:(WatchConsequentType)type Status:(BOOL)status; + +/// 创建一个新的传感器设置对象 +/// 携带心率上下限的 +/// @param type 测量类型 +/// @param status 开关状态 +/// @param min 心率下限 +/// @param max 心率上限 +- (instancetype)initWithModel:(WatchConsequentType)type Status:(BOOL)status Min:(UInt8) min Max:(UInt8)max; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevAudioAIttsHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevAudioAIttsHandler.h new file mode 100644 index 000000000..cfe5d57df --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevAudioAIttsHandler.h @@ -0,0 +1,55 @@ +// +// JLDevAudioAIttsHandler.h +// JL_BLEKit +// Created by EzioChan on 2025/12/12. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@protocol JLDevAudioAIttsHandlerDelegate +/// 设备回调ai云数据 +/// - Parameters: +/// - manager: 设备 +/// - aicloud: AI云数据对象 +- (void)receiveDataFrom:(JL_ManagerM *)manager WithAiCloud:(JLSpeechAiCloud *)aicloud; + +/// 设备返回tts合成数据 +/// - Parameters: +/// - manager: 设备 +/// - tts: tts数据对象 +- (void)receiveDataFrom:(JL_ManagerM *)manager WithTTS:(JLSpeechTTSSynthesis *)tts; +@end + +/// 语音 AI/tts 传输处理(新) +/// 对外接口与旧类一致,仅更换类名,内部转发至 JL_SpeechAIttsHandler +@interface JLDevAudioAIttsHandler : NSObject + +@property (nonatomic, weak) id delegate; + +/// 初始化一个语音大数据传输实例 +/// - Parameter mgr: JL_ManagerM +- (instancetype)initWithMgr:(JL_ManagerM *)mgr; + +/// 发送tts语音合成信息 +/// - Parameters: +/// - tts: tts语音对象内容 +/// - manager: 设备 +/// - result: 回调结果 +- (void)devAudioSendTTs:(JLSpeechTTSSynthesis *)tts manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +/// 发送ai云数据到设备 +/// - Parameters: +/// - cloud: ai云数据 +/// - manager: 设备 +/// - result: 回调结果 +- (void)devAudioSendAiCloud:(JLSpeechAiCloud *)cloud manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevAudioManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevAudioManager.h new file mode 100644 index 000000000..4767be2bc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevAudioManager.h @@ -0,0 +1,95 @@ +// +// JLDevAudioManager.h +// JL_BLEKit +// Created by EzioChan on 2025/12/12. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JLDevAudioManager; + +@protocol JLDevAudioManagerDelegate + /// 录音数据回调 + /// - Parameters: + /// - manager: 操作设备 + /// - data: 数据 + - (void)devAudioManager:(JLDevAudioManager *)manager Audio:(NSData *)data; + + /// 设备端开始录音 + /// - Parameters: + /// - manager: 操作设备 + /// - param: 录音参数 + - (void)devAudioManager:(JLDevAudioManager *)manager StartByDeviceWithParam:(JLRecordParams *)param; + + /// 设备端结束录音 + /// - Parameters: + /// - manager: 操作设备 + /// - param: 语音助手配置参数 + - (void)devAudioManager:(JLDevAudioManager *)manager StopByDeviceWithParam:(JLSpeechRecognition *)param; + + /// 录音状态回调 + /// - Parameters: + /// - manager: 操作设备 + /// - status: 状态 + - (void)devAudioManager:(JLDevAudioManager *)manager Status:(JL_SpeakType)status; + +@end + +/// 设备录音管理对象(新) +/// 对外接口与旧类一致,仅更换类名,内部转发至 JL_SpeexManager +@interface JLDevAudioManager : NSObject + +@property (nonatomic, weak) id delegate; + + /// 获取单例 + /// - Parameters: + /// - delegate: 代理 + /// - manager: 操作设备 + /// - Returns: 录音管理对象实例 + + (JLDevAudioManager *)shareDevAudioManager:(id)delegate WithManager:(JL_ManagerM *)manager; + + /// 获取录音状态 + /// - Returns: 当前录音状态 + - (JL_SpeakType)cmdCheckRecordStatus; + + /// 开始录音 + /// - Parameters: + /// - manager: 操作设备 + /// - params: 录音参数 + /// - result: 命令操作结果回调 + - (void)cmdStartRecord:(JL_ManagerM *)manager Params:(JLRecordParams *)params Result:(JL_CMD_RESPOND __nullable)result; + /// 停止录音 + /// - Parameters: + /// - manager: 操作设备 + /// - reason: VAD类型 + /// - result: 命令操作结果回调 + - (void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason)reason Result:(JL_CMD_RESPOND __nullable)result; + /// 停止录音2 + /// - Parameters: + /// - manager: 操作设备 + /// - reason: vad类型 + /// - schr: 语音设置助手 + /// - result: 回调结果 + - (void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason)reason SpeechHelper:(JLSpeechRecognition *)schr Result:(JL_CMD_RESPOND __nullable)result; + + /// 允许录音(设备端主动发起时的同意响应) + /// 在收到设备主动发起录音的回调后调用,设备会播放提示音 + - (void)cmdAllowSpeak; + /// 拒绝录音(设备端主动发起时的拒绝响应) + /// 在收到设备主动发起录音的回调后调用,拒绝设备开始录音 + - (void)cmdRejectSpeak; + + /// 停止语音 + /// 发送命令给音箱,停止接收数据,即检测到断句 + - (void)cmdSpeakingDone __attribute__((deprecated("当前命令已失效,请使用cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason) reason"))); + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h new file mode 100644 index 000000000..74e171a03 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDevPlayerCtrl.h @@ -0,0 +1,102 @@ +// +// JLDevPlayerCtrl.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/25. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JLDevPlayerCtrl; + +/// 播放器回调 +@protocol JLDevPlayerCtrlDelegate + +/// 播放状态 +/// - Parameters: +/// - ctrl: 播放器 +/// - status: 播放模式 +-(void)jlDevPlayerCtrl:(JLDevPlayerCtrl *)ctrl playMode:(uint8_t)playMode; + +/// 播放状态回调 +/// - Parameters: +/// - ctrl: 播放器 +/// - status: 播放状态 +/// - card: 当前播放的设备 +/// - time: 当前播放的时间 +/// - total: 总时长 +-(void)jlDevPlayerCtrl:(JLDevPlayerCtrl *)ctrl playStatus:(uint8_t)status currentCard:(uint8_t)card currentTime:(uint32_t)time tolalTime:(uint32_t)total; + +/// 播放文件回调 +/// - Parameters: +/// - ctrl: 播放器 +/// - name: 文件名 +/// - clus: 文件簇号 +-(void)jlDevPlayerCtrl:(JLDevPlayerCtrl *)ctrl fileName:(NSString *)name currentClus:(uint32_t)clus; + +@end + + +/// 设备播放器管理类 +@interface JLDevPlayerCtrl : JLCmdBasic + +/// 播放状态 +@property(nonatomic,assign)uint8_t playStatus; + +/// 当前播放的设备 +/// 0x00 : USB +/// 0x01 : SD_0 +/// 0x02 : SD_1 +/// 0x03 : FLASH +/// 0x04 : LineIn +/// 0x05 : FLASH2 +@property(nonatomic,assign)uint8_t currentCard; + +/// 当前播放时间 +@property(nonatomic,assign)uint32_t currentTime; + +/// 歌曲总时长 +@property(nonatomic,assign)uint32_t tolalTime; + +/// 当前播放文件名 +@property(nonatomic,strong)NSString *fileName; + +/// 当前播放文件的簇号 +@property(nonatomic,assign)uint32_t currentClus; + +/// 当前播放模式 +/// 0x01:全部循环; +/// 0x02:设备循环; +/// 0x03:单曲循环; +/// 0x04:随机播放; +/// 0x05:文件夹循环 +@property (nonatomic,assign)uint8_t playMode; + +/// 代理 +@property(nonatomic,weak)id delegate; + +/// 操控设备播放器设置 +/// - Parameters: +/// - cmd: 操作命令 +/// 0x01:PP按钮 +/// 0x02:上一曲 +/// 0x03:下一曲 +/// 0x04:切换播放模式(当前播放模式:不可指定,设备播放模式自增) +/// 0x05:EQ +/// 0x06:快退 +/// 0x07:快进 +/// - sec: 时间(当快进/快退时需要,其他功能时值为0) +/// - manager: 设备对象 +/// - result: 返回结果 +-(void)cmdPlayerCtrl:(uint8_t)cmd + Second:(uint16_t)sec + Manager:(JL_ManagerM *)manager + Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfig.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfig.h new file mode 100644 index 000000000..404011f0a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfig.h @@ -0,0 +1,113 @@ +// +// JLDeviceConfig.h +// JL_BLEKit +// +// Created by EzioChan on 2022/10/31. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +@class JL_ManagerM; +@class JLDeviceConfigModel; +@class JLDeviceConfigTws; +@class JLDeviceConfigDongle; +@class JLDeviceConfigSoundBox; + +NS_ASSUME_NONNULL_BEGIN +typedef void(^JLConfigRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigModel* __nullable config); + +typedef void(^JLConfigTwsRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigTws* __nullable config); + +typedef void(^JLConfigAuracastRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigDongle* __nullable config); + +typedef void (^JLConfigSoundBoxRsp)(JL_CMDStatus status, uint8_t sn, JLDeviceConfigSoundBox* __nullable config); + + +/// 固件设置配置回调协议 +/// 遵循时,可通过父类的- (void)addDelegate:(id)delegate方法添加遵循 +@protocol JLConfigPtl + +@optional +/// 监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceConfigWith:(JLDeviceConfigModel *)configModel; + +/// TWS监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceTwsConfigWith:(JLDeviceConfigTws *)configModel; + +/// SoundBox监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceSoundBoxConfigWith:(JLDeviceConfigSoundBox *)configModel; + +/// Dongle 监听回调协议 +/// - Parameter configModel: 固件设置配置回调 +-(void)deviceAuracastConfigWith:(JLDeviceConfigDongle *)configModel; + +@end + +@interface JLDeviceConfig : NSObject + + +@property(nonatomic,weak) id _Nullable delegate; + ++(instancetype)share; + +/// 获取设备配置信息 +-(void)deviceConfigGet:(JL_ManagerM *)manager; + + +/// 手表查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceGetConfig:(JL_ManagerM *)manager result:(JLConfigRsp)result; + +/// 手表多设备管理时,可通过对应的设备UUID 获取相关的设备配置 +/// - Parameter entity: 设备uuidStr +-(JLDeviceConfigModel *_Nullable)deviceGetConfigWithUUID:(NSString *)uuidStr; + +/// TWS查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceTwsGetConfig:(JL_ManagerM *)manager result:(JLConfigTwsRsp)result; + +/// Dongle 查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceDongleGetConfig:(JL_ManagerM *)manager result:(JLConfigAuracastRsp)result; + +/// SoundBox 查询设备当前固件配置内容 +/// - Parameters: +/// - manager: manager +/// - result: 回调功能配置内容 +-(void)deviceSoundBoxGetConfig:(JL_ManagerM *)manager result:(JLConfigSoundBoxRsp)result; + + +/// Tws多设备管理时,可通过对应的设备UUID 获取相关的设备配置 +/// - Parameter entity: 设备uuidStr +-(JLDeviceConfigTws *)deviceGetTwsConfigWithUUID:(NSString *)uuidStr; + +/// Dongle 查询设备当前固件配置内容 +/// - Parameters: +/// - uuidStr: 设备uuidStr +-(JLDeviceConfigDongle *)deviceGetAuracastConfigWithUUID:(NSString *)uuidStr; + + +/// SoundBox 多设备管理时,可通过对应的设备 UUID 获取相关的设备配置信息 +/// - Parameter uuidStr: 设备 uuid +-(JLDeviceConfigSoundBox *)deviceGetSoundBoxConfigWithUUID:(NSString *)uuidStr; + + +/// 私有测试接口请勿使用 +/// - Parameter data: 用于测试数据 +/// - Parameter st: 是否开启测试模式 +-(void)pDeviceTest:(NSData *)data Status:(BOOL)st; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigDongle.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigDongle.h new file mode 100644 index 000000000..dbdf7def0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigDongle.h @@ -0,0 +1,32 @@ +// +// JLDeviceConfigDongle.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// Auracast +@interface JLDeviceConfigDongle : JLDeviceConfigBasic +/// 是否支持Auracast +@property (nonatomic, assign, readonly) BOOL isSupportAuracast; +/// 是否支持接收Auracast +@property (nonatomic, assign, readonly) BOOL isSupportReceiveAuracast; +/// 是否支持发射端 Auracast +@property (nonatomic, assign, readonly) BOOL isSupportLancerAuracast; + +/// 是否支持TWS +/// 说明设备支持TWS设备功能。 +/// 包含设备名称,弹窗快连,按键设置,灯效设置、工作模式等功能; +@property (nonatomic, assign, readonly)BOOL isSupportTwsFunc; + +/// 是否支持重命名 +/// 设备是否支持修改设备名 +@property (nonatomic, assign, readonly)BOOL isSupportRename; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h new file mode 100644 index 000000000..859b621eb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigFuncModel.h @@ -0,0 +1,242 @@ +// +// JLDeviceConfigFuncModel.h +// JL_BLEKit +// +// Created by EzioChan on 2022/10/31. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "ECOneToMorePtl.h" + +NS_ASSUME_NONNULL_BEGIN + +//MARK: - 必须功能 + +/// 必须功能 +@interface JLDeviceBasicFuncModel : NSObject + +/// 支持OTA +@property(nonatomic,assign)BOOL spOTA; + +/// 支持资源更新 +@property(nonatomic,assign)BOOL spSourceUpdate; + +/// 支持表盘增加/删除/查询 +@property(nonatomic,assign)BOOL spDialOperation; + +/// 支持表盘切换 +@property(nonatomic,assign)BOOL spDialSwitch; + +/// 支持表盘预览 +@property(nonatomic,assign)BOOL spDialPreview; + + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 系统功能 +/// 系统功能 +@interface JLDeviceSystemFuncModel : NSObject + +/// 支持屏幕设置 +@property(nonatomic,assign)BOOL spScreenSetting; +/// 支持震动强度 +@property(nonatomic,assign)BOOL spVibrationIntensity; +/// 支持勿扰模式 +@property(nonatomic,assign)BOOL spDoNotDisturb; +/// 支持锻炼设置 +@property(nonatomic,assign)BOOL spExerciseSettings; +/// 支持断开提醒 +@property(nonatomic,assign)BOOL spDisconnectReminder; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 功能选项 +/// 功能选项 +@interface JLDeviceExportFuncModel : NSObject +/// 支持常用联系人 +@property(nonatomic,assign)BOOL spTopContacts; +/// 支持音乐文件浏览 +@property(nonatomic,assign)BOOL spMusicFileBrows; +/// 音乐文件删除、传输 +@property(nonatomic,assign)BOOL spMusicFileOp; +/// 支持闹钟设置 +@property(nonatomic,assign)BOOL spAlarmSettings; +/// 支持信息同步 +@property(nonatomic,assign)BOOL spSyncInfo; +/// 支持天气同步 +@property(nonatomic,assign)BOOL spSyncWeather; +/// 支持找手机/设备 +@property(nonatomic,assign)BOOL spFindPhoneOrDevice; +/// Ai 云功能 +@property(nonatomic,assign)BOOL spAiCloud; +/// Ai 表盘 +@property(nonatomic,assign)BOOL spAiDial; +/// 平台接口信息获取 +@property(nonatomic,assign)BOOL spOpenInfo; +/// 支持4G模块 +@property(nonatomic,assign)BOOL sp4GModel; + +/// 支持表盘信息拓展 +@property(nonatomic,assign)BOOL spDialInfoExtend; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 运动健康 + +/// 手表综合功能支持 +@interface JLHealthFuncComprehensive : NSObject + +/// 支持健康监控 +@property(nonatomic,assign)BOOL spHealthMonitor; +/// 支持个人信息 +@property(nonatomic,assign)BOOL spPersonInfo; +/// 支持睡眠检测 +@property(nonatomic,assign)BOOL spSleepMonitor; +/// 支持运动心率提醒 +@property(nonatomic,assign)BOOL spSportHeartRateRemind; +/// 支持久坐提醒 +@property(nonatomic,assign)BOOL spSedentaryRemind; +/// 支持压力自动检测 +@property(nonatomic,assign)BOOL spStressDetection; +/// 支持跌倒检测 +@property(nonatomic,assign)BOOL spFallDetection; +/// 支持传感器设置 +@property(nonatomic,assign)BOOL spSensorSetup; + +-(instancetype)init:(NSData *)data; + +@end + +/// 手表运动模式支持功能 +@interface JLHealthFuncSportModel : NSObject +/// 支持运动记录 +@property(nonatomic,assign)BOOL spRecord; +/// 支持运动统计 +@property(nonatomic,assign)BOOL spStatistics; +/// 支持室外运动 +@property(nonatomic,assign)BOOL spOutdoor; +/// 支持室内运动 +@property(nonatomic,assign)BOOL spIndoor; + +-(instancetype)init:(NSData *)data; +@end + +/// 手表计步功能支持功能 +@interface JLHealthFuncGSensorModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; +/// 支持运动步数 +@property(nonatomic,assign)BOOL spStep; + +-(instancetype)init:(NSData *)data; + +@end + + +/// 手表心率功能支持功能 +@interface JLHealthFuncHeartRateModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; +/// 支持连续测试 +@property(nonatomic,assign)BOOL spSerialTest; + +-(instancetype)init:(NSData *)data; + +@end + +/// 手表血氧功能支持功能 +@interface JLHealthFuncBloodOxygenModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; + +-(instancetype)init:(NSData *)data; + +@end + + +/// 手表海拔功能支持功能 +@interface JLHealthFuncAltitudeModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; + +-(instancetype)init:(NSData *)data; + +@end + +/// 手表GPS功能支持功能 +@interface JLHealthFuncGPSModel : NSObject +/// 是否存在该传感器 +@property(nonatomic,assign)BOOL spExist; + +-(instancetype)init:(NSData *)data; + +@end + + + +@interface JLDeviceHealthFuncModel : NSObject + +/// 手表综合功能支持 +@property(nonatomic,strong)JLHealthFuncComprehensive *spComprehensive; +/// 手表运动模式支持功能 +@property(nonatomic,strong)JLHealthFuncSportModel *spSportModel; +/// 手表计步功能支持功能 +@property(nonatomic,strong)JLHealthFuncGSensorModel *spGSensor; +/// 手表心率功能支持功能 +@property(nonatomic,strong)JLHealthFuncHeartRateModel *spHeartRate; +/// 手表血氧功能支持功能 +@property(nonatomic,strong)JLHealthFuncBloodOxygenModel *spBloodOxygen; +/// 手表海拔功能支持功能 +@property(nonatomic,strong)JLHealthFuncAltitudeModel *spAltitude; +/// 手表GPS功能支持功能 +@property(nonatomic,strong)JLHealthFuncGPSModel *spGPS; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 设备配置信息 + +/// 设备配置信息 +@interface JLDeviceConfigBasic:NSObject +/// 产品标志类型 +/// 0 - 手表 +/// 1 - TWS耳机 +/// 2 - SoundBox +/// 3 - Dongle 设备配置信息 +@property(nonatomic,assign)int deviceType; +/// 版本 +@property(nonatomic,assign)int version; + +/// 数据 +@property(nonatomic,copy)NSData *basicData; + +/// 功能配置所属设备的UUID +@property(nonatomic,strong)NSString * _Nullable mbleIdentifyStr; + +-(instancetype)init:(NSData *)data; + +@end + +//MARK: - 手表配置信息数据结构解析 + +/// 手表配置信息数据结构 +@interface JLDeviceConfigModel:JLDeviceConfigBasic +/// - 必须功能 +@property(nonatomic,strong)JLDeviceBasicFuncModel *basicFunc; +/// - 系统功能 +@property(nonatomic,strong)JLDeviceSystemFuncModel *systemFunc; +/// - 功能选项 +@property(nonatomic,strong)JLDeviceExportFuncModel * exportFunc; +/// - 运动健康 +@property(nonatomic,strong)JLDeviceHealthFuncModel *healthFunc; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigSoundBox.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigSoundBox.h new file mode 100644 index 000000000..b7f1bac94 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigSoundBox.h @@ -0,0 +1,31 @@ +// +// JLDeviceConfigSoundBox.h +// JL_BLEKit +// +// Created by EzioChan on 2025/11/21. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLDeviceConfigSoundBox : JLDeviceConfigBasic +/// 是否支持Auracast +@property (nonatomic, assign, readonly) BOOL isSupportAuracast; +/// 是否支持接收Auracast +@property (nonatomic, assign, readonly) BOOL isSupportReceiveAuracast; +/// 是否支持发射端 Auracast +@property (nonatomic, assign, readonly) BOOL isSupportLancerAuracast; +/// 是否支持TWS +/// 说明设备支持TWS设备功能。 +/// 包含设备名称,弹窗快连,按键设置,灯效设置、工作模式等功能; +@property (nonatomic, assign, readonly)BOOL isSupportTwsFunc; + +/// 是否支持重命名 +/// 设备是否支持修改设备名 +@property (nonatomic, assign, readonly)BOOL isSupportRename; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h new file mode 100644 index 000000000..8cc50200d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDeviceConfigTws.h @@ -0,0 +1,59 @@ +// +// JLDeviceConfigTws.h +// JL_BLEKit +// +// Created by EzioChan on 2024/1/23. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/// TWS设备配置 +@interface JLDeviceConfigTws : JLDeviceConfigBasic + +/// 是否支持替换提示音 +@property(nonatomic, assign)BOOL isSupportReplaceTipsVoice; + +/// 是否支持语音翻译 +/// Voice translation +@property(nonatomic,assign,readonly)BOOL isSupportTranslate; + +/// 是否使用A2DP播放 +/// 翻译耳机功能扩展 +/// is use A2DP to play +@property(nonatomic,assign,readonly)BOOL isUseA2DP; + +/// 是否支持Opus立体声 +@property(nonatomic,assign,readonly)BOOL isSupportOpusStereo; + +/// 是否支持耳机健康功能 +/// is support ear health +@property(nonatomic,assign, readonly)BOOL isSupportHealthData; + +/// 是否支持Auracast +@property (nonatomic, assign, readonly) BOOL isSupportAuracast; + +/// 是否支持接收Auracast +@property (nonatomic, assign, readonly) BOOL isSupportReceiveAuracast; + +/// 是否支持发射端 Auracast +@property (nonatomic, assign, readonly) BOOL isSupportLancerAuracast; + +/// 是否支持心跳机制 +@property (nonatomic, assign, readonly) BOOL isSupportHeartBeat; + +/// 是否支持TWS +/// 说明设备支持TWS设备功能。 +/// 包含设备名称,弹窗快连,按键设置,灯效设置、工作模式等功能; +@property (nonatomic, assign, readonly)BOOL isSupportTwsFunc; + +/// 是否支持重命名 +/// 设备是否支持修改设备名 +@property (nonatomic, assign, readonly)BOOL isSupportRename; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDhaFitting.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDhaFitting.h new file mode 100644 index 000000000..61570c0e2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDhaFitting.h @@ -0,0 +1,111 @@ +// +// JLDhaFitting.h +// JL_BLEKit +// +// Created by EzioChan on 2022/6/28. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + + +@class JL_ManagerM; + +/// 左右声道类型 +typedef NS_ENUM(UInt8, DhaChannel) { + ///左声道 + DhaChannel_left = 0x00, + ///右声道 + DhaChannel_right = 0x01 +}; + +/// 左右耳验配类型 +typedef NS_ENUM(UInt8, DhaFittingType) { + ///验配左耳 + DhaFittingType_left = 0x00, + ///验配右耳 + DhaFittingType_right = 0x00, + ///验配左右耳 + DhaFittingType_All = 0x00, +}; + + +/// 辅听耳机的信息 +@interface DhaFittingInfo : NSObject +/// /*版本号:DHA_FITTING_VERSION*/ +@property(nonatomic,assign)uint8_t version; +/// /*通道数:DHA_FITTING_CHANNEL_MAX*/ +@property(nonatomic,assign)uint8_t ch_num; +/// /*通道频率组:获取通道对应的freq*/ +@property(nonatomic,strong)NSArray *ch_freq; + +- (instancetype)initWithData:(NSData *)basicData; + +@end + +@interface DhaFittingSwitch : NSObject + +@property(nonatomic,assign)BOOL leftOn; + +@property(nonatomic,assign)BOOL rightOn; + +@end + + +/// 辅听验配对象 +@interface DhaFittingData : NSObject +/// 左右声道 +@property(nonatomic,assign)DhaChannel channel; + +/// 左开关 +@property(nonatomic,assign)BOOL leftOn; +/// 右开关 +@property(nonatomic,assign)BOOL rightOn; + +/// 保留位 +@property(nonatomic,assign)uint8_t reserved; +/// 通道频率 +@property(nonatomic,assign)uint16_t freq; +/// 通道增益 +@property(nonatomic,assign)float gain; + +-(NSData*)beData; + +@end + + +typedef void(^DhaInfoBlock)(DhaFittingInfo *info,NSArray *gains); + + +@interface JLDhaFitting : NSObject + +/// 获取设备当前辅听的基础信息 +/// @param result 辅听耳机信息 +/// @param manager manager ++(void)auxiGetInfo:(DhaInfoBlock)result Manager:(JL_ManagerM*)manager; + +/// 进行辅听验配 +/// @param dhaFit 辅听设置对象 +/// @param manager manager +/// @param result 设备工作状态回调 +-(void)auxiCheckByStep:(DhaFittingData *)dhaFit Manager:(JL_ManagerM*)manager Result:(JL_CMD_RESPOND __nullable)result; + +/// 退出辅听验配 +/// @param manager 命令对象 +/// @param result 设备工作状态回调 +-(void)auxiCloseManager:(JL_ManagerM*)manager Result:(JL_CMD_RESPOND __nullable)result; + +/// 保存验配设置 +/// @param gains 验配的增益数组 +/// @param manager manager +/// @param type 左右耳类型 +/// @param result 回调结果 +-(void)auxiSaveGainsList:(NSArray *) gains Manager:(JL_ManagerM*)manager Type:(DhaFittingType)type Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h new file mode 100644 index 000000000..c434e30f0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDialInfoExtentManager.h @@ -0,0 +1,38 @@ +// +// JLDialInfoExtentManager.h +// JL_BLEKit +// +// Created by EzioChan on 2024/2/20. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_TypeEnum.h" + +@class JLDialInfoExtentedModel; +@class JL_ManagerM; + +NS_ASSUME_NONNULL_BEGIN + +/// 表盘信息扩展内容回调 +/// Dial information extended content block +typedef void(^JLDialInfoExtentedBlock)(JL_CMDStatus status,JLDialInfoExtentedModel *_Nullable op); + +/// 请求设备表盘信息扩展内容类 +/// Request device dial information extended content class +@interface JLDialInfoExtentManager : NSObject + +/// 单例 +/// Single ++(instancetype)share; + +/// 开始请求表盘信息扩展内容 +/// Start request dial information extended content +/// - Parameters: +/// - manager: 设备 - Device manager +/// - block: 状态回调 - Dial information extended content block +-(void)getDialInfoExtented:(JL_ManagerM *)manager result:(JLDialInfoExtentedBlock)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h new file mode 100644 index 000000000..9b516dc8b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDialInfoExtentedModel.h @@ -0,0 +1,54 @@ +// +// JLDialInfoExtentedModel.h +// JL_BLEKit +// +// Created by EzioChan on 2024/2/20. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +/// 设备表盘拓展信息 +/// device dial information extended model +@interface JLDialInfoExtentedModel : NSObject + + +/// 屏幕形状 +/// shape of screen +/// 默认形状 0x01 +/// default 0x01 circular +/// 0x01 - 圆形 circular +/// 0x02 - 矩形 rectangle +/// 0x03 - 圆角矩形 rounded rectangle +@property(nonatomic, assign) uint8_t shape; + + +/// 圆形半径 +/// radius of circle +@property(nonatomic, assign) CGFloat radius; + +/// 背景颜色 +/// background color +/// default is clean color +@property(nonatomic, strong) UIColor *backgroundColor; + +/// 屏幕尺寸 +/// 此项默认值为(240 * 240) +/// default is (240 * 240) +/// device screen sice +@property(nonatomic, assign) CGSize size; + + +/// 初始化 +/// initialize +/// - Parameter data: 数据 data +/// - Returns: 实例 +-(instancetype)initWithData:(NSData *)data Manager:(JL_ManagerM*)manager; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h new file mode 100644 index 000000000..e799fb084 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLDisconnectRemindModel.h @@ -0,0 +1,26 @@ +// +// JLDisconnectRemindModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 手表蓝牙断开提醒设置 +@interface JLDisconnectRemindModel : JLwSettingModel +//开关 +@property(nonatomic,assign)BOOL status; +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; + +-(instancetype)initWithData:(NSData *)data; + +- (instancetype)initWithModel:(WatchRemindType)type Status:(BOOL)status; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLEcTimerHelper.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLEcTimerHelper.h new file mode 100644 index 000000000..57e83573f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLEcTimerHelper.h @@ -0,0 +1,33 @@ +// +// JLEcTimerHelper.h +// JL_BLEKit +// +// Created by EzioChan on 2025/3/13. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLEcTimerHelper : NSObject +/// 创建单次定时器 ++ (NSString *)startTimerWithTimeout:(NSTimeInterval)timeout completion:(void (^)(NSString *timerID))completion; + +/// 创建重复定时器 ++ (NSString *)setInterval:(NSTimeInterval)interval completion:(void (^)(NSString *timerID))completion; + +/// 停止定时器 ++ (void)stopTimer:(NSString *)timerID; + +/// 停止所有定时器 ++ (void)stopAllTimers; + +/// 开始计算耗时 ++ (NSUUID *)startCalculateTime; + +/// 停止计算耗时 ++ (NSTimeInterval) stopCalculateTime:(NSUUID *)uuid; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h new file mode 100644 index 000000000..ca5e0e6bc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLEmergencyContactModel.h @@ -0,0 +1,26 @@ +// +// JLEmergencyContactModel.h +// JL_BLEKit +// +// Created by EzioChan on 2022/2/17. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 紧急联系人设置 +@interface JLEmergencyContactModel : JLwSettingModel + +/// 联系电话 +@property(nonatomic,strong)NSString *phoneNumber; + +-(instancetype)initWithData:(NSData *)data; + +-(instancetype)initWithPhoneNumber:(NSString *)phoneNumber; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h new file mode 100644 index 000000000..f88b192e1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLExerciseHeartRateRemindModel.h @@ -0,0 +1,31 @@ +// +// JLExerciseHeartRateRemindModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" +#import "JLWatchEnum.h" +NS_ASSUME_NONNULL_BEGIN + +/// 运动心率提醒设置 +@interface JLExerciseHeartRateRemindModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 上限心率0~255 +@property(nonatomic,assign)uint8_t maxRate; + +/// 心率区间划分方式: +/// 0x00:最大心率百分比 +/// 0x01:存储心率百分比s +@property(nonatomic,assign)WatchHeartRateType way; + +-(instancetype)initWithWay:(WatchHeartRateType)way maxRate:(uint8_t)max switchStatus:(BOOL)status; + +-(instancetype)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLFallDetectionModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLFallDetectionModel.h new file mode 100644 index 000000000..fc9367ffb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLFallDetectionModel.h @@ -0,0 +1,32 @@ +// +// JLFallDetectionModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 跌到监测设置 +@interface JLFallDetectionModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; +/// 电话号码 +@property(nonatomic,strong,readonly)NSString *phoneNumber; + +-(instancetype)initWithData:(NSData *)data; + +/// 构建一个跌倒监测的设置对象 +/// @param type 提醒类型 +/// @param status 开关 +/// @param pn 电话号码 +- (instancetype)initWithModel:(WatchRemindType)type Status:(BOOL)status phoneNumber:(NSString * _Nullable)pn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLFlashOpMgr.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLFlashOpMgr.h new file mode 100644 index 000000000..af6fc6185 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLFlashOpMgr.h @@ -0,0 +1,163 @@ +// +// JLFlashOpMgr.h +// JL_BLEKit +// +// Created by EzioChan on 2025/3/14. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 表盘操作类型 +typedef NS_ENUM(NSUInteger, FlashDialOperationType) { + ///< 读取当前表盘 + FlashDialOperationTypeReadCurrent = 0, + ///< 设置表盘 + FlashDialOperationTypeSet, + ///< 通知表盘 + FlashDialOperationTypeNotify, + ///< 获取表盘额外信息 + FlashDialOperationTypeGetExtraInfo, + ///< 激活自定义表盘(设置表盘背景) + FlashDialOperationTypeActivateCustom, + ///< 获取表盘背景 + FlashDialOperationTypeGetBackground, + /// 通知表盘背景变更 + FlashDialOperationTypeNoteBackground +}; + +/// 设备 Flash 操作 +@interface JLFlashOpMgr : NSObject + +/// 超时 +@property(nonatomic, assign)NSInteger timeOutMax; + +/// 获取Flash信息 +/// - Parameters: +/// - managerM: 蓝牙管理对象 +/// - result: 回调 +-(void)flashGetInfoMode:(JL_ManagerM *)managerM + Result:(void (^)(JLModel_Flash *_Nullable model, NSError *_Nullable error))result; +/// 写数据 +/// @param managerM 蓝牙管理器 +/// @param offset 偏移 +/// @param data 写入数据 +/// @param isLast 是否是最后一次 +/// @param result 回调 +- (void)flashWriteData:(JL_ManagerM *)managerM + Offset:(uint32_t)offset + Data:(NSData*)data + isLast:(BOOL)isLast + Result:(void (^)(BOOL success, NSError *error))result; +/// 插入文件 +/// @param managerM 蓝牙管理器 +/// @param fileName 文件名称 +/// @param fileSize 文件大小 +/// @param isLast 是否是最后一次 +/// @param result 回调 +- (void)flashInsertFile:(JL_ManagerM *)managerM + fileName:(NSString *)fileName + fileSize:(uint32_t)fileSize + isLast:(BOOL)isLast + Result:(void (^)(BOOL, NSError * _Nullable error))result; +/// 操作表盘 +/// @param managerM 蓝牙管理器 +/// @param type 操作类型 +/// @param filePath 文件路径 +/// @param result 回调 +- (void)flashDialOperation:(JL_ManagerM *)managerM + type:(FlashDialOperationType)type + filePath:(nullable NSString *)filePath + result:(void (^)(BOOL success, NSData *_Nullable response, NSError *_Nullable error))result; +/// 擦除数据 +/// @param managerM 蓝牙管理器 +/// @param offset 偏移 +/// @param clusterSize 簇大小 +/// @param result 回调 +- (void)flashEraseData:(JL_ManagerM *)managerM + Offset:(uint32_t)offset + ClusterSize:(uint16_t)clusterSize + Result:(void (^)(BOOL success, NSError *_Nullable error))result; + +/// 删除文件 +/// @param managerM 蓝牙管理器 +/// @param filePath 文件路径 +/// @param isStart 是否是最后一次 +/// @param result 回调 +- (void)flashDeleteFile:(JL_ManagerM *)managerM + FilePath:(nullable NSString *)filePath + isStart:(BOOL)isStart + Result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 写保护 +/// @param managerM 蓝牙管理器 +/// @param isEnable 是否启用 +/// @param result 回调 +- (void)flashWriteProtect:(JL_ManagerM *)managerM + isEnable:(BOOL)isEnable + Result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 更新表盘标记 +/// @param managerM 蓝牙管理器 +/// @param isStart 是否开启 +/// @param result 回调 +- (void)flashUpdateWatchFace:(JL_ManagerM *)managerM + isStart:(BOOL)isStart + Result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 查询写入是否成功 版本 0 +/// @param managerM 蓝牙管理器 +/// @param crc16 crc +/// @param result 回调 +- (void)flashCheckWriteSuccessV0:(JL_ManagerM *)managerM + crc16:(uint16_t)crc16 + Result:(void (^)(BOOL success, NSError *_Nullable error))result; + +/// 查询写入是否成功 版本 1 +/// @param managerM 蓝牙管理器 +/// @param crc16 crc +/// @param isSplit 是否分包 +/// @param result 回调 +- (void)flashCheckWriteSuccessV1:(JL_ManagerM *)managerM + crc16:(uint16_t)crc16 + isSplit:(BOOL)isSplit + Result:(void (^)(BOOL success, uint16_t leftSize, NSError *_Nullable error))result; +/// 设置升级资源标志 +/// @param managerM 蓝牙管理器 +/// @param flag flag 0-2 +/// flag 0:结束 +/// flag 1:开始 +/// flag 2:特殊升级流程开启 +/// @param result 回调 +- (void)flashSetUpgradeFlag:(JL_ManagerM *)managerM + flag:(uint8_t)flag + result:(void (^)(BOOL success, NSError *_Nullable error))result; +/// 获取文件信息 +/// @param managerM 蓝牙管理器 +/// @param filePath 文件路径 +/// @param result 回调 +- (void)flashGetFileInfo:(JL_ManagerM *)managerM + filePath:(NSString *)filePath + result:(void (^)(uint32_t size, uint16_t crc16, NSError *_Nullable error))result; + +/// 获取 Flash 剩余空间 +/// @param managerM 蓝牙管理器 +/// @param result 回调 +- (void)flashGetRemainingSpace:(JL_ManagerM *)managerM + result:(void (^)(uint32_t clusterLeftNum, NSError *_Nullable error))result; +/// 还原系统 +/// @param managerM 蓝牙管理器 +/// @param result 回调 +- (void)flashRestoreSystem:(JL_ManagerM *)managerM + result:(void (^)(BOOL success, NSError *_Nullable error))result; + +/// 获取资源存储空间 +/// @param managerM 蓝牙管理器 +/// @param result 回调 +- (void)flashGetResourceSpace:(JL_ManagerM *)managerM + result:(void (^)(uint32_t resSpace, NSError *_Nullable error))result; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLHttpHelper.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLHttpHelper.h new file mode 100644 index 000000000..765483722 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLHttpHelper.h @@ -0,0 +1,24 @@ +// +// HttpHelper.h +// JL_BLEKit +// +// Created by EzioChan on 2022/7/2. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import + +typedef void(^JLHttpDataCbk)(NSData * _Nullable data); +NS_ASSUME_NONNULL_BEGIN + +@interface JLHttpHelper : NSObject + ++(instancetype)share; + +-(void)dataTask:(NSURL *)url Result:(JLHttpDataCbk)result; + +-(NSData *)dataTaskSync:(NSURL *)url; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelCardInfo.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelCardInfo.h new file mode 100644 index 000000000..2377846ae --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelCardInfo.h @@ -0,0 +1,109 @@ +// +// JLModelCardInfo.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLCardInfo : NSObject + +/// 存储类型 +/// 0x00 USB +/// 0x01 SD0 +/// 0x02 SD1 +/// 0x03 flash +/// 0x04 lineIn +/// 0x05 flash2 +/// 0x06 flash3 +/// 0x07 ReservedArea +@property(nonatomic,assign)uint8_t type; + +/// 是否在线 +@property(nonatomic,assign)BOOL isOnline; + +/// 文件句柄 +@property(nonatomic,copy)NSData *handle; + +@end + +/// 存储卡信息 +@interface JLModelCardInfo:NSObject + +/// 版本信息 +@property(nonatomic,assign)uint8_t version; + +/// 存储卡在线数组 +@property(nonatomic,strong,readonly)NSArray *cardArray; + +/// USB 在线状态 +@property (nonatomic, assign) BOOL usbOnline; + +/// SD0 在线状态 +@property (nonatomic, assign) BOOL sd0Online; + +/// SD1 在线状态 +@property (nonatomic, assign) BOOL sd1Online; + +/// lineIn 在线状态 +@property (nonatomic, assign) BOOL lineInOnline; + +/// flash 在线状态 +@property (nonatomic, assign) BOOL flashOnline; + +/// flash 2 在线状态 +@property (nonatomic, assign) BOOL flash2Online; + +/// flash 3 在线状态 +@property (nonatomic, assign) BOOL flash3Online; + +/// ReservedArea 在线状态 +@property (nonatomic, assign) BOOL reservedAreaOnline; + +/// 是否处于设备复用状态 +@property (nonatomic, assign) BOOL isComplex; + +/// USB 句柄 +@property (nonatomic, copy)NSData *usbHandle; + +/// SD0 句柄 +@property (nonatomic, copy)NSData *sd0Handle; + +/// SD1 句柄 +@property (nonatomic, copy)NSData *sd1Handle; + +/// flash 句柄 +@property (nonatomic, copy)NSData *flashHandle; + +/// flash2 句柄 +@property (nonatomic, copy)NSData *flash2Handle; + +/// flash3 句柄 +@property (nonatomic, copy)NSData *flash3Handle; + +/// ReservedArea 句柄 +@property (nonatomic, copy)NSData *reservedAreaHandle; + +/// 卡在线数组信息 +@property (nonatomic, strong)NSArray *cardInfos; + +-(instancetype)initData:(NSData *)data; + +/// 是否具备存储卡在线 +-(BOOL)hasStorageCard; + +/// 获取存储卡句柄 +/// - Parameter cardType: 存储卡类型 +-(NSData *_Nullable)getCardHandle:(JL_CardType)cardType; + +@end + + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelDevFunc.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelDevFunc.h new file mode 100644 index 000000000..c57d0ed32 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelDevFunc.h @@ -0,0 +1,70 @@ +// +// JLModelDevFunc.h +// JL_BLEKit +// +// Created by EzioChan on 2023/11/29. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModelDevFunc : NSObject + +/// 当前模式 +/// 0x16代表低功耗模式) +@property (nonatomic, assign) uint8_t currentModel; + +/// 设备是否支持蓝牙(EDR) +@property (nonatomic, assign) BOOL isSupportEDR; + +/// 设备是否支持音乐模式 +@property (nonatomic, assign) BOOL isSupportDevMusic; + +/// 设备是否支持 RTC +@property (nonatomic, assign) BOOL isSupportDevRTC; + +/// 设备是否支持 LineIn +@property (nonatomic, assign) BOOL isSupportDevLineIn; + +/// 设备是否支持 FM +@property (nonatomic, assign) BOOL isSupportDevFm; + +/// 设备是否支持氛围灯 +@property (nonatomic, assign) BOOL isSupportDevLight; + +/// 设备是否支持 FMTX +@property (nonatomic, assign) BOOL isSupportDevFMTX; + +/// 设备是否支持 EQ +@property (nonatomic, assign) BOOL isSupportDevEQ; + +/// 设备是否支持 SPDIF +@property (nonatomic, assign, readonly) BOOL isSupportSPDIF; + +/// 设备是否支持 PC Server +@property (nonatomic, assign, readonly) BOOL isSupportPCServer; + +/// 是否显示不在线的usb 、sd、linein功能 +@property (nonatomic, assign) BOOL isShowOfflineFunc; + +/// 设备是否持有 USB +@property (nonatomic, assign) BOOL isSupportUSB; + +/// 设备是否持有 SD0 +@property (nonatomic, assign) BOOL isSupportSD0; + +/// 设备是否持有 SD1 +@property (nonatomic, assign) BOOL isSupportSD1; + +/// 设备是否支持网络电台 +@property (nonatomic, assign) BOOL isSupportNetRadio; + +-(instancetype)initWithData:(NSData *)data; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h new file mode 100644 index 000000000..5b61f6797 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelNoiseDetection.h @@ -0,0 +1,49 @@ +// +// JLModelNoiseDetection.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLModelNoiseDetection; + +@protocol JLModelNoiseDetectionDelegate + +-(void)noiseDetectionGetInfo:(JLModelNoiseDetection *)model; + +@end + +typedef void(^JLModelNoiseDetectionBlock)(JLModelNoiseDetection *model); + +/// TWS风噪检测 +@interface JLModelNoiseDetection : JLCmdBasic + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 风噪检测: +/// 0x00:关闭 +/// 0x01:开启 +@property(nonatomic,assign)uint8_t status; + +@property(nonatomic,weak)id delegate; + +/// 获取设备风噪检测 +/// - Parameter manager: 设备对象 +-(void)noiseDetectionStatusGet:(JL_ManagerM *)manager Result:(JLModelNoiseDetectionBlock)block; + +/// 设置设备风噪检测 +/// - Parameters: +/// - manager: 设备对象 +/// - status: 开关 +/// - result:回调 +-(void)noiseDetectionStatusSet:(JL_ManagerM *)manager Status:(uint8_t)status Result:(JL_CMD_RESPOND)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelPCServer.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelPCServer.h new file mode 100644 index 000000000..81ba71421 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelPCServer.h @@ -0,0 +1,39 @@ +// +// JLModelPCServer.h +// JL_BLEKit +// +// Created by EzioChan on 2024/10/15. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, JLPcServerOpType) { + /// previous song + /// 上一首 + JLPcServerOpTypePrevious = 0x00, + /// next song + /// 下一首 + JLPcServerOpTypeNext = 0x01, +}; + +/// PC 从机模式 +@interface JLModelPCServer : NSObject + +/// 是否正在播放 +@property(nonatomic,assign)BOOL playStatus; + +/// 操作类型 +@property(nonatomic,assign)JLPcServerOpType opType; + +-(instancetype)initParseData:(NSData *)data; + +/// 更新 +/// - Parameter data: 数据 +- (void)updateParseData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h new file mode 100644 index 000000000..80963a2ee --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSceneNoiseReduction.h @@ -0,0 +1,51 @@ +// +// JLModelSceneNoiseReduction.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLModelSceneNoiseReduction; + +@protocol JLModelSceneNoiseReductionDelegate + +-(void)sceneNoiseReductionGetInfo:(JLModelSceneNoiseReduction *)model; + +@end + +typedef void(^JLSceneNoiseReductionBlock)(JLModelSceneNoiseReduction *model); + +/// TWS场景降噪 +@interface JLModelSceneNoiseReduction : JLCmdBasic + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 场景降噪模式: +/// 0x00:智能 +/// 0x01:轻度 +/// 0x02:均衡 +/// 0x03:深度 +@property(nonatomic,assign)uint8_t scene; + +@property(nonatomic,weak)id delegate; + +/// 获取设备场景降噪 +/// - Parameter manager: 设备对象 +-(void)sceneNoiseStatusGet:(JL_ManagerM *)manager Result:(JLSceneNoiseReductionBlock)block; + +/// 设置设备场景降噪 +/// - Parameters: +/// - manager: 设备对象 +/// - scene: 场景降噪 +/// - result:回调 +-(void)sceneNoiseStatusSet:(JL_ManagerM *)manager Scene:(uint8_t)scene Result:(JL_CMD_RESPOND)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h new file mode 100644 index 000000000..cc0c0c24c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSmartPickFree.h @@ -0,0 +1,93 @@ +// +// JLModelSmartPickFree.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/12. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JLModelSmartPickFree; + +@protocol JLModelSmartPickFreeDelegate + +-(void)smartPickFreeGetInfo:(JLModelSmartPickFree *)model; + +@end + +/// 智能免摘的耳机管理类 +@interface JLModelSmartPickFree : NSObject + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 功能类型 +/// 0x00:仅设置开关 +/// 0x01:仅设置灵敏度 +/// 0x02:仅设置启动后关闭时间 +/// 0xff:仅获取全部参数 +@property(nonatomic,assign)uint8_t funcType; + +/// 功能开关 +/// 当功能类型 funcType 为 0x00 时此属性需要对应设置 +/// 当功能类型 funcType 为 0xFF 时此属性为设备端功能开关状态 +@property(nonatomic,assign)BOOL funcStatus; + +/// 灵敏度 +/// 当功能类型 funcType 为 0x01 时此属性需要对应设置 +/// 当功能类型 funcType 为 0xFF 时此属性为设备端灵敏度 +/// 0x00:高灵敏度 +/// 0x01:低灵敏度 +@property(nonatomic,assign)uint8_t senivitiy; + +///启动后关闭时间 +///当功能类型 funcType 为 0x02 时此属性需要对应设置的时间 +///当功能类型 funcType 为 0xFF 时此属性为设备端启动后关闭时间 +///0x00:不自动关闭; +///0x01:短(5s); +///0x02:标准(15s); +///0x03:长(30s); +@property(nonatomic,assign)uint8_t autoInterval; + + +@property(nonatomic,weak)id delegate; + +/// 设置智能免摘功能开关 +/// - Parameters: +/// - manager: 设备对象 +/// - status: 开关 +/// - result: 结果回调 +-(void)smartPickFreeSetOn:(JL_ManagerM *)manager st:(BOOL)status Result:(JL_CMD_RESPOND)result; + +/// 设置智能免摘灵敏度 +/// - Parameters: +/// - manager: 设备对象 +/// - senivitiy: 灵敏度 +/// 0x00:高灵敏度 +/// 0x01:低灵敏度 +/// - result: 结果回调 +-(void)smartPickFreeSetSenivitiy:(JL_ManagerM *)manager Senivitiy:(uint8_t)senivitiy Result:(JL_CMD_RESPOND)result; + +/// 设置智能免摘启动后关闭时间 +/// - Parameters: +/// - manager: 设备对象 +/// - interval: 启动后关闭时间 +/// 0x01:短(5s); +/// 0x02:标准(15s); +/// 0x03:长(30s); +/// - result: 结果回调 +-(void)smartPickFreeSetAutoInterval:(JL_ManagerM *)manager Interval:(uint8_t)interval Result:(JL_CMD_RESPOND)result; + + +/// 查询设备状态 +/// - Parameter manager: 设备对象 +-(void)smartPickFreeGet:(JL_ManagerM *)manager; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSpdif.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSpdif.h new file mode 100644 index 000000000..da4007b33 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelSpdif.h @@ -0,0 +1,38 @@ +// +// JLModelSpdif.h +// JL_BLEKit +// +// Created by EzioChan on 2024/10/15. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, JLSpdifAudioType) { + /// HDMI + JLSpdifAudioTypeHDMI = 0x00, + /// 光纤 Fiber Optics + JLSpdifAudioTypeFO = 0x01, + /// 同轴 + JLSpdifAudioTypeCoaxial = 0x02, +}; + +@interface JLModelSpdif : NSObject + +/// 是否正在播放 +@property(nonatomic,assign)BOOL playStatus; + +/// 音源 +@property(nonatomic,assign)JLSpdifAudioType audioType; + +-(instancetype)initParseData:(NSData *)data; + +/// 更新数据 +/// - Parameter data: 数据 +-(void)updateParseData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelVocalBoost.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelVocalBoost.h new file mode 100644 index 000000000..0a64173cd --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModelVocalBoost.h @@ -0,0 +1,54 @@ +// +// JLModelVocalBoost.h +// JL_BLEKit +// +// Created by EzioChan on 2023/9/13. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@class JLModelVocalBoost; + +@protocol JLModelVocalBoostDelegate + +-(void)vocalBoostGetInfo:(JLModelVocalBoost *)model; + +@end + +typedef void(^JLModelVocalBoostBlock)(JLModelVocalBoost *model); + + +/// TWS人声增强 +@interface JLModelVocalBoost : JLCmdBasic + +/// 版本号 +@property(nonatomic,assign)uint8_t version; + +/// 人声增强: +/// 0x00: 关闭人声增强模式; +/// 0x01: 开启人声增强模式 +@property(nonatomic,assign)uint8_t status; + +@property(nonatomic,weak)id delegate; + +/// 获取设备人声增强 +/// - Parameter manager: 设备对象 +-(void)vocalBoostStatusGet:(JL_ManagerM *)manager Result:(JLModelVocalBoostBlock)block; + +/// 设置设备人声增强 +/// - Parameters: +/// - manager: 设备对象 +/// - status: 开关 +/// 0x00: 关闭人声增强模式; +/// 0x01: 开启人声增强模式 +/// - result:回调 +-(void)vocalBoostStatusSet:(JL_ManagerM *)manager Status:(uint8_t)status Result:(JL_CMD_RESPOND)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_ANC.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_ANC.h new file mode 100644 index 000000000..7b586e92a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_ANC.h @@ -0,0 +1,47 @@ +// +// JLModel_ANC.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8,JL_AncMode) { + JL_AncMode_Normal = 0, //普通模式 + JL_AncMode_NoiseReduction = 1, //降噪模式 + JL_AncMode_Transparent = 2, //通透模式 +}; + +@interface JLModel_ANC : NSObject +@property(assign,nonatomic)JL_AncMode mAncMode; //耳机降噪模式 +@property(assign,nonatomic) uint16_t mAncMax_L; //左耳最大增益 +@property(assign,nonatomic) uint16_t mAncCurrent_L; //左耳当前增益 +@property(assign,nonatomic) uint16_t mAncMax_R; //右耳最大增益 +@property(assign,nonatomic) uint16_t mAncCurrent_R; //右耳当前增益 +-(NSData*)dataModel; +@end + + + +/// 手机名/经典蓝牙地址信息 +@interface JLTWSAddrNameInfo : NSObject + +/// 是否被绑定 +@property(nonatomic,assign)uint8_t isBind; + +/// 手机蓝牙地址 +@property(nonatomic,strong)NSData *phoneEdrAddr; + +/// 手机名称 +@property(nonatomic,strong)NSString *phoneName; + +/// 初始化数据成对象 +/// - Parameter data: 数据内容 ++(NSArray*)dataBeObjc:(NSData *)data; + +@end +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h new file mode 100644 index 000000000..a4b6f8535 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_AlarmSetting.h @@ -0,0 +1,24 @@ +// +// JLModel_AlarmSetting.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_AlarmSetting : NSObject +@property(assign,nonatomic)uint8_t index; //闹钟索引 +@property(assign,nonatomic)uint8_t isCount; //是否可以设置【闹铃次数】 +@property(assign,nonatomic)uint8_t count; //闹铃次数 +@property(assign,nonatomic)uint8_t isInterval; //是否可以设置【时间间隔】 +@property(assign,nonatomic)uint8_t interval; //时间间隔 +@property(assign,nonatomic)uint8_t isTime; //是否可以设置【时间长度】 +@property(assign,nonatomic)uint8_t time; //时间长度 +-(NSData*)dataModel; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_BT.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_BT.h new file mode 100644 index 000000000..86b4a4098 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_BT.h @@ -0,0 +1,20 @@ +// +// JLModel_BT.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_BT : NSObject +@property(assign,nonatomic)uint32_t mBtType; +@property(strong,nonatomic)NSData *__nullable mBtAddress; +@property(assign,nonatomic)uint8_t mBtRssi; +@property(strong,nonatomic)NSString *__nullable mBtName; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Device.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Device.h new file mode 100644 index 000000000..d3af4edfe --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Device.h @@ -0,0 +1,643 @@ +// +// JLModel_Device.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Modify by EzioChan on 2023/03/16 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_DevicePlatform) { + JL_DevicePlatformTuring = 0, //适用于【图灵】 + JL_DevicePlatformDeepbrain = 1, //适用于【Deepbrain】 + JL_DevicePlatformUnknown, +}; +typedef NS_ENUM(UInt8, JL_SDKType) { + JL_SDKTypeAI = 0x0, //AI SDK AC692x + JL_SDKTypeST = 0x1, //标准 SDK AC692x + JL_SDKType693xTWS = 0x2, //TWS + JL_SDKType695xSDK = 0x3, // + JL_SDKType697xTWS = 0x4, //TWS + JL_SDKType696xSB = 0x5, //696x_soundbox + JL_SDKType696xTWS = 0x6, //TWS + JL_SDKType695xSC = 0x7, //695x_sound_card + JL_SDKType695xWATCH = 0x8, //BR23 Watch + JL_SDKType701xWATCH = 0x9, //BR28 Watch + JL_SDKTypeManifestEarphone = 0x0A, //ManifestEarphone + JL_SDKTypeManifestSoundbox = 0x0B, //ManifestSoundbox + JL_SDKTypeChargingCase = 0x0C, //ChargingCase 彩屏充电仓 + JL_SDKType707nWATCH = 0x0D, //707N Watch + JL_SDKTypeDongle = 0x0E, //Dongle + JL_SDKTypeCommon = 0x0F, //通用 + JL_SDKTypeUnknown, +}; +typedef NS_ENUM(UInt8, JL_FunctionCode) { + JL_FunctionCodeBT = 0, //BT + JL_FunctionCodeMUSIC = 1, //音乐 + JL_FunctionCodeRTC = 2, //闹钟 + JL_FunctionCodeLINEIN = 3, //LineIn + JL_FunctionCodeFM = 4, //FM + JL_FunctionCodeLIGHT = 5, //LIGHT + JL_FunctionCodeFMTX = 6, //发射频点 + JL_FunctionCodeEQ = 7, //EQ + JL_FunctionCodeSPDIF = 8, //SPDIF + JL_FunctionCodePCServer = 9, //PCServer + JL_FunctionCodeCOMMON = 0xff, //通用 +}; + +typedef NS_ENUM(UInt8, JL_FCmdMusic) { + JL_FCmdMusicPP = 0x01, //PP按钮 + JL_FCmdMusicPREV = 0x02, //上一曲 + JL_FCmdMusicNEXT = 0x03, //下一曲 + JL_FCmdMusicMODE = 0x04, //切换播放模式 + JL_FCmdMusicEQ = 0x05, //EQ + JL_FCmdMusicFastBack = 0x06, //快退 + JL_FCmdMusicFastPlay = 0x07, //快进 +}; + +typedef NS_ENUM(UInt8, JL_OtaBleAllowConnect) { + JL_OtaBleAllowConnectYES = 0, //OTA 允许BLE连接 + JL_OtaBleAllowConnectNO = 1, //OTA 禁止BLE连接 + JL_OtaBleAllowConnectUnknow = 2, //未定义 +}; +typedef NS_ENUM(UInt8, JL_BLEOnly) { //是否仅仅支持BLE + JL_BLEOnlyNO = 0, //否 + JL_BLEOnlyYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_FasheEnable) { //是否发射模式 + JL_FasheEnableNO = 0, //否 + JL_FasheEnableYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_FasheType) { //当前是否为发射模式 + JL_FasheTypeNO = 0, //否 + JL_FasheTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_MD5Type) { //是否支持MD5校验 + JL_MD5TypeNO = 0, //否 + JL_MD5TypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_GameType) { //是否为游戏模式 + JL_GameTypeNO = 0, //否 + JL_GameTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_SearchType) { //是否支持查找设备 + JL_SearchTypeNO = 0, //否 + JL_SearchTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_KaraokeType) { //是否支持卡拉OK + JL_KaraokeTypeNO = 0, //否 + JL_KaraokeTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8,JL_KaraokeEQType){ //是否禁止app调节设备音效 + JL_KaraokeEQTypeNO = 0, //不禁止 + JL_KaraokeEQTypeYES = 1, //禁止 +}; +typedef NS_ENUM(UInt8,JL_FlashType){ //是否支持外挂Flash + JL_FlashTypeNO = 0, //不支持 + JL_FlashTypeYES = 1, //支持 +}; +typedef NS_ENUM(UInt8,JL_AncType){ //是否支持ANC + JL_AncTypeNO = 0, //不支持 + JL_AncTypeYES = 1, //支持 +}; +typedef NS_ENUM(UInt8, JL_AudioFileType) { //是否支持音频文件传输 + JL_AudioFileTypeNO = 0, //否 + JL_AudioFileTypeYES = 1, //是 +}; +typedef NS_ENUM(UInt8, JL_FileSubcontractTransferCrc16Type){//文件分包传输是否支持crc16方式 + JL_FileSubcontractTransferCrc16TypeNO = 0, //不支持 + JL_FileSubcontractTransferCrc16TypeYES = 1, //支持 +}; +typedef NS_ENUM(UInt8, JL_ReadFileInNewWayType){ //是否以新的方式读取固件文件 + JL_ReadFileInNewWayTypeNO = 0, //不支持 + JL_ReadFileInNewWayTypeYES = 1, //支持 +}; + +typedef NS_ENUM(UInt8, JL_SmallFileWayType){ //是否支持小文件传输 + JL_SmallFileWayTypeNO = 0, //不支持 + JL_SmallFileWayTypeYES = 1, //支持 +}; + +typedef NS_ENUM(UInt8,JL_CALLType) { + JL_CALLType_OFF = 0, //空闲 + JL_CALLType_ON = 1, //通话中 +}; + +typedef NS_ENUM(UInt8, JL_LightState) { + JL_LightStateClose = 0x00, //关闭 + JL_LightStateOpen = 0x01, //开启 + JL_LightStateSetting = 0x02, //设置模式 +}; +typedef NS_ENUM(UInt8, JL_LightMode) { + JL_LightModeNormal = 0x00, //彩色模式 + JL_LightModeFlash = 0x01, //闪烁模式 + JL_LightModeScene = 0x02, //情景模式 +}; +typedef NS_ENUM(UInt8, JL_LightFlashModeIndex) { + JL_LightModeIndexColorfulFlash = 0x00, //七彩闪烁 + JL_LightModeIndexRedFlash = 0x01, //红色闪烁 + JL_LightModeIndexOrangeFlash = 0x02, //橙色闪烁 + JL_LightModeIndexYeallowFlash = 0x03, //黄色闪烁 + JL_LightModeIndexGreenFlash = 0x04, //绿色闪烁 + JL_LightModeIndexCyanFlash = 0x05, //青色闪烁 + JL_LightModeIndexBlueFlash = 0x06, //蓝色闪烁 + JL_LightModeIndexPurpleFlash = 0x07, //紫色闪烁 +}; + +typedef NS_ENUM(UInt8, JL_LightFlashModeFrequency) { + JL_LightFlashModeFrequencyFast = 0x00, //快闪 + JL_LightFlashModeFrequencySlow = 0x01, //慢闪 + JL_LightFlashModeFrequencyNormal = 0x02, //缓闪 + JL_LightFlashModeFrequencyMusic = 0x03, //音乐闪烁 +}; + +typedef NS_ENUM(UInt8, JL_LightSceneMode) { + JL_LightSceneModeRainbow = 0x00, //彩虹 + JL_LightSceneModeHeartbeat = 0x01, //心跳 + JL_LightSceneModeCandlelight = 0x02, //烛火 + JL_LightSceneModeNightLight = 0x03, //夜灯 + JL_LightSceneModeStage = 0x04, //舞台 + JL_LightSceneModeDiffuseColourBreathing = 0x05, //漫彩呼吸 + JL_LightSceneModeDiffuseRedBreathing = 0x06, //漫红呼吸 + JL_LightSceneModeDiffuseGreenBreathing = 0x07, //漫绿呼吸 + JL_LightSceneModeDiffuseBlueBreathing = 0x08, //漫蓝呼吸 + JL_LightSceneModeGreenMood = 0x09, //绿色心情 + JL_LightSceneModeSettingSunView = 0x10, //夕阳美景 + JL_LightSceneModeMusicRhythm = 0x11, //音乐律动 +}; + +typedef NS_ENUM(UInt8, JL_FileHandleType) { //文件句柄 + JL_FileHandleTypeSD_0 = 0, //SD_0 + JL_FileHandleTypeSD_1 = 1, //SD_1 + JL_FileHandleTypeFLASH = 2, //FLASH + JL_FileHandleTypeUSB = 3, //USB + JL_FileHandleTypeLineIn = 4, //LineIn + JL_FileHandleTypeFLASH2 = 5, //FLASH2 + JL_FileHandleTypeFLASH3 = 6, //FLASH3 + JL_FileHandleTypeReservedArea = 7, //ReservedArea +}; + +typedef NS_ENUM(UInt8, JL_MusicMode) { + JL_MusicModeLoopAll = 0x01, //全部循环 + JL_MusicModeLoopDevice = 0x02, //单设备循环 + JL_MusicModeLoopOne = 0x03, //单曲循环 + JL_MusicModeRandomDevice = 0x04, //单设备随机 + JL_MusicModeLoopFolder = 0x05, //文件夹循环 +}; + +typedef NS_ENUM(UInt8, JL_MusicStatus) { + JL_MusicStatusPlay = 0x01, //播放 + JL_MusicStatusPause = 0x00, //暂停 +}; + +typedef NS_ENUM(UInt8, JL_EQType) { //EQ段数类型 + JL_EQType10 = 0, //固定10段式 + JL_EQTypeMutable = 1, //动态EQ段 +}; + +//---------------------------------------------------------// +#pragma mark - RTC +typedef NS_ENUM(UInt8, JL_RTCAlarmType) { //是否支持闹铃设置 + JL_RTCAlarmTypeNO = 0, //不支持 + JL_RTCAlarmTypeYES = 1, //支持 +}; +//---------------------------------------------------------// +#pragma mark - LINEIN +typedef NS_ENUM(UInt8, JL_LineInStatus) { + JL_LineInStatusPause = 0x00, //暂停 + JL_LineInStatusPlay = 0x01, //播放 + JL_LineInStatusUnknown, +}; +//---------------------------------------------------------// +#pragma mark - FM +typedef NS_ENUM(UInt8, JL_FMStatus) { + JL_FMStatusPause = 0x01, //播放 + JL_FMStatusPlay = 0x02, //暂停 + JL_FMStatusSearching = 0x03, //搜索中 + JL_FMStatusUnknown, +}; +typedef NS_ENUM(UInt8, JL_FMMode) { + JL_FMMode875Mhz = 0x00, //87.5-108.0Mhz + JL_FMMode760Mhz = 0x01, //76.5-108.0Mhz + JL_FMModeUnknown, +}; + +typedef NS_ENUM(UInt8,JL_ReverberationType) { + JL_ReverberationTypeNormal = 0, //混响 + JL_ReverberationTypeDynamic = 1, //限幅器 +}; + + +@interface JLModel_Device : NSObject + +///设备UUID +@property (copy, nonatomic) NSString *mBLE_UUID; + +///协议版本 +@property (copy, nonatomic) NSString *versionProtocol; + +///固件版本 +@property (copy, nonatomic) NSString *versionFirmware; + +/// 单包固件最大发送值,APP单次能收到最大的值 +@property (assign,nonatomic) NSInteger getMtu; + +/// 单包固件最大接收值(MaxMtu)APP单次可发送最大值 +@property (assign,nonatomic) NSInteger sendMtu; + +///SDK类型 +@property (assign,nonatomic) JL_SDKType sdkType; + +///电量0~9 +@property (assign,nonatomic) NSUInteger battery; + +/// 是否支持音量同步 +@property (assign,nonatomic) BOOL isSyncVoice; + +/// 最低允许升级资源/OTA电量 +@property (assign,nonatomic) NSInteger lowBattery; + +///当前音量 +@property (assign,nonatomic) NSUInteger currentVol; + +///最大音量 +@property (assign,nonatomic) NSUInteger maxVol; + +///经典蓝牙地址 +@property (copy, nonatomic) NSString *btAddr; + +///平台序列号 +@property (copy, nonatomic) NSString *license; + +///平台类型(图灵,Deepbrain) +@property (assign,nonatomic) JL_DevicePlatform platform; + +///经典蓝牙状态 +@property (assign,nonatomic) JL_DeviceBTStatus btStatus; + +///BIT(0):BT BIT(1):MUSIC BIT(2):RTC +@property (assign,nonatomic) uint32_t function __deprecated_msg("已过时,可使用deviceFuncs"); + +///当前处于的模式 +@property (assign,nonatomic) JL_FunctionCode currentFunc; + +///USb,SD,LineIn,网络电台是否在线 +@property (assign,nonatomic) uint8_t funcOnlineStatus; + +/// 设备功能模式支持 +@property (strong,nonatomic) JLModelDevFunc *deviceFuncs; + +///uboot版本 +@property (copy, nonatomic) NSString *versionUBoot; + +///设备单、双备份 +@property (assign,nonatomic) JL_Partition partitionType __deprecated_msg("已过时,可使用JL_OTAManager"); + + +/// 是否支持复用空间进行 OTA +@property (assign,nonatomic) BOOL isSupportReuseSpaceOTA __deprecated_msg("已过时,可使用JL_OTAManager"); + + +///OTA状态 +@property (assign,nonatomic) JL_OtaStatus otaStatus __deprecated_msg("已过时,可使用JL_OTAManager"); + +///耳机单备份 是否需要强制升级 +@property (assign,nonatomic) JL_OtaHeadset otaHeadset __deprecated_msg("已过时,可使用JL_OTAManager"); + +///手表资源 是否需要强制升级 +@property (assign,nonatomic) JL_OtaWatch otaWatch __deprecated_msg("已过时,可使用JL_OTAManager"); + +///资源是否需要强制升级 +@property (assign,nonatomic) JLOtaSourcesExtendMode otaSourceMode __deprecated_msg("已过时,可使用JL_OTAManager"); + + +///厂商ID +@property (copy, nonatomic) NSString *pidvid; + +///授权Key +@property (copy, nonatomic) NSString *authKey; + +///授权Code +@property (copy, nonatomic) NSString *proCode; + +///是否下载BootLoader +@property (assign,nonatomic) JL_BootLoader bootLoaderType; + +///OTA是否允许BLE连接 +@property (assign,nonatomic) JL_OtaBleAllowConnect otaBleAllowConnect; + +///是否仅仅支持BLE +@property (assign,nonatomic) JL_BLEOnly bleOnly; + +///ble蓝牙地址 +@property (copy, nonatomic) NSString *bleAddr; + +///是否支持发射模式 +@property (assign,nonatomic) JL_FasheEnable fasheEnable; + +///当前是否为发射模式 +@property (assign,nonatomic) JL_FasheType fasheType; + +///是否支持MD5固件校验 +@property (assign,nonatomic) JL_MD5Type md5Type; + +///是否为游戏模式 +@property (assign,nonatomic) JL_GameType gameType; + +///是否支持游戏模式 +@property (assign,nonatomic) BOOL isSupportGameModel; + +///是否支持查找设备 +@property (assign,nonatomic) JL_SearchType searchType; + +///是否支持卡拉OK +@property (assign,nonatomic) JL_KaraokeType karaokeType; + +///是否禁止app调节设备音效 +@property (assign,nonatomic) JL_KaraokeEQType karaokeEQType; + +///是否外挂flash +@property (assign,nonatomic) JL_FlashType flashType; + +///是否支持ANC +@property (assign,nonatomic) JL_AncType ancType; + +///是否支持音频文件传输功能 +@property (assign,nonatomic) JL_AudioFileType audioFileType; + +/// 是否支持日志获取 +@property (assign,nonatomic) BOOL isSupportLog; + +/// 是否支持辅听设置 +@property (assign,nonatomic) BOOL isSupportDhaFitting; + +///验配信息交互:版本、通道数、通道频率 +///Fitting information interaction: version, channel number, channel frequency +@property (strong,nonatomic) DhaFittingInfo *dhaFitInfo; + +/// 验配中断/开启的对象,仅限于监听 +/// Fitting interrupted/opened object, only for listening +@property (strong,nonatomic) DhaFittingSwitch *dhaFitSwitch; + +/// 通道增益值数组,先左耳后右耳,个数和验配信息中返回的一致 +/// Array of channel gain values, first left ear then right ear, the number is the same as the one returned in the fitting information +@property (strong,nonatomic) NSArray *dhaFittingList; + +/// 是否支持获取设备配置信息 +@property (assign,nonatomic) BOOL isSupportDevConfigInfo; + +/// 是否支持自适应ANC +@property (assign,nonatomic) BOOL isSupportAutoANC; + +///低音 +@property (assign,nonatomic) int pitchLow; + +///高音 +@property (assign,nonatomic) int pitchHigh; + +///外挂flash信息 +@property (copy, nonatomic) JLModel_Flash *flashInfo; + +/// 设备信息中指明,外部SD卡/U盘引脚是否被复用 +/// Specify in the device information, whether the external SD card/U disk pins are multiplexed +@property (assign,nonatomic) BOOL devPinMultiplex; + + +/*--- File INFO ---*/ +///当前文件传输句柄 +@property (assign,nonatomic) JL_FileHandleType currentFileHandleType; +///当前文件所存放的位置 +@property (assign,nonatomic,readonly) JL_CardType currentCardType; +///文件分包传输是否支持crc16方式 +@property (assign,nonatomic) JL_FileSubcontractTransferCrc16Type fileSubcontractTransferCrc16Type; +///是否以新的方式读取固件文件 +@property (assign,nonatomic) JL_ReadFileInNewWayType readFileInNewWayType; +///是否小文件方式传输 +@property (assign,nonatomic) JL_SmallFileWayType smallFileWayType; + +/*--- 公用INFO ---*/ +//MARK: - 存储信息 +///卡的数组 +@property (copy, nonatomic) NSArray *cardArray __attribute__((deprecated ( "Use the instance property cardArray of the JLModelCardInfo class instead, this property is about to become invalid"))); +///USB handle +@property (copy, nonatomic) NSString *handleUSB __attribute__((deprecated ( "Use the instance property usbHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_0 handle +@property (copy, nonatomic) NSString *handleSD_0 __attribute__((deprecated ( "Use the instance property sd0Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_1 handle +@property (copy, nonatomic) NSString *handleSD_1 __attribute__((deprecated ( "Use the instance property sd1Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash handle +@property (copy, nonatomic) NSString *handleFlash __attribute__((deprecated ( "Use the instance property flashHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash2 handle +@property (copy, nonatomic) NSString *handleFlash2 __attribute__((deprecated ( "Use the instance property flash2Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +///Flash3 handle +@property (copy, nonatomic) NSString *handleFlash3 __attribute__((deprecated ( "Use the instance property flash3Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +///USB handle Data +@property (copy, nonatomic) NSData *handleUSBData __attribute__((deprecated ( "Use the instance property usbHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_0 handle Data +@property (copy, nonatomic) NSData *handleSD_0Data __attribute__((deprecated ( "Use the instance property sd0Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///SD_1 handle Data +@property (copy, nonatomic) NSData *handleSD_1Data __attribute__((deprecated ( "Use the instance property sd1Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash handle Data +@property (copy, nonatomic) NSData *handleFlashData __attribute__((deprecated ( "Use the instance property flashHandle of the JLModelCardInfo class instead, this property is about to become invalid"))); +///Flash2 handle Data +@property (copy, nonatomic) NSData *handleFlash2Data __attribute__((deprecated ( "Use the instance property flash2Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +///Flash3 handle Data +@property (copy, nonatomic) NSData *handleFlash3Data __attribute__((deprecated ( "Use the instance property flash3Handle of the JLModelCardInfo class instead, this property is about to become invalid"))); + +/// 设备存储信息(卡信息) +@property (strong, nonatomic)JLModelCardInfo *cardInfo; + +/// 错误原因 +@property (copy, nonatomic) NSString *errReason; + +/// 发射频点 +@property (assign,nonatomic) uint16_t fmtxPoint; +/// 0x00:普通模式 0x01:发射模式 +@property (assign,nonatomic) uint8_t mTWS_Mode; +/// 0x00:未连接 0x01:已连接 +@property (assign,nonatomic) uint8_t mTWS_Status; +/// 发射模式中,连接的外设地址 +@property (copy ,nonatomic) NSString *mTWS_Addr; +/// 当前ANC的模式 +@property (copy ,nonatomic) JLModel_ANC *mAncModeCurrent; +/// ANC模式数组 +@property (copy ,nonatomic) NSMutableArray *mAncModeArray; +///通话状态 +@property (assign,nonatomic) JL_CALLType mCallType; + +/// 混响所支持的类型 +@property (strong,nonatomic) NSArray *reverberationTypes; +/// 混响的开关 +@property (assign,nonatomic) int reverberationSwitchState; +/// 深度值 +@property (assign,nonatomic) int depthValue; +/// 混响度值 +@property (assign,nonatomic) int intensityValue; +/// 混响幅值 +@property (assign,nonatomic) int dynamicLimiterValue; + +//MARK: - 卡拉OK +///卡拉OK 固件返回的掩码 +@property (assign,nonatomic)uint64_t kalaokMask __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SoundCardManager class instead, this property is about to become invalid"))); + +///卡拉OK 频率数组 +@property (strong,nonatomic)NSArray *mKaraokeMicFrequencyArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SoundCardManager class instead, this property is about to become invalid"))); + +///卡拉OK EQ数组 +@property (strong,nonatomic)NSArray *mKaraokeMicEQArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SoundCardManager class instead, this property is about to become invalid"))); + +//MARK: - EQ 属性列表 +/// EQ模式 +@property (assign,nonatomic) JL_EQMode eqMode __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; +/// EQ参数值(只适用于EQ Mode == CUSTOM情况) +@property (copy, nonatomic) NSArray *eqArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; +///自定义EQ +@property (copy, nonatomic) NSArray *eqCustomArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; + +///EQ频率 +@property (copy, nonatomic) NSArray *eqFrequencyArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; +///EQ段数类型 +@property (assign,nonatomic) JL_EQType eqType __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; + +///EQ的预设值数组 数组元素类型-->【JLEQModel】 +@property (strong,nonatomic) NSArray *eqDefaultArray __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_SystemEQ class instead, this property is about to become invalid")));; + +//MARK: - 灯光属性列表 +/// 0:关闭 1:打开 2:设置模式(彩色/闪烁/情景) +@property (assign,nonatomic) JL_LightState lightState __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 0:彩色 1:闪烁 2: 情景 +@property (assign,nonatomic) JL_LightMode lightMode __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 灯光红色 +@property (assign,nonatomic) uint8_t lightRed __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 灯光绿色 +@property (assign,nonatomic) uint8_t lightGreen __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 灯光蓝色 +@property (assign,nonatomic) uint8_t lightBlue __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 闪烁模式Index +@property (assign,nonatomic) JL_LightFlashModeIndex lightFlashIndex __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 闪烁频率Index +@property (assign,nonatomic) JL_LightFlashModeFrequency lightFrequencyIndex __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 情景模式Index +@property (assign,nonatomic) JL_LightSceneMode lightSceneIndex __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 色调,范围0-360 +@property (assign,nonatomic) uint16_t lightHue __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 饱和度,0-100 +@property (assign,nonatomic) uint8_t lightSat __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); +/// 亮度,0-100 +@property (assign,nonatomic) uint8_t lightLightness __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_LightManager class instead, this property is about to become invalid"))); + + +//MARK: - BT INFO +@property (strong,nonatomic) NSString *ID3_Title; +@property (strong,nonatomic) NSString *ID3_Artist; +@property (strong,nonatomic) NSString *ID3_AlBum; +@property (assign,nonatomic) uint8_t ID3_Number; +@property (assign,nonatomic) uint16_t ID3_Total; +@property (strong,nonatomic) NSString *ID3_Genre; +@property (assign,nonatomic) uint32_t ID3_Time; +/// 0x01:播放 0x00:暂停 +@property (assign,nonatomic) uint8_t ID3_Status; + +@property (assign,nonatomic) uint32_t ID3_CurrentTime; + +//MARK: - Music INFO +///播放状态 +@property (assign,nonatomic) JL_MusicStatus playStatus __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///播放模式 +@property (assign,nonatomic) JL_MusicMode playMode __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///当前播放文件的簇号 +@property (assign,nonatomic) uint32_t currentClus __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///当前时间 +@property (assign,nonatomic) uint32_t currentTime __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///总时长 +@property (assign,nonatomic) uint32_t tolalTime __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///当前卡 +@property (assign,nonatomic) JL_CardType currentCard __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///名字 +@property (copy, nonatomic) NSString *fileName __attribute__((deprecated ( "Use the instance property rtcVersion of the JLDevPlayerCtrl class instead, this property is about to become invalid"))); + +///目录浏览文件类型(所支持解码音频格式) +@property (copy, nonatomic) NSString *typeSupport; + +//MARK: - RTC INFO + +///RTC 版本 +@property (assign,nonatomic) uint8_t rtcVersion __attribute__((deprecated ( "Use the instance property rtcVersion of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///是否支持闹铃设置 +@property (assign,nonatomic) JL_RTCAlarmType rtcAlarmType __attribute__((deprecated ( "Use the instance property rtcAlarmType of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///设备当前时间 +@property (strong,nonatomic) JLModel_RTC *rtcModel __attribute__((deprecated ( "Use the instance property rtcModel of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///设备闹钟数组 +@property (strong,nonatomic) NSMutableArray *rtcAlarms __attribute__((deprecated ( "Use the instance property rtcAlarms of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +///默认铃声 +@property (strong,nonatomic) NSMutableArray *rtcDfRings __attribute__((deprecated ( "Use the instance property rtcDfRings of the JL_AlarmClockManager class instead, this property is about to become invalid"))); + +//MARK: - LineIn INFO + +///LineIn状态 +@property (assign,nonatomic) JL_LineInStatus lineInStatus; + + +//MARK: - Fm 模式 +///Fm状态 +@property (assign,nonatomic) JL_FMStatus fmStatus; + +///Fm 频段范围 +///76.5-108.0Mhz +///87.5-108.0Mhz +@property (assign,nonatomic) JL_FMMode fmMode; + +///当前fm +@property (strong,nonatomic) JLModel_FM *currentFm; + +///Fm列表 +@property (strong,nonatomic) NSArray *fmArray; + +//MARK: - custom version info +/// 自定义版本信息 +@property(strong,nonatomic) NSData *customizeInfo; + + +-(void)cleanMe; ++(void)observeModelProperty:(NSString*)prty Action:(SEL)action Own:(id)own __attribute__((deprecated("This method has been abandoned. You can use the system's KVO to monitor object changes."))); ++(void)removeModelProperty:(NSString*)prty Own:(id)own __attribute__((deprecated("This method has been abandoned. You can use the system's KVO to monitor object changes."))); + +#pragma mark ---> 设备信息 +-(void)deviceInfoData:(NSData*)infoData; + +#pragma mark ---> 各个模式信息 +-(void)deviceModeInfoData:(NSData*)infoData; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_EQ.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_EQ.h new file mode 100644 index 000000000..0d3cc7820 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_EQ.h @@ -0,0 +1,31 @@ +// +// JLModel_EQ.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_EQMode) { + JL_EQModeNORMAL = 0, //自然 + JL_EQModeROCK = 1, //摇滚 + JL_EQModePOP = 2, //流行 + JL_EQModeCLASSIC = 3, //经典 + JL_EQModeJAZZ = 4, //爵士 + JL_EQModeCOUNTRY = 5, //乡村 + JL_EQModeCUSTOM = 6, //用户自定义 + JL_EQModeLATIN = 7, //拉丁 + JL_EQModeDANCE = 8, //舞蹈 +}; + +@interface JLModel_EQ : NSObject +@property(assign,nonatomic)JL_EQMode mMode; +@property(strong,nonatomic)NSArray *__nullable mEqArray; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_FM.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_FM.h new file mode 100644 index 000000000..34cd84535 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_FM.h @@ -0,0 +1,18 @@ +// +// JLModel_FM.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_FM : NSObject +@property (assign,nonatomic) uint8_t fmChannel; +@property (assign,nonatomic) uint16_t fmFrequency; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_File.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_File.h new file mode 100644 index 000000000..b2d508dc4 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_File.h @@ -0,0 +1,40 @@ +// +// JLModel_File.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_BrowseType) { + JL_BrowseTypeFolder = 0, //文件夹 + JL_BrowseTypeFile = 1, //文件 +}; +typedef NS_ENUM(UInt8, JL_CardType) { + JL_CardTypeUSB = 0, //USB + JL_CardTypeSD_0 = 1, //SD_0 + JL_CardTypeSD_1 = 2, //SD_1 + JL_CardTypeFLASH = 3, //FLASH + JL_CardTypeLineIn = 4, //LineIn + JL_CardTypeFLASH2 = 5, //FLASH2 + JL_CardTypeFLASH3 = 6, //FLASH3 + JL_CardTypeReservedArea = 7, //ReservedArea +}; + +@interface JLModel_File : NSObject +@property (assign,nonatomic) JL_BrowseType fileType; +@property (assign,nonatomic) JL_CardType cardType; +@property (assign,nonatomic) uint32_t fileClus; +@property (assign,nonatomic) uint16_t fileIndex; +@property (copy, nonatomic) NSString *fileHandle; +@property (copy, nonatomic) NSString *fileName; +@property (copy, nonatomic) NSString *folderName; +@property (copy, nonatomic) NSData *__nullable pathData; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Flash.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Flash.h new file mode 100644 index 000000000..293ab53bf --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Flash.h @@ -0,0 +1,58 @@ +// +// JLModel_Flash.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_FlashSystemType) { + JL_FlashSystemType_FATFS = 0, + JL_FlashSystemType_RCSP = 1, +}; + +@interface JLModel_Flash : NSObject + +/// flash大小 +@property(assign,nonatomic)uint32_t mFlashSize; + +/// FAT系统大小 +@property(assign,nonatomic)uint32_t mFatfsSize; + +/// 系统类型 0:FATFS,1:RCSP +@property(assign,nonatomic)JL_FlashSystemType mFlashType; + +/// 系统当前状态,0x00正常,0x01异常 +@property(assign,nonatomic)uint8_t mFlashStatus; + +/// Flash版本 +@property(assign,nonatomic)uint16_t mFlashVersion; + +/// 读数MTU +@property(assign,nonatomic)uint16_t mFlashReadMtu; + +/// 扇区大小 +@property(assign,nonatomic)uint16_t mFlashCluster; + +/// 手表兼容列表"W001,W002,W003" +@property(strong,nonatomic)NSString *mFlashMatchVersion; + +/// 写数MTU +@property(assign,nonatomic)uint16_t mFlashWriteMtu; + +/// 屏幕宽度 +@property(assign,nonatomic)uint16_t mScreenWidth; + +/// 屏幕高度 +@property(assign,nonatomic)uint16_t mScreenHeight; + ++(JLModel_Flash*)modelWithFlash:(NSData *)flashData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Headset.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Headset.h new file mode 100644 index 000000000..6c4d84336 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Headset.h @@ -0,0 +1,31 @@ +// +// JLModel_Headset.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_Headset : NSObject +@property(assign,nonatomic)BOOL mCharging_L; +@property(assign,nonatomic)BOOL mCharging_R; +@property(assign,nonatomic)BOOL mCharging_C; +@property(assign,nonatomic)uint8_t mPower; +@property(assign,nonatomic)uint8_t mPower_L; +@property(assign,nonatomic)uint8_t mPower_R; +@property(assign,nonatomic)uint8_t mPower_C; +@property(assign,nonatomic)uint8_t mLedScene; +@property(assign,nonatomic)uint8_t mLedEffect; +@property(assign,nonatomic)uint8_t mKeyLR; +@property(assign,nonatomic)uint8_t mKeyAction; +@property(assign,nonatomic)uint8_t mKeyFunction; +@property(assign,nonatomic)uint8_t mMicMode; +@property(assign,nonatomic)uint8_t mWorkMode; +@property(strong,nonatomic)NSString *mEdr; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_RTC.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_RTC.h new file mode 100644 index 000000000..e9731e9d5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_RTC.h @@ -0,0 +1,64 @@ +// +// JLModel_RTC.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_RTC : NSObject + +/// 年 +@property (assign,nonatomic) uint16_t rtcYear; + +/// 月 +@property (assign,nonatomic) uint8_t rtcMonth; + +/// 日 +@property (assign,nonatomic) uint8_t rtcDay; + +/// 时 +@property (assign,nonatomic) uint8_t rtcHour; + +/// 分 +@property (assign,nonatomic) uint8_t rtcMin; + +/// 秒 +@property (assign,nonatomic) uint8_t rtcSec; + +/// RTC使能 +@property (assign,nonatomic) BOOL rtcEnable; + +/// RTC循环模式 +/// mode: 值为 0 时只响一次 +/// bit0: 每天 +/// bit1: 周一 +/// bit2: 周二 +/// bit3: 周三 +/// bit4: 周四 +/// bit5: 周五 +/// bit6: 周六 +/// bit7: 周日 +@property (assign,nonatomic) uint8_t rtcMode; + + +/// RTC索引 +@property (assign,nonatomic) uint8_t rtcIndex; + +/// 名称 +@property (copy ,nonatomic) NSString *rtcName; + +/// 自定义闹铃内容 +/// 这部分内容取自设备音乐浏览所获得的句柄以及簇号 +@property (strong,nonatomic) RTC_RingInfo *ringInfo; + +/// 闹铃数据 +@property (strong,nonatomic) NSData *RingData; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Ring.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Ring.h new file mode 100644 index 000000000..c227fa6d2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_Ring.h @@ -0,0 +1,24 @@ +// +// JLModel_Ring.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLModel_Ring : NSObject + +/// 默认铃声序号 +/// alarm default rings index +@property(assign,nonatomic) uint8_t index; + +/// 默认铃声名称 +/// alarm default rings name +@property(strong,nonatomic) NSString *name; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_SPEEX.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_SPEEX.h new file mode 100644 index 000000000..9fba122d5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_SPEEX.h @@ -0,0 +1,142 @@ +// +// JLModel_SPEEX.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Modify By EzioChan on 2023/03/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_SpeakType) { + JL_SpeakTypeDo = 0, //开始录音 + JL_SpeakTypeDone = 1, //结束录音 + JL_SpeakTypeDoing = 2, //正在录音 + JL_SpeakTypeDoneFail = 0x0f, //结束失败 +}; +typedef NS_ENUM(UInt8, JL_SpeakDataType) { + JL_SpeakDataTypePCM = 0x00, //PCM数据 + JL_SpeakDataTypeSPEEX = 0x01, //SPEEX数据 + JL_SpeakDataTypeOPUS = 0x02, //OPUS数据 + JL_SpeakDataTypeMSBC = 0x03, //MSBC数据 + JL_SpeakDataTypeJLA_V2 = 0x04, //JLA_V2 +}; + +/// 结束原因 +typedef NS_ENUM(UInt8, JLSpeakDownReason) { + ///正常 + JLSpeakDownNormal = 0x00, + ///取消 + JLSpeakDownByDevice = 0x01 +}; + +/// SampleRate +typedef NS_ENUM(UInt8, JLRecordSampleRate) { + ///8000 + JLRecordSampleRate8K = 0x08, + ///16000 + JLRecordSampleRate16K = 0x10 +}; + + + + + + +@interface JLModel_SPEEX : NSObject +@property(assign,nonatomic)JL_SpeakType mSpeakType; +@property(assign,nonatomic)JL_SpeakDataType mDataType; +@property(assign,nonatomic)JLSpeakDownReason mDownReason; +@property(assign,nonatomic)uint8_t mSampleRate; //0x08=8k,0x10=16k +@property(assign,nonatomic)uint8_t mVad; //断句方: 0:固件 1:APP +@end + + +///语音助手配置参数 +@interface JLSpeechRecognition:NSObject + +///是否下发识别文本,0:否 1:是 +@property(assign,nonatomic)BOOL sendText; + +/// 是否下发AI文本,0:否 1:是 +@property(assign,nonatomic)BOOL sendAIText; + +/// 是否播放AI TTS语音,0:否 1:是 +@property(assign,nonatomic)BOOL needPlayTTS; + ++(JLSpeechRecognition *)beObjc:(NSData *)data; + +-(NSData *)beData; + +@end + + +/// 录音参数对象 +@interface JLRecordParams : NSObject + +/// 音频类型 +@property(nonatomic,assign)JL_SpeakDataType mDataType; + +/// VAD方式 +@property(assign,nonatomic)JLSpeakDownReason mVadWay; + +/// 采样率 +@property(assign,nonatomic)JLRecordSampleRate mSampleRate; + +/// 语音助手配置参数 +@property(strong,nonatomic)JLSpeechRecognition *speechRecognit; + +@end + + +/// speech 语音:AI云数据格式 +@interface JLSpeechAiCloud : NSObject + +/// 版本信息 +@property(nonatomic,assign)uint8_t version; + +/// 文本类型 +/// 0 : 手表本地文本(语音识别) +/// 1 : AI应答文本 +/// 2 : 错误提示文本 +@property(nonatomic,assign)uint8_t type; + +/// 供应商 +/// 0 : 杰理 +/// 1 : 科大讯飞 +@property(nonatomic,assign)uint8_t vendorID; + +/// 有效数据长度 +@property(nonatomic,assign)uint16_t lenght; + +/// 数据内容 +@property(nonatomic,strong)NSData *playload; + ++(JLSpeechAiCloud *)beObject:(NSData *)data; + +-(NSData *)beData; + +@end + +/// TTS语音合成数据格式 +@interface JLSpeechTTSSynthesis : NSObject + +/// 版本信息 +@property(nonatomic,assign)uint8_t version; + +/// 有效数据长度 +@property(nonatomic,assign)uint16_t lenght; + +/// 数据内容 +@property(nonatomic,strong)NSData *playload; + +-(NSData *)beData; + ++(JLSpeechTTSSynthesis *)beObject:(NSData *)data; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_SmallFile.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_SmallFile.h new file mode 100644 index 000000000..88bc3b756 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLModel_SmallFile.h @@ -0,0 +1,32 @@ +// +// JLModel_SmallFile.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/14. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef NS_ENUM(UInt8, JL_SmallFileType) { + JL_SmallFileTypeContacts = 0x01, //联系人 + JL_SmallFileTypeMotionRecord = 0x02, //运动记录 + JL_SmallFileTypeHeartRate = 0x03, //心率数据 + JL_SmallFileTypeSpoData = 0x04, //血氧数据 + JL_SmallFileTypeSleepData = 0x05, //睡眠数据 + JL_SmallFileTypeMassage = 0x06, //消息数据 + JL_SmallFileTypeWeather = 0x07, //天气数据 + JL_SmallFileTypeCallLog = 0x08, //通话记录 + JL_SmallFileTypeStepCount = 0x09, //步数数据 + JL_SmallFileTypeWeight = 0xFF, //体重数据 +}; + +@interface JLModel_SmallFile : NSObject +@property(nonatomic,assign)JL_SmallFileType file_type; +@property(nonatomic,assign)uint8_t file_ver; +@property(nonatomic,assign)uint16_t file_id; +@property(nonatomic,assign)uint16_t file_size; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h new file mode 100644 index 000000000..0474d40f7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLOxygenSturationRemindModel.h @@ -0,0 +1,29 @@ +// +// JLOxygenSturationRemindModel.h +// JL_BLEKit +// +// Created by EzioChan on 2022/2/17. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 血氧检测控制 +@interface JLOxygenSturationRemindModel : JLwSettingModel +///开关 +@property(nonatomic,assign)BOOL status; +/// 测量模式 +@property(nonatomic,assign)WatchOxygenMsmType rType; + + +-(instancetype)initWithData:(NSData *)data; + +/// 创建一个新的传感器设置对象 +/// @param type 测量类型 +/// @param status 开闭状态 +- (instancetype)initWithModel:(WatchOxygenMsmType)type Status:(BOOL)status; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPersonInfoModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPersonInfoModel.h new file mode 100644 index 000000000..9cf61b11a --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPersonInfoModel.h @@ -0,0 +1,33 @@ +// +// JLPersonInfoModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 个人信息设置 +@interface JLPersonInfoModel : JLwSettingModel + +/// 身高,cm +@property(nonatomic,assign)uint16_t height; +/// 体重,kg +@property(nonatomic,assign)uint16_t weight; +/// 生日 +@property(nonatomic,strong)NSDate *birthDay; +/// 性别 +/// 女性:0x00 +/// 男性:0x01 +@property(nonatomic,assign)uint8_t gender; + +-(instancetype)initWith:(NSDate *)birthDay height:(uint16_t)h weight:(uint16_t)w gener:(uint8_t)gender; + +-(instancetype)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPublicSetting.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPublicSetting.h new file mode 100644 index 000000000..c905ac186 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPublicSetting.h @@ -0,0 +1,135 @@ +// +// JLPublicSetting.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/1. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLPublicSettingBlocks.h" + + +NS_ASSUME_NONNULL_BEGIN +@class JL_ManagerM; + +/// 公共 设置/通知/读取 交互类 0x33 回调协议 +@protocol JLPublicSettingProtocol +@optional + +/// 屏幕亮度设置回调/通知 +/// - Parameters: +/// - manager: 设备 +/// - light: 亮度 +-(void)publicSettingScreenLight:(JL_ManagerM *)manager Value:(uint8_t)light; + +/// 手电筒设置回调/通知 +/// - Parameters: +/// - manager: 设备 +/// - isOn: 是否打开 +-(void)publicSettingFlashLight:(JL_ManagerM *)manager Value:(BOOL)isOn; + +/// 设备绑定状态回调/通知 +/// - Parameters: +/// - manager: 设备 +/// - model: 绑定信息 +-(void)publicSettingBindStatus:(JL_ManagerM *)manager Model:(JLPublicBindDeviceModel *)model; + +/// 功能使用资源通知/回调 +/// - Parameters: +/// - manager: 设备 +/// - model: 资源信息 +-(void)publicSettingFuncSource:(JL_ManagerM *)manager Model:(JLPublicSourceInfoModel *)model; + +/// 功能使用资源通知/回调 +/// - Parameters: +/// - manager: 设备 +/// - model: +/// 0x00 结束 +/// 0x01 开始推送 +-(void)publicSettingReplaceTipsVoiceStatus:(JL_ManagerM *)manager Model:(uint8_t )model Reason:(NSError *_Nullable)err; + +/// +/// - Parameters: +/// - manager: 设备 +/// - mode: 设备 SDK 信息 +-(void)publicSettingDeviceSDKMessage:(JL_ManagerM *)manager Mode:(JLPublicSDKInfoModel *_Nullable)mode; + +@end + + +/// 公共 设置/通知/读取 交互类 0x33 +@interface JLPublicSetting : NSObject + +/// 代理 +@property(nonatomic,assign)id delegate; + +/// 读取设备当前屏幕亮度 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdScreenLightGet:(JL_ManagerM *)manager result:(JLPSScreenLightCbk)block; + +/// 设置设备的屏幕亮度 +/// - Parameters: +/// - manager: 设备 +/// - value: 亮度值 0~100 +/// - block: 回调 +-(void)cmdScreenLightSet:(JL_ManagerM *)manager Value:(uint8_t)value result:(JLPSScreenLightCbk)block; + +/// 读取手电筒开关 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdFlashLightGet:(JL_ManagerM *)manager result:(JLPSFlashLightCbk)block; + +/// 设置手电筒开关 +/// - Parameters: +/// - manager: 设备 +/// - isOn: 开关 +/// - block: 回调 +-(void)cmdFlashLightSet:(JL_ManagerM *)manager Status:(BOOL)isOn result:(JLPSFlashLightCbk)block; + + +/// 获取绑定设备状态 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdDeviceBindStatusGet:(JL_ManagerM *)manager result:(JLPSBindStatusCbk)block; + + +/// 获取功能使用资源设置(彩屏舱) +/// - Parameters: +/// - manager: 设备 +/// - funcType: 功能码 +/// 0x01 屏幕保护程序 +/// 0x02 开机动画 +/// 0x03 墙纸 +/// - block: 回调 +-(void)cmdDeviceFuncUsedSourceGet:(JL_ManagerM *)manager Type:(uint8_t)funcType result:(JLPSSourceInfoCbk)block; + +/// 设置功能使用资源(彩屏舱) +/// - Parameters: +/// - manager: 设备 +/// - info: 设置内容对象 +/// - block: 回调 +-(void)cmdDeviceFuncUseSourceSet:(JL_ManagerM *)manager Info:(JLPublicSourceInfoModel *)info result:(JLPSSourceInfoCbk)block; + + +/// 开始发起替换提示音 +/// - Parameters: +/// - manager: 设备 +/// - info: 提示音包 tone.cfg 信息 +/// - block: 状态回调 +-(void)cmdDeviceReplaceTipsVoiceStart:(JL_ManagerM *)manager Info:(JLPublicTipsVoiceRpInfo *)info result:(JLPSTipsVoiceRpCbk)block; + + +/// 获取设备 SDK 信息 +/// - Parameters: +/// - manager: 设备 +/// - block: 回调 +-(void)cmdDeviceGetDeviceSDKInfo:(JL_ManagerM *)manager result:(JLPSSDKInfoCbk)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h new file mode 100644 index 000000000..f43f6c086 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLPublicSettingBlocks.h @@ -0,0 +1,183 @@ +// +// JLPublicSettingBlocks.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/1. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +#define PUBLIC_SCREEN_LIGHT 0x0001 //屏幕亮度 +#define PUBLIC_FLASH_LIGHT 0x0002 //手电筒 +#define PUBLIC_DEVICE_BIND_STATUS 0x0003 //设备绑定 +#define PUBLIC_FUNC_SOURCE 0x0004 //功能使用资源(彩屏舱) +#define PUBLIC_FUNC_4G 0x0005 //4G功能升级功能 +#define PUBLIC_TIPS_VOICE 0x0006 //替换提示音 +#define PUBLIC_SDK_INFO 0x0008 //SDK信息 +#define PUBLIC_TWS_HEALTH_INFO 0x0009 //TWS健康信息 + +@class JLPublicBindDeviceModel; +@class JLPublicSourceInfoModel; +@class JLPublic4GModel; +@class JLPublicSDKInfoModel; + +/// 屏幕亮度回调 +typedef void(^JLPSScreenLightCbk)(JL_CMDStatus status,uint8_t value); + +/// 手电筒开关 +typedef void(^JLPSFlashLightCbk)(JL_CMDStatus status,BOOL isOn); + +/// 绑定状态 +typedef void(^JLPSBindStatusCbk)(JL_CMDStatus status,JLPublicBindDeviceModel *_Nullable model); +/// 彩屏舱资源 +typedef void (^JLPSSourceInfoCbk)(JL_CMDStatus status,JLPublicSourceInfoModel *_Nullable model); + +/// 4G模块升级回调 +typedef void (^JLPSSource4GCbk)(JL_CMDStatus status,JLPublic4GModel *_Nullable model); + +/// 替换提示音回调 +typedef void(^JLPSTipsVoiceRpCbk)(JL_CMDStatus status,uint8_t op); + +/// 设备 SDK 信息回调 +typedef void(^JLPSSDKInfoCbk)(JL_CMDStatus status,JLPublicSDKInfoModel *_Nullable model); + +//MARK: - 绑定设备状态(彩屏舱) +/// 绑定设备状态 +@interface JLPublicBindDeviceModel : NSObject + +/// 设备类型 +/// 1 耳机 +/// 2 充电仓 +@property(nonatomic,assign)uint8_t type; + +/// 经典蓝牙地址 +/// 若不支持经典蓝牙,此值为 0 +@property(nonatomic,copy)NSString *edrAddr; + +/// ble 蓝牙地址 +/// 若不支持 ble 蓝牙,此值为 0 +@property(nonatomic,copy)NSString *bleAddr; + +/// 连接状态 +/// 0 未连接 +/// 1 已连接 +/// 2 正在回连 +/// 0xff 不可连接 +@property(nonatomic,assign)uint8_t status; + +/// 连接方式 +/// 0 BLE +/// 1 SPP +@property(nonatomic,assign)uint8_t way; + ++(JLPublicBindDeviceModel *)initData:(NSData *)data; +@end + +//MARK: -公有设置的资源信息(彩屏舱) +/// 公有设置的资源信息 +@interface JLPublicSourceInfoModel:NSObject + +/// 功能码 +/// 0x01 屏幕保护程序 +/// 0x02 开机动画 +/// 0x03 墙纸 +@property(nonatomic,assign)uint8_t type; + +/// 存储器的句柄 +@property(nonatomic,copy)NSData *fileHandle; + +/// 文件簇号 +/// 设置时当前字段设为 0 +@property(nonatomic,assign)uint32_t cluster; + +/// 文件内容 CRC +/// 设置时当前字段为 0 +@property(nonatomic,assign)uint16_t crc; + +/// 文件路径数据 +@property(nonatomic,strong)NSString *filePath; + +-(NSData *)beData; + ++(JLPublicSourceInfoModel *)initData:(NSData *)data; + +@end + +//MARK: - 4G 模块基本信息 + +/// 4G 模块基本信息 +@interface JLPublic4GModel:NSObject + +/// 供应商信息 +/// 0x01:紫光展锐 +/// 0x02:归芯科技 +@property(nonatomic,assign)uint8_t vendor; + +/// 强制升级标识位 +/// 0x00:不强制 +/// 0x01:强制升级 +@property(nonatomic,assign)uint8_t updateStatus; + +/// 版本 +@property(nonatomic,copy)NSString *version; + +/// 开始 OTA 等待时间 +@property(nonatomic,assign)NSTimeInterval startOtaMaxTimeout; + +/// 结束 OTA 等待时间 +@property(nonatomic,assign)NSTimeInterval endOtaMaxTimeout; + + ++(JLPublic4GModel *)initData:(NSData *)data; + +@end + +//MARK: - 替换提示音参数 +@interface JLPublicTipsVoiceRpInfo : NSObject + +/// 目标存储器句柄 +/// 这个要从 JLModel_Device 中获得 +/// JLModelCardInfo *cardInfo; +@property(nonatomic,copy)NSData *devHandle; + +/// 下发的文件名 +@property(nonatomic,strong)NSString *fileName; + +/// 下发的文件内容 +@property(nonatomic,copy)NSData *sendData; + +-(NSData *)createData; + +@end + +// MARK: - 设备 SDK 信息 + +/// 设备 SDK 信息 +@interface JLPublicSDKInfoModel : NSObject + +/// 项目对应 ID +/// 0x0001 充电仓 +@property(nonatomic,assign)uint16_t projectId; + +/// 产品对应 ID +/// 0x0001 彩屏舱 +@property(nonatomic,assign)uint16_t productId; + +/// 芯片 ID +/// 0x0001 AC701N +/// 0x0002 AC707N +@property(nonatomic,assign)uint16_t chipId; + +/// 是否支持 gif +@property(nonatomic,assign)BOOL isSupportGif; + +/// 初始化 +/// - Parameter data: 数据 ++ (JLPublicSDKInfoModel *)initData:(NSData *)data; + +@end +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h new file mode 100644 index 000000000..06cf049ec --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSedentaryRmdModel.h @@ -0,0 +1,43 @@ +// +// JLSedentaryRmdModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 久坐提醒 +@interface JLSedentaryRmdModel : JLwSettingModel + +///开关 +@property(nonatomic,assign)BOOL status; + +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; + +/// 午休免打扰:关闭/打开(午休时段为12:00-14:00) +@property(nonatomic,assign)BOOL doNotDisturb; + +/// 开始时间 +@property(nonatomic,strong)WatchTimer *begin; + +/// 结束时间 +@property(nonatomic,strong)WatchTimer *end; + +- (instancetype)initWithData:(NSData *)data; + +/// 创建一个设置久坐提醒的位置 +/// @param type 提醒模式 +/// @param status 开关 +/// @param dnd 午休免打扰 +/// @param start 开始时间 +/// @param ed 结束时间 +- (instancetype)initWithModel:(WatchRemindType)type Status:(BOOL)status DoNotDisturb:(BOOL)dnd Begin:(WatchTimer *)start End:(WatchTimer *)ed; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSensorFuncModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSensorFuncModel.h new file mode 100644 index 000000000..39779cfea --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSensorFuncModel.h @@ -0,0 +1,47 @@ +// +// JLSensorFuncModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" +#import "JLWatchEnum.h" + +NS_ASSUME_NONNULL_BEGIN + + +/// 传感器开关设置 +@interface JLSensorFuncModel : JLwSettingModel + +/// 计步器开关 +@property(nonatomic,assign)BOOL pedometerStatus; +/// 计步器记录开关 +@property(nonatomic,assign)BOOL pedometerRecordStatus; +/// 心率传感器开关 +@property(nonatomic,assign)BOOL heartRateStatus; +/// 心率传感器记录开关 +@property(nonatomic,assign)BOOL heartRateRecordStatus; +/// 血氧传感器开关 +@property(nonatomic,assign)BOOL bloodOxygenStatus; +/// 血氧传感器记录开关 +@property(nonatomic,assign)BOOL bloodOxygenRecordStatus; +///海拔气压传感器开关 +@property(nonatomic,assign)BOOL AltitudeAirPressureStatus; +///海拔气压传感器记录开关 +@property(nonatomic,assign)BOOL AltitudeAirPressureRecordStatus; + + +/// 传感器功能 +/// @param status 功能的开关状态 +-(void)setFuncBy:(JL_SENSOR_FUNC_SWITCH)status; + +/// @param funcByte 功能的开关状态 +-(instancetype)initWhthFuncByte:(JL_SENSOR_FUNC_SWITCH)funcByte; + +-(instancetype)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h new file mode 100644 index 000000000..5e51a67d3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSleepMonitorModel.h @@ -0,0 +1,33 @@ +// +// JLSleepMonitorModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 睡眠监测设置 +@interface JLSleepMonitorModel : JLwSettingModel +///开关类型 +@property(nonatomic,assign)WatchSwitchType status; +///开始时间 +@property(nonatomic,strong)WatchTimer *start; +/// 结束时间 +@property(nonatomic,strong)WatchTimer *end; + +-(instancetype)initWithData:(NSData *)data; + +/// 构建一个睡眠监测设置 +/// @param status 状态开关 +/// @param begin 开始时间 +/// @param end 结束时间 +-(instancetype)initWithSwitchStatus:(WatchSwitchType)status Begin:(WatchTimer *)begin End:(WatchTimer *)end; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSpdifPCManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSpdifPCManager.h new file mode 100644 index 000000000..d2c594c0c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSpdifPCManager.h @@ -0,0 +1,74 @@ +// +// JLSpdifPCManager.h +// JL_BLEKit +// +// Created by EzioChan on 2024/10/15. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol JLSpdifPCProtocol + +/// 更新 SPDIF 模式 +/// - Parameter spdifModel: SPDIF 模式 +-(void)updateSpdifModel:(JLModelSpdif *)spdifModel; + +/// 更新 PC 从者模式 +/// - Parameter pcServerModel: PC Server +-(void)updatePcServerModel:(JLModelPCServer *)pcServerModel; + +@end + +/// SPDIF 与 PC 从者模式管理 +@interface JLSpdifPCManager : ECOneToMorePtl + +/// SPDIF 模式信息 +@property(nonatomic,strong)JLModelSpdif *spdifModel; + +/// PC 从者模式信息 +@property(nonatomic,strong)JLModelPCServer *pcServerModel; + + +/// 获取 SPDIF 模式的状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)getSpdifStatus:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 获取 PC 从者模式的状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)getPcServerStatus:(JL_ManagerM *)manager callBack: (JL_CMD_RESPOND)callBack; + +/// 设置 SPDIF 模式的播放状态 +/// - Parameter status: 播放状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setSpdifPlayStatus:(BOOL)status Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 设置 SPDIF 模式音源 +/// - Parameter type: 音源类型 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setSpdifAction:(JLSpdifAudioType)type Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 设置 PC 从者模式的播放状态 +/// - Parameter status: 播放状态 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setPcServerPlayStatus:(BOOL)status Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +/// 设置 PC 从者模式的操作类型 +/// - Parameter type: 操作类型 +/// - Parameter manager: 设备对象 +/// - Parameter callBack: 回调 +-(void)setPcServerAction:(JLPcServerOpType)type Manager:(JL_ManagerM *)manager callBack:(JL_CMD_RESPOND)callBack; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSportDataModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSportDataModel.h new file mode 100644 index 000000000..4483e041f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLSportDataModel.h @@ -0,0 +1,27 @@ +// +// JLSportDataModel.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLSportDataModel : NSObject + +/// 设备的UUID +@property(nonatomic,strong)NSString *dev_uuid; + +/// 请求内容数据 +@property(nonatomic,strong)NSData *rqData; + +/// 功能掩码 +@property(nonatomic,assign)uint32_t funcMask; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTaskChain.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTaskChain.h new file mode 100644 index 000000000..8d5d33661 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTaskChain.h @@ -0,0 +1,117 @@ +// +// TaskChain.h +// JL_BLEKit +// +// Created by EzioChan on 2025/3/20. +// + +#import + +/** + JLTaskChain 任务链 + 用于按顺序执行一组异步任务,每个任务接收上一个任务的输出并通过 completion 回传结果或错误。 + 特性: + - 串行执行:内部使用 `NSOperationQueue` 串行队列保证顺序执行 + - 错误中断:任意任务返回错误后链路立即中断并回调最终 completion + - 取消能力:支持全局与实例级取消 + - 运行保护:运行中禁止追加任务,避免并发修改导致的不确定行为 + */ + +NS_ASSUME_NONNULL_BEGIN +/* + // 创建 TaskChain 实例 + JLTaskChain *chain = [[JLTaskChain alloc] init]; + + // 添加第一个任务:模拟耗时操作返回结果 + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"任务1开始执行"); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:2]; + NSLog(@"任务1执行完毕"); + completion(@"结果1", nil); + }); + }]; + + // 添加第二个任务:接收任务1的结果,模拟错误情况 + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"任务2接收到结果:%@", input); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:2]; + NSLog(@"任务2发生错误"); + NSError *error = [NSError errorWithDomain:@"com.example.task" code:100 userInfo:@{NSLocalizedDescriptionKey:@"任务2失败"}]; + completion(nil, error); + }); + }]; + + // 添加第三个任务:如果前面的任务成功则执行,否则不会被执行 + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"任务3接收到结果:%@", input); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:2]; + NSLog(@"任务3执行完毕"); + completion(@"结果3", nil); + }); + }]; + + // 启动任务链,并传入初始输入 + [chain runWithInitialInput:nil completion:^(id result, NSError *error) { + if (error) { + NSLog(@"任务链执行中断,错误:%@", error.localizedDescription); + } else { + NSLog(@"任务链全部执行完毕,最终结果:%@", result); + } + }]; +*/ + + +/****************************************************************************************************************************** +// 假设 JLTaskChain 和 TaskOperation 已经定义好 +// 模拟一个任务链处理一个字符串列表 +NSArray *taskList = @[@"任务A", @"任务B", @"任务C"]; + + JLTaskChain *chain = [[JLTaskChain alloc] init]; + +// 遍历列表,为每个元素添加一个任务 +for (NSString *taskName in taskList) { + [chain addTask:^(id input, void (^completion)(id, NSError *)) { + NSLog(@"开始处理:%@", taskName); + // 模拟异步耗时操作 + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [NSThread sleepForTimeInterval:1.0]; + // 模拟:如果任务名称为“任务B”,产生错误,后续任务不再执行 + if ([taskName isEqualToString:@"任务B"]) { + NSError *error = [NSError errorWithDomain:@"com.example.task" code:100 userInfo:@{NSLocalizedDescriptionKey:@"任务B 执行失败"}]; + NSLog(@"处理 %@ 时发生错误", taskName); + completion(nil, error); + } else { + // 模拟正常处理,返回结果 + NSString *result = [NSString stringWithFormat:@"%@ 已处理", taskName]; + NSLog(@"处理完成:%@", result); + completion(result, nil); + } + }); + }]; +} + +// 启动任务链,初始输入可以为 nil(或者根据需求传递其他数据) +[chain runWithInitialInput:nil completion:^(id result, NSError *error) { + if (error) { + NSLog(@"任务链中断,错误信息:%@", error.localizedDescription); + } else { + NSLog(@"所有任务完成,最终结果:%@", result); + } +}]; + */ + + +@interface JLTaskChain : NSObject + +// 任务块数组,每个任务块的签名:^(id input, void(^completion)(id output, NSError *error)) +@property (nonatomic, strong) NSMutableArray *taskBlocks; ++ (void)cancelAllTasks; +- (void)addTask:(void (^)(id _Nullable input, void (^completion)(id _Nullable output, NSError *_Nullable error)))task; +- (void)runWithInitialInput:(id _Nullable)input completion:(void (^ _Nullable)(id _Nullable result, NSError *_Nullable error))completion; +- (void)cancel; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTipsSoundReplaceMgr.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTipsSoundReplaceMgr.h new file mode 100644 index 000000000..a0d19f7df --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTipsSoundReplaceMgr.h @@ -0,0 +1,48 @@ +// +// JLTipsSoundReplay.h +// JL_BLEKit +// +// Created by EzioChan on 2025/5/14. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^JLTipsVoiceBlock)(JL_CMDStatus,NSData *_Nullable info); + +/// 提示音替换 +@interface JLTipsSoundReplaceMgr : NSObject + +/// 单例 ++(instancetype)share; + +/// 是否处于替换中 +-(BOOL)isReplacing; + +/// 是否支持提示音替换查询 +/// - Parameters: +/// - manager: 设备 +/// - result: 回调结果 +-(void)isSupportTipsVoiceReplace:(JL_ManagerM *)manager result:(JLConfigTwsRsp)result; + +/// 获取设备端提示音的信息 +/// - Parameters: +/// - manager: 设备 +/// - result: 回调 +-(void)voicesReplaceGetVoiceInfo:(JL_ManagerM *)manager Result:(JLTipsVoiceBlock)result; + +/// 推送提示音数据到设备 +/// - Parameters: +/// - mgr: 设备 +/// - devhandle: 设备句柄,当前句柄需要通过获取设备存储信息获得,可参考 JLModel_Device 类的 cardInfo 属性,当设备不作要求时,此值填 0xffffffff +/// - path: 提示音本地存放路径 +/// - isReborn: 完成后是否重启设备 +/// - result: 回调结果 +-(void)voicesReplacePushDataRequest:(JL_ManagerM *)mgr DevHandle:(NSData *)devhandle TonePath:(NSString *)path IsReborn:(BOOL)isReborn Result:(JL_BIGFILE_RT __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateAudio.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateAudio.h new file mode 100644 index 000000000..e93155045 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateAudio.h @@ -0,0 +1,61 @@ +// +// JLTranslateAudio.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLModel_SPEEX.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 音频类型 +typedef NS_ENUM(NSUInteger, JLTranslateAudioSourceType) { + /// 音频文件 + JLTranslateAudioTypeFile = 0, + /// 设备麦克风 + JLTranslateAudioTypeDeviceMic = 1, + /// 手机麦克风 + JLTranslateAudioTypePhoneMic = 2, + /// eSCO上行 + JLTranslateAudioTypeESCOUp = 3, + /// eSCO下行 + JLTranslateAudioTypeESCODown = 4, + /// A2DP + JLTranslateAudioTypeA2DP = 5, + /// eSCO_Max 上下行 + JLTranslateAudioTypeESCOMax = 6 +}; + +/// 翻译音频 +@interface JLTranslateAudio : NSObject + +/// 来源类型 +@property (assign, nonatomic) JLTranslateAudioSourceType sourceType; + +/// 音频数据类型 +@property (assign, nonatomic) JL_SpeakDataType audioType; + +/// 包计数,倒序,0 为结束包 +@property (assign, nonatomic) int count; + +/// 音频数据的CRC +@property (assign, nonatomic) uint16_t crc; + +/// 数据长度 +@property (assign, nonatomic) int len; + +/// 音频数据 +@property (strong, nonatomic) NSData *data; + ++(JLTranslateAudio *)beObjc:(NSData *)data; + +-(NSData *)toData; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateSet.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateSet.h new file mode 100644 index 000000000..caa5547a5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateSet.h @@ -0,0 +1,105 @@ +// +// JLTranslateSet.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLTranslateSetMode; + +/// 翻译设置结果 +typedef NS_ENUM(NSUInteger, JLTranslateSetResultType) { + /// 成功 + JLTranslateSetResultTypeSuccess = 0x00, + /// 模式相同 + JLTranslateSetResultTypeSameMode = 0x01, + /// 参数错误 + JLTranslateSetResultTypeParamErr = 0x02, + /// 通话中 + JLTranslateSetResultTypeCall = 0x03, + /// 音频播放中 + JLTranslateSetResultTypeAudioPlaying = 0x04, + /// 系统繁忙 + JLTranslateSetResultTypeBusy = 0x05, + /// 操作失败 + JLTranslateSetResultTypeFail = 0x06 +}; + +@protocol JLTranslateSetDelegate + +/// 翻译模式通知 +/// - Parameter mode: 翻译模式 +-(void)translateNotifyMode:(JLTranslateSetMode *)mode; + +/// 翻译音频通知 +/// - Parameter mode: 翻译音频 +-(void)translateReceiveAudioMode:(JLTranslateAudio *)mode; + +/// 翻译缓存 +/// - Parameters: +/// - sourceType: 来源类型 +/// - cacheSize: 剩余缓存大小 +-(void)translateNoteCacheInfo:(JLTranslateAudioSourceType)sourceType cacheSize:(uint32_t)cacheSize; + +@end + + + +typedef void(^JLTranslateGetModeInfoBlock)(JLTranslateSetMode *_Nullable mode,JL_CMDStatus status); + +typedef void(^JLTranslateSetModeBlock)(JLTranslateSetResultType type,JL_CMDStatus status); + +typedef void(^JLTranslateGetCacheInfoBlock)(JL_CMDStatus status,JLTranslateAudioSourceType sourceType,uint32_t cacheSize); + +/// 翻译交互 API +@interface JLTranslateSet : ECOneToMorePtl + +@property(nonatomic, assign)NSTimeInterval cmdMaxTime; + +/// 获取翻译模式 +/// - Parameters: +/// - manager: 设备对象 +/// - result: 结果回调 +-(void)cmdGetModeInfo:(JL_ManagerM *)manager + Result:(JLTranslateGetModeInfoBlock)result; + +/// 设置翻译模式 +/// - Parameters: +/// - mode: 模式 +/// - manager: 设备 +/// - result: 结果 +-(void)cmdSetMode:(JLTranslateSetMode *)mode + Manager:(JL_ManagerM *)manager + Result:(JLTranslateSetModeBlock)result; + + +/// 获取设备可用缓存 +/// - Parameters: +/// - manager: 设备 +/// - type: 来源类型 +/// - result: 结果 +-(void)cmdCheckCache:(JL_ManagerM *)manager SourceType:(JLTranslateAudioSourceType) type Result:(JLTranslateGetCacheInfoBlock)result; + +/// 通知翻译模式 +/// - Parameters: +/// - mode: 模式 +/// - manager: 设备 +-(void)cmdNoteMode:(JLTranslateSetMode *)mode + Manager:(JL_ManagerM *)manager; + +/// 推送翻译音频 +/// - Parameters: +/// - audio: 音频 +/// - manager: 设备 +-(void)cmdPushAudioMode:(JLTranslateAudio *)audio + Manager:(JL_ManagerM *)manager; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateSetMode.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateSetMode.h new file mode 100644 index 000000000..fae797576 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslateSetMode.h @@ -0,0 +1,65 @@ +// +// JLTranslateSetMode.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLModel_SPEEX.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 翻译模式 +typedef NS_ENUM(NSUInteger, JLTranslateSetModeType) { + /// 空闲 + JLTranslateSetModeTypeIdle = 0x00, + /// 仅录音 + JLTranslateSetModeTypeOnlyRecord = 0x01, + /// 录音翻译 + JLTranslateSetModeTypeRecordTranslate = 0x02, + /// 通话翻译 + JLTranslateSetModeTypeCallTranslate = 0x03, + /// 音频翻译 + JLTranslateSetModeTypeAudioTranslate = 0x04, + /// 面对面翻译 + JLTranslateSetModeTypeFaceToFaceTranslate = 0x05, + /// 通话翻译立体声模式 + JLTranslateSetModeTypeCallTranslateStereo = 0x06 +}; + +/// 录音策略 +typedef NS_ENUM(NSInteger, JLTranslateRecordType) { + /// 手机端录音 + JLTranslateRecordByPhone = 0x00, + /// 设备录音 + JLTranslateRecordByDevice = 0x01 +}; + +/// 翻译模式 +@interface JLTranslateSetMode : NSObject + +/// 翻译模式 +/// default is JLTranslateSetModeTypeIdle +@property (nonatomic, assign) JLTranslateSetModeType modeType; + +/// 音频数据类型 +/// default is JL_SpeakDataTypeOPUS +@property (nonatomic, assign) JL_SpeakDataType dataType; + +/// 声道 +/// 默认是1 +@property (nonatomic, assign) NSInteger channel; + +/// 采样率 +/// 默认是16000 +@property (nonatomic, assign) NSInteger sampleRate; + ++(JLTranslateSetMode *)beObjc:(NSData *)data; + +-(NSData *)toData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslationManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslationManager.h new file mode 100644 index 000000000..46243dfc9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTranslationManager.h @@ -0,0 +1,160 @@ +// +// JLTranslationManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/1/3. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLTranslateAudio.h" +#import "JLModel_SPEEX.h" +#import "JLTranslateSetMode.h" +#import "JLTranslateSet.h" + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +/// 翻译回调 +@protocol JLTranslationManagerDelegate + +/// 初始化成功 +/// @param uuid 设备UUID +-(void)onInitSuccess:(NSString *)uuid; + +/// 模式改变 +/// @param uuid 设备UUID +/// @param mode 翻译模式 +-(void)onModeChange:(NSString *)uuid Mode:(JLTranslateSetMode *)mode; + +/// 音频数据 +/// @param uuid 设备UUID +/// @param data 音频数据 +-(void)onReceiveAudioData:(NSString *)uuid AudioData:(JLTranslateAudio *)data; + +/// 错误 +/// @param uuid 设备UUID +/// @param err 错误 +-(void)onError:(NSString *)uuid Error:(NSError *) err; + +@optional + +/// 通话状态 +/// @param isCalling 是否在通话 +/// @param uuid 设备UUID +-(void)isOnCalling:(BOOL)isCalling UUID:(NSString *)uuid; + + +/// 音频队列结束(或空闲/已结束/中间传输时短暂的播空了) +/// @param uuid 设备UUID +-(void)onSendAudioQueueOver:(NSString *)uuid; + +@end + +typedef void(^JLTranslationManagerGetBlock)(JLTranslateSetMode *_Nullable mode,NSError *_Nullable err); + +typedef void(^JLTranslationManagerSetBlock)(JLTranslateSetResultType status,NSError *_Nullable err); + +/// 翻译传输管理对象 +/// Translation transmission management object +@interface JLTranslationManager : NSObject + +/// 代理 +@property (nonatomic, weak) id delegate; + +/// 命令最大超时时间 +/// 默认是 10s +/// Command maximum timeout time +/// Default is 10s +@property (nonatomic, assign) NSTimeInterval cmdMaxTimeOut; + + + +/// 设备蓝牙 UUID +/// Device Bluetooth UUID +@property (nonatomic, strong, readonly) NSString *uuid; + +/// 当前的翻译模式 +/// Current translation mode +@property (nonatomic, strong, readonly) JLTranslateSetMode *translateMode; + +/// 录音策略,默认是手机端录音 +/// Recording policy, the default is to record on the phone +@property (nonatomic, assign) JLTranslateRecordType recordtype; + +/// 是否在通话中 +/// Whether in a call +@property (nonatomic, assign) BOOL isCalling; + +/// 设备对象 +/// Device object +@property (nonatomic, strong, readonly) JL_ManagerM *manager; + +/// 初始化 +/// init +/// - Parameters: +/// - delegate: 代理 JLTranslationManagerDelegate +/// - manager: 设备对象 DeviceManager +/// - result: 回调 +- (instancetype)initWithDelegate:(id)delegate Manager:(JL_ManagerM *)manager Result:(void(^)(BOOL success, NSError *_Nullable err))result; + +/// 是否支持翻译功能 +/// Does it support translation function +- (BOOL)trIsSupportTranslate; + +/// 是否通过 a2dp 播放 +/// Is it played through a2dp +- (BOOL)trIsPlayWithA2dp; + + +/// 是否正在工作 +/// Is it working +- (BOOL)trIsWorking; + +/// 获取当前翻译模式 +/// Get the current translation mode +/// 回复的内容通过 JLTranslationManagerDelegate 代理回调 +/// Reply content through JLTranslationManagerDelegate delegate +/// - Parameter block: 回调 +- (void)trGetCurrentTranslationMode:(JLTranslationManagerGetBlock _Nullable)block; + +/// 开始翻译模式 +/// Start translation mode +/// - Parameter mode: 翻译模式 translation mode +/// - Parameter block: 回调 +- (void)trStartTranslateMode:(JLTranslateSetMode *)mode Block:(JLTranslationManagerSetBlock _Nullable)block; + +/// 退出翻译模式 +/// Exit translation mode +/// - Parameter block: 回调 +- (void)trExitMode:(JLTranslationManagerSetBlock _Nullable)block; + +/// 写入翻译音频,翻译完/操作完后的音频需要携带原音频的音频类型 JLTranslateAudio 进行回复 +/// Write in translation audio, translation complete/operation complete audio need to carry the original audio JLTranslateAudio reply +/// - Parameters: +/// - audio: JLTranslateAudio 原返回音频类型 +/// - audioData: 处理完的音频数据 +- (void)trWriteAudio:(JLTranslateAudio *)audio TranslateData:(NSData *)audioData; + + +/// 写入翻译音频,翻译完/操作完后的音频需要携带原音频的音频类型 JLTranslateAudio 进行回复 +/// 此方案是采取无交互式的下发方法,根据数据对应可能需要的播放时长来进行直接下发,可能存在风险 +/// 当前默认的时长是 20ms 42 byte 的 jlv2 压缩数据,不支持修改 +/// - Parameters: +/// - audio: JLTranslateAudio 原返回音频类型 +/// - audioData: 处理完的音频数据 +-(void)trWriteAudioV2:(JLTranslateAudio *)audio TranslateData:(NSData *)audioData; + +/// 已准备好发送队列 +-(void)trSendIsRelay; + +/// 销毁 +/// Destroy +/// 如果销毁,需要重新生成对象,此对象的回调将会失效 +/// Destroy, if it is destroyed, the callback of this object will be invalidated +- (void)trDestory; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthConfig.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthConfig.h new file mode 100644 index 000000000..61006d6eb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthConfig.h @@ -0,0 +1,89 @@ +// +// JLTwsHealthMode.h +// JL_BLEKit +// +// Created by EzioChan on 2025/10/11. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +/// tws 健康配置 +@interface JLTwsHealthConfig : NSObject + +//是否支持单次心率采集 +@property (nonatomic, assign) BOOL isSupportOnceHeartRate; + +//是否支持全天心率采集 +@property (nonatomic, assign) BOOL isSupportAllDayHeartRate; + +//是否支持单次血氧采集 +@property (nonatomic, assign) BOOL isSupportOnceBloodOxygen; + +//是否支持全天步数采集 +@property (nonatomic, assign) BOOL isSupportAllDayStep; + + +-(JLTwsHealthConfig *)initWithData:(NSData *)data; + +@end + +/// 心率模型 +@interface JLTwsHeartRateModel : NSObject + +/// 实时心率 +@property(nonatomic,assign)NSInteger avgHeartRate; +/// 静息心率 +@property(nonatomic,assign)NSInteger restHeartRate; +/// 最大心率 +@property(nonatomic,assign)NSInteger maxHeartRate; +/// 单次测量心率 +@property(nonatomic,assign)NSInteger onceHeartRate; + +/// 初始化心率模型 +/// @param data 数据 +/// @param subMask 子掩码 +-(instancetype)initWithData:(NSData *)data subMask:(uint8_t)subMask; + +@end + + +/// 血氧模型 +@interface JLTwsSpO2Model : NSObject + +///血氧饱和度 +@property(nonatomic,assign)NSInteger avgSpO2; +/// 最大值 +@property(nonatomic,assign)NSInteger maxSpO2; +/// 最小值 +@property(nonatomic,assign)NSInteger minSpO2; +/// 单次测量血氧饱和度 +@property(nonatomic,assign)NSInteger onceSpO2; + +/// 初始化血氧模型 +/// @param data 数据 +/// @param subMask 子掩码 +-(instancetype)initWithData:(NSData *)data subMask:(uint8_t)subMask; + +@end + + +/// 步数模型 +@interface JLTwsStepModel : NSObject + +/// 实时步数 +@property(nonatomic,assign)NSInteger realTimeStep; +/// 距离,单位:0.01公里 +@property(nonatomic,assign)NSInteger distance; +/// 热量:单位:千卡 +@property(nonatomic,assign)NSInteger calorie; + +/// 初始化步数模型 +/// @param data 数据 +/// @param subMask 子掩码 +-(instancetype)initWithData:(NSData *)data subMask:(uint8_t)subMask; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthHeartRateModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthHeartRateModel.h new file mode 100644 index 000000000..d79e78cf5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthHeartRateModel.h @@ -0,0 +1,22 @@ +// +// JLTwsHealthHeartRateModel.h +// JL_BLEKit +// +// Created by EzioChan on 2025/12/9. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsHealthHeartRateModel : NSObject + +/// 全天心率数组,需要使用小文件格式解析进行解读 +@property (strong, nonatomic) NSArray *heartRateList; + +-(JLTwsHealthHeartRateModel *)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthManager.h new file mode 100644 index 000000000..ae24850fa --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsHealthManager.h @@ -0,0 +1,210 @@ +// +// JLTwsHealthManager.h +// JL_BLEKit +// +// Created by EzioChan on 2025/10/11. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_ManagerM; +@class JLTwsHealthConfig; +@class JLTwsSpO2Model; +@class JLTwsHeartRateModel; +@class JLTwsStepModel; +@class JLTwsHealthHeartRateModel; + +/// 心率、血氧、步数回调 +@protocol JLTwsHealthManagerDelegate + +/// Tws 耳机设备的心率、血氧、步数 +/// @param model Tws 耳机设备的心率、血氧、步数 +-(void)twsHealthConfigModel:(JLTwsHealthConfig *)model; + +/// Tws 耳机设备的心率、血氧、步数传感器状态 +/// @param heartRateStatus 心率传感器状态 +/// @param bloodOxygenStatus 血氧传感器状态 +/// @param stepStatus 步数传感器状态 +/// @param inEarSensorStatus 入耳检测传感器状态 +-(void)twsHealthSensorStatus:(BOOL)heartRateStatus bloodOxygenStatus:(BOOL)bloodOxygenStatus stepStatus:(BOOL)stepStatus inEarSensorStatus:(BOOL)inEarSensorStatus; + +@optional +/// Tws 耳机设备的心率 +/// @param heartRate 心率 +-(void)twsHealthHeartRate:(JLTwsHeartRateModel *) heartRate; + +/// Tws 耳机设备的血氧 +/// @param spO2 血氧 +-(void)twsHealthBloodOxygen:(JLTwsSpO2Model *) spO2; + +/// Tws 耳机设备的步数 +/// @param step 步数 +-(void)twsHealthStep:(JLTwsStepModel *) step; + +/// Tws 耳机设备的全天心率 +/// @param dailyHeartRate 全天心率 +-(void)twsHealthDailyHeartRate:(JLTwsHealthHeartRateModel *) dailyHeartRate; + +/// Tws 耳机设备开启了心率监测 +-(void)twsHealthStartHeartRate; + +/// Tws 耳机设备取消了心率监测 +-(void)twsHealthCancelHeartRate; + +/// Tws 耳机设备开启了血氧监测 +-(void)twsHealthStartBloodOxygen; + +/// Tws 耳机设备取消了血氧监测 +-(void)twsHealthCancelBloodOxygen; + +/// Tws 耳机设备开启了步数监测 +-(void)twsHealthStartStep; + +/// Tws 耳机设备取消了步数监测 +-(void)twsHealthCancelStep; + +/// Tws 耳机设备开启同步全天心率数据 +-(void)twsHealthStartDailyHeartSync; + +/// Tws 耳机设备结束同步全天心率数据 +-(void)twsHealthEndDailyHeartSync; + +@end + +typedef NS_ENUM(NSUInteger, JLTwsHealthOpType) { + JLTwsHealthOpTypeStartHeartRate = 1, + JLTwsHealthOpTypeCancelHeartRate = 2, + JLTwsHealthOpTypeStartBloodOxygen = 3, + JLTwsHealthOpTypeCancelBloodOxygen = 4, + JLTwsHealthOpTypeStartStep = 5, + JLTwsHealthOpTypeCancelStep = 6, + JLTwsHealthOpTypeStartDailyHeartSync = 32, + JLTwsHealthOpTypeEndDailyHeartSync = 33, +}; + +typedef void(^JLTwsHealthModeBlock)(JLTwsHealthConfig *_Nullable mode, NSError * _Nullable error); + +typedef void(^JLTwsHealthSensorStatusBlock)(BOOL heartRateStatus, BOOL bloodOxygenStatus, BOOL stepStatus, BOOL inEarSensorStatus, NSError * _Nullable error); + +typedef void(^JLTwsHealthResultBlock)(NSError * _Nullable error); + +/// 管理 TWS 耳机健康数据的统一入口,负责: +/// 1) 发送健康相关指令(心率、血氧、步数、全天心率同步等) +/// 2) 解析设备应答与设备主动推送事件,并通过回调/代理分发 +/// 3) 管理传感器状态、最近一次检测结果与超时配置 +@interface JLTwsHealthManager : ECOneToMorePtl + +/// 心率传感器状态 +/// YES:开启检测中 +/// NO:关闭 +@property(nonatomic, assign)BOOL heartRateSensorStatus; + +/// 血氧传感器状态 +/// YES:开启检测中 +/// NO:关闭 +@property(nonatomic, assign)BOOL bloodOxygenSensorStatus; + +/// 步数传感器状态 +/// YES:开启检测中 +/// NO:关闭 +@property(nonatomic, assign)BOOL stepSensorStatus; + +/// 入耳检测传感器状态 +/// YES:入耳 +/// NO:出耳 +@property(nonatomic, assign)BOOL inEarSensorStatus; + +/// 代理 +@property(nonatomic, weak)id delegate; + +-(instancetype)init NS_UNAVAILABLE; + +-(instancetype) init:(JL_ManagerM *)manager delegate:(id)delegate; + +/// 查询配置 +/// - Parameters: +/// - block: 回调 +-(void)cmdGetHealthConfigWithResult:(JLTwsHealthModeBlock)block; + +/// 查询状态 +/// - Parameters: +/// - block: 回调 +-(void)cmdCheckSensorStatus:(JLTwsHealthSensorStatusBlock __nullable)block; + + +/// 控制耳机进行健康数据相关的操作 +/// 操作类型: +/// JLTwsHealthOpTypeStartHeartRate 开启心率监测 +/// JLTwsHealthOpTypeCancelHeartRate 取消心率监测 +/// JLTwsHealthOpTypeStartBloodOxygen 开启血氧监测 +/// JLTwsHealthOpTypeCancelBloodOxygen 取消血氧监测 +/// JLTwsHealthOpTypeStartStep 开启步数监测 +/// JLTwsHealthOpTypeCancelStep 取消步数监测 +/// JLTwsHealthOpTypeStartDailyHeartSync 开启同步全天心率数据 +/// JLTwsHealthOpTypeEndDailyHeartSync 结束同步全天心率数据 +/// 示例:开启心率监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartHeartRate result:^(void){ +/// NSLog(@"心率监测已开启"); +/// }]; +/// +/// 示例:取消心率监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeCancelHeartRate result:^(void){ +/// NSLog(@"心率监测已取消"); +/// }]; +/// +/// 示例:开启血氧监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartBloodOxygen result:^(void){ +/// NSLog(@"血氧监测已开启"); +/// }]; +/// +/// 示例:取消血氧监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeCancelBloodOxygen result:^(void){ +/// NSLog(@"血氧监测已取消"); +/// }]; +/// +/// 示例:开启步数监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartStep result:^(void){ +/// NSLog(@"步数监测已开启"); +/// }]; +/// +/// 示例:取消步数监测 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeCancelStep result:^(void){ +/// NSLog(@"步数监测已取消"); +/// }]; +/// +/// 示例:开启同步全天心率数据 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeStartDailyHeartSync result:^(void){ +/// NSLog(@"全天心率同步已开启"); +/// }]; +/// +/// 示例:结束同步全天心率数据 +/// [manager twsHealthOpActionWithType:JLTwsHealthOpTypeEndDailyHeartSync result:^(void){ +/// NSLog(@"全天心率同步已结束"); +/// }]; +/// - Parameters: +/// - type: 操作类型 +/// - block: 回调 +-(void)twsHealthOpActionWithType:(JLTwsHealthOpType)type result:(JLTwsHealthResultBlock __nullable)block; + +/// 查询实时步数 +/// 轮询策略 +/// - Parameter time: 轮询间隔 单位 s +/// 一般固件要求时间为 5min 内轮询一次 +/// 例子:[manager loopQueryRealStep:4 * 60]; +-(void)loopQueryRealStep:(NSTimeInterval)time; + +/// 取消轮询 +/// 例子:[manager cancelLoopQueryRealStep]; +-(void)cancelLoopQueryRealStep; + +/// 查询实时步数 +/// 例子:[manager queryRealStep]; +-(void)queryRealStep; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsSupportFuncs.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsSupportFuncs.h new file mode 100644 index 000000000..49cb420bb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLTwsSupportFuncs.h @@ -0,0 +1,51 @@ +// +// JLTwsSupportFuncs.h +// JL_BLEKit +// +// Created by EzioChan on 2024/12/31. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLTwsSupportFuncs : NSObject + +/// 是否支持ANC功能 +@property(nonatomic,assign)BOOL isSupportAnc; + +/// 是否支持游戏模式 +@property(nonatomic,assign)BOOL isSupportGameMode; + +/// 是否支持自适应ANC +@property(nonatomic,assign)BOOL isSupportAutoAnc; + +/// 是否支持智能免摘 +@property(nonatomic,assign)BOOL isSupportSmartPickFree; + +/// 是否支持场景降噪 +/// scene noise reduction +@property(nonatomic,assign)BOOL isSupportSceneNoiseReduction; + +/// 是否支持风噪检测 +/// Noise detection +@property(nonatomic,assign)BOOL isSupportNoiseDetection; + +/// 是否支持人声增强模式 +/// Vocal Boost Mode +@property(nonatomic,assign)BOOL isSupportVocalBoostMode; + +/// 固件是否支持“一拖二”开 关功能 +/// Does the firmware support the "one drag two" switch function +@property(nonatomic,assign)BOOL isSupportDragWithMore; + + + +-(void)configWithTargetFeature:(NSData *)data; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWatchEnum.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWatchEnum.h new file mode 100644 index 000000000..b939ec1eb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWatchEnum.h @@ -0,0 +1,228 @@ +// +// JLWatchEnum.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/2. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +extern NSString *_Nonnull const JL_Watch_HeartRate; +extern NSString *_Nonnull const JL_Watch_AirPressure; +extern NSString *_Nonnull const JL_Watch_Altitude; +extern NSString *_Nonnull const JL_Watch_MoveSteps; +extern NSString *_Nonnull const JL_Watch_Stress; +extern NSString *_Nonnull const JL_Watch_Oxsaturation; +extern NSString *_Nonnull const JL_Watch_MaxOxg; +extern NSString *_Nonnull const JL_Watch_RecTime; +extern NSString *_Nonnull const JL_Watch_SportMsg; +extern NSString *_Nonnull const JL_Watch_WatchLog; + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_WATCH_LOG_MASK) { + /// 加速度 + JL_WATCH_LOG_MASK_Acceleration = 0x80000000 >> 31, + /// 心率和血氧 + JL_WATCH_LOG_MASK_HeartRate_BloodOxy = 0x80000000 >> 30, +}; + +typedef NS_ENUM(UInt8, JL_WATCH_LOG_TYPE) { + ///设备回的加速度 + JL_WATCH_LOG_TYPE_Res_Acceleration = 0x00, + /// 设备回的心率血氧 + JL_WATCH_LOG_TYPE_Res_HeartRate_BloodOxy = 0x01, +}; + +/// 运动记录标记包类型 +typedef NS_ENUM(UInt8, JL_SRMDataType) { + ///开始包 + JL_SRM_Start = 0x00, + ///基础包 + JL_SRM_Basic = 0x01, + ///暂停包 + JL_SRM_Pause = 0x02, + ///每公里配速包 + JL_SRM_Pace = 0x03, + ///结束包 + JL_SRM_End = 0xff, +}; + +// 实时健康数据类型 +typedef NS_ENUM(UInt8, JL_SportDataType) { + ///心率 + JL_SportDataTypeHeartRate = 0, + ///空气压强 + JL_SportDataTypeAirPressure = 1, + ///海拔高度 + JL_SportDataTypeAltitude = 2, + ///运动步数 + JL_SportDataTypeMovementSteps = 3, + ///压力 + JL_SportDataTypeStress = 4, + ///血氧饱和度 + JL_SportDataTypeOxygenSaturation = 5, + ///训练负荷 + JL_SportDataTypeTrainingLoad = 6, + ///最大摄氧量 + JL_SportDataTypeMaxOxygenUptake = 7, + ///运动恢复时间 + JL_SportDataTypeRecoveryTime = 8, + ///运动信息 + JL_SportDataTypeSportMessage = 9, +}; + +// 运动模式 +typedef NS_ENUM(UInt8, JL_SportPattern) { + JL_SportPatternRun = 0, ///跑步 + JL_SportPatternClimb = 1, ///爬山 + JL_SportPatternSwim = 2, ///游泳 +}; + +// 运动数据格式 +typedef NS_ENUM(UInt8, JL_SportDataFormat) { + JL_SportDataFormatBeUint8 = 1, + JL_SportDataFormatBeBigendUint16 = 2, + JL_SportDataFormatBeBigendUint32 = 4, +}; + +typedef NS_ENUM(UInt8, JL_WATCH_SETTING_MASK) { + JL_WATCH_SETTING_MASK_READ_INFO = 0x00,///App读取设备信息 + JL_WATCH_SETTING_MASK_SET_INFO = 0x01,///向设备写入设置信 息 + JL_WATCH_SETTING_MASK_RECIVE_INFO = 0x02,///收到设备推送设置信息 +}; + +/// 查询读取设备信息 +///使用示例: +/// 如查询:传感器、连续测量心率、跌到监察 +/// 则对应的uint32_t 为:0x0000008A +/// 即对应的Bit位指示为:0000 0000 0000 0000 0000 0000 1000 1010 +/// Bit0:保留(考虑是否用于做功能支持位)------ 0 +/// Bit1:传感器功能 +/// Bit2:久坐提醒 +/// Bit3:连续测量心率 +/// Bit4:运动心率提醒 +/// Bit5:压力自动检测 +/// Bit6:睡眠检测 +/// Bit7:跌到监察 +/// Bit8:抬腕监察 +/// Bit9:个人信息 +/// Bit10:蓝牙断开提醒 +/// Bit11:血氧测量提醒 +/// Bit12:紧急联系人 +typedef NS_ENUM(uint32_t, JL_WATCH_SETTING) { + JL_WATCH_SETTING_SENSOR_FUNC = 0x0002, // Bit1:传感器功能 + JL_WATCH_SETTING_SEDENTARY_REMIND = 0x0004, // Bit2:久坐提醒 + JL_WATCH_SETTING_CONTINUOUS_HEARTRATE_MEASUREMENT = 0x0008, // Bit3:连续测量心率 + JL_WATCH_SETTING_EXERCISE_HEARTRATE_REMINDER = 0x0010, // Bit4:运动心率提醒 + JL_WATCH_SETTING_AUTOMATIC_PRESSURE_DETECTION = 0x0020, // Bit5:压力自动检测 + JL_WATCH_SETTING_SLEEP_DETECTION = 0x0040, // Bit6:睡眠检测 + JL_WATCH_SETTING_FALL_DETECTION = 0x0080, // Bit7:跌到监察 + JL_WATCH_SETTING_LIFTWRIST_DETECTION = 0x0100, // Bit8:抬腕监察 + JL_WATCH_SETTING_PERSONAL_INFO = 0x0200, // Bit9:个人信息 + JL_WATCH_SETTING_BLUETOOTH_DISCONECTED_REMINDER = 0x0400, // Bit10:蓝牙断开提醒 + JL_WATCH_SETTING_OXIMETRY = 0x0800, //Bit11:血氧测量提醒 + JL_WATCH_SETTING_EMERGENCY_CONTACT = 0x1000, //Bit12:紧急联系人 +}; + +/// 传感器功能开关 +/// ///使用示例: +/// 如设置打开:计步器、计步器记录、血氧、血氧记录、海拔 +/// 则对应的uint16_t 为:0x73 +/// 即对应的Bit位指示为: 0111 0011 +/// Bit0:计步器开关 +/// Bit1:计步器记录开关 +/// Bit2:心率传感器开关 +/// Bit3:心率传感器记录开关 +/// Bit4:血氧传感器开关 +/// Bit5:血氧传感器记录开关 +/// Bit6:海拔气压传感器开关 +/// Bit7:海拔气压传感器记录开关 +typedef NS_ENUM(uint16_t, JL_SENSOR_FUNC_SWITCH) { + JL_SENSOR_FUNC_SWITCH_PEDOMETER = 0x01, // Bit0:计步器开关 + JL_SENSOR_FUNC_SWITCH_PEDOMETER_RECORD = 0x02, // Bit1:计步器记录开关 + JL_SENSOR_FUNC_SWITCH_HEARTRATE = 0x04, // Bit2:心率传感器开关 + JL_SENSOR_FUNC_SWITCH_HEARTRATE_RECORD = 0x08, // Bit3:心率传感器记录开关 + JL_SENSOR_FUNC_SWITCH_BLOODOXYGEN = 0x10, // Bit4:血氧传感器开关 + JL_SENSOR_FUNC_SWITCH_BLOODOXYGEN_RECORD = 0x20, // Bit5:血氧传感器记录开关 + JL_SENSOR_FUNC_SWITCH_ALTITUDE_AIRPRESSURE = 0x40, // Bit6:海拔气压传感器开关 + JL_SENSOR_FUNC_SWITCH_ALTITUDE_AIRPRESSURE_RECORD = 0x80, // Bit7:海拔气压传感器记录开关 +}; + +///运动状态同步相关命令 +typedef NS_ENUM(UInt8, JL_WearSyncStatus) { + /// 读取运动信息 + JL_WearSyncStatus_ReadInfo = 0x00, + /// 开始运动 + JL_WearSyncStatus_Start = 0x01, + /// APP结束运动 + JL_WearSyncStatus_EndByApp = 0x02, + /// 固件结束运动 + JL_WearSyncStatus_EndByDevice = 0x03, + /// 暂停运动 + JL_WearSyncStatus_Pause = 0x04, + /// 继续运动 + JL_WearSyncStatus_Continue = 0x05, + /// 请求运动实时数据 + JL_WearSyncStatus_RealTimeInfoRequire = 0x06, +}; + + +///运动状态 +typedef NS_ENUM(UInt8, WatchSportStatus) { + /// 暂停 + WatchSportStatus_Pause = 0x00, + /// 运动中 + WatchSportStatus_Motion = 0x01 +}; + +///心率模式 +typedef NS_ENUM(UInt8, WatchHeartRateType) { + ///最大心率模式 + WatchHeartRate_Max = 0x00, + ///存储心率模式 + WatchHeartRate_Save = 0x01 +}; +/// 运动强度类型 +typedef NS_ENUM(UInt8, WatchExerciseIntensityType) { + ///非运动模式 + WatchExercise_Not = 0x00, + ///最大心率模式:热身 储备心率模式:有氧基础 + WatchExercise_Level1 = 0x01, + ///最大心率模式:燃脂 储备心率模式:有氧进阶 + WatchExercise_Level2 = 0x02, + ///最大心率模式:有氧耐力 储备心率模式:乳酸阈值 + WatchExercise_Level3 = 0x03, + ///最大心率模式:无氧耐力 储备心率模式:无氧基础 + WatchExercise_Level4 = 0x04, + ///最大心率模式:极限 储备心率模式:无氧进阶 + WatchExercise_Level5 = 0x05 +}; +///睡眠类型 +typedef NS_ENUM(UInt8, WatchSleepType) { + ///清醒 + WatchSleep_WideAwake = 0xFF, + /// 浅睡 + WatchSleep_Light = 0x01, + /// 深睡 + WatchSleep_Deep = 0x02, + /// 快速眼动 + WatchSleep_RapidEyeMovement = 0x03, + /// 零星小睡 + WatchSleep_SporadicNaps = 0x04 +}; + + +@interface JLWatchEnum : NSObject + +/** + * 运动数据类型转换为运动数据格式 + * @param sportDataType 运动数据类型 + * @return JL_SportDataFormat 运动数据格式 + */ ++ (JL_SportDataFormat)sportDataFormatFromSportDataType:(JL_SportDataType)sportDataType; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSync.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSync.h new file mode 100644 index 000000000..b4cd9509d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSync.h @@ -0,0 +1,76 @@ +// +// JLWearSync.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/26. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_RCSP.h" +#import "JLWatchEnum.h" +#import "JL_EntityM.h" +#import "JL_SDM_Header.h" +#import "JL_WatchSyncProtocol.h" + + +NS_ASSUME_NONNULL_BEGIN + +/// 穿戴设备状态同步指令 +@interface JLWearSync : NSObject + ++(instancetype)share; + +/// 加入协议响应 +/// @param delegate 对象 +-(void)addProtocol:(id)delegate; + +/// 移除协议响应 +/// @param delegate 对象 +-(void)removeProtocol:(id)delegate; + +/// 读取运动信息 +/// @param entity 设备entity +/// @param block JLWearSyncInfoModel 回调 +/// 本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncSportInfo:(JLWearSyncInfoModel *_Nonnull)model; +-(void)w_requireSportInfoWith:(JL_EntityM *)entity Block:(JL_CB_SyncSportInfo _Nullable)block; + +///开始运动命令 +/// @param type 运动类型 +/// 0x00 :非运动模式 +/// 0x01 :室外跑步 +/// 0x02 :室内跑步 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportStart:(uint8_t)type With:(JL_EntityM *)entity Block:(JL_CB_Status _Nullable)block; + +/// 结束运动命令 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncStopMotion:(JLWearSyncFinishModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; +-(void)w_SportFinishWith:(JL_EntityM*)entity; + +///暂停运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportPauseWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +///继续运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportContinueWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +/// 读取运动实时数据 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +-(void)w_requireRealTimeSportInfoWith:(JL_EntityM *)entity; + +/// 实时数据获取时间间隔设置 +/// @param interval 时间间隔,单位:ms +/// @param entity 设备entity +-(void)pr_setTimeInterval:(UInt16)interval With:(JL_EntityM *)entity; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncCustom.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncCustom.h new file mode 100644 index 000000000..130e23941 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncCustom.h @@ -0,0 +1,97 @@ +// +// JLWearSyncCustom.h +// JL_BLEKit +// +// Created by EzioChan on 2022/4/13. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_RCSP.h" +#import "JL_EntityM.h" +#import "JL_SDM_Header.h" + + + +NS_ASSUME_NONNULL_BEGIN + +@protocol JLWearSyncCustomPtl + +/// 运动信息返回 +/// @param model 运动信息对象 +/// @param entity 设备entity +-(void)jlWearSyncSportInfo:(JLWearSyncDataModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 结束运动返回内容 +/// @param model 结束时间相隔信息对象 +/// @param entity 设备entity +-(void)jlWearSyncStopMotion:(JLWearSyncFinishDataModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 开始运动返回消息 +/// @param entity 设备entity +-(void)jlWearSyncStartMotionWith:(JL_EntityM *_Nonnull)entity; + +/// 暂停运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusPauseWith:(JL_EntityM *_Nonnull)entity; + +/// 继续运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusContiuneWith:(JL_EntityM *_Nonnull)entity; + +/// 实时数据回调 +/// @param model 实时数据模型 +/// @param entity 设备entity +-(void)jlWearSyncRealTimeData:(JLWearSyncRealTimeData *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +@end + + + +@interface JLWearSyncCustom : NSObject + +@property(nonatomic,weak)id delegate; + +/// 读取运动信息 +/// @param entity 设备entity +/// @param block JLWearSyncInfoModel 回调 +/// 本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncSportInfo:(JLWearSyncInfoModel *_Nonnull)model; +-(void)w_requireSportInfoWith:(JL_EntityM *)entity Block:(JL_CB_SyncSportDataInfo _Nullable)block; + +///开始运动命令 +/// @param type 运动类型 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportStart:(UInt8)type With:(JL_EntityM *)entity Block:(JL_CB_Status _Nullable)block; + +/// 结束运动命令 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +///-(void)jlWearSyncStopMotion:(JLWearSyncFinishModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; +-(void)w_SportFinishWith:(JL_EntityM*)entity; + +///暂停运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportPauseWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +///继续运动命令 +/// @param entity 设备entity +/// @param block 命令成功与否回调 +-(void)w_SportContinueWith:(JL_EntityM*)entity Block:(JL_CB_Status _Nullable)block; + +/// 读取运动实时数据 +/// @param entity 设备entity +///本条命令的回调通过JLWearSyncProtocol协议 +-(void)w_requireRealTimeSportInfoWith:(JL_EntityM *)entity; + +/// 实时数据获取时间间隔设置 +/// @param interval 时间间隔,单位:ms +/// @param entity 设备entity +-(void)pr_setTimeInterval:(UInt16)interval With:(JL_EntityM *)entity; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h new file mode 100644 index 000000000..8ef17f472 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncFinishModel.h @@ -0,0 +1,54 @@ +// +// JLWearSyncFinishModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLWatchEnum.h" +NS_ASSUME_NONNULL_BEGIN + + +@interface JLWearSyncFinishDataModel:NSObject + +@property(nonatomic,strong)NSData *basicData; + +@end + + +@interface JLWatchExerciseIntens:NSObject + +/// 运动强度类型 +@property(nonatomic,assign)WatchExerciseIntensityType type; + +/// 持续时间 +@property(nonatomic,assign)UInt32 duration; + +@end + +@interface JLWearSyncFinishModel : JLWearSyncFinishDataModel + +/// 结束时间 +@property(nonatomic,strong)NSDate *endTime; + +/// 运动恢复时间 +/// 格式 :hour : min +@property(nonatomic,strong)NSString *recyleTime; + +/// 运动记录文件ID +@property(nonatomic,assign)UInt16 sportId; + +/// 运动记录文件大小 +@property(nonatomic,assign)UInt16 fileSize; + +/// 运动强度类型数组 +@property(nonatomic,strong)NSArray *durationArray; + + ++(JLWearSyncFinishModel *)initWithData:(NSData*)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h new file mode 100644 index 000000000..9dc5086a3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncInfoModel.h @@ -0,0 +1,51 @@ +// +// JLWearSyncInfoModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLWatchEnum.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JLWearSyncDataModel : NSObject + +/// 基础返回对象 +@property(nonatomic,strong)NSData *basicData; + +@end + + +@interface JLWearSyncInfoModel : JLWearSyncDataModel + +///运动模式类型 +/// 0x00 非运动模式 +/// 0x01 户外跑步 +/// 0x02 室内跑步 +@property(nonatomic,assign)uint8_t sportType; + +/// 运动状态 +@property(nonatomic,assign)WatchSportStatus status; + +///运动Id +@property(nonatomic,assign)double sportID; + +///设备是否包含GPS +@property(nonatomic,assign)BOOL hasGPS; + +///心率模式 +@property(nonatomic,assign)WatchHeartRateType heartRateType; + +///建议实时数据读取时间间隔,单位:ms +@property(nonatomic,assign)UInt16 interval; + +/// 利用设备返回的数据初始化一个运动信息对象 +/// @param data 设备返回数据 ++(JLWearSyncInfoModel *)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h new file mode 100644 index 000000000..ed10d1e50 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearSyncRealTimeModel.h @@ -0,0 +1,57 @@ +// +// JLWearSyncRealTimeModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JLWatchEnum.h" + +NS_ASSUME_NONNULL_BEGIN + + +@interface JLWearSyncRealTimeData : NSObject + +@property(nonatomic,strong)NSData *basicData; + +@end + +@interface JLWearSyncRealTimeModel : JLWearSyncRealTimeData + +/// 类型 +@property(nonatomic,assign)UInt8 type; + +/// 运动步数 +@property(nonatomic,assign)UInt32 sportStep; + +/// 运动距离,单位:0.01公里 +@property(nonatomic,assign)UInt16 distance; + +/// 运动时长:单位:秒 +@property(nonatomic,assign)UInt32 exerciseTime; + +/// 速度,单位0:0.01公里/小时,(倒数为配速,单位:秒/公里) +@property(nonatomic,assign)UInt16 speed; + +/// 热量,单位:千卡 +@property(nonatomic,assign)UInt16 calories; + +/// 步频,单位:步/分钟 +@property(nonatomic,assign)UInt16 cadence; + +///步幅,单位:厘米 +@property(nonatomic,assign)UInt16 stride; + +///实时运动强度状态 +@property(nonatomic,assign)WatchExerciseIntensityType statusType; + +///运动实时心率 +@property(nonatomic,assign)UInt8 heartRate; + ++(JLWearSyncRealTimeModel *)initWithData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearable.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearable.h new file mode 100644 index 000000000..6096f3264 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWearable.h @@ -0,0 +1,137 @@ +// +// JLWearable.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import +#import "JL_RCSP.h" +#import "JL_EntityM.h" +#import "JL_SDM_Header.h" +#import "JL_WatchProtocol.h" +#import "JLWearSync.h" +#import "JLWearSyncCustom.h" + +NS_ASSUME_NONNULL_BEGIN + +#define JL_RECIVED_DATA @"JL_RECIVED_DATA" + + +/// 穿戴设备基础命令控制 +@interface JLWearable : NSObject + +@property(nonatomic,assign,readonly)uint8_t version; +@property(nonatomic,strong)JL_CB_HeartRate heartRate; +@property(nonatomic,strong)JL_CB_AirPressure airPressure; +@property(nonatomic,strong)JL_CB_Altitude alititude; +@property(nonatomic,strong)JL_CB_MoveSteps moveStep; +@property(nonatomic,strong)JL_CB_Stress stress; +@property(nonatomic,strong)JL_CB_Oxsaturation oxStaturation; +@property(nonatomic,strong)JL_CB_TrainLoad trainLoad; +@property(nonatomic,strong)JL_CB_MaxOxg maxOxg; +@property(nonatomic,strong)JL_CB_RecTime rectime; +@property(nonatomic,strong)JL_CB_SportMsg sportMsg; +@property(nonatomic,strong)JL_CB_WatchLog logMsg; +@property(nonatomic,strong,readonly)JL_EntityM* responseEntity; + ++(instancetype)sharedInstance; + +/// 把对象加入协议 +/// @param delegate 对象 +-(void)w_addDelegate:(id)delegate; + +/// 移除对象的协议 +/// @param delegate 对象 +-(void)w_removeDelegate:(id)delegate; + +/// 移除所有对象的协议 +-(void)w_removeAll; + +/// 请求穿戴设备的数据 +/// 使用例子: +/** + JLWearable *w = [JLWearable sharedInstance]; + NSMutableArray *array = [NSMutableArray new]; + [array addObject:[JL_SDM_HeartRate requireRealTime:YES Resting:YES Max:YES]]; + [array addObject:[JL_SDM_Altitude requireRealTime:YES min:NO Max:NO]]; + [array addObject:[JL_SDM_MoveSteps require]]; + w.heartRate = ^(JL_SDM_HeartRate *heartRate) { + //心率信息 + }; + w.alititude = ^(JL_SDM_Altitude *altitude) { + //海拔信息 + }; + JL_EntityM *entity = [[JL_EntityM alloc] init]; + [w requestSportData:array withEntity:entity]; +*/ +/// @param reqModels 数据模型,可参考JL_SDM_相关的类型请求,这是个父类,这里是通过多态的方式来实现选择性的请求 +/// @param entity 当前设备的entity +/// +-(void)w_requestSportData:(NSMutableArray*)reqModels withEntity:(JL_EntityM *)entity; + +/// 私有测试接口 +/// @param data 数据 +/// @param entity 当前设备entity +/// @param opcode 操作 +-(void)pr_requestSportDataMask:(NSData *)data withEntity:(JL_EntityM *)entity opCode:(uint16_t)opcode; + + +/// 收到数据解析 +/// @param pkg 收到的数据包 +/// @param entity 当前的entity +-(void)w_inputPKG:(JL_PKG*)pkg withEntity:(JL_EntityM *)entity; + +/// 推送天气到手表 +/// @param weather 天气内容 +/// @param entity 服务对象 +/// @param block 推送回调 +-(void)w_syncWeather:(JL_MSG_Weather *)weather withEntity:(JL_EntityM *)entity result:(JL_CB_Status)block; + + +/** + 请求设备传感器的log + 使用示例 + [[JLWearable shareInstance] w_transportLog:Log_Acceleration | Log_HeartRate_BloodOxy withEntity:entity]; + */ +/// 请求设备传感器的log +/// @param model 请求类型(Log_Acceleration | Log_HeartRate_BloodOxy) +/// @param entity 当前的entity +-(void)w_transportLog:(JL_WATCH_LOG_MASK)model withEntity:(JL_EntityM *)entity; + + +//MARK: - 设备设置命令 + +/// 查询读取设备信息 +/// @param target JL_WATCH_SETTING枚举,支持|运算同时设置多个设备类型信息 +/// @param entity 当前的entity +/// /// 本方法的返回结果,需要接收对应的协议:JL_WatchProtocol ,并把遵循协议的对象加入到本单例中 +/// -(void)w_addDelegate:(id)delegate; +-(void)w_InquireDeviceFuncWith:(JL_WATCH_SETTING)target withEntity:(JL_EntityM *)entity; + +/// 向设备写入设置信息 +/// @param models 设置对应的功能模型 +/// @param entity 当前的entity +/// @param block 回复设置的状态 +/// 使用示例: +/// 如设置:传感器、久坐提醒、蓝牙断开提醒 +/// NSMutableArray * models = [NSMutableArray new]; +/// /*计步相关传感器*/ +/// JLSensorFuncModel *model = [[JLSensorFuncModel alloc] initWhthFuncByte:0x0073];//详情设置可参考相关接口 +/// [models addObject:model]; +/// /*久坐设置*/ +/// JLSedentaryRmdModel *model1 = [[JLSedentaryRmdModel alloc] initWithModel:s_Shake Status:true]; +/// [models addObject:model1]; +/// /*蓝牙断开提醒*/ +/// JLDisconnectRemindModel *model2 = [[JLDisconnectRemindModel alloc] initWithModel:s_BrightScreen Status:true]; +/// [models addObject:model2]; +/// [[JLWearable sharedInstance] w_SettingDeviceFuncWith:models withEntity:requestEntity] +/// 本方法的返回结果,需要接收对应的协议:JL_WatchProtocol ,并把遵循协议的对象加入到本单例中 +/// -(void)w_addDelegate:(id)delegate; +-(void)w_SettingDeviceFuncWith:(NSArray *)models withEntity:(JL_EntityM *)entity result:(JL_CB_Status)block; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h new file mode 100644 index 000000000..c7a838e27 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLWristLiftDetectionModel.h @@ -0,0 +1,37 @@ +// +// JLWristLiftDetectionModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLwSettingModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 抬腕监测设置 +@interface JLWristLiftDetectionModel : JLwSettingModel +///开关 +@property(nonatomic,assign)WatchSwitchType status; +/// 提醒模式 +@property(nonatomic,assign)WatchRemindType rType; +/// 开始时间 +@property(nonatomic,strong)WatchTimer *start; + +/// 结束时间 +@property(nonatomic,strong)WatchTimer *end; + + +-(instancetype)initWithData:(NSData *)data; + +/// 构建一个抬腕提醒设置对象 +/// @param type 提醒类型 +/// @param status 开关类型 +/// @param begin 开始时间 +/// @param ed 结束时间 +- (instancetype)initWithModel:(WatchRemindType)type Status:(WatchSwitchType )status Begin:(WatchTimer *)begin End:(WatchTimer *)ed; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h new file mode 100644 index 000000000..5b2f837f2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_AlarmClockManager.h @@ -0,0 +1,116 @@ +// +// JL_AlarmClockManager.h +// JL_BLEKit +// +// Created by EzioChan on 2021/12/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_RtcOperate) { + JL_FlashOperateFlagRead = 0x00, //读取 + JL_FlashOperateFlagWrite = 0x01, //设置 +}; + +typedef void(^JL_RTC_ALARM_BK)(NSArray * __nullable array, uint8_t flag); + +typedef void(^JL_RTC_GET_ALARM_BK)(NSArray * __nullable alarms,NSError * __nullable error); + +#pragma mark ---> 闹钟响与停止 +///闹钟正在响 +extern NSString *kJL_MANAGER_RTC_RINGING; + +///闹钟停止响 +extern NSString *kJL_MANAGER_RTC_RINGSTOP; + +//闹钟铃声试听 +extern NSString *kJL_MANAGER_RTC_AUDITION; + + +/// RTC闹钟管理者 +@interface JL_AlarmClockManager : JL_FunctionBaseManager + +///RTC 版本 +@property (assign,nonatomic) uint8_t rtcVersion; +///是否支持闹铃设置 +@property (assign,nonatomic) JL_RTCAlarmType rtcAlarmType; +///设备当前时间 +@property (strong,nonatomic) JLModel_RTC *rtcModel; +///设备闹钟数组 +@property (strong,nonatomic) NSMutableArray *rtcAlarms; +///默认铃声 +@property (strong,nonatomic) NSMutableArray *rtcDfRings; + + +/// 查询设备闹钟 +/// - Parameter result: 设备回调 +-(void)cmdRtcGetAlarms:(JL_RTC_GET_ALARM_BK)result; + + +/// 设置/增加闹钟 +/// - Parameters: +/// - array: array 闹钟模型数组 +/// - result: 结果回调 +-(void)cmdRtcSetArray:(NSArray*)array Result:(JL_CMD_RESPOND __nullable)result; + + +/// 删除闹钟 +/// - Parameters: +/// - array: 闹钟序号数组 +/// - result: 设备回复 +-(void)cmdRtcDeleteIndexArray:(NSArray*)array Result:(JL_CMD_RESPOND __nullable)result; + + +/// 停止闹钟响声 +/// - Parameter result: 设备回复 +-(void)cmdRtcStopResult:(JL_CMD_RESPOND __nullable)result; + + +/// 闹钟试听响铃 +/// - Parameters: +/// - rtc: 闹钟模型 +/// - option: 启停标记 +/// - result: 设备回复 +-(void)cmdRtcAudition:(JLModel_RTC *)rtc Option:(BOOL)option result:(JL_CMD_RESPOND __nullable)result; + + +/// 闹铃设置 +/// @param operate 0x00:读取 0x01:设置 +/// @param index 掩码 (0x01设置第1个闹钟,0x03设置第一个和第二个闹钟) +/// @param setting 设置选项,读取时无需传入 +/// @param result 设备回复 +-(void)cmdRtcOperate:(JL_RtcOperate)operate + Index:(uint8_t)index + Setting:(JLModel_AlarmSetting* __nullable)setting + Result:(JL_RTC_ALARM_BK __nullable)result; + + +/// 解析闹钟数据内容 +/// @param infoData 数据内容 +/// @param ltvVersion LTV的版本 +-(void)parseData:(NSData *)infoData WithLtyType:(uint8_t)ltvVersion; + +/// 【闹钟信息】解析 +/// - Parameters: +/// - data: 需要解析的数据 +/// - rtcType: RTC类型 ++(NSMutableArray *)makeOutRtc:(NSData*)data RtcType:(uint8_t)rtcType; + + +/// [默认闹钟铃声]解析 +/// - Parameter data: [默认闹钟铃声]数据 ++(NSMutableArray *)makeOutRtcDefaultRing:(NSData *)data; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Assist.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Assist.h new file mode 100644 index 000000000..6cdb50fa5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Assist.h @@ -0,0 +1,81 @@ +// +// JL_Assist.h +// QCY_Demo +// +// Created by 杰理科技 on 2021/8/12. +// Copyright © 2021 杰理科技. All rights reserved. +// + +#import +#import + + +@protocol JL_AssistDelegate + +-(void)assistDidWriteData:(NSData *_Nonnull)data; + +@end + +NS_ASSUME_NONNULL_BEGIN +typedef void(^JL_Assist_BK)(BOOL isPaired); + +@class JL_ManagerM; + +@interface JL_Assist : NSObject +@property(strong,nonatomic)JL_ManagerM *mCmdManager; //命令中心 +@property(strong,nonatomic)NSString *mService; //服务号 +@property(strong,nonatomic)NSString *mRcsp_W; //特征:RCSP写 +@property(strong,nonatomic)NSString *mRcsp_R; //特征:RCSP读 +///握手(配对)秘钥 +@property(strong,nonatomic)NSData *__nullable mPairKey __attribute__((deprecated("Use mAuthKey instead"))); +@property(assign,nonatomic)BOOL mNeedPaired __attribute__((deprecated("Use mAuthEnable instead"))); //是否需要配对 +/// 设备认证密钥 +@property(strong,nonatomic)NSData *__nullable mAuthKey; +/// 是否需要设备认证 +@property(assign,nonatomic)BOOL mAuthEnable; +@property(assign,nonatomic)BOOL mLogData; //是否打印裸数据 +@property(assign,nonatomic)NSInteger mLimitMtu; //(默认40)在最大的MTU基础上减少数据量 +@property(strong,nonatomic)CBPeripheral *__nullable mRcspPeripheral; +@property(strong,nonatomic)CBCharacteristic *__nullable mRcspWrite; +@property(strong,nonatomic)CBCharacteristic *__nullable mRcspRead; +@property(strong,nonatomic)NSString *mBleName; //设备名字 + +///代理,如果实现了此代理则发出的数据都需要走回调发送,内部不处理 +/// @discussion JL_AssistDelegate +@property(assign,nonatomic)id __nullable mDelegate; + +/// Execute in a method 「- (void)centralManagerDidUpdateState:」 +/// @param state CBManagerState +-(void)assistUpdateState:(CBManagerState)state; + +/// Execute in a method 「- (void)centralManager:didDisconnectPeripheral:error:」 +/// @param peripheral CBPeripheral +-(void)assistDisconnectPeripheral:(CBPeripheral *)peripheral; + + +/// Execute in a method 「- (void)peripheral:didDiscoverServices:」 +/// @param service CBService +/// @param peripheral CBPeripheral +-(void)assistDiscoverCharacteristicsForService:(CBService*)service + Peripheral:(CBPeripheral*)peripheral; + +/// Execute in a method 「- (void)peripheral:didUpdateNotificationStateForCharacteristic:error:」 +/// @param characteristic CBCharacteristic +/// @param peripheral CBPeripheral +/// @param result JL_Assist_BK (YES:配对成功 NO:配对失败) +-(void)assistUpdateCharacteristic:(nonnull CBCharacteristic *)characteristic + Peripheral:(CBPeripheral*)peripheral + Result:(JL_Assist_BK)result; + +/// Execute in a method 「- (void)peripheral:didUpdateValueForCharacteristic:error:」 +/// @param characteristic CBCharacteristic +-(void)assistUpdateValueForCharacteristic:(CBCharacteristic *)characteristic; + + +/// Execute in a method 「- (void)peripheral:didWriteValueForCharacteristic:error:」 +/// Execute in a method 「- (void)peripheral:didIsReadyForWrite:error:」 +-(void)assistDidReady; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEAction.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEAction.h new file mode 100644 index 000000000..7a5a3f66b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEAction.h @@ -0,0 +1,66 @@ +// +// JL_BLEAction.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * BLE数据通知 + */ +extern NSString *kJL_RCSP_RECEIVE; //Rcsp数据【接收】 +extern NSString *kJL_RCSP_SEND; //Rcsp数据【发送】 + + +typedef void(^ATC_Block)(BOOL ret); +@protocol JL_BLEActionDelegate +@optional +-(void)onPairOutputData:(NSData*)data; + +@end + +@interface JL_BLEAction : NSObject +@property(nonatomic,weak)iddelegate; + ++(id)sharedMe; + +/** + 过滤其余蓝牙设备 + @param key 过滤码 + @param advertData 蓝牙广播字典 + @return NSDictionary 广播包含信息字典 + */ ++(NSDictionary*)bluetoothKey_1:(NSData*)key Filter:(NSDictionary*)advertData; + +/** + 蓝牙设备配对 + @param pKey 配对码 + @param bk 配对回调YES:成功 NO:失败 + */ +-(void)bluetoothPairingKey:(NSData *__nullable)pKey Result:(ATC_Block)bk; +-(void)inputPairData:(NSData*)rData; +-(void)cancelPair; + +#pragma mark - 蓝牙根据广播包回连 + +/** + * 获取广播包kCBAdvDataManufacturerData里面 'JLOTA' 标识的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (NSString * _Nullable)otaBleMacAddressFromCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +/** + * 判断当前蓝牙地址是否等于广播包kCBAdvDataManufacturerData里面的蓝牙地址 + * @param otaBleMacAddress ota升级中设备的蓝牙地址 + * @param kCBAdvDataManufacturerData 广播包 + */ ++ (Boolean)otaBleMacAddress:(NSString *)otaBleMacAddress isEqualToCBAdvDataManufacturerData:(NSData *)kCBAdvDataManufacturerData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEKit.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEKit.h new file mode 100644 index 000000000..6cb524ff9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEKit.h @@ -0,0 +1,138 @@ +// +// JL_BLEKit.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/9. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import +//! Project version number for JL_BLEKit. +FOUNDATION_EXPORT double JL_BLEKitVersionNumber; + +//! Project version string for JL_BLEKit. +FOUNDATION_EXPORT const unsigned char JL_BLEKitVersionString[]; + +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEMultiple.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEMultiple.h new file mode 100644 index 000000000..d935e6bfa --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BLEMultiple.h @@ -0,0 +1,153 @@ +// +// JL_BLEMultiple.h +// JL_BLEKit +// +// Created by 杰理科技 on 2020/9/1. +// Copyright © 2020 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * BLE状态通知 + */ +extern NSString *kJL_BLE_M_FOUND; //发现设备 +extern NSString *kJL_BLE_M_FOUND_SINGLE; //发现单个设备 +extern NSString *kJL_BLE_M_ENTITY_CONNECTED; //连接有更新 +extern NSString *kJL_BLE_M_ENTITY_DISCONNECTED; //断开连接 +extern NSString *kJL_BLE_M_ON; //BLE开启 +extern NSString *kJL_BLE_M_OFF; //BLE关闭 +extern NSString *kJL_BLE_M_EDR_CHANGE; //经典蓝牙输出通道变化 +extern NSString *kJL_BLE_M_SAVE_BLEADDR; //存储EDR地址 +extern NSString *kJL_BLE_M_ANCS_UPDATE; //设备ANCS权限变更 + + +@interface JL_BLEMultiple : NSObject +@property (strong, nonatomic) NSData *__nullable filterKey; //过滤码 +@property (strong, nonatomic) NSData *__nullable pairKey __attribute__((deprecated("use authKey instead"))); //配对码 +@property (copy, nonatomic) NSData *__nullable authKey; //配对码 +@property (assign, nonatomic) BOOL BLE_IS_CONNECTING; //是否有设备正在连接 +@property (assign, nonatomic) BOOL BLE_FILTER_ENABLE; //是否【开启过滤】 +///是否【开启配对】 +@property (assign, nonatomic) BOOL BLE_PAIR_ENABLE __attribute__((deprecated("Use authEnable instead"))); +///是否【开启认证】 +@property (assign, nonatomic) BOOL authEnable; +@property (assign, nonatomic) int BLE_TIMEOUT; //连接超时时间 + +@property (strong, nonatomic) NSMutableArray *blePeripheralArr; //发现的设备 +@property (strong, nonatomic) NSArray *bleAttDevices; //ATT发现的设备 +@property (strong, nonatomic) NSMutableArray *bleConnectedArr; //已连接的设备 +@property (assign, nonatomic) CBManagerState bleManagerState; //蓝牙状态 +@property (strong, nonatomic) NSArray *__nullable bleDeviceTypeArr; //选择的设备类型<@(JL_DeviceType)> +@property (strong, nonatomic) NSArray *__nullable managerClassArr; //实例化的业务逻辑<@(JL_CLASS)> + + +@property (strong, nonatomic) NSString *JL_BLE_SERVICE; //服务号 +@property (strong, nonatomic) NSString *JL_BLE_RCSP_W; //命令【写】通道 +@property (strong, nonatomic) NSString *JL_BLE_RCSP_R; //命令【读】通道 + ++(NSString*)versionOfSDK; + +/** + 开始搜索 + */ +-(void)scanStart; + +/** + 继续搜索 + */ +-(void)scanContinue; + +/** + 停止搜索 + */ +-(void)scanStop; + + +/// 蓝牙中心管理器 +-(CBCentralManager *)getCenterManaer; + +/** + 通过UUID生成Entity。 + */ +-(JL_EntityM *_Nullable)makeEntityWithUUID:(NSString*)uuid; + +/// 通过UUID获得一个已连接过的entity +/// @param uuid uuid +/// @param status 获取后是否继续蓝牙搜索 +/// @param result 结果 +-(void)getEntityWithSearchUUID:(NSString *)uuid SearchStatus:(BOOL)status Result:(void(^)(JL_EntityM *_Nullable entity))result; +/** + 连接设备 + @param entity 蓝牙设备类 + */ +-(void)connectEntity:(JL_EntityM*)entity Result:(JL_EntityM_STATUS_BK)result; + + +/// 根据设备 ADV 广播报中的 Mac 连接设备 +/// ADV 的数据格式必须满足 JL 设备的标准 TWS 系列的数据结构 +/// @param advMac 广播报中的蓝牙地址 +/// 一般是指 EDR 地址,当然开发者也可以跟固件端协商,采取其他的地址,但是要求数据结构不变 +/// @param result 回调 +-(void)connectEntityWithAdvMac:(NSString *)advMac Result:(JL_EntityM_STATUS_BK) result; + +/// 根据设备Mac去回连 +/// @param mac Mac地址 +/// @param result 回调 +-(void)connectEntityForMac:(NSString *)mac Result:(JL_EntityM_STATUS_BK)result; + +/** + 断开连接 + */ +-(void)disconnectEntity:(JL_EntityM*)entity Result:(JL_EntityM_STATUS_BK)result; + +/** + 更新名字信息 +*/ +-(void)updateHistoryRename:(NSString*)name withUuid:(NSString*)uuid; + +/// 清除历史记录 +/// 删除后,可能会导致使用历史纪录回连时,信息为空 +/// 一般是在删除了绑定设备后使用 +-(void)cleanHistoryDeviceCache; + +/// 获取当前正在连接的entity +-(JL_EntityM *__nullable)connectingEntity; + +/** + 返回经典蓝牙信息 + @return @{@"ADDRESS":@"7c9a1da7330e", + @"TYPE" :@"BluetoothA2DPOutput", + @"NAME" :@"earphone"} + */ ++(NSDictionary*)outputEdrInfo; + +/** + 返回经典蓝牙edr列表 + @return 蓝牙edr列表 + */ ++(NSArray*)outputEdrList; + + +#pragma mark - ota升级 +/** + * ota升级功能 + * @param mBleEntityM 当前ota升级的蓝牙设备(JL_EntityM) + * @param otaFilePath ota升级文件路径 + * @param result ota升级过程回调 + */ +- (void)otaFuncWithEntityM:(JL_EntityM *)mBleEntityM + withFilePath:(NSString *)otaFilePath + Result:(JL_OTA_RT __nullable)result; +- (void)setOtaReconnectBleAddr:(NSString* __nullable)addr; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BatchManger.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BatchManger.h new file mode 100644 index 000000000..c28d75b66 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BatchManger.h @@ -0,0 +1,47 @@ +// +// JL_BatchManger.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/21. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_BatchType) { + ///开始 + BatchType_Begin = 0x00, + ///结束 + BatchType_Finish = 0x80, + ///取消 + BatchType_Cancel = 0x81, +}; + +typedef NS_ENUM(NSUInteger, JL_BatchOptionType) { + /// 格式化操作 + BatchOption_Format = 0x00, + /// 未知操作 + BatchOption_unKnow = 0xFF, +}; + +@interface JL_BatchManger : JL_FunctionBaseManager + +#pragma mark ---> 批操作命令 +typedef void(^JL_BATCH_BK)(uint8_t flag); +/** + @param type 0x00:开始 0x80:结束 0x81:结束 + @param array @[@(JL_BatchOptionType)],0x00代表格式化操作。 + @param result 操作回调 0x00:成功 0x01:失败 + */ +-(void)cmdBatchType:(JL_BatchType)type + Operations:(NSArray*)array + Result:(JL_BATCH_BK __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BigDataManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BigDataManager.h new file mode 100644 index 000000000..c1b94cffa --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BigDataManager.h @@ -0,0 +1,57 @@ +// +// JL_BigDataManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2022/12/7. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@class JL_BigData; + +typedef NS_ENUM(UInt8, JL_BigDataStatus) { + JL_BigDataStatusSendSuccess = 0, //成功 + JL_BigDataStatusSendFailCRC = 1, //CRC校验失败 + JL_BigDataStatusSendFailSEQ = 2, //SEQ不对 + JL_BigDataStatusSendFailFormat = 3, //数据类型不支持 + JL_BigDataStatusSendFailWay = 4, //传输方式不支持 + JL_BigDataStatusSendFailOutOfRange = 5, //数据长度超范围 + JL_BigDataStatusSendFailWrite = 6, //写入数据失败 + JL_BigDataStatusSendFailMissingParameter = 7, //缺少配置参数 + JL_BigDataStatusSendFailCmd = 8, //命令错误 + JL_BigDataStatusSendFailTimeout = 9, //超时 + JL_BigDataStatusGet = 10, //收到数据 + JL_BigDataStatusSendFailUnknown = 0xff, //未知错误 +}; +typedef void(^JL_BIGDATA_RT)(JL_BigData *bigData); + +@interface JL_BigDataManager : JL_FunctionBaseManager + +//设立大数据监听(接收阿里数据,必须放在单利类中!!!) +-(void)cmdBigDataMonitor:(JL_BIGDATA_RT)result; + +//发送大数据 +-(void)cmdInputBigData:(JL_BigData*)data; + +@end + +@interface JL_BigData : NSObject +@property(nonatomic,assign)JL_BigDataStatus mResult; +@property(nonatomic,assign)NSInteger mIndex; + +///0:原始数据 +///1:阿里云数据 +///2:RTC数据 +///3: AI云 +///4:TTS语音合成 +///5: 平台接口认证信息 +@property(nonatomic,assign)uint8_t mType; +@property(nonatomic,assign)uint8_t mVersion; +@property(nonatomic,strong)NSData *mData; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BinChargeManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BinChargeManager.h new file mode 100644 index 000000000..2077c2e47 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_BinChargeManager.h @@ -0,0 +1,116 @@ +// +// JL_BinCharge.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_ScanSetting) { + JL_ScanTimeout = 0x00, //超时结束 + JL_ScanInterrupt = 0x01, //打断结束 + JL_ScanFail = 0x02, //开启扫描失败 + JL_Scaning = 0x03, //正在扫描 +}; + +typedef NS_ENUM(UInt8, JL_ReverberationFunType) { + JL_ReverberationAndDynamicType = 0x00, //支持混响和动态限幅器 + JL_OnlyReverberationType = 0x01, //仅支持混响 + JL_OnlyDynamicLimiterType = 0x02, //仅支持动态限幅器 +}; + +typedef void(^JL_CMD_VALUE_BK)(uint32_t value); +typedef void(^JL_LOW_DELAY_BK)(uint16_t mtu, uint32_t delay); + +@interface JL_BinChargeManager : JL_FunctionBaseManager + +#pragma mark ---> 通知固件App的信息 +// @param flag 未知 +-(void)cmdSetAppInfo:(uint8_t)flag; + +#pragma mark ---> 设置通讯MTU +// @param mtu app请求mtu⼤⼩ +// @param result 实际设置的Mtu⼤⼩ +-(void)cmdSetMTU:(uint16_t)mtu Result:(JL_CMD_VALUE_BK __nullable)result; + +#pragma mark ---> 开启蓝⽛扫描 +// @param timeout 超时时间 +// @param result 0:成功 1:失败 +-(void)cmdBTScanStartTimeout:(uint16_t)timeout Result:(JL_CMD_VALUE_BK __nullable)result; + +#pragma mark ---> 推送蓝⽛扫描结果 +// 返回【蓝⽛数据结构】数组 +// @see JLBTModel +extern NSString *kJL_MANAGER_BT_LIST_RESULT; + +#pragma mark ---> 停⽌蓝⽛扫描(APP-->固件) +// @param reason 0:超时结束 1:打断结束 2:开启扫描失败 3:正在扫描 +// @param result 0:成功 1:失败 +-(void)cmdBTScanStopReason:(JL_ScanSetting)reason Result:(JL_CMD_VALUE_BK __nullable)result; + +#pragma mark ---> 停⽌蓝⽛扫描(固件-->APP) +// 0:超时结束 1:打断结束 2:开启扫描失败 3:正在扫描 +extern NSString *kJL_MANAGER_BT_SCAN_STOP_NOTE; + +#pragma mark ---> 通知固件连接指定的蓝⽛设备 +// @param addr 蓝⽛设备地址【设置0x00 00 00 00 00 00 则是断开外设的连接】 +// @param result 0:成功 1:失败 +-(void)cmdBTConnectAddress:(NSData*)addr Result:(JL_CMD_VALUE_BK __nullable)result; + +extern NSString *kJL_MANAGER_ID3_Title; +extern NSString *kJL_MANAGER_ID3_Artist; +extern NSString *kJL_MANAGER_ID3_Album; +extern NSString *kJL_MANAGER_ID3_Time; +extern NSString *kJL_MANAGER_ID3_Current; +extern NSString *kJL_MANAGER_ID3_PlayPush; + +#pragma mark ---> 主动设置ID3播放状态 +-(void)setID3_Status:(uint8_t)st; + +#pragma mark ---> ID3 播放/暂停 +-(void)cmdID3_PP; + +#pragma mark ---> ID3 上一曲 +-(void)cmdID3_Before; + +#pragma mark ---> ID3 下一曲 +-(void)cmdID3_Next; + +#pragma mark ---> ID3 开启/暂停 音乐信息推送 +-(void)cmdID3_PushEnable:(BOOL)enable; + +#pragma mark ---> 设置高低音 [-12,+12] + +/// 设置高低音 +/// - Parameters: +/// - p_low: 低音 (-12,12) +/// - p_high: 高音 (-12,12) +-(void)cmdSetLowPitch:(int)p_low HighPitch:(int)p_high; + +#pragma mark ---> 设置混响值[深度和强度][0,100]、限幅值[-60,0] +/// 设置混响值 +/// @param depthValue 深度 0-100 +/// @param intensityValue 强度 0-100 +/// @param dynamicLimiterValue 动态限幅值 -60 - 0 +/// @param reverOn 是否开启 +/// @param type 混响类型 +-(void)cmdSetReverberation:(int)depthValue + IntensityValue:(int)intensityValue + DynamicLimiterValue:(int)dynamicLimiterValue + SwtichReverState:(int)reverOn + FunType:(JL_ReverberationFunType)type; + +#pragma mark ---> 获取低延时参数 +-(void)cmdGetLowDelay:(JL_LOW_DELAY_BK __nullable)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_CallManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_CallManager.h new file mode 100644 index 000000000..2b704cdb6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_CallManager.h @@ -0,0 +1,37 @@ +// +// JL_CallManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface JL_CallManager : JL_FunctionBaseManager + +#pragma mark ---> 拨打电话 +/** + @param number 电话号码 + @param result 回复 + */ +-(void)cmdPhoneCall:(NSString*)number Result:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 设备通话状态 +extern NSString *kJL_MANAGER_CALL_STATUS; + +#pragma mark - 案子API +#pragma mark ---> 通知设备播放来电号码的方式 +/** + 通知设备播放来电号码的方式 + @param way 正常模式:0x00 播放文件模式:0x01 + */ +-(void)cmdPhoneNumberOnWay:(uint8_t)way; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_CustomManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_CustomManager.h new file mode 100644 index 000000000..f2224efc2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_CustomManager.h @@ -0,0 +1,73 @@ +// +// JL_CustomManager.h +// JL_BLEKit +// Created by 李放 on 2021/12/21. +// Modify by EzioChan on 2023/03/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_FunctionBaseManager.h" +#import "JL_TypeEnum.h" +#import "JL_Tools.h" + +NS_ASSUME_NONNULL_BEGIN + +///设备返回的自定义数据 +extern NSString *kJL_MANAGER_CUSTOM_DATA; +/// 设备返回的自定义数据(回复包) +extern NSString *kJL_MANAGER_CUSTOM_DATA_RSP; + + +@protocol JLCustomCmdPtl + +/// 设备回复自定义数据内容 +/// - Parameters: +/// - device: 设备句柄 +/// - data: 回复数据内容 +-(void)customCmdResponse:(JL_ManagerM *)manager Status:(uint8_t)status WithData:(NSData *)data; + +/// 设备主动请求 +/// - Parameters: +/// - device: 设备 +/// - data: 请求数据内容 +/// - isNeedResponse: 是否需要回复 +/// - sn: 序号 +-(void)customCmdRequire:(JL_ManagerM *)manager WithData:(NSData *)data isNeedResponse:(BOOL)isNeedResponse SN:(uint8_t)sn; + + +@end + +/// 用户自定义数据 +@interface JL_CustomManager : JL_FunctionBaseManager + +/// 数据回调委托 +@property(nonatomic,weak)id delegate; + +/// timeout max +/// default 3s +@property(nonatomic,assign)NSInteger maxTime; + +#pragma mark ---> 用户自定义数据 + +/// 用户自定义数据 +/// @param data 数据内容 +/// @param result 回复 +-(void)cmdCustomData:(NSData* __nullable)data + Result:(JL_CMD_RESPOND __nullable)result __attribute__((deprecated("use cmdCustomData:isNeedResponse:Result:"))); + +/// 用户自定义数据 +/// @param data 数据内容 +/// @param isNeedResponse 是否需要回复 +/// @param result 回复 +-(void)cmdCustomData:(NSData *)data isNeedResponse:(BOOL)isNeedResponse Result:(JL_CMD_RESPOND __nullable)result; + +/// 用户自定义数据回复 +/// @param sn 序号(设备发过来的序号) +/// @param data 数据 +-(void)cmdCustomResponse:(uint8_t)sn + Data:(NSData* __nullable)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_DeviceLogs.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_DeviceLogs.h new file mode 100644 index 000000000..01d1776f9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_DeviceLogs.h @@ -0,0 +1,32 @@ +// +// JL_DeviceLogs.h +// JL_BLEKit +// +// Created by EzioChan on 2022/5/12. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#import "JL_FunctionBaseManager.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef enum : UInt8 { + LogTypeDownloading = 0x00, + LogTypeFailed = 0x01, + LogTypeSucceed = 0x02, + LogTypeNoLog = 0x03 +} DeviceLogType; + +typedef void(^JLDeviceLogBK)(DeviceLogType type,float progress,NSString *_Nullable tempSavePath); + +@interface JL_DeviceLogs : JL_FunctionBaseManager + + +/// 检查获取设备log日志 +/// @param block 回调结果 +-(void)deviceLogDownload:(JLDeviceLogBK)block; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_EntityM.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_EntityM.h new file mode 100644 index 000000000..613aa5a73 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_EntityM.h @@ -0,0 +1,222 @@ +// +// JL_EntityM.h +// JL_BLEKit +// +// Created by 杰理科技 on 2020/9/1. +// Copyright © 2020 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +//@class JL_EntityM; +typedef NS_ENUM(NSInteger, JL_EntityM_Status) { + JL_EntityM_StatusBleOFF = 0, //BLE蓝牙未开启 + JL_EntityM_StatusConnectFail = 1, //BLE连接失败 + JL_EntityM_StatusConnecting = 2, //BLE正在连接 + JL_EntityM_StatusConnectRepeat = 3, //BLE重复连接 + JL_EntityM_StatusConnectTimeout = 4, //BLE连接超时 + JL_EntityM_StatusConnectRefuse = 5, //BLE被拒绝 + JL_EntityM_StatusPairFail = 6, //配对失败 + JL_EntityM_StatusPairTimeout = 7, //配对超时 + JL_EntityM_StatusPaired = 8, //已配对 + JL_EntityM_StatusMasterChanging = 9, //正在主从切换 + JL_EntityM_StatusDisconnectOk = 10, //已断开成功 + JL_EntityM_StatusNull = 11, //Entity为空 +}; + +/// 连接类型 +typedef NS_ENUM(NSUInteger, JLEntityConnectType) { + JLEntityConnectTypeBLE = 0, + JLEntityConnectTypeSPP = 1, + JLEntityConnectTypeATT = 2, +}; + +typedef void(^JL_EntityM_STATUS_BK)(JL_EntityM_Status status); + +@interface JL_EntityM : NSObject + +///命令中心 +@property(nonatomic,strong) JL_ManagerM *mCmdManager; + +/// BLE外设备 +@property(nonatomic,readonly,copy) CBPeripheral *mPeripheral; +///服务号AE00 +@property(nonatomic,strong) NSString *mSERVICE; +///命令【写】通道AE01 +@property(nonatomic,strong) NSString *mRCSP_W; +///命令【读】通道AE02 +@property(nonatomic,strong) NSString *mRCSP_R; +///过滤码 +@property(nonatomic,strong) NSData *__nullable mFilterKey; +///配对码 +@property(nonatomic,strong) NSData *__nullable mPairKey __attribute__((deprecated("Use mAuthKey instead"))); +/// 设备认证码 +@property(nonatomic,copy) NSData *__nullable mAuthKey; +///广播数据 +@property(strong,nonatomic) NSData *mAdvData; + +///连接超时时间 +@property(nonatomic,assign) int mBLE_TIMEOUT; +///是否【开启过滤】 +@property(nonatomic,assign) BOOL mBLE_FILTER_ENABLE; +///是否【开启配对】 +@property(nonatomic,assign) BOOL mBLE_PAIR_ENABLE __attribute__((deprecated("Use mAuthEnable instead"))); +/// 是否开启设备认证 +@property(nonatomic,assign) BOOL mAuthEnable; +///是否完成配对 +@property(nonatomic,assign) BOOL mBLE_IS_PAIRED __attribute__((deprecated("Use mIsAuth instead"))); +/// 是否已认证 +@property(nonatomic,assign) BOOL mIsAuth; +///是否需要OTA +@property(nonatomic,assign) BOOL mBLE_NEED_OTA; +@property(nonatomic,assign) BOOL isFrom_HISTROY; +@property(nonatomic,assign) BOOL isBLE_CHANGE; +@property(nonatomic,assign) BOOL isCMD_PREPARED; + +@property(strong,nonatomic) NSString *mUUID; +@property(strong,nonatomic) NSNumber *mRSSI; +@property(readonly,copy,nonatomic)NSString *mItem; +/** + * mType值说明: + * -1:传统设备 + * 0:AI音箱 + * 1:TWS + * 2:数码充电仓 + * 3:普通耳机 + * 4:声卡类型 + * 5:手表类型 + */ +@property(assign,nonatomic) JL_DeviceType mType; +@property(assign,nonatomic) BOOL isExclusive; +@property(assign,nonatomic) BOOL isBound; +@property(assign,nonatomic) BOOL isEdrLinked; +@property(assign,nonatomic) BOOL isCharging; +@property(assign,nonatomic) BOOL isCharging_L; +@property(assign,nonatomic) BOOL isCharging_R; +@property(assign,nonatomic) BOOL isCharging_C; +@property(assign,nonatomic) uint8_t mPower; +@property(assign,nonatomic) uint8_t mPower_L; +@property(assign,nonatomic) uint8_t mPower_R; +@property(assign,nonatomic) uint8_t mPower_C; +@property(strong,nonatomic) NSString *mVID __attribute__((deprecated("Deprecated, use mUID instead"))); +@property(strong,nonatomic) NSString *mUID; +@property(strong,nonatomic) NSString *mPID; +@property(strong,nonatomic) NSString *mEdr; +@property(strong,nonatomic) NSString *mBleAddr; //OTA设备需要 +@property(assign,nonatomic) uint8_t mChipType; //0:690x 1:692x 2:693x +@property(assign,nonatomic) uint8_t mProtocolType; //默认0x00 +/** + 0x00 - dismiss 不显示弹窗 + 0x01 - unconnected 经典蓝牙未连接 + iOS : 不显示电量,请手动连接XXX + Android:不显示电量,显示连接按钮 + 0x02 - connected 经典蓝牙已连接 + iOS:判断已连接的经典蓝牙名是否一致,若未连接或蓝牙名不一致, + 显示“设备已被占用”。若一致,显示电量等信息。 + Android:判断已连接的经典蓝牙Mac是否一致,若未连接或蓝牙Mac不一致, + 显示“设备已被占用”。若一致,显示电量等信息。 + 0x03 - connecting 设备正在自动回连 + Android 和 iOS 显示“设备正在自动回连 ” + 0x04 - connectionless 设备不可连接(需要按下配对按键) + Android 和 iOS 显示配对操作方式 + */ +@property(assign,nonatomic) int8_t mScene; + +///Seq 每次开机会加 1,用于app区分是否同一次开机 +@property(assign,nonatomic) uint8_t mSeq; + +///TWS配对标识,0:未配对 1:已配对 +@property(assign,nonatomic) uint8_t mTWS_Paired; + +///0:关盖 1:开盖 +@property(assign,nonatomic) uint8_t mTWS_Cap; + +///0:充电模式 1:发射模式 +@property(assign,nonatomic) uint8_t mTWS_Mode; +///主从标识 (0:从机, 1:主机) +@property(assign,nonatomic) uint8_t mHeadsetMaster; + +///连接标识 (0:可以连接 1:不可连接) +@property(assign,nonatomic) uint8_t mHeadsetLinkEnable; +/** + * mWatchScene值说明: + * 0x00:经典蓝牙未连接 + * 0x01:经典蓝牙已连接 + * 0x02:设备正在回连 + * 0x03:设备不可连接 (需要手动进入配对模式) + */ +///连接标识 (0:可以连接 1:不可连接) +@property(assign,nonatomic) uint8_t mWatchScene; + +///连接方式 +///0:ble +///1:spp +///2:att +@property(assign,nonatomic) JLEntityConnectType mConnectWay; + +/// 是否支持充电仓 +@property(assign,nonatomic) BOOL mIsSupportChargeBin; + +/// 是否支持蓝牙Le Audio音频 +@property(assign,nonatomic) BOOL mIsSupportLeAudio; + +/// Le Audio 的连接状态 +@property(assign,nonatomic) BOOL mLeAudioConnected; + +/// RCSP 是否复用 LEAudio 的地址 +@property(assign,nonatomic) BOOL mLeAudioIsReUseRCSPAddr; + +/// 设备特殊类型 +@property(assign,nonatomic) JLDevSpecialType mSpecialType; + +-(void)setBlePeripheral:(CBPeripheral *)mPeripheral; +-(void)setBleItem:(NSString *)mItem; + +/** + 更新代理 +*/ +-(void)updateDelegate; + +/** + 释放定时器 +*/ +-(void)releaseEntityTimer; + +/** + 发送RCSP数据 + @param data 数据 + @return 是否已发送 + */ +-(BOOL)writeRcspData:(NSData*)data; + +/** +调整发数参数 +@param isGame 是否为游戏模式 +@param mtu 每包发数字节数 +@param delay 延时时间 (毫秒) +*/ +-(void)setGameMode:(BOOL)isGame MTU:(NSUInteger)mtu Delay:(int)delay; + + +-(void)flashFinishedAction; + + +#pragma mark - 连接超时管理 +-(void)startTimeout:(int)code; +-(void)stopTimeout; +-(void)cancelAuthPair; +#pragma mark - EntityM 模型转换 +-(void)updateEntity:(NSDictionary*)dic; ++(JL_EntityM*)changeToEntity:(NSDictionary*)dic; ++(NSArray*)turnToEntityArray:(NSArray*)array; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FileManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FileManager.h new file mode 100644 index 000000000..582b95659 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FileManager.h @@ -0,0 +1,249 @@ +// +// JL_FileManager.h +// JL_BLEKit +// +// Created by 凌煊峰 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +//MARK: - 枚举 +typedef NS_ENUM(UInt8, JL_FileOperationEnvironmentType) { + JL_FileOperationEnvironmentTypeBigFileTransmission = 0x00, //大文件传输 + JL_FileOperationEnvironmentTypeDeleteFile = 0x01, //删除文件 + JL_FileOperationEnvironmentTypeFormatting = 0x02, //格式化 + JL_FileOperationEnvironmentTypeFatfsTransmission = 0x03, //FAT文件传输 +}; +typedef NS_ENUM(UInt8, JL_DeleteFileLastType) { + JL_DeleteFileLastTypeIsNotLast = 0x00, //不是最后一个文件 + JL_DeleteFileLastTypeIsLast = 0x01, //是最后一个文件 +}; +typedef NS_ENUM(UInt8, JL_BrowseReason) { + JL_BrowseReasonCommandEnd = 0, //读取完当前命令请求的文件 + JL_BrowseReasonFolderEnd = 1, //读取完当前目录的文件 + JL_BrowseReasonPlaySuccess = 2, //点播成功 + JL_BrowseReasonBusy = 3, //设备繁忙 + JL_BrowseReasonDataFail = 4, //目录数据发送失败 + JL_BrowseReasonReading = 0x0f, //正在读取中 + JL_BrowseReasonUnknown, //未知原因 +}; +typedef NS_ENUM(UInt8, JL_FileContentResult) { + JL_FileContentResultStart = 0x00, //开始传输 + JL_FileContentResultReading = 0x01, //正在读取 + JL_FileContentResultEnd = 0x02, //读取结束 + JL_FileContentResultCancel = 0x03, //取消读取 + JL_FileContentResultFail = 0x04, //读取失败 + JL_FileContentResultNull = 0x05, //文件不存在 + JL_FileContentResultDataError = 0x06, //数据错误 + JL_FileContentResultCrcFail = 0x07, //crc校验失败 +}; +typedef NS_ENUM(UInt8, JL_FileDataType) { + JL_FileDataTypeDo = 0, //开始传输文件数据 + JL_FileDataTypeDone = 1, //结束传输文件数据 + JL_FileDataTypeDoing = 2, //正在传输文件数据 + JL_FileDataTypeCancel = 3, //取消传输文件数据 + JL_FileDataTypeError = 4, //传输文件数据出错 + JL_FileDataTypeUnknown, +}; +typedef NS_ENUM(UInt8, JL_BigFileTransferCode) { + JL_BigFileTransferCodeSuccess = 0x00, //成功 + JL_BigFileTransferCodeFail = 0x01, //写失败 + JL_BigFileTransferCodeOutOfRange = 0x02, //数据超出范围 + JL_BigFileTransferCodeCrcFail = 0x03, //crc校验失败 + JL_BigFileTransferCodeOutOfMemory = 0x04, //内存不足 +}; +typedef NS_ENUM(UInt8, JL_BigFileResult) { + JL_BigFileTransferStart = 0x00, //开始大文件数据传输 + JL_BigFileTransferDownload = 0x01, //传输大文件有效数据 + JL_BigFileTransferEnd = 0x02, //结束大文件数据传输 + JL_BigFileTransferOutOfRange = 0x03, //大文件传输数据超范围 + JL_BigFileTransferFail = 0x04, //大文件传输失败 + JL_BigFileCrcError = 0x05, //大文件校验失败 + JL_BigFileOutOfMemory = 0x06, //空间不足 + JL_BigFileTransferCancel = 0x07, //取消传输 + JL_BigFileTransferNoResponse = 0xF1, //设备没有响应 +}; + +//MARK: - 回调 + +typedef void(^JL_FILE_BK)(NSArray* __nullable array,JL_BrowseReason reason); +typedef void(^JL_FILE_CONTENT_BK)(JL_FileContentResult result, uint32_t size, NSData* __nullable data, float progress); +typedef void(^JL_FILE_DATA_BK)(NSData* __nullable data, NSString* __nullable path, uint16_t size, JL_FileDataType type); +typedef void(^JL_BIGFILE_BK)(NSArray* __nullable array); +typedef void(^JL_BIGFILE_RT)(JL_BigFileResult result, float progress); + + +/// 文件浏览与下载、上载、删除等相关的操作类 +@interface JL_FileManager : JL_FunctionBaseManager + +/// 超时时间 +@property(nonatomic,assign)NSInteger maxTimeout; + +///大文件名是否使用其他编码 +///Default:false +///短文件名:GBK CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000) +///长文件名:Unicode16L (NSUTF16LittleEndianStringEncoding) +///Other: true +///需要设置encodeType属性的值,默认为Unicode16L +@property(nonatomic,assign)BOOL isOtherEncode; + +/// 大文件名使用的编码 +/// default :NSUTF16LittleEndianStringEncoding +@property(nonatomic,assign)NSStringEncoding encodeType; + +/// 停止超时计算 +- (void)closeTimer; + + +//MARK: - 浏览目录 + +/// 发起文件目录浏览 +/// - Parameters: +/// - model: 文件Model +/// - number: 读取的数量 单次请求建议 < 20 条 +/// - result: 回调操作结果 +-(void)cmdBrowseModel:(JLModel_File*)model + Number:(uint8_t)number + Result:(JL_CMD_RESPOND __nullable)result; + +/// 监听目录数据回调 +/// - Parameter result: 回调内容 +-(void)cmdBrowseMonitorResult:(JL_FILE_BK __nullable)result; + + + +//MARK: - 删除文件 + +/// 删除文件(必须异步执行) +/// @param array 文件Model数组 +-(BOOL)cmdDeleteFileModels:(NSArray*)array; + +/// 删除单个JLModel_File文件 +/// @param model 文件对象 JLModel_File +/// @param last 是否最后一个文件 +/// @param result 删除成功回调 +-(void)cmdDeleteFile:(JLModel_File*)model + IsLast:(JL_DeleteFileLastType)last + Result:(JL_CMD_RESPOND __nullable)result; + +/// 通过名字删除文件 +/// 仅部分设备支持(设备要求支持文件系统支持唯一文件名) +/// - Parameters: +/// - name: 文件名 +/// - result: 回调结果 +-(void)cmdFileDeleteWithName:(NSString*)name Result:(JL_CMD_RESPOND __nullable)result; + + + +/// 设备格式化 +/// @param handle 设备句柄 +/// @param result 格式化回调 +-(void)cmdDeviceFormat:(NSString*)handle Result:(JL_CMD_RESPOND __nullable)result; + +/// 清除设备音乐缓存记录 +/// @param type 卡的类型 +-(void)cmdCleanCacheType:(JL_CardType)type; + + +//MARK: - 通讯文件句柄相关 + +/// 设置文件传输句柄 +/// 大文件传输,设置当前传输句柄 +/// - Parameter currentFileHandleType: 传输句柄 +- (void)setCurrentFileHandleType:(JL_FileHandleType)currentFileHandleType; + +/// 获取当前的传输文件句柄 +- (JL_FileHandleType)getCurrentFileHandleType; + +/// 文件传输的句柄数据 +- (NSData *)currentDeviceHandleData; + +/// 设置当前使用的存储设备 +/// @param devHandle 存储设备句柄 +/// 可参考JLModel_Device 中获取到的设备句柄内容 +/// @param result 命令回调结果 +-(void)cmdSetDeviceStorage:(NSData *)devHandle Result:(JL_CMD_RESPOND)result; + + +//MARK: - 文件传输 固件-->APP + +/// 监听文件数据 固件-->APP +/// - Parameter result: 数据内容监听回调 +-(void)cmdFileDataMonitorResult:(JL_FILE_DATA_BK __nullable)result __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result"))); + +/// app 端回复设备的请求文件传输 固件-->APP +/// 允许传输文件数据 +-(void)cmdAllowFileData __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result"))); + +/// app 端回复设备的请求文件传输 固件-->APP +/// 拒绝传输文件数据 +-(void)cmdRejectFileData __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result"))); + +/// 传输文件数据 固件-->APP +/// 停止传输文件数据 +-(void)cmdStopFileData __attribute__((deprecated("This method is deprecated. Use newMethod cmdFileReadContentCancel"))); + +/// 读取外置卡的文件内容 固件-->APP +/// 此方法针对部分设备(要求设备文件系统支持唯一文件名) +/// - Parameters: +/// - name: 文件名 +/// - result: 回调结果 +-(void)cmdFileReadContentWithName:(NSString*)name Result:(JL_FILE_CONTENT_BK __nullable)result; + +/// 簇号方式读取外置卡的文件内容 固件-->APP +/// - Parameters: +/// - fileClus: 文件簇号 +/// - result: 回调 +- (void)cmdFileReadContentWithFileClus:(uint32_t)fileClus Result:(JL_FILE_CONTENT_BK __nullable)result; + +/// 取消读取外置卡的文件内容 +-(void)cmdFileReadContentCancel; + + +//MARK: - 文件传输 APP-->固件 + +/// 请求传输文件给设备 +/// - Parameters: +/// - size: 文件大小 +/// - path: 存放路径 +-(void)cmdFileDataSize:(uint8_t)size + SavePath:(NSString*)path __attribute__((deprecated("This method is deprecated. Use newMethod cmdBigFileData:(NSString *)path WithFileName:(NSString *)fileName Result:(JL_BIGFILE_RT __nullable)result"))); + + +/// 推送文件数据给设备 +/// - Parameter data:文件数据 +-(void)cmdPushFileData:(NSData*)data __attribute__((deprecated("This method is deprecated. Use newMethod cmdBigFileData:(NSString *)path WithFileName:(NSString *)fileName Result:(JL_BIGFILE_RT __nullable)result"))); + + +/// 大文件传输 App-->固件 +/// - Parameters: +/// - path: 本地大文件下载文件路径 +/// - fileName: 目标文件路径 +/// 如想指定文件夹路径,可以使用 Download/abc/def.txt +/// 否则可以直接添加 def.txt 由系统存放到默认的文件夹下 +/// - result: 回调结果 +-(void)cmdBigFileData:(NSString *)path WithFileName:(NSString *)fileName + Result:(JL_BIGFILE_RT __nullable)result; + +/// 取消文件传输 App-->固件 +-(void)cmdStopBigFileData; + +/// 通知固件进行环境准备 +/// - Parameters: +/// - environment: +/// 0:大文件传输 +/// 1:删除文件 +/// 2:格式化 +/// - result: 回调结果 +-(void)cmdPreEnvironment:(JL_FileOperationEnvironmentType)environment Result:(JL_CMD_RESPOND __nullable)result; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h new file mode 100644 index 000000000..f4ce71cb8 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FindDeviceManager.h @@ -0,0 +1,130 @@ +// +// JL_FindDeviceManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/17. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + +/// 查找设备参数 +@interface JLFindDeviceOperation : NSObject + +/// 播放方式 way: +/// 0. 全部播放 +/// 1.左侧播放 +/// 2.右侧播放 +/// 3.全部暂停 +@property(nonatomic,assign)uint8_t playWay; + +/// 超时时间 +/// 0 表示不限制时间 +/// 默认时间 60 +@property(nonatomic,assign)uint16_t timeout; + +/// 铃声操作 +/// 0x00: 关闭铃声 +/// 0x01: 播放铃声 +@property(nonatomic,assign)uint8_t sound; + + +@end + + +/// 查找手机参数 +@interface JLFindPhoneModel : NSObject + +/// 铃声操作 +/// 0x00: 关闭铃声 +/// 0x01: 播放铃声 +@property(nonatomic,assign)uint8_t sound; + +/// 超时时间 +/// 0 表示不限制时间 +/// 默认时间 10 +@property(nonatomic,assign)uint16_t timeout; + +@end + + + +@protocol JL_FindDeviceDelegate + + +/// 设备查找手机回调 +/// - Parameter model:JLFindPhoneModel +-(void)findDeviceStartFindMyPhone:(JLFindPhoneModel *)model; + +/// 查询设备当前状态 +/// 当前回调需要先查询设备状态cmdFindDeviceCheckStatus +/// - Parameter model: JLFindDeviceOperation +-(void)findDeviceCheckStatus:(JLFindDeviceOperation *)model; + +@end + +/// 查找设备类 +/// 查找设备/设备查找手机 +@interface JL_FindDeviceManager : JL_FunctionBaseManager + +#pragma mark ---> 查找设备 +// 设备查找手机的通知 +// 携带了响铃时长🔔 +// dict = @{@"op":@(操作类型),@"timeout":@(超时时间)}; +extern NSString *kJL_MANAGER_FIND_PHONE; + +// 手机查找设备 +// 携带是否停止响铃 +// dict = @{@"op":@(操作类型),@"timeout":@(超时时间)}; +extern NSString *kJL_MANAGER_FIND_DEVICE; + +/// 查询固件设备查找状态回调 +/// JLFindDeviceOperation 作为回调对象 +extern NSString *kJL_MANAGER_FIND_DEVICE_STATUS; + + +typedef void(^JL_FIND_DEVICE_CHECK_RESPOND)(JL_CMDStatus status, JLFindDeviceOperation * _Nullable model); + +/// 代理 +@property(nonatomic,weak)id delegate; + +// 查找设备命令 +// @param isVoice 是否发声 +// @param timeout 超时时间 +// @param isIphone 是否设备查找手机(默认是手机找设备) +// @param opDict 这是一个可选项,若tws未连接,则该值无效,默认是全部播放 +// 字典键值对说明: +// 播放方式 way: 0 全部播放 +// 1 左侧播放 +// 2 右侧播放 +// 播放源 player: 0 APP端播放 +// 1 设备端播放 +// etc.全部播放&APP播放音效 +// opDict:{@"way":@"0",@"player":@"0"} +-(void)cmdFindDevice:(BOOL)isVoice + timeOut:(uint16_t)timeout + findIphone:(BOOL)isIphone + Operation:( NSDictionary * _Nullable )opDict __attribute__((deprecated ( "This method will be replaced with subcommands cmdFindDeviceWith and proxy etc."))); + + + +/// 查找设备命令 +/// - Parameter operation: 查找设备对象 +-(void)cmdFindDeviceWith:(JLFindDeviceOperation *)operation; + + + +/// 查询一次固件查找设备的状态 +/// - Parameter result: 状态回调 +-(void)cmdFindDeviceCheckStatus:(JL_FIND_DEVICE_CHECK_RESPOND _Nullable)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h new file mode 100644 index 000000000..925f528c2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FlashOperateManager.h @@ -0,0 +1,189 @@ +// +// JL_FlashOperateManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +#pragma mark - 外挂FLASH操作命令 +typedef NS_ENUM(UInt8, JL_FlashOperationOPType) { + JL_FlashOperationOPTypeWriteData = 0x00, //写数据 + JL_FlashOperationOPTypeReadData = 0x01, //读数据 + JL_FlashOperationOPTypeInsertFile = 0x02, //插入文件 + JL_FlashOperationOPTypeDialOperation = 0x03, //表盘操作 + JL_FlashOperationOPTypeEraseData = 0x04, //擦除数据 + JL_FlashOperationOPTypeDeleteFile = 0x05, //删除文件 + JL_FlashOperationOPTypeWriteFileProtection = 0x06, //写文件保护 + JL_FlashOperationOPTypeUpdateDialResource = 0x07, //更新表盘资源 + JL_FlashOperationOPTypeCheckWriteDataSuccess = 0x08, //查询写数据是否成功 + JL_FlashOperationOPTypeUpdateResourceFlag = 0x09, //升级资源标志操作 + JL_FlashOperationOPTypeRestoreSystem = 0x0A, //还原系统 + JL_FlashOperationOPTypeGetFileInfo = 0x0B, //获取文件信息 + JL_FlashOperationOPTypeGetRemainingSpace = 0x0C, //获取剩余空间 + JL_FlashOperationOpTypeGetSourceStorageInfo = 0x0D, //获取源存储信息 +}; + +typedef NS_ENUM(UInt8, JL_DialSetting) { + JL_DialSettingReadCurrentDial = 0x00, //读取当前表盘 + JL_DialSettingSetDial = 0x01, //设置表盘 + JL_DialSettingVersion = 0x03, //获取表盘额外信息,如版本 + JL_DialSettingActivateCustomDial = 0x04, //激活自定义表盘 + JL_DialSettingGetDialName = 0x05, //获取对应的自定义表盘名字 +}; +typedef NS_ENUM(UInt8, JL_FlashOperateFlag) { + JL_FlashOperateFlagFinish = 0x00, //结束 + JL_FlashOperateFlagStart = 0x01, //开始 +}; + +@interface JL_FlashOperateManager : JL_FunctionBaseManager + +typedef void(^JL_FlashInfo_BK)(JLModel_Flash* __nullable model); +typedef void(^JL_FlashWrite_BK)(uint8_t flag); +typedef void(^JL_FlashWriteStatus_BK)(uint8_t flag,uint16_t leftSize); +typedef void(^JL_FlashWriteSize_BK)(uint8_t flag,uint32_t size); +typedef void(^JL_FlashRead_BK)(uint8_t flag,NSData *__nullable data); +typedef void(^JL_FlashAddOrDel_BK)(uint8_t flag); +typedef void(^JL_FlashWatch_BK)(uint8_t flag, uint32_t size, + NSString *__nullable path, + NSString *__nullable describe); +typedef void(^JL_FlashClean_BK)(uint8_t flag); +typedef void(^JL_FlashProtect_BK)(uint8_t flag); +typedef void(^JL_FlashUpdate_BK)(uint8_t flag); +typedef void(^JL_FlashFileInfo_BK)(uint32_t size,uint16_t crc16); +typedef void(^JL_FlashLeftSize_BK)(uint32_t leftSize); + +/// Flash Info +@property(nonatomic,strong)JLModel_Flash *flashInfo; + +#pragma mark ---> 获取外置Flash信息 +/** + 获取外置Flash信息 + @param result 回复 + */ +-(void)cmdGetFlashInfoResult:(JL_FlashInfo_BK __nullable)result; + +#pragma mark ---> 写数据到Flash +/** + 写数据到Flash + @param data 数据 + @param offset 偏移 + @param mtu 每包大小 + @param result 回复 + */ +-(void)cmdWriteToFlashAllData:(NSData*)data + Offset:(uint32_t)offset + Mtu:(uint16_t)mtu + Result:(JL_FlashWriteSize_BK __nullable)result; + +#pragma mark ---> 读数据从Flash +/** + 读数据从Flash + @param offset 偏移 + @param size 大小 + @param mtu 每包大小 + @param result 回复 + */ +-(void)cmdReadFromFlashAllDataOffset:(uint32_t)offset + Size:(uint16_t)size + Mtu:(uint16_t)mtu + Result:(JL_FlashRead_BK __nullable)result; + +#pragma mark ---> [开始/结束]增加表盘(文件) +/** + 开始/结束 插入文件 + @param path 路径 + @param size 大小 + @param flag 开始:0x01 结束:0x00 + @param result 回复 + */ +-(void)cmdInsertFlashPath:(NSString* __nullable)path + Size:(uint32_t)size + Flag:(JL_FlashOperateFlag)flag + Result:(JL_FlashAddOrDel_BK __nullable)result; + +#pragma mark ---> 设置表盘(文件) + +/** + 表盘操作 + @param path 路径 + @param flag 0x00:读取当前表盘 + 0x01:设置表盘 + 0x03:获取表盘额外信息,如版本 + 0x04:激活自定义表盘 + 0x05:获取对应的自定义表盘名字 + @param result 回复 + */ +-(void)cmdWatchFlashPath:(NSString*__nullable)path + Flag:(JL_DialSetting)flag + Result:(JL_FlashWatch_BK __nullable)result; + +#pragma mark ---> 设备更新表盘(文件) 【kJL_MANAGER_WATCH_FACE】?// 返回 字符串 +extern NSString *kJL_MANAGER_WATCH_FACE; + +#pragma mark ---> [开始/结束]删除表盘(文件) +/** + 开始/结束 删除文件 + @param path 路径 + @param flag 开始:0x01 结束:0x00 + @param result 回复 + */ +-(void)cmdDeleteFlashPath:(NSString* __nullable)path + Flag:(JL_FlashOperateFlag)flag + Result:(JL_FlashAddOrDel_BK __nullable)result; + +#pragma mark ---> 外挂Flash【写保护】操作 +/** + 开始/结束 + @param flag 开始:0x01 结束:0x00 + */ +-(void)cmdWriteProtectFlashFlag:(JL_FlashOperateFlag)flag Result:(JL_FlashProtect_BK __nullable)result; + +#pragma mark ---> 外挂Flash【资源更新】操作 +/** + 开始/结束 更新UI + @param flag 开始:0x01 结束:0x00 + */ +-(void)cmdUpdateResourceFlashFlag:(JL_FlashOperateFlag)flag Result:(JL_FlashUpdate_BK __nullable)result __attribute__((deprecated ( "The current interface is about to be canceled in version 2.0.0, please use cmdUpdateResourceFlashFlagAsync:Result: instead"))); +-(void)cmdUpdateResourceFlashFlag:(JL_FlashOperateFlag)flag; +/// 外挂Flash(资源更新)操作 +/// 异步回调 +/// - Parameters: +/// - flag: flag +/// - result: 操作结果 +-(void)cmdUpdateResourceFlashFlagAsync:(JL_FlashOperateFlag)flag Result:(JL_FlashUpdate_BK __nullable)result; + +#pragma mark ---> 断开连接,对FATFS处理。 +-(void)cmdFlashActionDisconnect; + +#pragma mark ---> 外挂Flash 手表资源更新标志位 +-(void)cmdWatchUpdateResource __attribute__((deprecated ( "The current interface is about to be canceled in version 2.0.0, please use cmdWatchUpdateResourceWith:(JL_CMD_RESPOND __nullable)result instead"))); + +/// 打开设备升级资源标记操作 +/// - Parameter result: 设备回复结果 +/// 当设备回复的cmd代号为非 0 时,属于异常结束,不可继续升级 +-(void)cmdWatchUpdateResourceWith:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 外挂Flash 还原系统 +-(void)cmdFlashRecovery; + +#pragma mark ---> 外挂Flash 获取文件信息 +-(void)cmdFlashInformationOfFile:(NSString*)file Result:(JL_FlashFileInfo_BK)result; + +#pragma mark ---> 外挂Flash 剩余空间 +-(void)cmdFlashLeftSizeResult:(JL_FlashLeftSize_BK)result; + +/// 获取资源存储空间 +/// 例如:res_space= 8192 (Kb), 即realSize = res_space* 1024= 8192 * 1024 = 8Mb +/// - Parameter result: 回复 +-(void)cmdFlashGetSourceStorageInfo:(JL_FlashLeftSize_BK)result; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FmManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FmManager.h new file mode 100644 index 000000000..d912b6af7 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FmManager.h @@ -0,0 +1,70 @@ +// +// JL_FmManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + + +typedef NS_ENUM(UInt8, JL_FCmdFM) { + JL_FCmdFMPP = 0x01, //FM 暂停/播放 + JL_FCmdFMPonitBefore = 0x02, //上一个频点 + JL_FCmdFMPonitNext = 0x03, //下一个频点 + JL_FCmdFMChannelBefore = 0x04, //上一个频道 + JL_FCmdFMChannelNext = 0x05, //下一个频道 + JL_FCmdFMSearch = 0x06, //扫描 + JL_FCmdFMChannelSelect = 0x07, //选择频道 + JL_FCmdFMChannelDelete = 0x08, //删除频道 + JL_FCmdFMFrequencySelect = 0x09, //选择频点 + JL_FCmdFMFrequencyDelete = 0x0a, //删除频点 +}; + +typedef NS_ENUM(UInt8, JL_FMSearch) { + JL_FMSearchALL = 0x00, //FM 暂停/播放 + JL_FMSearchForward = 0x01, //向前搜索 + JL_FMSearchBackward = 0x02, //向后搜索 + JL_FMSearchStop = 0x03, //停止搜索 +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_FmManager : JL_FunctionBaseManager + +///Fm状态 +@property (assign,nonatomic) JL_FMStatus fmStatus; + +///Fm 频段范围 +///76.5-108.0Mhz +///87.5-108.0Mhz +@property (assign,nonatomic) JL_FMMode fmMode; + +///当前fm +@property (strong,nonatomic) JLModel_FM *currentFm; + +///Fm列表 +@property (strong,nonatomic) NSArray *fmArray; + +#pragma mark ---> FM相关操作 +/** + @param cmd FM功能 + @param search FM搜索 + @param channel FM频道 + @param frequency FM频点 + @param result 返回结果 + */ +-(void)cmdFm:(JL_FCmdFM)cmd + Saerch:(JL_FMSearch)search + Channel:(uint8_t)channel + Frequency:(uint16_t)frequency + Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h new file mode 100644 index 000000000..7a3a0b5f8 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_FunctionBaseManager.h @@ -0,0 +1,28 @@ +// +// JL_FunctionBaseManager.h +// JL_BLEKit +// +// Created by 凌煊峰 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@interface JL_FunctionBaseManager : NSObject + +@property (assign, nonatomic) uint8_t mCmdSN; +@property (strong, nonatomic) NSString *mBLE_UUID; +@property (strong, nonatomic) NSString *mBLE_NAME; +@property (weak , nonatomic) JLModel_Device *deviceModel; +@property (weak , nonatomic) JL_ManagerM *centerManagerM; + +- (void)inputPKG:(JL_PKG *)pkg; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Handle.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Handle.h new file mode 100644 index 000000000..add95b44e --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Handle.h @@ -0,0 +1,46 @@ +// +// JL_Handle.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * 收到设备返回的XM_PKG的回调。 + */ +extern NSString *kJL_CMD_RECEIVE; //XM_RCSP【接收】 + +@protocol JL_HandleDelegate +@optional +-(void)onHandleOutputPKG:(JL_PKG*)pkg; +@end + +@interface JL_Handle : NSObject +@property(nonatomic,weak)iddelegate; + +/** +输入BLE数据 +@param data 设备过来的数据 +*/ +-(void)inputHandleData:(NSData*)data; + +/**[实例] +向设备发送JL_PKG数据包。 +@param pkg JL_PKG数据模型 +@param name 设备名字 +*/ +-(NSData*)sendPackage:(JL_PKG*)pkg WithName:(NSString*)name; + ++(void)logPackage:(JL_PKG*)pkg WithName:(NSString *__nullable)name IsSend:(BOOL)isSend; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_LRCManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_LRCManager.h new file mode 100644 index 000000000..1a4942643 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_LRCManager.h @@ -0,0 +1,35 @@ +// +// JL_LRCManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/17. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_LRCType) { + JL_LRCTypeDone = 1, //LRC已传输完 + JL_LRCTypeBusy = 2, //设备忙碌 + JL_LRCTypeDoneFail = 0x0e, //传输失败 +}; +typedef void(^JL_LRC_BK)(NSString* __nullable lrc, JL_LRCType type); +typedef void(^JL_LRC_BK_1)(NSData* __nullable lrc, JL_LRCType type); + +@interface JL_LRCManager : JL_FunctionBaseManager + +#pragma mark ---> 获取LRC歌词 +/** + @param result 返回LRC数据 + */ +-(void)cmdLrcMonitorResult:(JL_LRC_BK __nullable)result; +-(void)cmdLrcMonitorResult_1:(JL_LRC_BK_1 __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_LightManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_LightManager.h new file mode 100644 index 000000000..22b7c87ae --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_LightManager.h @@ -0,0 +1,99 @@ +// +// JL_LightManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/16. +// Modify by EzioChan on 2023/03/16 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +@class JL_LightManager; + +@protocol JLLightStatusPtl + +-(void)jlLightStatus:(JL_LightManager *)lightManager; + +@end + + +@interface JL_LightManager : JL_FunctionBaseManager + +/// 当前设备是否支持灯光设置 +@property(nonatomic,assign)BOOL isSupportLight; + +/// 0:关闭 1:打开 2:设置模式(彩色/闪烁/情景) +@property (assign,nonatomic) JL_LightState lightState; + +// 0:彩色 1:闪烁 2: 情景 +@property (assign,nonatomic) JL_LightMode lightMode; + +/// 灯光红色 +@property (assign,nonatomic) uint8_t lightRed; + +/// 灯光绿色 +@property (assign,nonatomic) uint8_t lightGreen; + +/// 灯光蓝色 +@property (assign,nonatomic) uint8_t lightBlue; + +/// 闪烁模式Index +@property (assign,nonatomic) JL_LightFlashModeIndex lightFlashIndex; + +/// 闪烁频率Index +@property (assign,nonatomic) JL_LightFlashModeFrequency lightFrequencyIndex; + +/// 情景模式Index +@property (assign,nonatomic) JL_LightSceneMode lightSceneIndex; + +// 色调,范围0-360 +@property (assign,nonatomic) uint16_t lightHue; + +// 饱和度,0-100 +@property (assign,nonatomic) uint8_t lightSat; + +// 亮度,0-100 +@property (assign,nonatomic) uint8_t lightLightness; + +/// 状态更新代理委托 +@property (weak,nonatomic)id delegate; + + +/// 获取灯光设置,通过代理返回 +-(void)cmdGetLightStatus; +/** + * 设置灯光 + * @param lightState 灯光状态 + * @param lightMode 灯光模式 + * @param red 红色色值 + * @param green 绿色色值 + * @param blue 蓝色色值 + * @param flashIndex 闪烁模式index + * @param flashFreqIndex 闪烁频率 + * @param sceneIndex 情景模式 + * @param hue 色调,范围0-360 + * @param saturation 饱和度,0-100 + * @param lightness 亮度,0-100 + */ +-(void)cmdSetState:(JL_LightState)lightState + Mode:(JL_LightMode)lightMode + Red:(uint8_t)red + Green:(uint8_t)green + Blue:(uint8_t)blue + FlashInex:(JL_LightFlashModeIndex)flashIndex + FlashFreq:(JL_LightFlashModeFrequency)flashFreqIndex + SceneIndex:(JL_LightSceneMode)sceneIndex + Hue:(uint16_t)hue + Saturation:(uint8_t)saturation + Lightness:(uint8_t)lightness; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MSG_Func.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MSG_Func.h new file mode 100644 index 000000000..91d914f48 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MSG_Func.h @@ -0,0 +1,22 @@ +// +// JL_MSG_Func.h +// JL_BLEKit +// +// Created by EzioChan on 2021/5/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +typedef enum : uint8_t { + Func_Location, + Func_Weather, + Func_Notify, +} FuncMsgType; + +@interface JL_MSG_Func : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MSG_Weather.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MSG_Weather.h new file mode 100644 index 000000000..6ff75d805 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MSG_Weather.h @@ -0,0 +1,143 @@ +// +// JL_MSG_Weather.h +// JL_BLEKit +// +// Created by EzioChan on 2021/5/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +typedef NS_ENUM(UInt8, JLWeatherType) { + ///晴 + JLWeatherTypeSunny = 0x00, + ///少云 + JLWeatherTypeCloudLess, + ///晴间多云 + JLWeatherTypePartlyCloudy, + ///多云 + JLWeatherTypeCloudiness, + ///阴 + JLWeatherTypeOvercastSky, + ///有风/和风/清风/微风 + JLWeatherTypeBreeze, + ///平静 + JLWeatherTypeCalmWind, + ///大风/强风/劲风/疾风 + JLWeatherTypeHighWind, + ///飓风/狂爆风 + JLWeatherTypeHurricane, + ///热带风暴/风暴 + JLWeatherTypeTropicalStorm, + ///霾/中度霾/重度霾/严重霾 + JLWeatherTypeHaze, + ///阵雨 + JLWeatherTypeShower, + ///雷阵雨 + JLWeatherTypeThunderShower, + ///雷阵雨并伴有冰雹 + JLWeatherTypeHallThunderShower, + ///雨/小雨/毛毛雨/细雨/小雨-中雨 + JLWeatherTypeLightRain, + ///中雨/中雨-大雨 + JLWeatherTypeModerateRain, + ///大雨/大雨-暴雨 + JLWeatherTypeHeavyRain, + ///暴雨/暴雨-大暴雨 + JLWeatherTypeDownpour, + ///大暴雨/大暴雨-特大暴雨 + JLWeatherTypeExtraordinaryRainstorm, + ///特大暴雨 + JLWeatherTypeHeavyDownpour, + ///强阵雨 + JLWeatherTypeStrongRainShower, + ///强雷阵雨 + JLWeatherTypeStrongThunderShower, + ///极端降雨 + JLWeatherTypeExtremeRainfall, + ///雨夹雪/阵雨夹雪/冻雨/雨雪天气 + JLWeatherTypeRainySnowy, + ///雪 + JLWeatherTypeSnowy, + ///阵雪 + JLWeatherTypeSnowShower, + ///小雪/小雪-中雪 + JLWeatherTypeLightSnow, + ///中雪/中雪-大雪 + JLWeatherTypeModerateSnow, + ///大雪/大雪-暴雪 + JLWeatherTypeHeavySnow, + ///暴雪 + JLWeatherTypeSnowstorm, + ///浮尘 + JLWeatherTypeDust, + ///扬沙 + JLWeatherTypeblowingSand, + ///沙尘暴 + JLWeatherTypedustStorm, + ///强沙尘暴 + JLWeatherTypeSevereSandstorm, + ///龙卷风 + JLWeatherTypeTornado, + ///雾/轻雾/浓雾/强浓雾/特强浓雾 + JLWeatherTypeFog, + ///未知 + JLWeatherTypeUnknow, + ///冷 + JLWeatherTypeCold, + ///未知2 + JLWeatherTypeUnknown1, + +}; + +typedef NS_ENUM(UInt8, JLWindDirectionType) { + ///无风向 + JLWindDirectionTypeNone = 0x00, + ///东 + JLWindDirectionTypeEast, + ///南 + JLWindDirectionTypeSouth, + ///西 + JLWindDirectionTypeWest, + ///北 + JLWindDirectionTypeNorth, + ///东南 + JLWindDirectionTypeEastSouth, + ///东北 + JLWindDirectionTypeEastNorth, + ///西北 + JLWindDirectionTypeWestNorth, + ///西南 + JLWindDirectionTypeWestSouth, + ///旋转不定 + JLWindDirectionTypeUnknow +}; + +@interface JL_MSG_Weather : NSObject + +/// 省份 +@property(nonatomic,strong)NSString *province; +///城市 +@property(nonatomic,strong)NSString *city; +///天气编码 +@property(nonatomic,assign)JLWeatherType code; +///温度 +@property(nonatomic,assign)NSInteger temperature; +///湿度 +@property(nonatomic,assign)NSInteger humidity; +///风向编码 +@property(nonatomic,assign)JLWindDirectionType direction; +///风力 +@property(nonatomic,assign)NSInteger wind; +/// 时间 +@property(nonatomic,strong)NSDate *date; + + +-(NSData *)beData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_ManagerM.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_ManagerM.h new file mode 100644 index 000000000..e95426053 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_ManagerM.h @@ -0,0 +1,232 @@ +// +// JL_ManagerM.h +// JL_BLEKit +// +// Created by 杰理科技 on 2020/9/4. +// Modify By EzioChan on 2023/03/27. +// Copyright © 2020 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +/* + * 从JL_ManagerM发出去的通知都是字典,如下所示: + * + * @{ kJL_MANAGER_KEY_UUID :当前设备的UUID, + * kJL_MANAGER_KEY_OBJECT:外抛的对象 } + */ +extern NSString *kJL_MANAGER_KEY_UUID; //KEY --> UUID +extern NSString *kJL_MANAGER_KEY_OBJECT; //KEY --> 对象 + + +@protocol JL_ManagerMDelegate +@optional +-(void)onManagerSendPackage:(JL_PKG*)pkg; +@end + +@class JL_EntityM; +@interface JL_ManagerM : NSObject +@property(nonatomic,weak)iddelegate; +@property(nonatomic,readonly,copy)NSString *mBLE_UUID; +@property(nonatomic,readonly,copy)NSString *mBLE_NAME; +@property(nonatomic,readonly,assign)uint8_t mCmdSN; +@property(nonatomic,weak)JL_EntityM *mEntity; + +@property(nonatomic,strong)JL_SmallFileManager *mSmallFileManager; +@property(nonatomic,strong)JL_FileManager *mFileManager; +@property(nonatomic,strong)JL_OTAManager *mOTAManager; +@property(nonatomic,strong)JL_FlashOperateManager *mFlashManager; +@property(nonatomic,strong)JL_BinChargeManager *mChargingBinManager; +@property(nonatomic,strong)JL_CallManager *mCallManager; +@property(nonatomic,strong)JL_AlarmClockManager *mAlarmClockManager; +@property(nonatomic,strong)JL_LightManager *mLightManager; +@property(nonatomic,strong)JL_TwsManager *mTwsManager; +@property(nonatomic,strong)JL_SpeexManager *mSpeexManager __attribute__((deprecated("alloc with JL_SpeexManager shareSpeexManager"))); +@property(nonatomic,strong)JL_LRCManager *mLrcManager; +@property(nonatomic,strong)JL_FindDeviceManager *mFindDeviceManager; +@property(nonatomic,strong)JL_MusicControlManager *mMusicControlManager; +@property(nonatomic,strong)JL_FmManager *mFmManager; +@property(nonatomic,strong)JL_SystemEQ *mSystemEQ; +@property(nonatomic,strong)JL_SystemTime *mSystemTime; +@property(nonatomic,strong)JL_SystemVolume *mSystemVolume; +@property(nonatomic,strong)JL_CustomManager *mCustomManager; +@property(nonatomic,strong)JL_BatchManger *mBatchManger; + +@property(nonatomic,strong)JL_SoundCardManager *mSoundCardManager; +@property(nonatomic,strong)JL_DeviceLogs *mDeviceLogs; + +@property(nonatomic,strong)JL_BigDataManager *mBigDataManager; + + +-(void)setPropertyUpdate:(BOOL)isUpdate; +-(void)setBleUuid:(NSString*)uuid; +-(void)setBleName:(NSString*)name; +-(void)inputPKG:(JL_PKG*)pkg; + +-(void)noteEntityConnected; +-(void)noteEntityDisconnected; +-(void)noteEntityBleOff; + +/** + 发送【命令包】 + @param cmdCode 具体要发送的命令 + @param needResponse 是否需要回复 + @param sendData 具体要发送的数据 + @discussion 只有isCommand是YES时needResponse才有意义,即只有命令才需要回复 + */ +-(void)xmCommandCode:(uint8_t)cmdCode + needRep:(BOOL)needResponse + data:(NSData *)sendData; + +/** + 发送【回复包】 + @param code 命令号 + @param sn 序号 + @param st 状态码 + @param data 回复的命令的内容 + */ +-(void)cmdResponseCode:(uint8_t)code + OpSN:(UInt8)sn + Status:(JL_CMDStatus)st + Data:(NSData* __nullable)data; + +/** + 发送【通知命令】 + @param name 通知名字 + @param obj 携带对象 + */ +-(void)managerPost:(NSString*)name Object:(id __nullable)obj; + +/** + 获取当前命令序号 + */ +-(uint8_t)xmCommandSN; + +#pragma mark ---> 取出设备信息 + +/// copy出来的原值 +-(JLModel_Device *)outputDeviceModel; + +/// 取出原本的值 +-(JLModel_Device *)getDeviceModel; + +#pragma mark ---> 获取设备信息 +extern NSString *kJL_MANAGER_TARGET_INFO; +-(void)cmdTargetFeatureResult:(JL_CMD_RESPOND __nullable)result; +-(void)cmdTargetFeature:(uint32_t)feature Result:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 断开经典蓝牙 +-(void)cmdDisconnectEdrResult:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 重置配对流程标志(使适配连接ANCS设备) +-(void)cmdResetPairingResult:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 获取系统信息(全获取) +/** + @param function JL_FunctionCode + @param result 回复 + */ +-(void)cmdGetSystemInfo:(JL_FunctionCode)function + Result:(JL_CMD_RESPOND __nullable)result; +-(void)cmdGetSystemInfoResult; + +#pragma mark ---> 获取系统信息(选择性获取) +/** + @param function JL_FunctionCode + @param result 回复 + */ +-(void)cmdGetSystemInfo:(JL_FunctionCode)function + SelectionBit:(uint32_t)bits + Result:(JL_CMD_RESPOND __nullable)result; +-(void)cmdGetSystemInfoResult_1; + +#pragma mark ---> 设备主动返回的系统信息 +extern NSString *kJL_MANAGER_SYSTEM_INFO; + +#pragma mark ---> 通用、BT、Music、RTC、Aux +/** + @param function 功能类型 + @param cmd 操作命令 + @param ext 扩展数据 + @param result 回复 + */ +-(void)cmdFunction:(JL_FunctionCode)function + Command:(UInt8)cmd + Extend:(UInt8)ext + Result:(JL_CMD_RESPOND __nullable)result; + +typedef void(^JL_IMAGE_RT)(NSMutableDictionary* __nullable dict); +#pragma mark ---> 获取设备的图片 +/** + @param vid 设备vid + @param pid 设备pid + @param result 图片数据 + */ +-(void)cmdRequestDeviceImageVid:(NSString*)vid + Pid:(NSString*)pid + Result:(JL_IMAGE_RT __nullable)result; + +-(void)cmdRequestDeviceImageVid:(NSString*)vid + Pid:(NSString*)pid + ItemArray:(NSArray *__nullable)itemArray + Result:(JL_IMAGE_RT __nullable)result; + +-(NSDictionary*)localDeviceImage:(NSString*)jsonFile; + +#pragma mark ---> 通知固件开始播放TTS内容 + +/// 通知固件SDK播放tts +/// @param status 0:开始播放,1:播放结束 +-(void)cmdStartTTSNote:(uint8_t)status; + + +/// 获取MD5信息 +/// @param result 回调 +-(void)cmdGetMD5_Result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MusicControlManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MusicControlManager.h new file mode 100644 index 000000000..bfa2d952d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_MusicControlManager.h @@ -0,0 +1,40 @@ +// +// JL_MusicControlManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN + +__attribute__((deprecated("已废弃,请使用JLDevPlayerCtrl类"))) + +@interface JL_MusicControlManager : JL_FunctionBaseManager + + +#pragma mark ---> 设置播放模式 +/** + @param mode 模式 + 0x01:全部循环; 0x02:设备循环; 0x03:单曲循环; 0x04:随机播放; 0x05:文件夹循环 + */ +-(void)cmdSetSystemPlayMode:(JL_MusicMode)mode __attribute__((deprecated("cmdSetPlayMode:已废弃"))); + +#pragma mark ---> 快进快退 +/** + @param cmd 快进或者快退枚举 + @param sec 时间 + @param result 返回结果 + */ +-(void)cmdFastPlay:(JL_FCmdMusic)cmd + Second:(uint16_t)sec + Result:(JL_CMD_RESPOND __nullable)result __attribute__((deprecated("cmdFastPlay:已废弃,需要使用JLDevPlayerCtrl类里的方法设置"))); + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_NFC.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_NFC.h new file mode 100644 index 000000000..a3be1d723 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_NFC.h @@ -0,0 +1,96 @@ +// +// JL_NFC.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/2. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_TypeEnum.h" +#import "JL_ManagerM.h" + +@class JL_RCSP; +@class JL_EntityM; +@class NfcFileModel; +@class NfcModel; +NS_ASSUME_NONNULL_BEGIN + +typedef void(^NfcSyncResult)(UInt8 result,NSArray * _Nullable models); + +typedef void(^NfcIDResult)(UInt16 result); + +typedef void(^NfcDefaultResult)(BOOL result); + +typedef void(^NfcBeginAddResult)(JL_EntityM *entity); + + +@interface JL_NFC : NSObject + +-(instancetype)initWith:(JL_EntityM *)entity FileHandler:(JL_FileHandleType)handler; + + +/// 同步NFC信息开始 +-(void)w_syncNfcStart:(NfcSyncResult)result; + + +/// 修改NFC的信息 +/// @param dict 修改的内容 +/** + dict 的内容 + { + @"timestamp" : NSDate() + @"nickname" : @"我的家" + } + 如果key值找不到对应的value,那就说明该项值不参与被修改 + */ +-(void)w_modifyNfc:(NSDictionary *)dict WithID:(UInt16)nfcID; + + +/// 删除NFC信息 +/// @param model nfc头部model +-(void)w_deleteNfc:(NfcModel *)model; + + +/// 获取当前正在使用着的默认NFC卡ID +/// @param result NFC卡id +-(void)w_getNfcDefaultCard:(NfcIDResult)result; + + +/// 设置默认的NFC信息 +/// @param model NFC头部model +-(void)w_setNfcDefalutCard:(NfcModel *)model result:(NfcDefaultResult)result; + + +/// 通知默认NFC改变 +/// @param model NFC信息头部 +-(void)w_NfcDefaultNotify:(NfcModel *)model; + +/// 添加NFC文件 +/// @param model NFC文件模型 +/// @param result 开始传输操作 +/** examp. + NfcFileModel *fm = [[NfcFileModel alloc] init]; +// fm.idCard = ... +// fm.nfcFileName = ... + JL_NFC *mgr = [[JL_NFC alloc] init]; + [mgr w_NfcAddCard:fm BeginAdd:^(JL_EntityM * _Nonnull entity) { + //大文件传输开始 + [entity.mCmdManager cmdBigFileData:#path WithFileName:#fileName Result:^(JL_BigFileResult result, float progress) { + if (result == JL_BigFileTransferEnd) { + //结束NFC文件添加 + [mgr w_NfcEndAdd:fm]; + } + + }]; + }]; + */ +-(void)w_NfcAddCard:(NfcFileModel *)model BeginAdd:(NfcBeginAddResult)result; + +/// 添加NFC文件结束 +/// @param model NFC文件模型 +-(void)w_NfcEndAdd:(NfcFileModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_OpCode.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_OpCode.h new file mode 100644 index 000000000..a7b9e7c86 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_OpCode.h @@ -0,0 +1,97 @@ +// +// JL_OpCode.h +// JL_BLEKit +// +// Created by 杰理科技 on 2022/12/28. +// Copyright © 2022 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_OpCode_h +#define JL_OpCode_h + +#define kJL_DATA_CMD 0x0001 +#define kJL_GET_TARGET_FEATURE_MAP 0x0002 //保留 +#define kJL_GET_TARGET_FEATURE 0x0003 +#define kJL_VOICE_START 0x0004 +#define kJL_VOICE_STOP 0x0005 +#define kJL_VOICE_DISCONNECT_EDR 0x0006 +#define kJL_SYS_INFO_GET 0x0007 +#define kJL_SYS_INFO_SET 0x0008 +#define kJL_SYS_INFO_AUTO_UPDATE 0x0009 +#define kJL_PHONE_CALL_REQUEST 0x000a +#define kJL_FILE_BROWSE_START 0x000c +#define kJL_FILE_BROWSE_STOP 0x000d +#define kJL_FILE_STRUCT_CHANGE 0x00f2 //通知文件结构变化 +#define kJL_FUNCTION_CMD 0x000e +#define kJL_LRC_GET_START 0x000f +#define kJL_LRC_GET_STOP 0x0010 +#define kJL_A2F_TTS_START 0x0011 +#define kJL_BT_SCAN_START 0x0012 +#define kJL_BT_SCAN_RESULT 0x0013 +#define kJL_BT_SCAN_STOP 0x0014 +//#define kJL_BT_CONNECT 0x0015 +#define kJL_FILE_START 0x0016 +#define kJL_FILE_STOP 0x0017 +#define kJL_FIND_DEVICE 0x0019 +#define kJL_CUSTOMER_USER 0x00ff + +#define kJL_OTA_INFO_OFFSET 0x00e1 +#define kJL_OTA_CAN_UPDATE 0x00e2 +#define kJL_OTA_ENTER_UPDATE 0x00e3 +#define kJL_OTA_EXIT_UPDATE 0x00e4 +#define kJL_OTA_GET_DATA 0x00e5 +#define kJL_OTA_STATUS_UPDATE 0x00e6 +#define kJL_OTA_REBOOT 0x00e7 +#define kJL_OTA_BLE_SPP 0x000b +#define kJL_OTA_LENGTH 0x00e8 + +#define kJL_SET_ADV 0x00C0 +#define kJL_GET_ADV 0x00C1 +#define kJL_ADV_NOTIFY_DEVICE 0x00C2 +#define kJL_ADV_NOTIFY_ENABLE 0x00C3 +#define kJL_ADV_NOTIFY_TIPS 0x00C4 //主要用于ADV设置同步后需要主机操作的行为。 + +#define kJL_SET_APP_INFO 0x00D0 +#define kJL_SET_MTU 0x00D1 +#define kJL_GET_MD5 0x00D4 +#define kJL_GET_LOW_DELAY 0x00D5 +#define kJL_GET_FLASH_INFO 0x00D6 +#define kJL_SET_DEV_STORAGE 0x00D8 //设置当前使用的存储设备 +#define kJL_GET_DEV_CONFIG 0x00D9 //获取设备配置信息 +#define kJL_GET_FLASH_W_R 0x001A + +#define kJL_BIGFILE_START 0x001B +#define kJL_BIGFILE_END 0x001C +#define kJL_BIGFILE_GET_FILE 0x001D +#define kJL_BIGFILE_STOP 0x001E +#define kJL_FILE_DELETE 0x001F +#define kJL_GET_FILENAME 0x0020 +#define kJL_PRE_ENVIRONMENT 0x0021 +#define kJL_FILE_FORMAT 0x0022 +#define kJL_FILE_NAME_DEL 0x0023 +#define kJL_FILE_READ_CONTENT 0x0024 + +#define kJL_RTC_PLUS 0x0025 +#define kJL_BATCH_OPERATE 0x0026 +#define kJL_FILE_GET_CRC 0x0027 +#define kJL_SMALL_FILE 0x0028 + +#define kJL_DEVICE_LOG 0x0029 +#define kJL_BIG_DATA 0x0030 +#define kJL_TWS_NAME_LIST 0x0031 //一拖二/获取设备已连接手机名 +#define kJL_AI_CONTROL 0x0032 //AI控制命令 +#define kJL_PUBLIC_SET 0x0033 //公共设置命令 +#define kJL_TRAMSLATE 0x0034 //翻译命令 +#define kJL_AURACASTE 0x0035 //Auracast命令 + + +#define kJL_WEAR_REQ_OPCODE 0x00A0 //获取运动信息 +#define kJL_WEAR_SET_OPCODE 0x00A1 //设置运动信息 +#define kJL_WEAR_RES_OPCODE 0x00A2 //设备主动推的运动信息 +#define kJL_WEAR_CMD_LOG 0x00A3 //传感器log传输命令 +#define kJL_WEAR_CMD_SETTING 0x00A5 //健康设备设置命令 +#define kJL_WEAR_SYNC_SPORT 0x00A6 //运动模式相关命令(同步数据) + +#define kJL_PHONE_NUMBER_WAY 0x00F1 + +#endif /* JL_OpCode_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_RCSP.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_RCSP.h new file mode 100644 index 000000000..8816e633d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_RCSP.h @@ -0,0 +1,73 @@ +// +// JL_RCSP.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/9. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + + +@class JL_PKG; +@interface JL_RCSP : NSObject + +/** + 解析JL数据包 + + @param data 把数据转成JL_PKG模型。 + @return JL_PKG数据模型 + */ ++(JL_PKG*)rcspAnalysisData:(NSData*)data; + +/** + 生成XM数据包 + + @param pkg 把JL_PKG模型转成data。 + @return 数据 + */ ++(NSData*)rcspMakePackage:(JL_PKG*)pkg; + +/** + 分析JL_PKG参数 + + @param pkg 把JL_PKG的xmData参数部分解析成一列数组。 + @return 参数数组 + */ ++(NSArray*)rcspAnalysisParams:(JL_PKG*)pkg; + +/** + 分解dJL_PKG信息 + + @param data JL_PKG中的信息数据 + @return 参数c数组 + */ ++(NSArray*)rcspInfoArrFromData:(NSData*)data; + +/// 拆分LTV数据 +/// 当前方法针对的是 L 长度为 2Byte +/// @param data LTV数据 ++(NSArray*)rcspInfoFromData2ByteSize:(NSData*)data; + +/** + 生成JL_PKG参数 + + @param array 把参数数组变成data(注意:数组元素必须是NSData类型)。 + @return 数据 + */ ++(NSData*)rcspMakeParams:(NSArray*)array; +@end + +@interface JL_PKG : NSObject +@property(assign,nonatomic) uint16_t pkgIsCommand; //1Bit +@property(assign,nonatomic) uint16_t pkgNeedResponse; //1Bit +@property(assign,nonatomic) uint16_t pkgUnused; //6Bits +@property(assign,nonatomic) uint16_t pkgOpCode; //8Bits +@property(assign,nonatomic) uint16_t pkgLength; //参数长度(本身不计) +@property(strong,nonatomic) NSData *pkgData; //参数数据 +@end +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h new file mode 100644 index 000000000..766e37c23 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_AirPressure.h @@ -0,0 +1,37 @@ +// +// JL_SDM_AirPressure.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 压力实时 +@interface JL_SDM_AirPressure : JLSportDataModel +/// 实时 +@property(nonatomic,assign)int realTime; +/// 最高 +@property(nonatomic,assign)int max; +/// 最低 +@property(nonatomic,assign)int min; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_AirPressure*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容设置 +/// @param rt 是否需要实时气压 +/// @param min 是否需要最小气压 +/// @param max 是否需要最大气压 ++(JL_SDM_AirPressure*)requireRealTime:(BOOL)rt min:(BOOL)min Max:(BOOL)max; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h new file mode 100644 index 000000000..e4e73c39d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Altitude.h @@ -0,0 +1,38 @@ +// +// JL_SDM_Altitude.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +///海拔高度相关 +@interface JL_SDM_Altitude : JLSportDataModel + +/// 最大值 +@property(nonatomic,assign)float max; +/// 最小值 +@property(nonatomic,assign)float min; +/// 实时的 +@property(nonatomic,assign)float realTime; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_Altitude*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求海拔内容设置 +/// @param rt 是否需要实时海拔 +/// @param min 是否需要最小海拔 +/// @param max 是否需要最大海拔 ++(JL_SDM_Altitude*)requireRealTime:(BOOL)rt min:(BOOL)min Max:(BOOL)max; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Header.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Header.h new file mode 100644 index 000000000..d106663d0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Header.h @@ -0,0 +1,153 @@ +// +// JL_SDM_Header.h +// JL_BLEKit +// +// Created by EzioChan on 2021/4/8. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_SDM_Header_h +#define JL_SDM_Header_h + +#import +#import "JL_SDM_Stress.h" +#import "JL_SDM_Altitude.h" +#import "JL_SDM_MaxOxg.h" +#import "JL_SDM_RecTime.h" +#import "JL_SDM_HeartRate.h" +#import "JL_SDM_MoveSteps.h" +#import "JL_SDM_TrainLoad.h" +#import "JL_SDM_AirPressure.h" +#import "JL_SDM_OxSaturation.h" +#import "JL_SDM_SportMessage.h" +#import "JL_MSG_Weather.h" +#import "JL_MSG_Func.h" +#import "JLWatchEnum.h" +#import "NfcModel.h" +#import "JLwSettingModel.h" +#import "JLSensorFuncModel.h" +#import "JLSedentaryRmdModel.h" +#import "JLConsequentHeartRateModel.h" +#import "JLExerciseHeartRateRemindModel.h" +#import "JLAutoPressureModel.h" +#import "JLSleepMonitorModel.h" +#import "JLFallDetectionModel.h" +#import "JLEmergencyContactModel.h" +#import "JLOxygenSturationRemindModel.h" +#import "JLWristLiftDetectionModel.h" +#import "JLPersonInfoModel.h" +#import "JLDisconnectRemindModel.h" +#import "JLWearSyncInfoModel.h" +#import "JLWearSyncFinishModel.h" +#import "JLWearSyncRealTimeModel.h" +#import "JLeSimManager.h" + + +#include +#ifndef JL_IOS +#define JL_IOS +#endif + +#pragma - Please select your log mode and log level + +// Note: Only debug mode will print log. You could also set mode for log level. +#define kJLDebugMode +// JLLogLevelFatal , JLLogLevelError , JLLogLevelWarn , JLLogLevelInfo , JLLogLevelDebug +#define JLLogLevelError +//Note: print method name +#define kModuleName __func__ + +#pragma ---------------------------------- + +#ifdef kJLDebugMode + +static const int JL_IOS_FLAG_FATAL = 0x10; +static const int JL_IOS_FLAG_ERROR = 0x08; +static const int JL_IOS_FLAG_WARN = 0x04; +static const int JL_IOS_FLAG_INFO = 0x02; +static const int JL_IOS_FLAG_DEBUG = 0x01; + +#ifdef JLLogLevelFatal +static const int JL_IOS_LOG_LEVEL = JL_IOS_FLAG_FATAL; +#elif defined(JLLogLevelError) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR); +#elif defined(JLLogLevelWarn) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR | JL_IOS_FLAG_WARN); +#elif defined(JLLogLevelInfo) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR | JL_IOS_FLAG_WARN | JL_IOS_FLAG_INFO); +#elif defined(JLLogLevelDebug) +static const int JL_IOS_LOG_LEVEL = (JL_IOS_FLAG_FATAL | JL_IOS_FLAG_ERROR | JL_IOS_FLAG_WARN | JL_IOS_FLAG_INFO | JL_IOS_FLAG_DEBUG); +#endif + + + +#define log4cplus_fatal(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_FATAL) \ +syslog(LOG_CRIT, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_error(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_ERROR) \ +syslog(LOG_ERR, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_warn(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_WARN) \ +syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_info(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_INFO) \ +syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ + +#define log4cplus_debug(category, logFmt, ...) \ +if(JL_IOS_LOG_LEVEL & JL_IOS_FLAG_DEBUG) \ +syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ + + +#else + +#define log4cplus_fatal(category, logFmt, ...); \ + +#define log4cplus_error(category, logFmt, ...); \ + +#define log4cplus_warn(category, logFmt, ...); \ + +#define log4cplus_info(category, logFmt, ...); \ + +#define log4cplus_debug(category, logFmt, ...); \ + +#endif + +///心率 +typedef void(^JL_CB_HeartRate)(JL_SDM_HeartRate *heartRate); +///气压 +typedef void(^JL_CB_AirPressure)(JL_SDM_AirPressure *ap); +///海拔 +typedef void(^JL_CB_Altitude)(JL_SDM_Altitude *altitude); +///运动步数 +typedef void(^JL_CB_MoveSteps)(JL_SDM_MoveSteps *ms); +///压力检测 +typedef void(^JL_CB_Stress)(JL_SDM_Stress *stress); +///血氧饱和度 +typedef void(^JL_CB_Oxsaturation)(JL_SDM_OxSaturation *oxs); +///训练负荷 +typedef void(^JL_CB_TrainLoad)(JL_SDM_TrainLoad *tl); +///最大摄氧量 +typedef void(^JL_CB_MaxOxg)(JL_SDM_MaxOxg *mo); +///运动恢复时间 +typedef void(^JL_CB_RecTime)(JL_SDM_RecTime *rt); +///运动信息 +typedef void(^JL_CB_SportMsg)(JL_SDM_SportMessage *sm); +///传感器log +typedef void(^JL_CB_WatchLog)(JL_WATCH_LOG_TYPE type,NSData *data); + +//MARK:设置相关 +///设置状态回复 +typedef void(^JL_CB_Status)(BOOL succeed); + +//MARK: - 同步相关 +///读取同步运动状态 +typedef void(^JL_CB_SyncSportInfo)(JLWearSyncInfoModel *infoModel); +/// 读取同步状态 +typedef void(^JL_CB_SyncSportDataInfo)(JLWearSyncDataModel *infoModel); + + +#endif /* JL_SDM_Header_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h new file mode 100644 index 000000000..0a9925ded --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_HeartRate.h @@ -0,0 +1,49 @@ +// +// JL_SDM_HeartBeat.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// +/* + * 这是一个Sport Data Model的对象 + */ +///心率model +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 心率相关内容 +@interface JL_SDM_HeartRate : JLSportDataModel +/// 实时心率 +@property(nonatomic,assign)uint8_t realTime; +/// 静息心率 +@property(nonatomic,assign)uint8_t resting; +/// 最大心率 +@property(nonatomic,assign)uint8_t max; + +/// 单次测量的心率 +@property(nonatomic,assign)uint8_t singleRate; + +/// 是否为单次测量的数据 +@property(nonatomic,assign)BOOL isSingle; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_HeartRate*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求心率内容设置 +/// @param rt 是否需要实时心率 +/// @param rting 是否需要静息心率 +/// @param max 是否需要最大心率 ++(JL_SDM_HeartRate*)requireRealTime:(BOOL)rt Resting:(BOOL)rting Max:(BOOL)max; + +/// 单次测量 ++(JL_SDM_HeartRate*)requireSingle; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h new file mode 100644 index 000000000..a0bf6d539 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_MaxOxg.h @@ -0,0 +1,29 @@ +// +// JL_SDM_MaxOxg.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_MaxOxg : JLSportDataModel + +@property(nonatomic,assign)int max; + +///最大摄氧量 +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_MaxOxg*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_MaxOxg*)require; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h new file mode 100644 index 000000000..46fa1076f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_MoveSteps.h @@ -0,0 +1,34 @@ +// +// JL_SDM_MoveSteps.h +// Test +// +// Created by EzioChan on 2021/4/6. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +///实时步数 +@interface JL_SDM_MoveSteps : JLSportDataModel +/// 实时步数 +@property(nonatomic,assign)NSInteger rtStep; + +/// 热量,单位:千卡 +@property(nonatomic,assign)NSInteger calories; + +/// 距离,单位:0.01公里 +@property(nonatomic,assign)NSInteger distance; +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_MoveSteps*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 选择性请求内容 ++(JL_SDM_MoveSteps*)require:(BOOL)rst distance:(BOOL)dts calories:(BOOL)ca; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h new file mode 100644 index 000000000..f594e25c3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_OxSaturation.h @@ -0,0 +1,59 @@ +// +// JL_SDM_OxSaturation.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JLOxSaturationType) { + //当前血氧饱和度 + JLOxSaturation_nowSta = 0x01, + //最大血氧 + JLOxSaturation_max = 0x01 << 1, + //最小血氧 + JLOxSaturation_min = 0x01 << 2, + //单次测量 + JLOxSaturation_single = 0x01 << 3 +}; + +/// 血氧饱和度 +@interface JL_SDM_OxSaturation : JLSportDataModel + +/// 饱和度 +@property(nonatomic,assign)int staturation; +/// 最大饱和度 +@property(nonatomic,assign)uint8_t max; +/// 最小饱和度 +@property(nonatomic,assign)uint8_t min; + +/// 单次测量的饱和度 +@property(nonatomic,assign)uint8_t singleStaturation; + +/// 是否为单次测量的数据 +@property(nonatomic,assign)BOOL isSingle; + + +/// 血氧饱和度 +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_OxSaturation*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_OxSaturation*)require; + + +/// 请求血氧浓度 +/// @param type 类型 +/// 该类型可以同时请求多个,诸如:JLOxSaturation_nowSta | JLOxSaturation_max | JLOxSaturation_min ++(JL_SDM_OxSaturation*)requireByBit:(JLOxSaturationType)type; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h new file mode 100644 index 000000000..3e0f3c577 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_RecTime.h @@ -0,0 +1,28 @@ +// +// JL_SDM_RecTime.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_RecTime : JLSportDataModel + +@property(nonatomic,assign)int hour; +@property(nonatomic,assign)int min; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_RecTime*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_RecTime*)require; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h new file mode 100644 index 000000000..38e84d940 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_SportMessage.h @@ -0,0 +1,50 @@ +// +// JL_SDM_SportMessage.h +// JL_BLEKit +// +// Created by EzioChan on 2021/4/8. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import "JLSportDataModel.h" +#import "JLWatchEnum.h" +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_SportMessage : JLSportDataModel + +/// 运动模式 +@property(nonatomic,assign)JL_SportPattern sportPattern; +/// 距离,单位:0.01km +@property(nonatomic,assign)int distance; +/// 开始时间 +@property(nonatomic,strong)NSDate *startTime; +/// 结束时间 +@property(nonatomic,strong)NSDate *endTime; +/// 热量,单位:千卡 Kcal +@property(nonatomic,assign)int xkcal; +/// 速度。单位:0.01 km/h +@property(nonatomic,assign)int speed; + + +/// 分析返回的数据 +/// @param value subData +/// @param submask submask ++(JL_SDM_SportMessage *)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求要获取的内容 +/// @param m 是否请求模式 +/// @param d 是否请求距离 +/// @param st 是否请求开始时间 +/// @param et 是否请求结束时间 +/// @param kcal 是否请求卡路里 +/// @param sp 是否请求速度 ++(JL_SDM_SportMessage *)requireModel:(BOOL)m distance:(BOOL)d start:(BOOL)st end:(BOOL)et kcal:(BOOL)kcal speed:(BOOL)sp; + +/// 请求全部数据 ++(JL_SDM_SportMessage *)requireAll; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Stress.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Stress.h new file mode 100644 index 000000000..75d9260ad --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_Stress.h @@ -0,0 +1,28 @@ +// +// JL_SDM_Stress.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +/// 实时压力 +@interface JL_SDM_Stress : JLSportDataModel + +@property(nonatomic,assign)int stress; + +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_Stress*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_Stress*)require; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h new file mode 100644 index 000000000..c93ff24c1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SDM_TrainLoad.h @@ -0,0 +1,30 @@ +// +// JL_SDM_TrainLoad.h +// Test +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 Zhuhai Jieli Technology Co.,Ltd. All rights reserved. +// + +#import "JLSportDataModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SDM_TrainLoad : JLSportDataModel + +@property(nonatomic,assign)int load; + +///训练负荷 +/// 处理回复数据内容 +/// @param value 数据内容 +/// @param submask 功能标记位 ++(JL_SDM_TrainLoad*)responseData:(NSData *)value subMask:(NSData *)submask; + +/// 请求内容 ++(JL_SDM_TrainLoad*)require; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SmallFileManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SmallFileManager.h new file mode 100644 index 000000000..fae3600ba --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SmallFileManager.h @@ -0,0 +1,151 @@ +// +// JL_SmallFileManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/13. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_SmallFileOperate) { + JL_SmallFileOperateFail = 0x00, //失败 + JL_SmallFileOperateDoing = 0x01, //操作中 + JL_SmallFileOperateSuceess = 0x02, //成功 + JL_SmallFileOperateUnknown = 0x03, //未知 + JL_SmallFileOperateExcess = 0x04, //超量 + JL_SmallFileOperateCrcError = 0x05, //CRC错误 + JL_SmallFileOperateTimeout = 0x06, //超时 +}; +typedef void(^JL_SMALLFILE_DEL)(JL_SmallFileOperate status); +typedef void(^JL_SMALLFILE_READ)(JL_SmallFileOperate status, + float progress, NSData* __nullable data); +typedef void(^JL_SMALLFILE_NEW)(JL_SmallFileOperate status, + float progress, uint16_t fileID); +typedef void(^JL_SMALLFILE_UPDATE)(JL_SmallFileOperate status, + float progress); +typedef void(^JL_SMALLFILE_LIST)(NSArray * __nullable array); +typedef void(^JL_SMALLFILE_RT)(uint8_t flag, uint16_t fileID,NSData* __nullable data); + +@interface JL_SmallFileManager : JL_FunctionBaseManager + +#pragma mark - 查询文件 + +/// 查询文件 +/// @param type 文件类型 +/// 文件类型除了已有的文件外,还可以扩展类型是Uint8的值 +/// @param result 列表回调 +-(void)cmdSmallFileQueryType:(JL_SmallFileType)type + Result:(JL_SMALLFILE_LIST __nullable)result; + +#pragma mark - 删除文件 + +/// 删除文件 +/// @param file 文件模型:JLModel_SmallFile +/// @param result 操作回调结果 +-(void)cmdSmallFileDelete:(JLModel_SmallFile*)file Result:(JL_SMALLFILE_DEL)result; + +#pragma mark - 读取文件 + +/// 读取文件 +/// @param file 文件模型:JLModel_SmallFile +/// @param result 回调文件数据以及进度,通过分包式回调。 +-(void)cmdSmallFileRead:(JLModel_SmallFile*)file + Result:(JL_SMALLFILE_READ)result; + +-(void)cmdSmallFileReadSync:(JLModel_SmallFile*)file + Result:(JL_SMALLFILE_READ)result;//同步 + +#pragma mark - 新增文件 + +/// 新增文件 +/// @param data 文件数据 +/// @param type 文件类型 +/// @param result 回调的结果,包含分包进度 +-(void)cmdSmallFileNew:(NSData*)data + Type:(JL_SmallFileType)type + Result:(JL_SMALLFILE_NEW)result; + +-(void)cmdSmallFileNewSync:(NSData*)data + Type:(JL_SmallFileType)type + Result:(JL_SMALLFILE_NEW)result; + +#pragma mark - 更新文件 + +/// 更新文件 +/// @param file 文件模型:JLModel_SmallFile +/// @param data 文件数据 +/// @param result 回调进度 +-(void)cmdSmallFileUpdate:(JLModel_SmallFile*)file + Data:(NSData*)data + Result:(JL_SMALLFILE_UPDATE)result; + +-(void)cmdSmallFileUpdateSync:(JLModel_SmallFile*)file + Data:(NSData*)data + Result:(JL_SMALLFILE_UPDATE)result; + +#pragma mark - 底层API + +/// 读取文件,更低等级的API +/// @param type 文件类型 +/// @param fileId 文件ID +/// @param offset 偏移值 +/// @param fileSize 数据大小 +/// @param flag 是否为第一包查询 +/// @param result 回调文件结果 +-(void)cmdSmallFileReadType:(uint8_t)type + FileID:(uint16_t)fileId + Offset:(uint16_t)offset + FileSize:(uint16_t)fileSize + Flag:(uint8_t)flag + Result:(JL_SMALLFILE_RT __nullable)result; + + +/// 插入新文件,更低等级的API +/// @param type 文件类型 +/// @param offset 偏移值 +/// @param fileSize 数据量大小 +/// @param crc16 crc校验码 +/// @param data 要插入的数据 +/// @param result 回调结果 +-(void)cmdSmallFileNewType:(uint8_t)type + Offset:(uint16_t)offset + FileSize:(uint16_t)fileSize + Crc16:(uint16_t)crc16 + FileData:(NSData*)data + Result:(JL_SMALLFILE_RT __nullable)result; + +/// 更新文件,更低等级的API +/// @param type 文件类型 +/// @param fileId 文件ID +/// @param offset 偏移值 +/// @param fileSize 数据包的大小 +/// @param crc16 数据包的crc校验 +/// @param data 数据包 +/// @param result 回调结果 +-(void)cmdSmallFileUpdateType:(uint8_t)type + FileID:(uint16_t)fileId + Offset:(uint16_t)offset + FileSize:(uint16_t)fileSize + Crc16:(uint16_t)crc16 + FileData:(NSData*)data + Result:(JL_SMALLFILE_RT __nullable)result; + +/// 小文件删除,更低等级的API +/// @param type 文件类型 +/// @param fileId 文件id +/// @param result 回调结果 +-(void)cmdSmallFileDeleteType:(uint8_t)type + FileID:(uint16_t)fileId + Result:(JL_SMALLFILE_RT __nullable)result; + +-(void)closeTimer; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SoundCardManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SoundCardManager.h new file mode 100644 index 000000000..6e23c4ce3 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SoundCardManager.h @@ -0,0 +1,97 @@ +// +// JL_SoundCardManager.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Modify by EzioChan on 2023/09/25. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + + +typedef NS_ENUM(uint8_t, JL_KalaoIndex) { + ///卡拉OK 混响 + JL_KalaoIndexReverberation = 0, + ///卡拉OK 延时 + JL_KalaoIndexDelayed = 1, + ///卡拉OK 音量 + JL_KalaoIndexVolume = 2, +}; + +@class JL_ManagerM; + +/// 声卡功能 +@interface JLSoundCardIndexValue : NSObject + +@property (assign,nonatomic)uint8_t index; + +@property (assign,nonatomic)uint16_t value; + +@end + +@protocol JLSoundCardMgrDelegate + +/// 声卡控制回调 +/// - Parameters: +/// - mask: 掩码 +/// - items: 掩码对应的值 +-(void)jlsoundCardMask:(uint64_t)mask values:(NSArray *)items; + +/// 声卡控制回调 +/// - Parameter frequencyArray: 频率数组 +-(void)jlsoundCardMicFrequency:(NSArray*)frequencyArray; + +/// 声卡控制回调 +/// - Parameter eqArray: EQ数组 +-(void)jlsoundCardMicEQ:(NSArray*)eqArray; + +@end + + +/// 卡拉OK(声卡控制相关) +@interface JL_SoundCardManager : NSObject + +/// 卡拉OK 组件索引 +@property (assign,nonatomic)long index; + +/// 卡拉OK 组件的值 +@property (assign,nonatomic)long value; + +/// 卡拉OK 固件返回的掩码 +@property (assign,nonatomic)uint64_t mask; + +/// 声卡功能参数列表 +@property (strong,nonatomic)NSArray * iVitems; + +/// 卡拉OK 频率数组 +@property (strong,nonatomic)NSArray *micFrequencyArray; + +/// 卡拉OK EQ数组 +@property (strong,nonatomic)NSArray *micEQArray; + +/// 代理 +@property (weak,nonatomic)id delegate; + +/// 设置卡拉OK【index、value】 +/// - Parameters: +/// - manager: 设备对象 +/// - index: index 参数类型 JL_KalaoIndex 目前支持混响、延时、音量的设置。(具体可以看固件的json文件) +/// - value: 0-100 +/// - result: 设置结果 +-(void)cmdSetKalaok:(JL_ManagerM *)manager Index:(JL_KalaoIndex)index Value:(uint16_t)value result:(JL_CMD_RESPOND)result; + +/// 设置卡拉OK【MIC EQ增益】 +/// - Parameters: +/// - manager: 设备对象 +/// - array: @[@(0),@(0),@(0),@(0),@(0)] 单个取值范围 [-8.0 , +8.0]。 +/// - result: 设置结果 +-(void)cmdSetKaraoke:(JL_ManagerM *)manager micEQ:(NSArray*)array result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h new file mode 100644 index 000000000..0ade1d9e8 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SpeechAIttsHandler.h @@ -0,0 +1,59 @@ +// +// JL_SpeechAIttsHandler.h +// JL_BLEKit +// +// Created by EzioChan on 2023/7/22. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@protocol JL_SpeechAIttsHandlerDelegate + +/// 设备回调ai云数据 +/// - Parameters: +/// - manager: 设备 +/// - aicloud: AI云数据对象 +-(void)receiveDataFrom:(JL_ManagerM *)manager WithAiCloud:(JLSpeechAiCloud *)aicloud; + +/// 设备返回tts合成数据 +/// - Parameters: +/// - manager: 设备 +/// - tts: tts数据对象 +-(void)receiveDataFrom:(JL_ManagerM *)manager WithTTS:(JLSpeechTTSSynthesis *)tts; + +@end + +/// 语音 AI/tts 传输处理(旧) +DEPRECATED_MSG_ATTRIBUTE("Use JL_SpeechAIttsHandler instead.") +@interface JL_SpeechAIttsHandler : NSObject + +@property(nonatomic,weak)id delegate; + + +/// 初始化一个语音大数据传输实例 +/// - Parameter mgr: JL_ManagerM +- (instancetype)initWithMgr:(JL_ManagerM *)mgr; + +/// 发送tts语音合成信息 +/// - Parameters: +/// - tts: tts语音对象内容 +/// - manager: 设备 +/// - result: 回调结果 +-(void)speechSendTTs:(JLSpeechTTSSynthesis *)tts manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +/// 发送ai云数据到设备 +/// - Parameters: +/// - cloud: ai云数据 +/// - manager: 设备 +/// - result: 回调结果 +-(void)speechSendAiCloud:(JLSpeechAiCloud *)cloud manager:(JL_ManagerM *)manager result:(JL_BIGDATA_RT)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SpeexManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SpeexManager.h new file mode 100644 index 000000000..28c69e572 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SpeexManager.h @@ -0,0 +1,125 @@ +// +// JL_SpeexManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/12/17. +// Modify By EzioChan on 2023/03/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; +@class JL_SpeexManager; + +/// 录音状态代理处理 +@protocol JL_SpeexManagerDelegate +/// 录音数据回调 +/// - Parameters: +/// - manager: 操作设备 +/// - data: 数据 +-(void)speexManager:(JL_SpeexManager *)manager Audio:(NSData *)data; + +/// 设备端开始录音 +/// - Parameters: +/// - manager: 操作设备 +/// - param: 录音参数 +-(void)speexManager:(JL_SpeexManager *) manager StartByDeviceWithParam:(JLRecordParams *)param; + +/// 设备端结束录音 +/// - Parameters: +/// - manager: 操作设备 +/// - param: 语音助手配置参数 +-(void)speexManager:(JL_SpeexManager *) manager StopByDeviceWithParam:(JLSpeechRecognition *)param; + +/// 录音状态回调 +/// - Parameters: +/// - manager: 操作设备 +/// - status: 状态 +-(void)speexManager:(JL_SpeexManager *)manager Status:(JL_SpeakType)status; + +@optional +/// 录音状态回调 +/// - Parameters: +/// - manager: 操作设备 +/// - status: 录音状态 +/// - originator: 状态变更发起端 +/// 当发起者是Device时,才会具备params的参数,其中结束录音时,params的属性仅有mVadWay为可使用内容 +/// - params: 录音参数 +-(void)speexManager:(JL_SpeexManager *)manager Status:(JL_SpeakType)status By:(JLCMDOriginator)originator With:(JLRecordParams *_Nullable) params __attribute__((deprecated("Use several other callbacks to implement callback methods"))); +@end + +/// 设备录音管理对象 +DEPRECATED_MSG_ATTRIBUTE("Use JLDevAudioManager instead.") +@interface JL_SpeexManager : NSObject + +//MARK: - Sync Android Interface + +@property(nonatomic,weak)id delegate; + +-(instancetype)init __attribute__((unavailable("Use +shareSpeexManager:WithManager: instead."))); + + +/// 获取单例 +/// - Parameters: +/// - delegate: 代理 +/// - manager: 操作设备 ++(JL_SpeexManager *)shareSpeexManager:(id) delegate WithManager:(JL_ManagerM *)manager; + + +/// 获取录音状态 +-(JL_SpeakType)cmdCheckRecordStatus; + + + +/// 开始录音 +/// - Parameters: +/// - manager: 操作设备 +/// - params: 录音参数 +/// - result: 命令操作结果回调 +-(void)cmdStartRecord:(JL_ManagerM *)manager Params:(JLRecordParams *)params Result:(JL_CMD_RESPOND __nullable)result; + + +/// 停止录音 +/// - Parameters: +/// - manager: 操作设备 +/// - reason: VAD类型 +/// - result: 命令操作结果回调 +-(void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason) reason Result:(JL_CMD_RESPOND __nullable)result; + +/// 停止录音2 +/// - Parameters: +/// - manager: 操作设备 +/// - reason: vad类型 +/// - schr: 语音设置助手 +/// - result: 回调结果 +-(void)cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason)reason SpeechHelper:(JLSpeechRecognition *)schr Result:(JL_CMD_RESPOND __nullable)result; + + +/// 发送命令给音箱,允许音箱端开始接收语音,音箱收到这个消息后会发一个提示音 +/// 当前命令用于收到设备主动发起的录音时,同意开始录音。 +/// 即在 speexManagerStatus:(JL_SpeakType)status By:(JLCMDOriginator)originator With:(JLRecordParams *_Nullable) params 的代理回调收到之后的回复处理 +-(void)cmdAllowSpeak; + + +/// 拒绝录音 +/// 发送命令给音箱,不允许接收语音 +/// 当前命令用于收到设备主动发起的录音时,拒绝开始录音。 +/// 即在 speexManagerStatus:(JL_SpeakType)status By:(JLCMDOriginator)originator With:(JLRecordParams *_Nullable) params 的代理回调收到之后的回复处理 +-(void)cmdRejectSpeak; + +/** 停止语音 + 发发送命令给音箱,停止接收数据,即检测到断句 + */ +-(void)cmdSpeakingDone __attribute__((deprecated ( "当前命令已失效,请使用cmdStopRecord:(JL_ManagerM *)manager Reason:(JLSpeakDownReason) reason"))); + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemEQ.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemEQ.h new file mode 100644 index 000000000..3286776c9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemEQ.h @@ -0,0 +1,54 @@ +// +// JL_SystemEQ.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Modify by EzioChan on 2023/09/22 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + + +NS_ASSUME_NONNULL_BEGIN +@class JL_SystemEQ; +typedef void(^JLSystemEQResult)(JL_CMDStatus status,JL_SystemEQ * _Nullable model); + +@interface JL_SystemEQ : JL_FunctionBaseManager + +/// 当前EQ模式 +@property (assign,nonatomic) JL_EQMode eqMode; + +/// EQ段数类型 +@property (assign,nonatomic) JL_EQType eqType; + +/// EQ参数值 +/// (只适用于EQ Mode == CUSTOM情况) +@property (strong, nonatomic) NSArray *eqArray; + +/// 自定义 EQ数组 +@property (strong, nonatomic) NSArray *eqCustomArray; + +/// EQ频率 +@property (strong, nonatomic) NSArray *eqFrequencyArray; + +/// EQ的预设值数组 +@property (strong,nonatomic) NSArray *eqDefaultArray; + + +/// 设置系统EQ +/// - Parameters: +/// - eqMode: EQ模式 +/// - params: EQ参数 +-(void)cmdSetSystemEQ:(JL_EQMode)eqMode Params:(NSArray* __nullable)params; + +/// 查询系统EQ内容 +-(void)cmdGetSystemEQ:(JLSystemEQResult)result; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemTime.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemTime.h new file mode 100644 index 000000000..9e862aaeb --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemTime.h @@ -0,0 +1,45 @@ +// +// JL_SystemTime.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SystemTime : JL_FunctionBaseManager + + +/// 设备当前时间 +@property(nonatomic,strong)JLModel_RTC *rtc; + +#pragma mark ---> 设置系统时间 +/** + @param date 时间类 + */ +-(void)cmdSetSystemTime:(NSDate*)date __attribute__((deprecated ( "Please use the (cmdSetSystemYear: Month: Day: Hour: Minute: Second) method instead. The current method will be invalid"))); + + +/// 设置系统年月日时分秒 +/// @param year 年 +/// @param month 月 +/// @param day 日 +/// @param hour 时 +/// @param min 分 +/// @param sec 秒 +-(void)cmdSetSystemYear:(uint16_t)year + Month:(uint8_t)month + Day:(uint8_t)day + Hour:(uint8_t)hour + Minute:(uint8_t)min + Second:(uint8_t)sec; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemVolume.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemVolume.h new file mode 100644 index 000000000..490d8ce10 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_SystemVolume.h @@ -0,0 +1,27 @@ +// +// JL_SystemVolume.h +// JL_BLEKit +// +// Created by 李放 on 2021/12/20. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JL_SystemVolume : JL_FunctionBaseManager + +#pragma mark ---> 设置系统音量 +/** + @param volume 音量值 + */ +-(void)cmdSetSystemVolume:(UInt8)volume; +-(void)cmdSetSystemVolume:(UInt8)volume Result:(JL_CMD_RESPOND __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Tools.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Tools.h new file mode 100644 index 000000000..64d4c42c1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_Tools.h @@ -0,0 +1,412 @@ +// +// JL_Tools.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/9. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN +typedef void(^JL_Action)(void); +typedef void(^JL_Timer_BK)(void); + +@class JL_Timer; +@interface JL_Tools : NSObject + + +/** + Data自定义截取。 + + @param data 数据 + @param index 偏移 + @param length 长度 + @return 截取后的数据 + */ ++(NSData*)data:(NSData*)data R:(NSInteger)index L:(NSInteger)length; ++(NSDictionary*)dictionaryData:(NSData*)data R:(NSInteger)index L:(NSInteger)length; + +/** + NSData 转成 10进制 + + @param data 数据类型 + @return NSInteger类型 + */ ++(NSInteger)dataToInt:(NSData*)data; + +/** + NSData 转成 NSString + + @param data 数据 + @return 字符串 + */ ++(NSString*)dataChangeToString:(NSData*)data; + +/** + uint8_t 转成 NSData + + @param value uint8_t类型 + @return NSData + */ ++(NSData*)uInt8_data:(uint8_t)value; + +/** + uint16_t 转成 NSData + + @param value uint16_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)uInt16_data:(uint16_t)value Endian:(BOOL)endian; + +/** + uint32_t 转成 NSData + + @param value uint32_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)uInt32_data:(uint32_t)value Endian:(BOOL)endian; + +/** + uint64_t 转成 NSData + + @param value uint64_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)uInt64_data:(uint64_t)value Endian:(BOOL)endian; + +/** + int64_t 转成 NSData + + @param value int64_t类型 + @param endian YES:小端 NO:大端 + @return NSData + */ ++(NSData*)int64_data:(int64_t)value Endian:(BOOL)endian; + +/** + 大小端转换 + + @param data 数据 + @return 转换后的数据 + */ ++(NSData*)changeBigOrSmall:(NSData*)data; + +/** + @"ffff0000" 转成 ,16进制的字符串变成NSData。 + + @param hex 类似@"ffff0000" + @return NSData类型 => + */ ++(NSMutableData*)HexToData:(NSString*)hex; +/** + * 去除结束符 + */ ++(NSData*)cleanEOF:(NSData*)data; +/** + 求自然数:aByte ==> -2 -1 0 1 2 3... + @param aByte 数据 + @return 自然数 + */ ++(int)getNaturalNumber:(NSData*)aByte; ++(int)getNaturalNumber_u16:(NSData*)u16Bytes; ++(int)getNaturalNumber_u32:(NSData*)u32Bytes; + +/** + 发出通知事件 + + @param name 通知名字 + @param object 传递的对象 + */ ++(void)post:(NSString*)name Object:(id __nullable)object; + +/** + 发出通知事件 + + @param name 通知名字 + @param object 传递的对象 + @param info 传递的信息 + */ ++(void)post:(NSString*)name Object:(id __nullable)object UserInfo:(NSDictionary* __nullable)info; +/** + 监听通知事件 + + @param name 通知名字 + @param action 实现方法 + @param own 监听者 + */ ++(void)add:(NSString*__nullable)name Action:(SEL)action Own:(id)own; + +/** + 取消通知监听 + + @param name 通知名字 + @param own 监听者 + */ ++(void)remove:(NSString*__nullable)name Own:(id)own; + +/** + 往NSUserDefault存入对象(注意:可变类型对象不适用)。 + + @param objc 对象 + @param key 键值 + */ ++(void)setUser:(id)objc forKey:(NSString*)key; + +/** + 从NSUserDefault取出对象(注意:可变类型对象不适用)。 + + @param key 键值 + @return 返回对象 + */ ++(id _Nullable)getUserByKey:(NSString*)key; + +/** + 移除NSUserDefault相对应的对象 + + @param key 键值 + */ ++(void)removeUserByKey:(NSString*)key; + + +/** + 延时执行block。 + + @param sec 延时时间(秒) + @param block 代码块 + */ ++(void)delay:(double)sec Task:(JL_Action)block; + +/** + 异步执行block。 + + @param block 代码块 + */ ++(void)subTask:(JL_Action)block; + +/** + 主线程执行block。 + + @param block 代码块 + */ ++(void)mainTask:(JL_Action)block; + + +/** + 新建定时器 + + @param sel 执行方法 + @param objc 执行对象 + @param sec 间隔时间(秒) + @return NSTimer + */ ++(NSTimer*)timingStart:(SEL)sel target:(id)objc Time:(NSTimeInterval)sec; + + +/** + 暂停定时间器 + + @param timer 定时器指针 + */ ++(void)timingPause:(__weak NSTimer*)timer; + +/** + 继续定时器 + + @param timer 定时器指针 + */ ++(void)timingContinue:(__weak NSTimer*)timer; + + +/** + 摧毁定时器 + + @param timer 定时器指针 + */ ++(void)timingStop:(__weak NSTimer*)timer; + + +/** + 在存在的文件路径上,建立新的文件。 + + @param sPath 沙盒 + @param mPath 中间路径 + @param file 文件名 + @return 完成路径 + */ ++(NSString*)createOn:(NSSearchPathDirectory)sPath + MiddlePath:(NSString*)mPath + File:(NSString*)file; + +/** + 列出文件路径 + + @param sPath 沙盒 + @param mPath 中间路径 + @param file 文件名 + @return 完整路径 + */ ++(NSString*)listPath:(NSSearchPathDirectory)sPath + MiddlePath:(NSString*)mPath + File:(NSString*)file; + +/** + * 用途:【查找】一个文件,在你想要的路径下。 + * @param sPath 系统路径 + * @param mPath 中途路径 -->> @"test1/test2/test3" <<-- + * @param file 文件名 + */ ++(NSString*)findPath:(NSSearchPathDirectory)sPath + MiddlePath:(NSString*)mPath + File:(NSString*)file; + +/** + * 用途:从Project资源里寻找文件。 + * (先把资源文件添加至工程内的Copy Bundle Resources内。) + * @param file 文件名 + * @return 该文件的路径。 + */ ++(NSString*)find:(NSString *)file; + +/** + * 是否存在某个路径。 + * @param path 文件路径 + * @return YES or NO。 + */ ++(BOOL)isExistsPath:(NSString*)path; +/** + 删除文件 + @param path 完整路径 + @return 成功与否 + */ ++(BOOL)removePath:(NSString*)path; + +/** + * 用途:文件夹内文件元素。 + * @param path 文件夹路径 + */ ++(NSArray*)subPaths:(NSString*)path; + +/** + * 用途:解析JSON文件。 + * @param path 文件路径 + */ ++(id)JsonPath:(NSString*)path; + +/** + * NSArray ==> NSString. + */ ++(NSString*)arrayToJson:(NSArray *)array; + +/** + 数据覆盖写进文件 + + @param data 数据 + @param path 文件路径 + @return 成功与否 + */ ++(BOOL)writeData:(NSData*)data fillFile:(NSString*)path; + +/** + 数据写进文件的末端 + + @param data 数据 + @param path 文件路径 + */ ++(void)writeData:(NSData*)data endFile:(NSString*)path; + +/** + 数据写进文件的偏移位置 + + @param data 数据 + @param seek 偏移 + @param path 文件路径 + */ ++(void)writeData:(NSData*)data Seek:(unsigned long long)seek File:(NSString*)path; + +/** + * UNICODE 编码字符串(小端) + */ ++(NSString*)stringUnicode:(NSData*)data; + +/** + * UNICODE 编码字符串(大端) + */ ++(NSString*)stringUnicodeBig:(NSData*)data; + +/** + * ANSI 编码字符串 + */ ++(NSString*)stringANSI:(NSData*)data; + +/** + * GBK 编码字符串 + */ ++(NSString*)stringGBK:(NSData*)data; + +/** + * 大文件传输,长短文件名(移除不必要字符) + */ ++(NSData*)stringBigFileWithNeedRemoveUnnecessaryPunctuationCharactersWithString:(NSString*)name withFileNameIndex:(int)fileNameIndex; + + +/// 大文件传输文件名设置 +/// Unicode编码 +/// - Parameters: +/// - name: 文件名 +/// - fileNameIndex: index +/// - encodeType: 编码格式 ++(NSData *)stringBigFileUnicode:(NSString *)name withFileNameIndex:(int)fileNameIndex WithEncode:(NSStringEncoding) encodeType; +/** + * 移除不必要字符 \ / : " < > . + */ ++(NSString *)removeUnnecessaryPunctuationCharactersWithString:(NSString *)textString; + +/** + * 名字移除目标字符 + * @param pattern 目标需要移除的字符 + * NSString *pattern = @"[/:*?\"<>|]"; + * @param textString 源字符串 + */ ++(NSString *)removeCharacters:(NSString*)pattern WithString:(NSString *)textString; + +/** + * 大文件传输,长短文件名 + */ ++(NSData*)stringBigFile:(NSString*)name withFileNameIndex:(int)fileNameIndex; + +/** + * 去除特殊字符串 + */ ++(NSString*)removeSpecialStrings:(NSString*)name; +/** + * 返回时间戳(单位:秒) + */ ++(long)dateCurrent; + + +/// 把data变成LTV格式 +/// @param type 类型 +/// @param data 数据 ++(NSData *)beLtv:(uint8_t)type Data:(NSData*)data; + + + +@end + +@interface JL_Timer : NSObject +@property(nonatomic,assign)NSInteger subTimeout; //超时时间(默认5s) +@property(nonatomic,assign)NSTimeInterval subScale; //默认1.0s +-(void)waitForTimeoutResult:(JL_Timer_BK)result; +-(void)continueTimeout; +-(void)cancelTimeout; +-(void)threadWait; +-(void)threadContinue; +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_TwsManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_TwsManager.h new file mode 100644 index 000000000..d3f8cf977 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_TwsManager.h @@ -0,0 +1,367 @@ +// +// JL_TwsManager.h +// JL_BLEKit +// +// Created by 凌煊峰 on 2021/12/17. +// Modify by EzioChan on 2023/08/18 +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +//MARK: - 耳机电量 +/// 耳机电量 +/// TWS earphones Electricity +@interface TwsElectricity:NSObject +/// 左耳充电中 +@property(nonatomic,assign) BOOL isChargingLeft; + +/// 右耳充电中 +@property(nonatomic,assign) BOOL isChargingRight; + +/// 充电仓正在充电中 +@property(nonatomic,assign) BOOL isChargingCenter; + +/// 左耳电量 +@property(nonatomic,assign) int powerLeft; + +/// 右耳电量 +@property(nonatomic,assign) int powerRight; + +/// 充电舱电量 +@property(nonatomic,assign) int powerCenter; + +@end + + + +//MARK: - TWS 控制类 +/// TWS 管理者 +@interface JL_TwsManager : JL_FunctionBaseManager + +/// 扩展功能支持 +@property(nonatomic,strong,readonly)JLTwsSupportFuncs *supports; + +///耳机电量 +///TWS earphones Electricity +@property (nonatomic,strong)TwsElectricity *electricity; + +/// 设备名称 +@property (nonatomic,strong)NSString *edrName; + +/// 按键功能设置 +@property (nonatomic,strong)NSArray *keySettings; + +/// 灯光场景类型 +@property (nonatomic,assign)int ledScen; + +/// 灯光效果类型 +@property (nonatomic,assign)int ledEffect; + +/// 设备麦克风channel +/// 若为空或者0则视为此功能不支持 +/// 1:自动切换 +/// 2:始终左耳 +/// 3:始终右耳 +@property (nonatomic,assign)int micMode; + +/// 工作模式 +/// 若为空或者0则视为此功能不支持 +/// 1:普通模式 +/// 2:游戏模式 +@property (nonatomic,assign)int workMode; + +/// 供应商ID +@property (nonatomic,assign)uint16_t vid; + +/// 厂商ID +@property (nonatomic,assign)uint16_t uid; + +/// 产品ID +@property (nonatomic,assign)uint16_t pid; + +/// 连接时长 +@property (nonatomic,assign)uint32_t linkTime; + +/// 入耳检测 +/// 0 -- 不支持此功能 +/// 1 -- 关闭 +/// 2 -- 打开 +@property (nonatomic,assign)uint8_t earEntryDection; + +/// 设备语言类型 +/// zh -- 中文 +/// en -- 英文 +@property (nonatomic,strong)NSString *deviceLanguage; + +///ANC的模式数组 +@property (nonatomic,strong)NSArray *ancModels; + +/// HeadSetInfoDict +/// 耳机信息字典 +/// 当app端收到设备返回的信息时会更新此值 +/// 此值变化较大不适合作为唯一判断依据,容易发生部分值获取失败的问题 +@property (nonatomic,strong)NSDictionary *_Nullable headSetInfoDict; + + +/// 一拖二开关状态 +@property(nonatomic,readonly,assign)BOOL dragWithMore; + + + +/// 设置设备名称 +/// - Parameter name: 设置对耳设备的EDR名字 +-(void)cmdHeadsetEdrName:(NSData*)name; + +#pragma mark ---> 按键设置(对耳) +typedef NS_ENUM(UInt8, JL_HeadsetButtonSettingKey) { + JL_HeadsetButtonSettingKeyOnlyLeftEar = 0x01, //左耳 + JL_HeadsetButtonSettingKeyOnlyRightEar = 0x02, //右耳 +}; +typedef NS_ENUM(UInt8, JL_HeadsetButtonSettingAction) { + JL_HeadsetButtonSettingActionClick = 0x01, //单击 + JL_HeadsetButtonSettingActionDoubleClick = 0x02, //双击 +}; +typedef NS_ENUM(UInt8, JL_HeadsetButtonSettingFunction) { + JL_HeadsetButtonSettingFunctionNone = 0x00, //无作用 + JL_HeadsetButtonSettingFunctionBoot = 0x01, //开机 + JL_HeadsetButtonSettingFunctionTurnOff = 0x02, //关机 + JL_HeadsetButtonSettingFunctionPlayPrevious = 0x03, //上一曲 + JL_HeadsetButtonSettingFunctionPlayNext = 0x04, //下一曲 + JL_HeadsetButtonSettingFunctionPlayOrPause = 0x05, //播放/暂停 + JL_HeadsetButtonSettingFunctionAnswerOrHangup = 0x06, //接听/挂断 + JL_HeadsetButtonSettingFunctionReject = 0x07, //拒听 + JL_HeadsetButtonSettingFunctionTakePhoto = 0x08, //拍照 +}; +/** + @param key 左耳0x01 右耳0x02 + @param act 单击0x01 双击0x02 + @param fuc 0x00 无作用 + 0x01 开机 + 0x02 关机 + 0x03 上一曲 + 0x04 下一曲 + 0x05 播放/暂停 + 0x06 接听/挂断 + 0x07 拒听 + 0x08 拍照 + */ +-(void)cmdHeadsetKeySettingKey:(uint8_t)key + Action:(uint8_t)act + Function:(uint8_t)fuc; + +#pragma mark ---> LED设置(对耳) + +typedef NS_ENUM(UInt8, JL_HeadsetScene) { + JL_HeadsetSceneNotPaired = 0x01, //未配对 + JL_HeadsetSceneDisConnected = 0x02, //未连接 + JL_HeadsetSceneConnected = 0x03, //已连接 + JL_HeadsetScenePlayDeviceMusic = 0x04, //播放设备音乐 + JL_HeadsetScenePauseDeviceMusic = 0x05, //暂停设备音乐 + JL_HeadsetScenePlayExternalAudioSource = 0x06, //外部音源播放 + JL_HeadsetScenePauseExternalAudioSource = 0x07, //外部音源暂停 +}; +typedef NS_ENUM(UInt8, JL_HeadsetLedEffect) { + JL_HeadsetLedEffectAllClose = 0x00, //全灭 + JL_HeadsetLedEffectRedLightOn = 0x01, //红灯常亮 + JL_HeadsetLedEffectBlueLightOn = 0x02, //蓝灯常亮 + JL_HeadsetLedEffectRedLightBreathing = 0x03, //红灯呼吸 + JL_HeadsetLedEffectBlueLightBreathing = 0x04, //蓝灯呼吸 + JL_HeadsetLedEffectRedBlueLightQuickFlash = 0x05, //红蓝交替快闪 + JL_HeadsetLedEffectRedBlueLightSlowFlash = 0x06, //红蓝交替慢闪 +}; +/** + @param scene 0x01 未配对 + 0x02 未连接 + 0x03 连接 + 0x04: 播放设备音乐 + 0x05:暂停设备音乐 + 0x06:外部音源播放 + 0x07:外部音源暂停 + @param effect 0x00 全灭 + 0x01 红灯常亮 + 0x02 蓝灯常亮 + 0x03 红灯呼吸 + 0x04 蓝灯呼吸 + 0x05 红蓝交替快闪 + 0x06 红蓝交替慢闪 + */ +-(void)cmdHeadsetLedSettingScene:(uint8_t)scene + Effect:(uint8_t)effect; + +#pragma mark ---> MIC设置(耳机) +typedef NS_ENUM(UInt8, JL_HeadsetMicSettingMode) { + JL_HeadsetMicSettingModeOnlyLeftEar = 0x00, //仅左耳 + JL_HeadsetMicSettingModeOnlyRightEar = 0x01, //仅右耳 + JL_HeadsetMicSettingModeAutomatic = 0x02, //自动选择 +}; +/** + @param mode JL_HeadsetMicSettingMode + */ +-(void)cmdHeadsetMicSettingMode:(JL_HeadsetMicSettingMode)mode + Result:(JL_CMD_RESPOND __nullable)result; + +#pragma mark ---> 工作模式(耳机) +typedef NS_ENUM(UInt8, JL_HeadsetWorkingMode) { + JL_HeadsetWorkingModeNormal = 0x01, //普通模式 + JL_HeadsetWorkingModeGame = 0x02, //游戏模式 +}; +/** + @param mode 1: 普通模式 + 2: 游戏模式 + */ +-(void)cmdHeadsetWorkSettingMode:(uint8_t)mode; + +#pragma mark ---> 同步时间戳(耳机) +/** + @param date 当前系统时间 +*/ +-(void)cmdHeadsetTimeSetting:(NSDate*)date; + +#pragma mark ---> 获取设备信息(耳机) +typedef void(^JL_HEADSET_BK)(NSDictionary* __nullable dict); +typedef NS_ENUM(uint32_t, JL_HeadsetAdviceFlag) { + JL_HeadsetAdviceFlagGetElectricity = 1, //小机电量获取 + JL_HeadsetAdviceFlagEdrName = 1 << 1, //Edr名称 + JL_HeadsetAdviceFlagButtonFunction = 1 << 2, //按键功能 + JL_HeadsetAdviceFlagLedStatus = 1 << 3, //LED显示状态 + JL_HeadsetAdviceFlagMicMode = 1 << 4, //MIC模式 + JL_HeadsetAdviceFlagWorkMode = 1 << 5, //工作模式 + JL_HeadsetAdviceFlagProductInfo = 1 << 6, //产品信息 + JL_HeadsetAdviceFlagConnectingTime = 1 << 7, //连接时间 + JL_HeadsetAdviceFlagEarDetection = 1 << 8, //入耳检测 + JL_HeadsetAdviceFlagLanguage = 1 << 9, //语言类型 + JL_HeadsetAdviceFlagAll = 0xFFFFFFFF //全部 +}; +/** + @param flag BIT0 小机电量获取 格式为3个字节 参考广播包格式 + BIT1 Edr 名称 + BIT2 按键功能 + BIT3 LED 显示状态 + BIT4 MIC 模式 + BIT5 工作模式 + BIT6 产品信息 + BIT7 连接时间 + BIT8 入耳检测 + BIT9 语言类型 + @param result 返回字典: + @"ISCHARGING_L" + @"ISCHARGING_R" + @"ISCHARGING_C" + @"POWER_L" + @"POWER_R" + @"POWER_C" + @"EDR_NAME" + @"KEY_LR" + @"KEY_ACTION" + @"KEY_FUNCTION" + @"LED_SCENE" + @"LED_EFFECT" + @"MIC_MODE" + @"WORK_MODE" + @"UID" + @"UID" + @"PID" + @"LINK_TIME" + @""IN_EAR_TEST" + @"DEVICE_LANGUAGE" + @"KEY_ANC_MODE" ANC的模式数组 + */ +-(void)cmdHeadsetGetAdvFlag:(JL_HeadsetAdviceFlag)flag + Result:(JL_HEADSET_BK __nullable)result; + +#pragma mark ---> 设备广播通知(耳机) +/** + @{@"JLID": 杰理ID, + @"UID": , + @"PID": , + @"EDR": , + @"SCENE": , + @"ISCHARGING_L": , + @"ISCHARGING_R": , + @"ISCHARGING_C": , + @"POWER_L": , + @"POWER_R": , + @"POWER_C": , + @"CHIP_TYPE": , + @"PROTOCOL_TYPE": , + @"SEQ":}; + */ +extern NSString *kJL_MANAGER_HEADSET_ADV; + +#pragma mark ---> 设置命令成功/错误回复(耳机) +/** + 0x00:成功 + 0x01:游戏模式导致设置失效 + 0x02:蓝牙名字长度超出限制 + 0x03:非蓝牙模式设置闪灯失败 + */ +extern NSString *kJL_MANAGER_HEADSET_SET_ERR; + +#pragma mark ---> 关闭或开启设备广播(耳机) +/** + @param enable 使能位 + */ +-(void)cmdHeadsetAdvEnable:(BOOL)enable; + +#pragma mark ---> 用于ADV设置同步后需要主机操作的行为。 +/** + 1:更新配置信息,需要重启生效。 + 2:同步时间戳 + 3:请求手机回连BLE + 4:同步设备信息 + */ +extern NSString *kJL_MANAGER_HEADSET_TIPS; + +#pragma mark ---> 发射频点 +/** +@param fmtx 频点 +*/ +-(void)cmdSetFMTX:(uint16_t)fmtx; + +#pragma mark ---> 设置耳机ANC模式列表 +/** + * 设置耳机ANC模式列表 + * @param array 频点 JL_AncMode的NSNumber对象数组 @[@(JL_AncMode_Normal), @(JL_AncMode_NoiseReduction)] + */ +-(void)cmdHeadsetAncArray:(NSArray*)array; + +#pragma mark ---> 耳机主动降噪ANC设置 +-(void)cmdSetANC:(JLModel_ANC*)model; + + + +//MARK: - 一拖二相关命令 + +typedef void(^JL_MulitLinksInfo_BK)(JL_CMDStatus status,NSArray * __nullable phoneInfos); + +/// 设备上传一拖二设备信息列表 +extern NSString* kJL_MULIT_NAME_LIST; + +/// 获取设备已连接手机名 +/// 通知设备上传一拖二设备信息列表 +/// @param result 设备所连接的手机名字列表 +-(void)cmdGetDeviceInfoListResult:(JL_MulitLinksInfo_BK)result; + +/// 通知设备一连上手机地址和绑定信息 +/// - Parameters: +/// - addr: 手机EDR地址 +/// - name: 手机蓝牙名称 +/// - result: 结果 +-(void)cmdBindDeviceInfo:(NSData *)addr phone:(NSString *)name result:(JL_MulitLinksInfo_BK)result; + +/// 一拖二开关 +/// @param dragWithMore 开关状态 +/// @param addr 手机的经典蓝牙地址(通过cmdGetDeviceInfoList 获取) +/// @param result 结果回调 +-(void)setDragWithMore:(BOOL)dragWithMore phoneBleAddr:(NSData *) addr result:(JL_CMD_RESPOND)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_TypeEnum.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_TypeEnum.h new file mode 100644 index 000000000..c231c9177 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_TypeEnum.h @@ -0,0 +1,83 @@ +// +// JL_TypeEnum.h +// JL_BLEKit +// +// Created by DFung on 2018/11/29. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +typedef NS_ENUM(NSInteger, JL_BLEStatus) { + JL_BLEStatusFound, //发现设备,对应 kUI_JL_BLE_FOUND + JL_BLEStatusPaired, //已配对, 对应 kUI_JL_BLE_PAIRED + JL_BLEStatusDisconnected, //断开连接,对应 kUI_JL_BLE_DISCONNECTED + JL_BLEStatusOn, //蓝牙开启,对应 kUI_JL_BLE_ON + JL_BLEStatusOff, //蓝牙关闭,对应 kUI_JL_BLE_OFF + JL_BLEStatusUnknown, //状态未知 +}; +typedef NS_ENUM(NSInteger, JL_DeviceBTStatus) { + JL_DeviceBTStatusDisconnected = 0, //设备经典蓝牙已断开 + JL_DeviceBTStatusConnected = 1, //设备经典蓝牙已连接 + JL_DeviceBTStatusUnknown, +}; +typedef NS_ENUM(UInt8, JL_CMDStatus) { + JL_CMDStatusSuccess = 0x00, //成功 + JL_CMDStatusFail = 0x01, //失败 + JL_CMDStatusUnknownCmd = 0x02, //未定义命令 + JL_CMDStatusBusy = 0x03, //忙碌 + JL_CMDStatusNoResponse = 0x04, //没有收到回复 + JL_CMDStatusCrcErr = 0x05, //CRC错误 + JL_CMDStatusDataCrcErr = 0x06, //数据CRC错误 + JL_CMDStatusParamErr = 0x07, //参数错误 + JL_CMDStatusOverLimit = 0x08, //数据溢出 + JL_CMDStatusLrcError = 0x09, //LRC获取出错 + JL_CMDStatusUnknown, +}; +typedef void(^JL_CMD_RESPOND)(JL_CMDStatus status, uint8_t sn, NSData* __nullable data); + +//---------------------------------------------------------// + +typedef NS_ENUM(UInt8,JLDevSpecialType) { + ///普通正常设备 + JLDevSpecialType_Normal = 0x00, + ///回连设备 + JLDevSpecialType_Reconnect = 0x01, +}; + +typedef NS_ENUM(int64_t,JL_CLASS) { + JL_CLASS_SmallFile = 0, + JL_CLASS_File = 1, + JL_CLASS_OTA = 2, + JL_CLASS_Flash = 3, + JL_CLASS_ChargingBin = 4, + JL_CLASS_AlarmClock = 5, + JL_CLASS_Light = 6, + JL_CLASS_Tws = 7, + JL_CLASS_SoundCard = 8, + JL_CLASS_Call = 9, + JL_CLASS_Speex = 10, + JL_CLASS_Lrc = 11, + JL_CLASS_FindDevice = 12, + JL_CLASS_MusicControl = 13, + JL_CLASS_Fm = 14, + JL_CLASS_SystemEQ = 15, + JL_CLASS_SystemTime = 16, + JL_CLASS_SystemVolume = 17, + JL_CLASS_Custom = 18, + JL_CLASS_Batch = 19, + JL_CLASS_DeviceLogs = 20, + JL_CLASS_BigData = 21, +}; + +//---------------------------------------------------------// + + +///命令发起者 +typedef NS_ENUM(UInt8, JLCMDOriginator) { + ///SDK端发起 + JLCMDOriginatorApp = 0x00, + ///设备端发起 + JLCMDOriginatorDevice = 0x01 +}; diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_WatchProtocol.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_WatchProtocol.h new file mode 100644 index 000000000..7dec3d76b --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_WatchProtocol.h @@ -0,0 +1,126 @@ +// +// JL_WatchProtocolDelegate.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/11. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import "JL_SDM_Header.h" + + +NS_ASSUME_NONNULL_BEGIN + +@protocol JL_WatchProtocol + +@optional +/// 设备回调心率相关内容 +/// @param heartRate 心率对象 +-(void)jlWatchHeartRate:(JL_SDM_HeartRate *)heartRate; + +/// 设备回调大气压强相关内容 +/// @param airPressure 气压对象 +-(void)jlWatchAirPressure:(JL_SDM_AirPressure *)airPressure; + +/// 设备回调海拔高度相关内容 +/// @param alititude 海拔对象 +-(void)jlWatchAltitude:(JL_SDM_Altitude *)alititude; + +/// 设备回调步数相关内容 +/// @param moveStep 步数对象 +-(void)jlWatchMoveSteps:(JL_SDM_MoveSteps *)moveStep; + +/// 设备回调压力相关内容 +/// @param stress 压力对象 +-(void)jlWatchStress:(JL_SDM_Stress *)stress; + +/// 设备回调血氧饱和度相关内容 +/// @param oxStaturation 血氧饱和度对象 +-(void)jlWatchOxsaturation:(JL_SDM_OxSaturation*)oxStaturation; + +/// 设备回调训练负荷相关内容 +/// @param trainLoad 训练负荷对象 +-(void)jlWatchTrainLoad:(JL_SDM_TrainLoad *)trainLoad; + +/// 设备回调最大摄氧量相关内容 +/// @param maxOxg 最大摄氧量对象 +-(void)jlWatchMaxOxg:(JL_SDM_MaxOxg *)maxOxg; + +/// 设备回调运动恢复时间相关内容 +/// @param rectime 运动恢复时间对象 +-(void)jlWatchRecTime:(JL_SDM_RecTime *)rectime; + +/// 设备回调运动数据的相关内容 +/// @param sportMsg 运动数据对象 +-(void)jlWatchSportMessage:(JL_SDM_SportMessage *)sportMsg; + + +/// 设备回调无法区分的数据内容 +/// @param value 数据区域,根据类型解析数据 +/// @param submask 对应查询的参数,描述功能类型,作用域 +/// @param type 数据类型 +-(void)jlWatchUnDefineData:(NSData *)value subMask:(NSData *)submask Type:(UInt8)type; + +/// 设备回调传感器相关数据 +/// @param type 数据类型 +/// @param data 数据内容 +-(void)jlWatchWatchLog:(JL_WATCH_LOG_TYPE) type with:(NSData *)data; + +//MARK: - 健康设置回调 + +/// 接收整个设置返回的数组 +/// @param models JLwSettingModels +-(void)jlWatchSetAllFunc:(NSArray *)models; + +/// 回调传感器相关设置 +/// @param model 传感器功能 +-(void)jlWatchSetSensorFunc:(JLSensorFuncModel *)model; + +/// 久坐提醒 +/// @param model 久坐提醒功能 +-(void)jlWatchSetSedentaryRmd:(JLSedentaryRmdModel *)model; + +/// 心率测量功能 +/// @param model 心率模块 +-(void)jlWatchSetConsequentHeartRate:(JLConsequentHeartRateModel *)model; + +/// 运动心率测试功能 +/// @param model 运动心率 +-(void)jlWatchSetExerciseHeartRateRemind:(JLExerciseHeartRateRemindModel *)model; + +/// 自动压力测试 +/// @param model 压力测试 +-(void)jlWatchSetAutoPressure:(JLAutoPressureModel *)model; + +/// 睡眠监测 +/// @param model 睡眠 +-(void)jlWatchSetSleepMonitor:(JLSleepMonitorModel *)model; + +/// 跌到监测 +/// @param model 跌倒监测 +-(void)jlWatchSetFallDetectionModel:(JLFallDetectionModel *)model; + +/// 抬腕监测 +/// @param model 抬腕监测 +-(void)jlWatchSetWristLiftDetectionModel:(JLWristLiftDetectionModel *)model; + +/// 个人信息 +/// @param model 个人信息 +-(void)jlWatchSetPersonInfoModel:(JLPersonInfoModel *)model; + +/// 蓝牙断开设置 +/// @param model 断开设置 +-(void)jlWatchSetDisconnectRemindModel:(JLDisconnectRemindModel *)model; + +/// 紧急联系人 +/// @param model 紧急联系人设置 +-(void)jlWatchSetEmergencyContactModel:(JLEmergencyContactModel *)model; + +/// 血氧测量 +/// @param model 血氧测量模式 +-(void)jlWatchSetOxygenSturationRemindModel:(JLOxygenSturationRemindModel *)model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h new file mode 100644 index 000000000..132a29179 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_WatchSyncProtocol.h @@ -0,0 +1,47 @@ +// +// JL_WatchSyncProtocol.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/27. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// +#import +#import "JL_SDM_Header.h" +#import "JL_EntityM.h" + +#ifndef JL_WatchSyncProtocol_h +#define JL_WatchSyncProtocol_h + +@protocol JLWearSyncProtocol + +@optional +/// 运动信息返回 +/// @param model 运动信息对象 +/// @param entity 设备entity +-(void)jlWearSyncSportInfo:(JLWearSyncInfoModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 结束运动返回内容 +/// @param model 结束时间相隔信息对象 +/// @param entity 设备entity +-(void)jlWearSyncStopMotion:(JLWearSyncFinishModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +/// 开始运动返回消息 +/// @param entity 设备entity +-(void)jlWearSyncStartMotionWith:(JL_EntityM *_Nonnull)entity; + +/// 暂停运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusPauseWith:(JL_EntityM *_Nonnull)entity; + +/// 继续运动 +/// @param entity 设备entity +-(void)jlWearSyncStatusContiuneWith:(JL_EntityM *_Nonnull)entity; + +/// 实时数据回调 +/// @param model 实时数据模型 +/// @param entity 设备entity +-(void)jlWearSyncRealTimeData:(JLWearSyncRealTimeModel *_Nonnull)model With:(JL_EntityM *_Nonnull)entity; + +@end + +#endif /* JL_WatchSyncProtocol_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_vad.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_vad.h new file mode 100644 index 000000000..9b8719250 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JL_vad.h @@ -0,0 +1,144 @@ +// +// JL_vad.h +// Test +// +// Created by DFung on 2018/2/28. +// Copyright © 2018年 DFung. All rights reserved. +// + +#ifndef JL_vad_h +#define JL_vad_h + + + +#define CONT_AD_ADFRMSIZE 16 +#define DEFAULT_RADIX 12 +#define SMOOTH_WINDOW 4 +#define MIN_FIXLOG -2829416 +#define KWSNUM 1 //¥˝ ∂±¥ ∏ˆ ˝ + + +//typedef long long __int64; +typedef int int32; +typedef short int16; +typedef signed char int8; +typedef unsigned int uint32; +typedef unsigned short uint16; +typedef unsigned char uint8; +typedef long long int64; +typedef int32 fixed32; +typedef float float32; + + + + +struct noise_stats_s { + /* Smoothed power */ + int power[40]; + int max_power[40]; + /* Noise estimate */ + int noise[40]; + int max_noise[40]; + /* Signal floor estimate */ + int floor[40]; + int max_floor[40]; + /* Peak for temporal masking */ + int peak[40]; + int max_peak[40]; + + int signal[40]; + int gain[40]; + char remove_noi; + /* Initialize it next time */ + uint8 undefined; + /* Number of items to process */ + uint32 num_filters; + + /* Sum of slow peaks for VAD */ + int64 slow_peak_sum; + int64 max_slow_peak_sum; + + /* Precomputed constants */ + int lambda_power; + int comp_lambda_power; + int lambda_a; + int comp_lambda_a; + int lambda_b; + int comp_lambda_b; + int lambda_t; + int mu_t; + int max_gain; + int inv_max_gain; + + int smooth_scaling[2 * 4 + 3]; +}; +typedef struct noise_stats_s noise_stats_t; +struct htk_fe_s +{ + unsigned short pow_hist[98]; + noise_stats_t *noise_stats; + + + int fe_prior; + uint32 int_frame; + char int_flag; + + + unsigned char sum_cnt; + + uint8 voice_state; + uint8 in_speech; + int16 pre_speech_frames; + int16 post_speech_frames; + + int16 inout_spch[410]; + int fe_tmp_spch[250]; + int fe_fft_buf[512]; + int fe_mfspec[40]; + int cmn_sum[13]; + int mfcc_fifo[9][13]; + int *cmn_mfcc_fifo[9]; + //int fe_prior; + char speech_fifo[16]; + char init_speech_n; + char vad_cnt; + int buf_cep[21][13]; + int buf_pow[21]; + uint8 speech_indexw; + uint8 speech_indexr; + uint8 speech_cnt; + + + int16 sp_threshold; + int16 nsp_threshold; +}; + +typedef struct htk_fe_s htk_fe_t; +/* + * How to use? See follow... + * + * 1、开启录音前: + * /--- 开启Vad ---/ + * int need_buf_size = vad_get_need_buf_size(); + * vad_hdl = malloc(need_buf_size); + * vad_init(vad_hdl, 10, 51); + * + * 2、结束录音后: + * /--- 关闭Vad ---/ + * free(vad_hdl); + * + * 3、录音数据回调: + * buf:录音数据 ,需要320Bytes! + * ret:0->静音状态 1->正在说话 2->结束说话 + * int ret = vad_main(vad_hdl, (int*)buf); + */ +int vad_get_need_buf_size(void); +int vad_init(void *p, short sp_threshold, short nsp_threshold); +int vad_main(void *p,int *inout_spch); + +fixed32 fe_log_add(fixed32 x, fixed32 y); +fixed32 fe_log_sub(fixed32 x, fixed32 y); +int32 fixlog2(uint32 x); +int fixlog(uint32 x); + +#endif /* JL_vad_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLeSimManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLeSimManager.h new file mode 100644 index 000000000..0d1f4e10d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLeSimManager.h @@ -0,0 +1,41 @@ +// +// JLeSimManager.h +// JL_BLEKit +// +// Created by EzioChan on 2023/12/4. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class JL_ManagerM; + +@protocol JLEsimFinishDelegate + +/// 设备推送esim 信息内容 +/// - Parameters: +/// - version: 版本 +/// - data: 内容 +-(void)jlEsimDidGetData:(uint8_t)version ESimData:(NSData *)data; + +@end + +typedef void(^JLESimFinishBlock)(NSError * _Nullable err); + +/// esim 信息交互类 +@interface JLeSimManager : NSObject + +@property(nonatomic,assign)id delegate; + +/// 下发 esim 信息到设备 +/// - Parameters: +/// - mgr: 设备 +/// - data: esim 信息 +/// - block: 完成回调 +-(void)sendToDev:(JL_ManagerM *)mgr Data:(NSData *)data Result:(JLESimFinishBlock)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLwSettingModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLwSettingModel.h new file mode 100644 index 000000000..17be0dc71 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/JLwSettingModel.h @@ -0,0 +1,104 @@ +// +// LtvSettingModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/10/12. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + + +typedef NS_ENUM(UInt8, WatchSettingFunc) { + ///传感器功能 + WatchSettingFunc_SensorFunction = 0x01 , + ///久坐提醒 + WatchSettingFunc_SedentaryReminder = 0x02, + ///连续测量心率 + WatchSettingFunc_ContinuousHeartRateMeasurement = 0x03, + ///运动心率提醒 + WatchSettingFunc_ExerciseHeartRateReminder = 0x04, + ///压力自动检测 + WatchSettingFunc_AutomaticPressureDetection = 0x05, + ///睡眠检测 + WatchSettingFunc_SleepMonitoring = 0x06, + ///跌倒检测 + WatchSettingFunc_FallDetection = 0x07, + ///抬腕检测 + WatchSettingFunc_WristLiftDetection = 0x08, + ///个人信息 + WatchSettingFunc_PersonInfo = 0x09, + /// 蓝牙断开提醒 + WatchSettingFunc_DisconnectReminder = 0xA, + /// 血氧测量提醒 + WatchSettingFunc_OxygenSturation = 0x0B, + /// 紧急联系人 + WatchSettingFunc_EmergencyContact = 0x0C +}; + +///提醒模式 +typedef NS_ENUM(UInt8, WatchRemindType) { + /// 亮屏 + WatchRemind_BrightScreen = 0x00, + ///震动 + WatchRemind_Shake = 0x01, + /// 打电话(抬腕不支持该提示) + WatchRemind_Call = 0x02 +}; + +///连续测量心率模式 +typedef NS_ENUM(UInt8, WatchConsequentType) { + //智能 + WatchConsequent_Intelligent = 0x00, + //实时 + WatchConsequent_realTime = 0x01 +}; + +/// 连续血氧测量模式 +typedef NS_ENUM(UInt8,WatchOxygenMsmType){ + //智能 + WatchOxygenMsm_Intelligent = 0x00, + //定时 + WatchOxygenMsm_runTime = 0x01 +}; + +///监察开关类型 +typedef NS_ENUM(UInt8, WatchSwitchType) { + ///关闭 + WatchSwitchType_Close = 0x00, + ///全天开启 + WatchSwitchType_AllDay = 0x01, + ///自定义时间 + WatchSwitchType_Customer = 0x02, +}; + +@interface WatchTimer : NSObject +/// 时 +@property(nonatomic,assign,readonly)UInt8 hour; +/// 分 +@property(nonatomic,assign,readonly)UInt8 min; + +-(instancetype _Nonnull)initWithData:(NSData *_Nonnull)data; + +-(instancetype _Nonnull)initWith:(uint8_t)h Min:(uint8_t)m; + +@end + +NS_ASSUME_NONNULL_BEGIN + +@interface JLwSettingModel : NSObject +@property(nonatomic,assign)uint8_t length; +@property(nonatomic,assign)WatchSettingFunc type; +@property(nonatomic,strong)NSData *value; + +/// 设备UUID +@property(nonatomic,strong)NSString *deviceID; + + +-(NSData *)beData; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NSData+ToUnit.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NSData+ToUnit.h new file mode 100644 index 000000000..ec6140e85 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NSData+ToUnit.h @@ -0,0 +1,64 @@ +// +// NSData+ToUnit.h +// JL_BLEKit +// +// Created by EzioChan on 2021/4/7. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSData (ToUnit) + + +-(BOOL)beBool; + +-(uint8_t)beUint8; + +-(UInt16)beLittleUint16; + +-(UInt16)beBigendUint16; + +-(UInt32)beLittleUint32; + +-(UInt32)beBigendUint32; + +-(UInt64)beLittleUint64; + +-(UInt64)beBigendUint64; + +-(NSString *)dataToAltitude; + +-(NSString *)beHexStr; + +-(NSDate *)toDate; + +/// 裁剪Data +/// @param from 开始 +/// @param to 长度 +-(NSData *)subf:(NSInteger)from t:(NSInteger)to; + +-(uint16_t)crc:(uint16_t)baseCrc; + +@end + + +@interface NSMutableData(WithUnit) + +-(void)appendUint8:(uint8_t)k; + +-(void)appendUint16:(uint16_t)k; + +-(void)appendUint32:(uint32_t)k; +@end + + +@interface NSString(WithUnit) + +-(NSString *)formatLog; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NSObject+JLTools.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NSObject+JLTools.h new file mode 100644 index 000000000..68deb4ed1 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NSObject+JLTools.h @@ -0,0 +1,20 @@ +// +// NSObject+JLTools.h +// JL_BLEKit +// +// Created by EzioChan on 2023/8/17. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface NSObject (JLTools) + + +- (NSString *) logProperties; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NfcModel.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NfcModel.h new file mode 100644 index 000000000..eee6a69fc --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/NfcModel.h @@ -0,0 +1,69 @@ +// +// NfcModel.h +// JL_BLEKit +// +// Created by EzioChan on 2021/8/3. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + + +@interface NfcModel : NSObject + +/// NFC标签 +@property(nonatomic,assign)UInt16 idCard; + +/// 保留位 +@property(nonatomic,strong)NSData *reserver; + +/// 设备索引 +@property(nonatomic,strong)NSData *devHandler; + +/// 更新时间戳,用于排序 +@property(nonatomic,strong)NSDate *updateTime; + +/// nfc数据文件名,格式如下:XX.nfc,XX是0~9 +@property(nonatomic,strong)NSString *nfcFileName; + +/// 别名,最大字符长度为26, 不足部分补‘\0’ 编码格式:UTF-8(以后可以保留位决定) 例如:公司门禁卡,家里门禁等等 +@property(nonatomic,strong)NSString *nickName; + +/// 可变字段长度,包含crc + nfc_id +@property(nonatomic,assign)UInt16 variableLength; + +/// NFC 数据的CRC +@property(nonatomic,strong)NSData *crc; + +/// nfc数据的唯一值 +@property(nonatomic,strong)NSData *nfc_id; + + ++(NfcModel *)initMsgModel:(NSData *)data; + +/// 解析NFC头部数据 +/// @param basicData 裸数据 ++(NSArray *)initMSGModels:(NSData *)basicData; + +@end + +NS_ASSUME_NONNULL_END + + + + + +@interface NfcFileModel : NfcModel + +/// NFC 数据 +@property(nonatomic,strong)NSData * _Nonnull nfcData; +@property(nonatomic,assign,readonly)UInt32 length; ++(NfcFileModel *_Nonnull)initFileModel:(NSData *_Nonnull)data; + +@end + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/RTC_RingInfo.h b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/RTC_RingInfo.h new file mode 100644 index 000000000..f995c1a9e --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Headers/RTC_RingInfo.h @@ -0,0 +1,39 @@ +// +// RTC_RingInfo.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/10/15. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 闹铃信息 +@interface RTC_RingInfo : NSObject + +/// 铃声类型 +/// 0x00 设备默认 +/// 0x01 多媒体选取 +@property (assign,nonatomic) uint8_t type; + +/// 设备索引 +/// 当type = 0时,dev保留 +/// 当type = 1时,dev为选取的设备 +@property (assign,nonatomic) uint8_t dev; + +/// 闹铃文件簇号 +/// 当type = 0时,clust 为对应 JLModel_Ring 的 index +/// 当type = 1时,clust为选取的闹铃文件簇号 +@property (assign,nonatomic) uint32_t clust; + +/// 铃声名称长度 +@property (assign,nonatomic) uint8_t len; + +/// 铃声名称 +@property (strong,nonatomic) NSData *data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Info.plist new file mode 100644 index 000000000..5d4c381d3 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/JL_BLEKit b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/JL_BLEKit new file mode 100755 index 000000000..9e7d924c7 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/JL_BLEKit differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Modules/module.modulemap new file mode 100644 index 000000000..ee22d27e6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_BLEKit { + umbrella header "JL_BLEKit.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..729777c87 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_BLEKit.xcframework/ios-arm64_x86_64-simulator/JL_BLEKit.framework/_CodeSignature/CodeResources @@ -0,0 +1,2202 @@ + + + + + files + + Headers/ECBDTManager.h + + /K1fGzPuVURBNDEkYVRubgV3IOE= + + Headers/ECBDTObjc.h + + PLzO7DWyRyICPwEHPNf+MJ7XHBI= + + Headers/ECOneToMorePtl.h + + jdYvasKZkc3HBxsZKt3Gh336J8I= + + Headers/ECThreadHelper.h + + kS2jpYaJSrE4PLOItONs24hnhaI= + + Headers/JL4GUpgradeManager.h + + 8nEg6KuaGKY/nU5LG5st3WNp7wo= + + Headers/JLAIDialManager.h + + doT0jl94QXsR5Oj3+3xuYBj7XAY= + + Headers/JLAiManager.h + + 7i5AqDNBgxp21oOJg6dP0Oa5rzo= + + Headers/JLAuracastDevStateModel.h + + SLMa70GzYRgN/9cov657yI4i50M= + + Headers/JLAuracastLancerManager.h + + hU0z7Jgz01nroGmTfj+iEWg113s= + + Headers/JLAuracastLancerSettingMode.h + + Oq/Gnx/o9pbWIjwwUzS1jEPaeLs= + + Headers/JLAuracastManager.h + + 8e6dZRcWFZ15Ig94A7WkDKnY6QE= + + Headers/JLAutoConfigAnc.h + + bzNmru2o+dvhnNRh/6iSWk2RzoU= + + Headers/JLAutoPressureModel.h + + Zi7C6uYi1W4SzDCcXLaf36whP3M= + + Headers/JLBroadcastDataModel.h + + HG1TAdf4gsYhNlmcQKNpKVyO308= + + Headers/JLCmdBasic.h + + u/3MF/n2x3jZOLeb6LfQTODUMuk= + + Headers/JLConsequentHeartRateModel.h + + zDNyJtT4IsaaIDEFLgrZuarEA50= + + Headers/JLDevAudioAIttsHandler.h + + G7pQ5MrpdKqnSMU6sIV5+Up5Uhg= + + Headers/JLDevAudioManager.h + + 57TE8bTSFYj5BViYfFOHinpgtus= + + Headers/JLDevPlayerCtrl.h + + Y0lxOpFVxI9K8HSgcB4qgG7wo+A= + + Headers/JLDeviceConfig.h + + 72l+C9Lov4yVCO1YeFoBsJtkH1Y= + + Headers/JLDeviceConfigDongle.h + + MdkPOH8uBFR627IOyWz08hQ5dRw= + + Headers/JLDeviceConfigFuncModel.h + + 0zauZVFjfVWbvYuiEY3rPznmg0Y= + + Headers/JLDeviceConfigSoundBox.h + + dIcm86szFWtHdxDqhZWZQAGXdvg= + + Headers/JLDeviceConfigTws.h + + ypa+GNoYcjD3xYh/A/vsL8vEoVc= + + Headers/JLDhaFitting.h + + N0LW3A6XoLmONIFcEk/M0kIEL70= + + Headers/JLDialInfoExtentManager.h + + 8BOSFHw+AW/j2DuhwXyVKUBL54s= + + Headers/JLDialInfoExtentedModel.h + + SqF+gwV8xas+qeqllpe46CC0G0k= + + Headers/JLDisconnectRemindModel.h + + gJdYeRaPB5xgbo5qZimkvHDRJgo= + + Headers/JLEcTimerHelper.h + + TcLs2ys3PCLPeAxfmbrwGOq/fd4= + + Headers/JLEmergencyContactModel.h + + Cqu3yqWTTtcfPop5l4AQQY7fSmk= + + Headers/JLExerciseHeartRateRemindModel.h + + 69qKI39OqTHCkwDNFZUyBv507qk= + + Headers/JLFallDetectionModel.h + + AhNiPEWSjbmL4UzfcEPRJsLHIlA= + + Headers/JLFlashOpMgr.h + + dgXE3RsDYY5sH8ixKLn9y2dZ/jI= + + Headers/JLHttpHelper.h + + jjC8gsI1TXut5f4lkIPDqw3qzJw= + + Headers/JLModelCardInfo.h + + 6+vDn6HM1UUNx1OsvLE9cFXdf7I= + + Headers/JLModelDevFunc.h + + Nc0COyjuycHz2mMpWD0+oERainE= + + Headers/JLModelNoiseDetection.h + + YYHB0VoKToHS2kHiUSpOgxNWuQk= + + Headers/JLModelPCServer.h + + Fax9Paiky8kcVRqnh6t2HBB+wP8= + + Headers/JLModelSceneNoiseReduction.h + + pAPi7IqB+jDZAuTE54KlAoOZzIM= + + Headers/JLModelSmartPickFree.h + + 8oBHUqGTP/WAdtsuTFPdd9yykmo= + + Headers/JLModelSpdif.h + + O4GVFCaiEyYlUYIeI1XtgzCsz+U= + + Headers/JLModelVocalBoost.h + + It2EYFwMdW7dOvbFAjjAw48QoNY= + + Headers/JLModel_ANC.h + + LLdGRTZFENdwbONYs9fUb0IrvbU= + + Headers/JLModel_AlarmSetting.h + + vBLw0ClfK26fIou6fgMhjf+03f4= + + Headers/JLModel_BT.h + + tyLNvtZ+s98h37qGTk3YE5yHy0c= + + Headers/JLModel_Device.h + + fVXu6DR6WX1j56LdPYGPLCFDdKo= + + Headers/JLModel_EQ.h + + YNrVDiv5jIKKI69MFapRNX0J+vs= + + Headers/JLModel_FM.h + + zvphPHSPoyAvW1P28pN6+fhte+0= + + Headers/JLModel_File.h + + 5m4sJ45ySIdu0iCNNIyoas8FIes= + + Headers/JLModel_Flash.h + + hs4fTAyq4VrP5E75/Eu5V6emlGE= + + Headers/JLModel_Headset.h + + V+FSzltianAC6K4Pr04KhCZzq48= + + Headers/JLModel_RTC.h + + VBz/S6zkxJsnHc1Y6FY5Z4N4HyY= + + Headers/JLModel_Ring.h + + WtmNtcTFe5OWPNwoHPF0MoeXeHk= + + Headers/JLModel_SPEEX.h + + WRsFCCEdcNz0dy7S1QWxnzuGFR8= + + Headers/JLModel_SmallFile.h + + RBJXmE82+tfllfTlLykjkDYIUzA= + + Headers/JLOxygenSturationRemindModel.h + + G0eBxtfxmd5doXMJEZkCooDUeSs= + + Headers/JLPersonInfoModel.h + + 5rS7/fBZGnArkVzBAb3cBfeg6yc= + + Headers/JLPublicSetting.h + + JmQFw0ilSmX82iGoVqghdmnWy5Q= + + Headers/JLPublicSettingBlocks.h + + 78FyGkoIoVyZ5ai+huILmhf5Qmk= + + Headers/JLSedentaryRmdModel.h + + XphnJB0ZRj8VL0WGok/R+C/OPNM= + + Headers/JLSensorFuncModel.h + + IWZVZ8dVK3Jvjc0WSUOIDhmwp/w= + + Headers/JLSleepMonitorModel.h + + yQ0S85l0i7Lj95Au1I0U7WRH7DQ= + + Headers/JLSpdifPCManager.h + + TQb1kSpR7862x6ClRVqAAB4yOMc= + + Headers/JLSportDataModel.h + + cGAuYe44LwYH2ZMBDPIdeoDJXEA= + + Headers/JLTaskChain.h + + zh9qvivU3urYqC6MEpSsNNgHTr4= + + Headers/JLTipsSoundReplaceMgr.h + + zcaXeAHg8YTihN4YTIHfClVSTLM= + + Headers/JLTranslateAudio.h + + I7vFedEHCdNQtZdLts7Dycpnl0c= + + Headers/JLTranslateSet.h + + kB3osNXpyR8T2l7W1NnW2bMiPTo= + + Headers/JLTranslateSetMode.h + + dhgkOfIUzBcL0zNT3ELUTjMqteg= + + Headers/JLTranslationManager.h + + i0LBB10pWl25ON2sZ+pgD8N6hPM= + + Headers/JLTwsHealthConfig.h + + GwMoM7TIZI/s4T3IYbnL1tmkDo4= + + Headers/JLTwsHealthHeartRateModel.h + + x0k0ll58aEAvpai26maj3eMFAH8= + + Headers/JLTwsHealthManager.h + + Gz0UnupkyDR+14HD/oMXTa6G/x0= + + Headers/JLTwsSupportFuncs.h + + 1z25Nh/MBQgMUPf1j90gu/CjdvU= + + Headers/JLWatchEnum.h + + eMr2/gkNQ3EdPrG0RobV+bUH/OU= + + Headers/JLWearSync.h + + 5BoNwEEMETcnNHVOzxUzMCsnpQs= + + Headers/JLWearSyncCustom.h + + sNSqTlnwmDx3DHZqyxL270VIDDA= + + Headers/JLWearSyncFinishModel.h + + cX2hlPp35ukFz5qReBHysUeiraQ= + + Headers/JLWearSyncInfoModel.h + + Y1p8HqaxiUMEqzbWEg2GlIfwgaM= + + Headers/JLWearSyncRealTimeModel.h + + pzoiNMZQdrax/iqHYU4Fo7Pb4w4= + + Headers/JLWearable.h + + Fslgb9Y4Nu8rS4/L9fSrLn2jCbw= + + Headers/JLWristLiftDetectionModel.h + + VzlO6M8h6tGhz5WXRo7s2l3zzDw= + + Headers/JL_AlarmClockManager.h + + NGxszc5x6jmeEiUxtrDg3+HwI6Y= + + Headers/JL_Assist.h + + JmuMMHFAyKbie1xtZpOhO3PEoxk= + + Headers/JL_BLEAction.h + + +hqZikenxU0BtDRjRRYsPuPL4uA= + + Headers/JL_BLEKit.h + + 9fqfj5BrRc+lW5T5pvtbhjPbv50= + + Headers/JL_BLEMultiple.h + + SECbwMRJWb0nnvQ+sLNT6+7dUzo= + + Headers/JL_BatchManger.h + + g/UfKLnDn85sdUiUlpp3FRKcVLU= + + Headers/JL_BigDataManager.h + + 0H4OxUB9s3829r2dyeTaPS1pl/Q= + + Headers/JL_BinChargeManager.h + + FkL15pXgiE/VE6XplZ3gup+MXFE= + + Headers/JL_CallManager.h + + Y9krvMGNbcMiULhJ8lLYcvpD3qM= + + Headers/JL_CustomManager.h + + haCZrZKtA7aTCgAb0qmMqhvyyxo= + + Headers/JL_DeviceLogs.h + + 5wEQXWXiCGR5FukwKM/KeGEXlJY= + + Headers/JL_EntityM.h + + UoaqQQBLfrwfy6hfZL0ef1dbmnQ= + + Headers/JL_FileManager.h + + 8PrvExpwQePfiXzGjePc5IqUPSs= + + Headers/JL_FindDeviceManager.h + + qxOjwYhKuuEnfm322oe7plaJ4l4= + + Headers/JL_FlashOperateManager.h + + x3BIj8qkUf8JwXtoepylG+EPKzk= + + Headers/JL_FmManager.h + + W0p7UquCvJQIinZWE5n4PvHRKhc= + + Headers/JL_FunctionBaseManager.h + + baIeH2YfB7IK19nSMwpQSKZcFio= + + Headers/JL_Handle.h + + zFSVTkZ+4yr5z63H67+UNTqvwMo= + + Headers/JL_LRCManager.h + + RsTyjW9+uOT+OM15OqSvqVtIz1o= + + Headers/JL_LightManager.h + + nLhad5wf0X5KhF8jwJGmk67xJz8= + + Headers/JL_MSG_Func.h + + ZDanAXjZnIVx9bl4t/ybkPUtUuE= + + Headers/JL_MSG_Weather.h + + U/13swPtdTgYt8x/VmKsWFEPdiE= + + Headers/JL_ManagerM.h + + CCCYqknn4+UMFuzdCljyqq8ZDoI= + + Headers/JL_MusicControlManager.h + + iSATrK5dSthYmsJg5J2nlY8slKE= + + Headers/JL_NFC.h + + JS5Uh61khe7PRMUYUhOBXtHYzbM= + + Headers/JL_OpCode.h + + 0FgqORHvycdKp93cl4la0voPY50= + + Headers/JL_RCSP.h + + YjyjnC3n9s3uFsep6u9MxZlmnic= + + Headers/JL_SDM_AirPressure.h + + AwfP1CuXtweh7EQz0HlW/lz2oZ4= + + Headers/JL_SDM_Altitude.h + + Owc+Nl/fitRERR7nJE6uc5qd+hs= + + Headers/JL_SDM_Header.h + + U/0eLMt22CEwFBszCFcEUzTp8DQ= + + Headers/JL_SDM_HeartRate.h + + H/bqbk02QFbcIpKW5PYWhuMgvss= + + Headers/JL_SDM_MaxOxg.h + + TIglezXCUNzKVtOpKEBXIvMRQvU= + + Headers/JL_SDM_MoveSteps.h + + mLWe93aq9tmomm3iK5Zm9VD3P8E= + + Headers/JL_SDM_OxSaturation.h + + 7cYKmgvn1Ui3R9NtaVPHb8bkQaw= + + Headers/JL_SDM_RecTime.h + + kuwtX2H7QkbDx6DydCjAlwh931A= + + Headers/JL_SDM_SportMessage.h + + IoxfEgehBG3USIIphI4Yx0N09MM= + + Headers/JL_SDM_Stress.h + + 67OcCO4EzxFuCqhI0zO8tTGpjRA= + + Headers/JL_SDM_TrainLoad.h + + bNW/qyqHaI6UR/IUZ5HwlVcYMqk= + + Headers/JL_SmallFileManager.h + + KPAzLX4K/vzroFuHVFvf2BJs6Fg= + + Headers/JL_SoundCardManager.h + + lcD5hFPFvd7rx6OJYlG7c8vmG6o= + + Headers/JL_SpeechAIttsHandler.h + + /1JVZ7+TKa3eaVQ8Atn8AtNO63M= + + Headers/JL_SpeexManager.h + + y4YdUUnbeQpH4u+Woye3yaYsQNM= + + Headers/JL_SystemEQ.h + + /7uh88rbOld2qDwKfN1fsCMmc+g= + + Headers/JL_SystemTime.h + + psSlGdWLxpRL9VRcyTVKJDjW+ek= + + Headers/JL_SystemVolume.h + + 3QMUuvqZ1TPUMHZr26rqQVdf4hI= + + Headers/JL_Tools.h + + VKwguP48VGX961vA/uqC26vyuGE= + + Headers/JL_TwsManager.h + + oj2UkJe8eSmFh+W8mERD9j5mXP0= + + Headers/JL_TypeEnum.h + + 7KiFpJt/7mcYoGjpK3+1sjQAor4= + + Headers/JL_WatchProtocol.h + + +ZxUVZD+pxrman+io+WwJiI7geE= + + Headers/JL_WatchSyncProtocol.h + + hSHKnLfFbr79HRSw02o2hrnE87s= + + Headers/JL_vad.h + + bmh/o2T+sVZ/M8mqSYZeAPL4hpc= + + Headers/JLeSimManager.h + + oZyAgO8UIoqjm+2kAvrzAzFzS3U= + + Headers/JLwSettingModel.h + + x8fkySafqtBLHOqtwZvMFENfZ58= + + Headers/NSData+ToUnit.h + + McQUGE4naXVF5ql2tooqiTd+7Yc= + + Headers/NSObject+JLTools.h + + t/QDlFLrTuBrGlDlBh0bE3R0JmE= + + Headers/NfcModel.h + + WXYs4dshALOjJ1F1tCDKotxcs/M= + + Headers/RTC_RingInfo.h + + xZOJbHsy3RLLeM5Jh6waRMrAo44= + + Info.plist + + yC2tvxHK9zeu0iv6XzfwGbzHI0w= + + Modules/module.modulemap + + ksULlN/jw1ds9CMKoL2JmSfl9y8= + + + files2 + + Headers/ECBDTManager.h + + hash + + /K1fGzPuVURBNDEkYVRubgV3IOE= + + hash2 + + zdaQc1xYqiI4q3HQxp0bcNTqn9Tq5kvZz3FmGLLlTx4= + + + Headers/ECBDTObjc.h + + hash + + PLzO7DWyRyICPwEHPNf+MJ7XHBI= + + hash2 + + Bx3fWo4d+4BW2pc1vJunwBXoLb2Q3LqBGELl1/5PXYc= + + + Headers/ECOneToMorePtl.h + + hash + + jdYvasKZkc3HBxsZKt3Gh336J8I= + + hash2 + + q8ZRn4PfOrljpKJuB1NCWics1ZDVJ1TCBY7PhtqpArk= + + + Headers/ECThreadHelper.h + + hash + + kS2jpYaJSrE4PLOItONs24hnhaI= + + hash2 + + r19TdGRAkYYGAd5TFriGhq2Ma7cZmTwm1GhHZox2uYM= + + + Headers/JL4GUpgradeManager.h + + hash + + 8nEg6KuaGKY/nU5LG5st3WNp7wo= + + hash2 + + My0oawaBmVWjcY9u22W/xUIA2IIfP8R6P2o7IJVUGQ8= + + + Headers/JLAIDialManager.h + + hash + + doT0jl94QXsR5Oj3+3xuYBj7XAY= + + hash2 + + mzb3df/lj/3DU7okas1K2gkRHbxTW8py8M9USF0SElQ= + + + Headers/JLAiManager.h + + hash + + 7i5AqDNBgxp21oOJg6dP0Oa5rzo= + + hash2 + + +K7/U5toSGsb+zmmjpk8Fh7aQx9DLG8Hlcb1ssUPH14= + + + Headers/JLAuracastDevStateModel.h + + hash + + SLMa70GzYRgN/9cov657yI4i50M= + + hash2 + + k/NZaCoP2QCf1lbhtvUJGGE1n+zqY+f9rrNyHDCJxRs= + + + Headers/JLAuracastLancerManager.h + + hash + + hU0z7Jgz01nroGmTfj+iEWg113s= + + hash2 + + 9AM0DrEVWK2jd2DI19TCwP5o/4xS4HuNsexniRjEH1g= + + + Headers/JLAuracastLancerSettingMode.h + + hash + + Oq/Gnx/o9pbWIjwwUzS1jEPaeLs= + + hash2 + + N/BiCgAgcNfV3M1yhP2/Xw+axe34Vj/86xkKnxvGQwo= + + + Headers/JLAuracastManager.h + + hash + + 8e6dZRcWFZ15Ig94A7WkDKnY6QE= + + hash2 + + UC+RmGt4voFKkiPuayREp97HPt99UVDGrve/SYraQHA= + + + Headers/JLAutoConfigAnc.h + + hash + + bzNmru2o+dvhnNRh/6iSWk2RzoU= + + hash2 + + cWp5JbwhvpAZXUZGpXyPbms2R1ln13j0yjtr+RCgl4c= + + + Headers/JLAutoPressureModel.h + + hash + + Zi7C6uYi1W4SzDCcXLaf36whP3M= + + hash2 + + 8J9ntv9stBSLpb0ueNhHFCDJwi0f0TayXYkUlY0nJws= + + + Headers/JLBroadcastDataModel.h + + hash + + HG1TAdf4gsYhNlmcQKNpKVyO308= + + hash2 + + ZTLXnj1UzFsvOjMcj9T/X38XpQyrqnuHgQCJPWYGQW0= + + + Headers/JLCmdBasic.h + + hash + + u/3MF/n2x3jZOLeb6LfQTODUMuk= + + hash2 + + oLlBIDN+kWVBbQ6uE/jKFO9gbOJeGUHNfO4kYJUXoHg= + + + Headers/JLConsequentHeartRateModel.h + + hash + + zDNyJtT4IsaaIDEFLgrZuarEA50= + + hash2 + + /PmGLXWJoB7JLEBuCZVfy30xLNtuEbnFWZKNyEWdVWg= + + + Headers/JLDevAudioAIttsHandler.h + + hash + + G7pQ5MrpdKqnSMU6sIV5+Up5Uhg= + + hash2 + + Fh3Mr3abKiPNFd0QPs0PaQg+L9abllhAU88vjF7vhyc= + + + Headers/JLDevAudioManager.h + + hash + + 57TE8bTSFYj5BViYfFOHinpgtus= + + hash2 + + VXFqCzgGjpqVp240BnoXFkoJO2Sk95TXMs7iiDcOJMs= + + + Headers/JLDevPlayerCtrl.h + + hash + + Y0lxOpFVxI9K8HSgcB4qgG7wo+A= + + hash2 + + eip5+4CuPSMykjFguWYrvNVmnVhgPKAP+MqZ+JJjsUU= + + + Headers/JLDeviceConfig.h + + hash + + 72l+C9Lov4yVCO1YeFoBsJtkH1Y= + + hash2 + + xKUGR0TxWQhSAUqFw06Blb/p8XrFa+5Bg4lW5G/+MBs= + + + Headers/JLDeviceConfigDongle.h + + hash + + MdkPOH8uBFR627IOyWz08hQ5dRw= + + hash2 + + IdIAQgL4/PtfGzkLeHYcT8+7ymC5/7/2YFT76tj46j4= + + + Headers/JLDeviceConfigFuncModel.h + + hash + + 0zauZVFjfVWbvYuiEY3rPznmg0Y= + + hash2 + + mokBD6jy3SsolrLOvcR/oqGmG4fXd7UdeznWyk7/LzE= + + + Headers/JLDeviceConfigSoundBox.h + + hash + + dIcm86szFWtHdxDqhZWZQAGXdvg= + + hash2 + + MZspm4TK+abVKInKpcfBkIB/jZ3dbT33TVzsL0YGsMk= + + + Headers/JLDeviceConfigTws.h + + hash + + ypa+GNoYcjD3xYh/A/vsL8vEoVc= + + hash2 + + 1NDH+W7o21M7cjWMbIC6zkqbjBjuJZB44qzigNi4sRM= + + + Headers/JLDhaFitting.h + + hash + + N0LW3A6XoLmONIFcEk/M0kIEL70= + + hash2 + + +zXJpgAs/CuzaUv99XfUaYDW/9gLJ5Jm2izQTB8g1o4= + + + Headers/JLDialInfoExtentManager.h + + hash + + 8BOSFHw+AW/j2DuhwXyVKUBL54s= + + hash2 + + G2yDd7rL6Agb9jLcyuHNunPhRj8GTAe+w7e0DjLK6Xs= + + + Headers/JLDialInfoExtentedModel.h + + hash + + SqF+gwV8xas+qeqllpe46CC0G0k= + + hash2 + + tXTQgWqZ6OBex+aPNIsDWzI2fMA80L9JXEwmv8JeEao= + + + Headers/JLDisconnectRemindModel.h + + hash + + gJdYeRaPB5xgbo5qZimkvHDRJgo= + + hash2 + + BpNeELwL2CtrSKxPVudUMmpAYkA4+NDBPWESibNow8I= + + + Headers/JLEcTimerHelper.h + + hash + + TcLs2ys3PCLPeAxfmbrwGOq/fd4= + + hash2 + + SBE6DjOp9tBHnBahHv4ko1rKOvqSORWc4Toxz/qKSLg= + + + Headers/JLEmergencyContactModel.h + + hash + + Cqu3yqWTTtcfPop5l4AQQY7fSmk= + + hash2 + + KTp5zEBqgzlwd07404okKcNbkzO2Tm9W0PiAkcdS3XA= + + + Headers/JLExerciseHeartRateRemindModel.h + + hash + + 69qKI39OqTHCkwDNFZUyBv507qk= + + hash2 + + /bR5JpJl/aH6hBOyuyVokTKaec7T7UoGhWMnhF5NbUA= + + + Headers/JLFallDetectionModel.h + + hash + + AhNiPEWSjbmL4UzfcEPRJsLHIlA= + + hash2 + + BEEYzZkHfUlHFL1wzfMXY+LczYIZGpOAYI+EwiAyQUY= + + + Headers/JLFlashOpMgr.h + + hash + + dgXE3RsDYY5sH8ixKLn9y2dZ/jI= + + hash2 + + fA4VnP05t4oiVSfpfvcXw7O3MDsQgmIpG9xD4zYNq2k= + + + Headers/JLHttpHelper.h + + hash + + jjC8gsI1TXut5f4lkIPDqw3qzJw= + + hash2 + + Mbwmwm2HRJRvk5vPsVpDEdQGvCzUtEhCfUW2Hg6VM0w= + + + Headers/JLModelCardInfo.h + + hash + + 6+vDn6HM1UUNx1OsvLE9cFXdf7I= + + hash2 + + FXdMPPKpwcn+pPUAvARZU99GP5OhPWTy+3giSSc0xT0= + + + Headers/JLModelDevFunc.h + + hash + + Nc0COyjuycHz2mMpWD0+oERainE= + + hash2 + + 62dR1nCKnNRFhHjX3oPmp90wGc9g+axCypXWYrpCOGE= + + + Headers/JLModelNoiseDetection.h + + hash + + YYHB0VoKToHS2kHiUSpOgxNWuQk= + + hash2 + + u0pLOy+T/9zv2G7JCnraLRbgyKbvvmvFJyHJJPbiSV8= + + + Headers/JLModelPCServer.h + + hash + + Fax9Paiky8kcVRqnh6t2HBB+wP8= + + hash2 + + +EZ6c45o6P6vR0+XT5yCWPiwRzXJm5we7HpK9DlGUU8= + + + Headers/JLModelSceneNoiseReduction.h + + hash + + pAPi7IqB+jDZAuTE54KlAoOZzIM= + + hash2 + + gl0NnEqcauxpIifHskgb1+vjqt4lN67RVuPy5JiuDtU= + + + Headers/JLModelSmartPickFree.h + + hash + + 8oBHUqGTP/WAdtsuTFPdd9yykmo= + + hash2 + + H0yXYY+wO6VmQaEuuwKuTPsjYkBaDuHAH1JLNWrndQU= + + + Headers/JLModelSpdif.h + + hash + + O4GVFCaiEyYlUYIeI1XtgzCsz+U= + + hash2 + + tRydigdTJRPM0TcFHGICii7Xsvdvy4fWhDmRIkR//TY= + + + Headers/JLModelVocalBoost.h + + hash + + It2EYFwMdW7dOvbFAjjAw48QoNY= + + hash2 + + f1oWY6EuwCOGlEvMBz5VgMnFH0B6Cgq4hzTyu1PB9Mo= + + + Headers/JLModel_ANC.h + + hash + + LLdGRTZFENdwbONYs9fUb0IrvbU= + + hash2 + + WZshfGQjICk3I4rS2eIZmP+fvFEZZuTtycJTIaABj5o= + + + Headers/JLModel_AlarmSetting.h + + hash + + vBLw0ClfK26fIou6fgMhjf+03f4= + + hash2 + + koAxWEK72VXOGj8DmCdsYCSdwC4sp/pTaBPmhsDGaIc= + + + Headers/JLModel_BT.h + + hash + + tyLNvtZ+s98h37qGTk3YE5yHy0c= + + hash2 + + h+nhPvDwlqLbWfaOuoNgsFy4fMWq359qA4O0ut6mAfo= + + + Headers/JLModel_Device.h + + hash + + fVXu6DR6WX1j56LdPYGPLCFDdKo= + + hash2 + + /B5ryI5onPpveJ062SVVWcUAeD3uEy2tKg3Jlq5EciA= + + + Headers/JLModel_EQ.h + + hash + + YNrVDiv5jIKKI69MFapRNX0J+vs= + + hash2 + + Mh8r8kI5ctPyvPXX3QKT7ppcZjnUEgO0SXs7NNCJaLw= + + + Headers/JLModel_FM.h + + hash + + zvphPHSPoyAvW1P28pN6+fhte+0= + + hash2 + + h47HCrZbxMK2Xut1WcAXZmGfUavSLZoWoCwuVmLSlE8= + + + Headers/JLModel_File.h + + hash + + 5m4sJ45ySIdu0iCNNIyoas8FIes= + + hash2 + + synLaplr03oHVcDvP1yG+ZOxhGf+/5qpDhjotwg2cuk= + + + Headers/JLModel_Flash.h + + hash + + hs4fTAyq4VrP5E75/Eu5V6emlGE= + + hash2 + + Y9Mz84tuYov1JaAbL/HB6k4QEF8N55hbbevEFTnXSjc= + + + Headers/JLModel_Headset.h + + hash + + V+FSzltianAC6K4Pr04KhCZzq48= + + hash2 + + kg8UDREkW9Bfu0TcEQ7qNxGPM/HYXDV7EGQzI5hs39o= + + + Headers/JLModel_RTC.h + + hash + + VBz/S6zkxJsnHc1Y6FY5Z4N4HyY= + + hash2 + + g5FpiHv2JMW25sUIl+Lu9FHp4TALKMeEAmF0kuSwRmY= + + + Headers/JLModel_Ring.h + + hash + + WtmNtcTFe5OWPNwoHPF0MoeXeHk= + + hash2 + + 2q7empYDFyUs4uKonc84cN9h/Z+Y6aBYstv5qZURoD0= + + + Headers/JLModel_SPEEX.h + + hash + + WRsFCCEdcNz0dy7S1QWxnzuGFR8= + + hash2 + + VFvVDHv6nblf5KfD8mlr6PnRk6i4xCo8E/qiZlMJj+4= + + + Headers/JLModel_SmallFile.h + + hash + + RBJXmE82+tfllfTlLykjkDYIUzA= + + hash2 + + xT/Zjm1Hg79bvQaNAeub3PXfkvfOLnWdE7oUD6H9Law= + + + Headers/JLOxygenSturationRemindModel.h + + hash + + G0eBxtfxmd5doXMJEZkCooDUeSs= + + hash2 + + e8R4Fy+iEQhSjRA9kvg8u+QFIG8JYlKSVAn2AX4VPZY= + + + Headers/JLPersonInfoModel.h + + hash + + 5rS7/fBZGnArkVzBAb3cBfeg6yc= + + hash2 + + PE78aK6zry0CtG7vmYKOu8Knf6SG/mihGP4pp+HtA0Y= + + + Headers/JLPublicSetting.h + + hash + + JmQFw0ilSmX82iGoVqghdmnWy5Q= + + hash2 + + dQVvMWT4lxEQXr8nNE650kfOTUel+hAzi878Ei6vFaE= + + + Headers/JLPublicSettingBlocks.h + + hash + + 78FyGkoIoVyZ5ai+huILmhf5Qmk= + + hash2 + + 3F2CNf6Yz9J7HpBtvzkjLwi4p8PlLZKpmE8cciY8ySs= + + + Headers/JLSedentaryRmdModel.h + + hash + + XphnJB0ZRj8VL0WGok/R+C/OPNM= + + hash2 + + Rf3fCAxgf2gsYIpmzK+Rv/0J85cAKYx4ya5DXD6zAfg= + + + Headers/JLSensorFuncModel.h + + hash + + IWZVZ8dVK3Jvjc0WSUOIDhmwp/w= + + hash2 + + NJ+59JOH/aSK4nrhMOrKErN9guE+27R2Sv2Aa2mEU8g= + + + Headers/JLSleepMonitorModel.h + + hash + + yQ0S85l0i7Lj95Au1I0U7WRH7DQ= + + hash2 + + 2j7aUsdFo1IwQJbqUtPKMDOICbx286nOPY0h1ZPgq4Q= + + + Headers/JLSpdifPCManager.h + + hash + + TQb1kSpR7862x6ClRVqAAB4yOMc= + + hash2 + + Z7FP44msb4f/JsYrEI8vASB5R4dyKF4DCViDvTmgoM4= + + + Headers/JLSportDataModel.h + + hash + + cGAuYe44LwYH2ZMBDPIdeoDJXEA= + + hash2 + + 7ElCH9JqVqLmjB+GMFKYWMa9S3EHnysmartqaXDNtwg= + + + Headers/JLTaskChain.h + + hash + + zh9qvivU3urYqC6MEpSsNNgHTr4= + + hash2 + + sEj5DitzfGIwrDEVI54r0U5wyxZz2zKIhBafqYRxOc4= + + + Headers/JLTipsSoundReplaceMgr.h + + hash + + zcaXeAHg8YTihN4YTIHfClVSTLM= + + hash2 + + 0I+uSD5jcj6mKTD083bDq7ymGhjlNsENpGHwnpSv0ag= + + + Headers/JLTranslateAudio.h + + hash + + I7vFedEHCdNQtZdLts7Dycpnl0c= + + hash2 + + cnNbIlKeyRU4q00Du9fug1FcqSx78VnZETyERCJdkr0= + + + Headers/JLTranslateSet.h + + hash + + kB3osNXpyR8T2l7W1NnW2bMiPTo= + + hash2 + + ftnluh9XjNGfVZN066J7BmocXUlbhofIct6pCDUUl2U= + + + Headers/JLTranslateSetMode.h + + hash + + dhgkOfIUzBcL0zNT3ELUTjMqteg= + + hash2 + + PxWaOt3VO+zofrCgKKp/x4Fqh2drlUPu03g+bU9/pbI= + + + Headers/JLTranslationManager.h + + hash + + i0LBB10pWl25ON2sZ+pgD8N6hPM= + + hash2 + + sOidTEwfzg7Xm/2Z8QLu5O+Q4ISCEAX/dxb1DCVFcIU= + + + Headers/JLTwsHealthConfig.h + + hash + + GwMoM7TIZI/s4T3IYbnL1tmkDo4= + + hash2 + + lbVytLXQqiBVLjACgcNU1xbS1++P6YpXGtsEBMd/c4s= + + + Headers/JLTwsHealthHeartRateModel.h + + hash + + x0k0ll58aEAvpai26maj3eMFAH8= + + hash2 + + 8kprknEZ32W0EW6hWl9eulSy9CVtbFKR+JLyQD6pJgM= + + + Headers/JLTwsHealthManager.h + + hash + + Gz0UnupkyDR+14HD/oMXTa6G/x0= + + hash2 + + XmGLWo+IZkMHn8d48MkEWvQi5ZSDFPB7TUmpXjAyjkw= + + + Headers/JLTwsSupportFuncs.h + + hash + + 1z25Nh/MBQgMUPf1j90gu/CjdvU= + + hash2 + + rWGlCf/HqU8Rc5aafN7WyfIZeBTATX8heBL1jo91rh4= + + + Headers/JLWatchEnum.h + + hash + + eMr2/gkNQ3EdPrG0RobV+bUH/OU= + + hash2 + + xV6gKnB4zCamhqm1ZhJtsnj2jKnMaCNexubMKBRyF9w= + + + Headers/JLWearSync.h + + hash + + 5BoNwEEMETcnNHVOzxUzMCsnpQs= + + hash2 + + G8vTp/Svxk8Y/AW8ZWulCdAYv0bj6dSBFH4GV1l3LxY= + + + Headers/JLWearSyncCustom.h + + hash + + sNSqTlnwmDx3DHZqyxL270VIDDA= + + hash2 + + lSUejhDBA3qusUb4BxYjdpKi2QOCHqwaldHQDz7GZK0= + + + Headers/JLWearSyncFinishModel.h + + hash + + cX2hlPp35ukFz5qReBHysUeiraQ= + + hash2 + + tnWteLJPLEJ7I47VYxO0VHpcC3Rmsw/Bxgci1rEhjhI= + + + Headers/JLWearSyncInfoModel.h + + hash + + Y1p8HqaxiUMEqzbWEg2GlIfwgaM= + + hash2 + + S8zpGUS4YbZtDNNdqTICCaZDznXLFdXcZ+ZKTxdT83U= + + + Headers/JLWearSyncRealTimeModel.h + + hash + + pzoiNMZQdrax/iqHYU4Fo7Pb4w4= + + hash2 + + /I1fuKTigGRqzisx7coUJuyFKog3fb5qM5bYEPBAhso= + + + Headers/JLWearable.h + + hash + + Fslgb9Y4Nu8rS4/L9fSrLn2jCbw= + + hash2 + + 2JVGgqHtDFyRy/9Qte2mcBMOv0v8sNualMa1dPqnev8= + + + Headers/JLWristLiftDetectionModel.h + + hash + + VzlO6M8h6tGhz5WXRo7s2l3zzDw= + + hash2 + + WQpz55dOkBBHo+yynSIXqeJhxlHzzHY3QmIPGMl6XNY= + + + Headers/JL_AlarmClockManager.h + + hash + + NGxszc5x6jmeEiUxtrDg3+HwI6Y= + + hash2 + + XCidfSb9CWuRKiYhFxDwjKJciKdDh9nwNjNdIMYRZDo= + + + Headers/JL_Assist.h + + hash + + JmuMMHFAyKbie1xtZpOhO3PEoxk= + + hash2 + + J2dFYlibDG6vMXH366nZsKEAuJyWWFT5POxY7X9txWM= + + + Headers/JL_BLEAction.h + + hash + + +hqZikenxU0BtDRjRRYsPuPL4uA= + + hash2 + + Z1rprcGXgLahKuETba/XmrNEgz53KSDkgD4YbsGWUB4= + + + Headers/JL_BLEKit.h + + hash + + 9fqfj5BrRc+lW5T5pvtbhjPbv50= + + hash2 + + 5HCKo2q25H3OX0yRgNctaX2Q3ZPKaAoh1p7c0P2/z64= + + + Headers/JL_BLEMultiple.h + + hash + + SECbwMRJWb0nnvQ+sLNT6+7dUzo= + + hash2 + + qw1uN1+/BG5iuUalCb88gHxkeZBwhx0hw/0KvQAV8mM= + + + Headers/JL_BatchManger.h + + hash + + g/UfKLnDn85sdUiUlpp3FRKcVLU= + + hash2 + + BVy4mKrQHFQ+TImiQ/kMUWj1SoYRcIj0RwF2y6x+hR4= + + + Headers/JL_BigDataManager.h + + hash + + 0H4OxUB9s3829r2dyeTaPS1pl/Q= + + hash2 + + C06V9e5hCPXcd+vF7CHrsc2DlqRtWw/EQMmxAPmN6bA= + + + Headers/JL_BinChargeManager.h + + hash + + FkL15pXgiE/VE6XplZ3gup+MXFE= + + hash2 + + BwlLjYpRS/dafZ0tLDxSdDYM+koBQpcKOIQiTQWUqh8= + + + Headers/JL_CallManager.h + + hash + + Y9krvMGNbcMiULhJ8lLYcvpD3qM= + + hash2 + + Bp965bHAhKvTnyPFJRLZgW8mDTqMEVImfk6q0diH8xw= + + + Headers/JL_CustomManager.h + + hash + + haCZrZKtA7aTCgAb0qmMqhvyyxo= + + hash2 + + xJcZSXpyYnkMampSGcY5pp156xQXor7R+56KY0A7RwY= + + + Headers/JL_DeviceLogs.h + + hash + + 5wEQXWXiCGR5FukwKM/KeGEXlJY= + + hash2 + + a8kUhVH/CsuDtjO3GAH84Ruz5BY8Ixy9b4z2Ja7pqHg= + + + Headers/JL_EntityM.h + + hash + + UoaqQQBLfrwfy6hfZL0ef1dbmnQ= + + hash2 + + h+7alQwFzH8HZPXhABlmdwdqivrfxGMh8dl4PdmuCzw= + + + Headers/JL_FileManager.h + + hash + + 8PrvExpwQePfiXzGjePc5IqUPSs= + + hash2 + + GB6qIBce0gRLJ4POtesYM17BpwuvAkqzgdq0QbmjziE= + + + Headers/JL_FindDeviceManager.h + + hash + + qxOjwYhKuuEnfm322oe7plaJ4l4= + + hash2 + + Z4JSpje9l7PvQAI1I58oGF5sV8n0+2lRdQdcnpW84uY= + + + Headers/JL_FlashOperateManager.h + + hash + + x3BIj8qkUf8JwXtoepylG+EPKzk= + + hash2 + + 3xJk6FxTxrOSWdFQjua0R08Ff8cyuKq83EsxLFtB0OY= + + + Headers/JL_FmManager.h + + hash + + W0p7UquCvJQIinZWE5n4PvHRKhc= + + hash2 + + aurIzqq8ihpL5GeTeIISMv7Amo5aVlPLLjbOUT4Em6o= + + + Headers/JL_FunctionBaseManager.h + + hash + + baIeH2YfB7IK19nSMwpQSKZcFio= + + hash2 + + whq1ckDVm5YaHpfkje+hX/CP1Ncv34yUU3q2zbhujE4= + + + Headers/JL_Handle.h + + hash + + zFSVTkZ+4yr5z63H67+UNTqvwMo= + + hash2 + + 5UMvxnQBFNKmKoK1BhObPSUE8WZLL0mQ4A5M82+vIOE= + + + Headers/JL_LRCManager.h + + hash + + RsTyjW9+uOT+OM15OqSvqVtIz1o= + + hash2 + + b5eJch2086yG6gT39FHQdRkKb9yCCfYfqBmtk+SwRXs= + + + Headers/JL_LightManager.h + + hash + + nLhad5wf0X5KhF8jwJGmk67xJz8= + + hash2 + + LSbD5SkwqrTGQph50O/yVsBYbsY33ugjzMupU1cbR/o= + + + Headers/JL_MSG_Func.h + + hash + + ZDanAXjZnIVx9bl4t/ybkPUtUuE= + + hash2 + + EGaCo3aE+ni4oIzWSa3Y4dgv8BqQR1i/DdTN4Laeivk= + + + Headers/JL_MSG_Weather.h + + hash + + U/13swPtdTgYt8x/VmKsWFEPdiE= + + hash2 + + nusUgc6cQjsAciBaQQW0bOy+bOLEY24LpTuNVTUNGUo= + + + Headers/JL_ManagerM.h + + hash + + CCCYqknn4+UMFuzdCljyqq8ZDoI= + + hash2 + + ShggDNasxnLJdt0lVaj5weA1svKQ93rzuenaxliDqng= + + + Headers/JL_MusicControlManager.h + + hash + + iSATrK5dSthYmsJg5J2nlY8slKE= + + hash2 + + C6xtl2G9hat06vRy9a7rpz3j8K7uyVrKHuCiT7Zm2yw= + + + Headers/JL_NFC.h + + hash + + JS5Uh61khe7PRMUYUhOBXtHYzbM= + + hash2 + + sIxEX/BPxGs/1/zE8VgiF+Nf+SZ03bGtUkah3ldiquY= + + + Headers/JL_OpCode.h + + hash + + 0FgqORHvycdKp93cl4la0voPY50= + + hash2 + + KzYv4a2p4NC6diPGqSlpynrFWlTaBOR77dvMwl+zKL8= + + + Headers/JL_RCSP.h + + hash + + YjyjnC3n9s3uFsep6u9MxZlmnic= + + hash2 + + ubjhq5pzBlDEgjstlfwuGoSYV/dl3abKWv4eS9ju4y4= + + + Headers/JL_SDM_AirPressure.h + + hash + + AwfP1CuXtweh7EQz0HlW/lz2oZ4= + + hash2 + + SDfosgZLq5d7xxiCW0Z5BTyP7U3CZHDAObWMK/KeIR0= + + + Headers/JL_SDM_Altitude.h + + hash + + Owc+Nl/fitRERR7nJE6uc5qd+hs= + + hash2 + + WXlSTtTMC2/yrelPfE167zyNVAkyn8m/Gebp9jLTle0= + + + Headers/JL_SDM_Header.h + + hash + + U/0eLMt22CEwFBszCFcEUzTp8DQ= + + hash2 + + 3KFFyn+1NSWMgd5OoNuOMent310WaIJU4IDNm42k1Jc= + + + Headers/JL_SDM_HeartRate.h + + hash + + H/bqbk02QFbcIpKW5PYWhuMgvss= + + hash2 + + N7sakJKvt/AY7O/fpoh58csmYbyraQgiziCCHkvJYIU= + + + Headers/JL_SDM_MaxOxg.h + + hash + + TIglezXCUNzKVtOpKEBXIvMRQvU= + + hash2 + + dgZR14/o0DprbG/f9yqk/uNTUfEKpaLA877KeBC5tyc= + + + Headers/JL_SDM_MoveSteps.h + + hash + + mLWe93aq9tmomm3iK5Zm9VD3P8E= + + hash2 + + aAPrX4LY5jEbifgHGzZ7WjAivHajz69lNMtluexLhDA= + + + Headers/JL_SDM_OxSaturation.h + + hash + + 7cYKmgvn1Ui3R9NtaVPHb8bkQaw= + + hash2 + + OjTMxAr4jaFNjO13425u4poQd1fYe8Tg0TKNzwZK0Vc= + + + Headers/JL_SDM_RecTime.h + + hash + + kuwtX2H7QkbDx6DydCjAlwh931A= + + hash2 + + cLWfo8URGQerXIk/O/oK1CYfBdqyHQJnJ2KsqIS1NGg= + + + Headers/JL_SDM_SportMessage.h + + hash + + IoxfEgehBG3USIIphI4Yx0N09MM= + + hash2 + + KzvGsrc3IuBU3Q8VNyFeI7ohjtU/EXTRMootvcghYbI= + + + Headers/JL_SDM_Stress.h + + hash + + 67OcCO4EzxFuCqhI0zO8tTGpjRA= + + hash2 + + vWfOWfJEiVOyqhajvaTujRnH+XnLzwks6mh3ZjT9iXw= + + + Headers/JL_SDM_TrainLoad.h + + hash + + bNW/qyqHaI6UR/IUZ5HwlVcYMqk= + + hash2 + + nnPGLOqtWDz/DPLn7dVN79tDYFm7f52qcJe1MeDotMQ= + + + Headers/JL_SmallFileManager.h + + hash + + KPAzLX4K/vzroFuHVFvf2BJs6Fg= + + hash2 + + T7dgNGdyRj9bWAoSCGg5YewZb8CVCBmuSDc6wNgKXqs= + + + Headers/JL_SoundCardManager.h + + hash + + lcD5hFPFvd7rx6OJYlG7c8vmG6o= + + hash2 + + YAinCHWDhOcb/jGOUcUHjOaALdssIF99F8A3nYskfkw= + + + Headers/JL_SpeechAIttsHandler.h + + hash + + /1JVZ7+TKa3eaVQ8Atn8AtNO63M= + + hash2 + + mjceOlt/1EYraAzrzpg1skVBl6OYYxtJ2qQkwPTXIJI= + + + Headers/JL_SpeexManager.h + + hash + + y4YdUUnbeQpH4u+Woye3yaYsQNM= + + hash2 + + Xex7n9mos+U/wl5rnzyRCqo/gVn5Wal3mdeMhaTKZZE= + + + Headers/JL_SystemEQ.h + + hash + + /7uh88rbOld2qDwKfN1fsCMmc+g= + + hash2 + + 9sJya7O8ws4pP92e3ubrWmauOOv6S+JmF7o3oILphww= + + + Headers/JL_SystemTime.h + + hash + + psSlGdWLxpRL9VRcyTVKJDjW+ek= + + hash2 + + nlvlTX46ik7b2VBv23tMNGccW97ruFU9r8zjNzybIvk= + + + Headers/JL_SystemVolume.h + + hash + + 3QMUuvqZ1TPUMHZr26rqQVdf4hI= + + hash2 + + gy3XB9wLcbETplW+9ACExzwC4eeyQEb/oFNufvLPh5c= + + + Headers/JL_Tools.h + + hash + + VKwguP48VGX961vA/uqC26vyuGE= + + hash2 + + k7jwF0tZ2Vcfpa/zAer+scYCExtW77dEcnONdd/Qfqs= + + + Headers/JL_TwsManager.h + + hash + + oj2UkJe8eSmFh+W8mERD9j5mXP0= + + hash2 + + 3r8kAsxCHWyYNdzZW0dpKcrkI0g5/hPRPNXtCMsi2bc= + + + Headers/JL_TypeEnum.h + + hash + + 7KiFpJt/7mcYoGjpK3+1sjQAor4= + + hash2 + + np8Pwl2PZc+tdT9ugnlcslxgw9ngo1nXxw/9riKc9qQ= + + + Headers/JL_WatchProtocol.h + + hash + + +ZxUVZD+pxrman+io+WwJiI7geE= + + hash2 + + wKe/lEVXOomoDa1pffBgfc59MtAK37WzeSAAz9WTqck= + + + Headers/JL_WatchSyncProtocol.h + + hash + + hSHKnLfFbr79HRSw02o2hrnE87s= + + hash2 + + ckNSF3KndBZKOKZu4kljJZVh9RwjcEbz+cSwvTVg4Eg= + + + Headers/JL_vad.h + + hash + + bmh/o2T+sVZ/M8mqSYZeAPL4hpc= + + hash2 + + SSpFdCJvsyWAEsGxM0x66CmvgbESwyZZI6u9cResuYE= + + + Headers/JLeSimManager.h + + hash + + oZyAgO8UIoqjm+2kAvrzAzFzS3U= + + hash2 + + qG5SBG40Tf5Ii9lQxvzqtnybMcO/gYsKsTqIMy4XepE= + + + Headers/JLwSettingModel.h + + hash + + x8fkySafqtBLHOqtwZvMFENfZ58= + + hash2 + + SUukDWhP8r4k/4qV+jXJVl4WBDHoa3Sa9duZGMY/lGQ= + + + Headers/NSData+ToUnit.h + + hash + + McQUGE4naXVF5ql2tooqiTd+7Yc= + + hash2 + + tKg0idkIajB88qeOPShazqcNg3XOn0MbLX/1GC6JgrU= + + + Headers/NSObject+JLTools.h + + hash + + t/QDlFLrTuBrGlDlBh0bE3R0JmE= + + hash2 + + IpAVxi9qJ1Q3rxveSGr5hf73WZl+f6a7HFFqAqea+LU= + + + Headers/NfcModel.h + + hash + + WXYs4dshALOjJ1F1tCDKotxcs/M= + + hash2 + + tAMSsAd1QRvK8JLtR684Ug4AvjF/gJa2dhIZharHO1o= + + + Headers/RTC_RingInfo.h + + hash + + xZOJbHsy3RLLeM5Jh6waRMrAo44= + + hash2 + + 9rkHMvU6TK25JBAVknO2OPGrLrHCTAFXlNC5QRKSjNo= + + + Modules/module.modulemap + + hash + + ksULlN/jw1ds9CMKoL2JmSfl9y8= + + hash2 + + GmqS29lJ4xfkc+4xaB0gHt7wDmcUyPJ9ANAIq1ETqTw= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist new file mode 100644 index 000000000..dd9c214de --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JL_HashPair.framework/JL_HashPair + LibraryIdentifier + ios-arm64 + LibraryPath + JL_HashPair.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + JL_HashPair.framework/JL_HashPair + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JL_HashPair.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h new file mode 100644 index 000000000..af9b09ea9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/BtHash.h @@ -0,0 +1,25 @@ +// +// BtHash.h +// BtHash +// +// Created by EzioChan on 2022/6/29. +// + +#import + +@interface BtHash : NSObject +/* + @param [in] pt[*1] The plaintext + @param ptlen The length of the plaintext(octets) range: 1~32 + @param [in] key[*1] The key for encrypt + @param keylen[*1] The length of the key(octets) range: 1~32 + @param [out] mac[*1] output : The Message Authentication Code 16 bytes. + @return error if < 0, 0 is normal. + */ ++(int)decryptWithPlaintext:(unsigned char *)pt + andPlaintextLen:(int)ptlen + andKey: (unsigned char *)key + andKeyLen: (int)keylen + andMac:(unsigned char *)mac; + +@end diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h new file mode 100644 index 000000000..c42b34a55 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JLHashHandler.h @@ -0,0 +1,59 @@ +// +// JLHashHandler.h +// JL_BLEKit +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^JLHashBlock)(BOOL ret); + +@protocol JLHashHandlerDelegate + +/// 需要发送到设备校验认证的数据 +/// - Parameter data: 数据 +-(void)hashOnPairOutputData:(NSData*)data; + +@end + + +/// 设备认证 +@interface JLHashHandler : NSObject + +@property(nonatomic,weak)id delegate; + + +/// APP端发起设备认证 +/// - Parameters: +/// - pKey: 加密Key(默认为空) +/// - bk: 配对认证回调结果 +-(void)bluetoothPairingKey:(NSData *__nullable)pKey Result:(JLHashBlock)bk; + + +/// 重置设备认证过程 +-(void)hashResetPair; + + +/// 填入设备回复数据 +/// - Parameter rData: 数据 +-(void)inputPairData:(NSData*)rData; + + +/// 停止设备认证过程 +/// stop device pairing +-(void)stopAuthPair; + + +/// 打印当前SDK的版本 ++(void)sdkVersion; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h new file mode 100644 index 000000000..95d62c48d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_HashPair.h @@ -0,0 +1,21 @@ +// +// JL_HashPair.h +// JL_HashPair +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_HashPair. +FOUNDATION_EXPORT double JL_HashPairVersionNumber; + +//! Project version string for JL_HashPair. +FOUNDATION_EXPORT const unsigned char JL_HashPairVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h new file mode 100644 index 000000000..bce37ee6c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Headers/JL_ble_pair.h @@ -0,0 +1,20 @@ +// +// JL_ble_pair.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_ble_pair_h +#define JL_ble_pair_h + +#include +#include + +void function_jieli(uint8_t *address,uint8_t *RAND,uint8_t *K,uint8_t *result); + +#pragma mark CRC校验 +unsigned short JL_CRC16(unsigned char *ptr, int len, uint16_t lastCrc); + +#endif /* JL_ble_pair_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist new file mode 100644 index 000000000..fdbde3775 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair new file mode 100755 index 000000000..fe3eb3303 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/JL_HashPair differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap new file mode 100644 index 000000000..4e820d974 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64/JL_HashPair.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_HashPair { + umbrella header "JL_HashPair.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h new file mode 100644 index 000000000..af9b09ea9 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/BtHash.h @@ -0,0 +1,25 @@ +// +// BtHash.h +// BtHash +// +// Created by EzioChan on 2022/6/29. +// + +#import + +@interface BtHash : NSObject +/* + @param [in] pt[*1] The plaintext + @param ptlen The length of the plaintext(octets) range: 1~32 + @param [in] key[*1] The key for encrypt + @param keylen[*1] The length of the key(octets) range: 1~32 + @param [out] mac[*1] output : The Message Authentication Code 16 bytes. + @return error if < 0, 0 is normal. + */ ++(int)decryptWithPlaintext:(unsigned char *)pt + andPlaintextLen:(int)ptlen + andKey: (unsigned char *)key + andKeyLen: (int)keylen + andMac:(unsigned char *)mac; + +@end diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h new file mode 100644 index 000000000..c42b34a55 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JLHashHandler.h @@ -0,0 +1,59 @@ +// +// JLHashHandler.h +// JL_BLEKit +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^JLHashBlock)(BOOL ret); + +@protocol JLHashHandlerDelegate + +/// 需要发送到设备校验认证的数据 +/// - Parameter data: 数据 +-(void)hashOnPairOutputData:(NSData*)data; + +@end + + +/// 设备认证 +@interface JLHashHandler : NSObject + +@property(nonatomic,weak)id delegate; + + +/// APP端发起设备认证 +/// - Parameters: +/// - pKey: 加密Key(默认为空) +/// - bk: 配对认证回调结果 +-(void)bluetoothPairingKey:(NSData *__nullable)pKey Result:(JLHashBlock)bk; + + +/// 重置设备认证过程 +-(void)hashResetPair; + + +/// 填入设备回复数据 +/// - Parameter rData: 数据 +-(void)inputPairData:(NSData*)rData; + + +/// 停止设备认证过程 +/// stop device pairing +-(void)stopAuthPair; + + +/// 打印当前SDK的版本 ++(void)sdkVersion; + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h new file mode 100644 index 000000000..95d62c48d --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_HashPair.h @@ -0,0 +1,21 @@ +// +// JL_HashPair.h +// JL_HashPair +// +// Created by EzioChan on 2023/1/30. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_HashPair. +FOUNDATION_EXPORT double JL_HashPairVersionNumber; + +//! Project version string for JL_HashPair. +FOUNDATION_EXPORT const unsigned char JL_HashPairVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h new file mode 100644 index 000000000..bce37ee6c --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Headers/JL_ble_pair.h @@ -0,0 +1,20 @@ +// +// JL_ble_pair.h +// JL_BLEKit +// +// Created by zhihui liang on 2018/11/10. +// Copyright © 2018 www.zh-jieli.com. All rights reserved. +// + +#ifndef JL_ble_pair_h +#define JL_ble_pair_h + +#include +#include + +void function_jieli(uint8_t *address,uint8_t *RAND,uint8_t *K,uint8_t *result); + +#pragma mark CRC校验 +unsigned short JL_CRC16(unsigned char *ptr, int len, uint16_t lastCrc); + +#endif /* JL_ble_pair_h */ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist new file mode 100644 index 000000000..4d99eceaf Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair new file mode 100755 index 000000000..be2445248 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/JL_HashPair differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Modules/module.modulemap new file mode 100644 index 000000000..4e820d974 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_HashPair { + umbrella header "JL_HashPair.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..9022691a5 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_HashPair.xcframework/ios-arm64_x86_64-simulator/JL_HashPair.framework/_CodeSignature/CodeResources @@ -0,0 +1,177 @@ + + + + + files + + Headers/BtHash.h + + EdZDmmVVm0KY3D72UHE3hQF42e4= + + Headers/JLHashHandler.h + + ArAEdyp9k5H5o4gFjW9zdx+0ISY= + + Headers/JL_HashPair.h + + Y9dInJ7eyVXJ8WOASyZGNDDIj9s= + + Headers/JL_ble_pair.h + + YP6GQrFs1nWR8BkMoj1fQdKHKKM= + + Info.plist + + pLA2PfPyxsguwM09KFXPq/Cy2ko= + + Modules/module.modulemap + + 6wQFoRjNQqLop5Z3m/K5slHiG2k= + + + files2 + + Headers/BtHash.h + + hash + + EdZDmmVVm0KY3D72UHE3hQF42e4= + + hash2 + + EfOAmi/ycUONPu8OgPUuPkc9caXqUhvVXE27JNmmnPk= + + + Headers/JLHashHandler.h + + hash + + ArAEdyp9k5H5o4gFjW9zdx+0ISY= + + hash2 + + 7iuW7k7IBL4tf/bE1O3SudVyeFxG8YHoo7DqZGFdSBI= + + + Headers/JL_HashPair.h + + hash + + Y9dInJ7eyVXJ8WOASyZGNDDIj9s= + + hash2 + + 5Ow8T39Md9cD7Jb7iMaoihnIJhv8GHHIjGAsgZG//Og= + + + Headers/JL_ble_pair.h + + hash + + YP6GQrFs1nWR8BkMoj1fQdKHKKM= + + hash2 + + ggTJvYOE/W4Tmghs665eiywakMiTsvgl7PeEayUkKqQ= + + + Modules/module.modulemap + + hash + + 6wQFoRjNQqLop5Z3m/K5slHiG2k= + + hash2 + + N+WiNcfG40LwaFvJZeLG5iNA48ZbrW0Oph/B9U+7i9U= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist new file mode 100644 index 000000000..567764096 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/Info.plist @@ -0,0 +1,44 @@ + + + + + AvailableLibraries + + + BinaryPath + JL_OTALib.framework/JL_OTALib + LibraryIdentifier + ios-arm64 + LibraryPath + JL_OTALib.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + JL_OTALib.framework/JL_OTALib + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + JL_OTALib.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h new file mode 100644 index 000000000..2ab4541b0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOTAFile.h @@ -0,0 +1,52 @@ +// +// JLOTAFile.h +// JL_OTALib +// +// Created by EzioChan on 2024/7/26. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_OTAUrlResult) { + JL_OTAUrlResultSuccess = 0x00, //OTA文件获取成功 + JL_OTAUrlResultFail = 0x01, //OTA文件获取失败 + JL_OTAUrlResultDownloadFail = 0x02, //OTA文件下载失败 +}; + +typedef void(^JL_OTA_URL)(JL_OTAUrlResult result, + NSString* __nullable version, + NSString* __nullable url, + NSString* __nullable explain); + +@interface JLOTAFile : NSObject + + +#pragma mark -文件下载 +/** + 文件下载 + @param key 授权key + @param code 授权code + @param result 回复 + */ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + Result:(JL_OTA_URL __nullable)result; + +/** + OTA升级文件下载【MD5】 +@param key 授权key +@param code 授权code +@param hash MD5值 +@param result 回复 +*/ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + hash:(NSString*)hash + Result:(JL_OTA_URL __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h new file mode 100644 index 000000000..4740d6872 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaCustom.h @@ -0,0 +1,62 @@ +// +// JLOtaCustom.h +// JL_OTALib +// +// Created by EzioChan on 2025/4/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_OTAManager; + +/// 自定义命令对象 +@interface JLOtaCustomData : NSObject + +/// 是否需要回复 +@property (nonatomic, assign) BOOL needResponse; + +/// 数据 +@property (nonatomic, strong) NSData *data; + +/// 回复数据 SN +@property (nonatomic, assign) uint8_t sn; + +@end + + +/// 自定义命令回调 +@protocol JLOtaCustomDelegate + +/// 自定义命令回调 +/// - Parameter data: 自定义命令对象 +-(void)otaCustomReceiveData:(JLOtaCustomData *)data; + +@end + +/// 自定义命令 +@interface JLOtaCustom : NSObject + +/// 自定义命令 +/// - Parameters: +/// - delegate: 代理回调 +/// - manager: 升级对象 +-(instancetype)initWithDelegate:(id)delegate OtaManager:(JL_OTAManager *)manager; + +/// 发送自定义命令 +/// - Parameters: +/// - data: 下发的数据 +/// - need: 是否需要回复内容 +/// - result: 命令回复结果 +- (void)cmdSendCommandData:(NSData *)data needResponse:(BOOL)need Result:(void(^)(NSData * __nullable response, NSError * __nullable error)) result; + +/// 回复自定义命令 +/// - Parameters: +/// - data: 回复的数据 +/// - sn: 回复的SN +- (void)cmdResponseData:(NSData *)data sn:(uint8_t)sn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h new file mode 100644 index 000000000..9b0ecc2c6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JLOtaReConnectOption.h @@ -0,0 +1,43 @@ +// +// JLOtaReConnectOption.h +// JL_OTALib +// +// Created by EzioChan on 2025/3/27. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaReConnectOption : NSObject + +/// 是否需要使用设备认证 +@property (assign, nonatomic) BOOL deviceAuthorize; + +/// 握手(配对)秘钥 +@property(strong,nonatomic)NSData *__nullable authKey; + +/// 设备服务UUID +/// 默认是 AE00 +@property (strong, nonatomic) NSString *serviceUUID; + +///写特征 UUID +/// 默认是 AE01 +@property (strong, nonatomic) NSString *writeUUID; + +/// 读特征 UUID +/// 默认是 AE02 +@property (strong, nonatomic) NSString *readUUID; + +/// 是否需要响应的回应方式 +/// 默认是NO +@property (assign, nonatomic) BOOL isWriteWithResponse; + + + ++ (JLOtaReConnectOption *)defaultOption; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h new file mode 100644 index 000000000..83d1764c2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTALib.h @@ -0,0 +1,22 @@ +// +// JL_OTALib.h +// JL_OTALib +// +// Created by EzioChan on 2023/1/29. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_OTALib. +FOUNDATION_EXPORT double JL_OTALibVersionNumber; + +//! Project version string for JL_OTALib. +FOUNDATION_EXPORT const unsigned char JL_OTALibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h new file mode 100644 index 000000000..02d53c94f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/JL_OTAManager.h @@ -0,0 +1,302 @@ +// +// JL_OTAManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/11/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOtaReConnectOption; + +typedef NS_ENUM(UInt16, JL_OTAResult) { + /// OTA升级成功 + JL_OTAResultSuccess = 0x00, + /// OTA升级失败 + JL_OTAResultFail = 0x01, + /// OTA升级数据为空 + JL_OTAResultDataIsNull = 0x02, + /// OTA指令失败 + JL_OTAResultCommandFail = 0x03, + /// OTA标示偏移查找失败 + JL_OTAResultSeekFail = 0x04, + /// OTA升级固件信息错误 + JL_OTAResultInfoFail = 0x05, + /// OTA升级设备电压低 + JL_OTAResultLowPower = 0x06, + /// 未能进入OTA升级模式 + JL_OTAResultEnterFail = 0x07, + /// OTA升级中 + JL_OTAResultUpgrading = 0x08, + /// OTA需重连设备(uuid方式) + JL_OTAResultReconnect = 0x09, + /// OTA需设备重启 + JL_OTAResultReboot = 0x0a, + /// OTA准备中 + JL_OTAResultPreparing = 0x0b, + /// OTA准备完成 + JL_OTAResultPrepared = 0x0f, + /// 设备已在升级中 + JL_OTAResultStatusIsUpdating = 0x10, + /// 当前固件多台设备连接,请手动断开另一个设备连接 + JL_OTAResultFailedConnectMore = 0x11, + /// 升级数据校验失败,SN 多次重复 + JL_OTAResultFailSameSN = 0xe0, + /// 升级取消 + JL_OTAResultCancel = 0xe1, + /// 升级数据校验失败 + JL_OTAResultFailVerification = 0xf1, + /// 升级失败 + JL_OTAResultFailCompletely = 0xf2, + /// 升级数据校验失败,加密Key不对 + JL_OTAResultFailKey = 0xf3, + /// 升级文件出错 + JL_OTAResultFailErrorFile = 0xf4, + /// uboot不匹配 + JL_OTAResultFailUboot = 0xf5, + /// 升级过程长度出错 + JL_OTAResultFailLenght = 0xf6, + /// 升级过程flash读写失败 + JL_OTAResultFailFlash = 0xf7, + /// 升级过程指令超时 + JL_OTAResultFailCmdTimeout = 0xf8, + /// 相同版本 + JL_OTAResultFailSameVersion = 0xf9, + /// TWS耳机未连接 + JL_OTAResultFailTWSDisconnect = 0xfa, + /// 耳机未在充电仓 + JL_OTAResultFailNotInBin = 0xfb, + /// OTA需重连设备(mac方式) + JL_OTAResultReconnectWithMacAddr = 0xfc, + /// OTA设备断开 + JL_OTAResultDisconnect = 0xfd, + /// OTA需重连设备(更新资源) + JL_OTAResultReconnectUpdateSource = 0xfe, + /// OTA未知错误 + JL_OTAResultUnknown +}; + +typedef NS_ENUM(UInt8, JL_OTAReconnectType) { + JL_OTAReconnectTypeUUID = 0x00, // OTA升级回连使用uuid + JL_OTAReconnectTypeMACAddr = 0x01, // OTA升级回连使用mac地址 +}; + +typedef NS_ENUM(UInt8, JL_OtaStatus) { + JL_OtaStatusNormal = 0, // 正常升级 + JL_OtaStatusForce = 1, // 强制升级 +}; +typedef NS_ENUM(UInt8, JL_OtaHeadset) { + JL_OtaHeadsetNO = 0, // 耳机单备份 正常升级 + JL_OtaHeadsetYES = 1, // 耳机单备份 强制升级 +}; + +typedef NS_ENUM(UInt8, JL_OtaWatch) { + JL_OtaWatchNO = 0, // 手表资源 正常升级 + JL_OtaWatchYES = 1, // 手表资源 强制升级 +}__attribute__((deprecated("This enum is deprecated. Use JLOtaSourcesExtendMode instead."))); + +/// OTA资源升级模式 +typedef NS_ENUM(UInt8, JLOtaSourcesExtendMode) { + /// 不启用 + JLSourcesExtendModeDisable = 0, + /// 启用普通资源升级模式 + JLSourcesExtendModeNormal = 1, + /// 启用只升级资源的模式 + JLSourcesExtendModeSourceOnly = 2, + /// 启用只升级固件程序的模式 + JLSourcesExtendModeFirmwareOnly = 3, +}; + +typedef NS_ENUM(UInt8, JL_BootLoader) { + JL_BootLoaderNO = 0, // 不需要下载Bootloader + JL_BootLoaderYES = 1, // 需要下载BootLoader +}; +typedef NS_ENUM(UInt8, JL_Partition) { + JL_PartitionSingle = 0, // 固件单备份 + JL_PartitionDouble = 1, // 固件双备份 +}; + +typedef void (^JL_OTA_RT)(JL_OTAResult result, float progress); + +typedef void (^JL_OTA_RESULT)(uint8_t status, uint8_t sn, NSData *__nullable data); + +@class JL_OTAManager; + +/// OTA 升级管理对象回调 +@protocol JL_OTAManagerDelegate + +/// 即将被发送的数据 +/// @param data 数据内容 +- (void)otaDataSend:(NSData *_Nonnull)data; + +@optional +/// 回调设备状态信息 +/// @param manager 对象状态 +- (void)otaFeatureResult:(JL_OTAManager *_Nonnull)manager; + +/// 回调升级状态以及进度等 +/// @param result 状态以及进度信息 +/// @param progress 进度信息 +- (void)otaUpgradeResult:(JL_OTAResult)result Progress:(float)progress; + +/// 取消OTA升级 +- (void)otaCancel; + +@end + +/// OTA升级管理对象 +@interface JL_OTAManager : NSObject + +/// 设备UUID(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_UUID; + +/// 设备名称(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_NAME; + +/// 是否仅仅支持BLE +@property(assign, nonatomic) BOOL bleOnly; + +/// ble蓝牙地址 +@property(strong, nonatomic) NSString *bleAddr; + +/// SN值 +@property(assign, nonatomic) uint8_t mCmdSN; + +/// 设备版本号 +@property(assign, nonatomic) uint16_t version; + +/// 设备版本信息 +@property(strong, nonatomic) NSString *versionFirmware; + +/// 设备OTA状态 +@property(assign, nonatomic) JL_OtaStatus otaStatus; + +/// 耳机单备份 是否需要强制升级 +@property(assign, nonatomic) JL_OtaHeadset otaHeadset; + +/// 手表资源 是否需要强制升级 +@property(assign, nonatomic) JL_OtaWatch otaWatch __attribute__((deprecated("This property is deprecated. Use otaSourceMode instead."))); + +/// 是否支持复用空间进行 OTA +@property(assign, nonatomic) BOOL isSupportReuseSpaceOTA; + +/// 是否支持 OTA 拓展功能 +@property (assign, nonatomic) BOOL isSupportExpand; + +/// 资源升级模式类型 +@property(assign, nonatomic) JLOtaSourcesExtendMode otaSourceMode; + +/// 设备OTA时支持单/双备份 +@property(assign, nonatomic) JL_Partition otaPartition; + +/// 设备是否需要下载Loader +@property(assign, nonatomic) JL_BootLoader bootloaderType; + +/// OTA升级回连方式 +@property(assign, nonatomic) JL_OTAReconnectType otaReconnectType; + +/// OTA升级内容大小(设备通知的) +@property(assign, nonatomic, readonly) int64_t otaLength; + +/// 已传输的数据大小 +@property(assign, nonatomic, readonly) uint32_t otaSent; + +/// 设备交互回调代理 +@property(weak, nonatomic) id delegate; + +/// 获取 OTA 升级对象 ++ (JL_OTAManager *)getOTAManager; + +/// 不建议使用自行初始化 +/// 推荐获取 getOTAManager +- (instancetype)init __attribute__((deprecated("Please use getOTAManager instead."))); + +/// 打印OTA发送的数据内容 +/// - Parameter status: 开关 +- (void)logSendData:(BOOL)status; + +/// 当BLE连接上时告知SDK +- (void)noteEntityConnected; + +/// 当BLE断开时告知SDK +- (void)noteEntityDisconnected; + +/// 设置最大丢包次数 +/// - Parameter count: 次数 +/// default: 10 +- (void)maxLostCount:(int)count; + +/// 设置超时时间 +/// - Parameter timeOut: 时间 +/// default: 5 +- (void)cmdTimeOut:(int)timeOut; + +/// 设置是否需要回连 +/// 一般不允许外部干扰状态机,外部不适用此方法 +/// - Parameter isReLink: 回连 +- (void)setOTARelink:(BOOL)isReLink __attribute__((deprecated("Can't be used externally."))); + +/// Receive data from rcsp +/// 设备端过来的数据 +/// - Parameter data: data +- (void)cmdOtaDataReceive:(NSData *)data; + +/// 查询设备OTA信息 +/// 所有情况下都需要执行,而且是在连上后(认证完成)第一步执行 +- (void)cmdTargetFeature; + +/// 查询设备系统状态 +/// 当设备需要挂载外置flash才能正常升级时需要执行,其他情况则无需执行 +- (void)cmdSystemFunction; + +/// OTA单备份,是否正在回连 +- (BOOL)cmdOtaIsRelinking; + +#pragma mark---> OTA升级 +/** + 开始OTA升级 + @param data 升级数据 + @param result 升级结果 + */ +- (void)cmdOTAData:(NSData *)data + Result:(JL_OTA_RT __nullable)result; + +/// OTA升级II +/// 单备份升级特有!!!! +/// 此接口可用于 OTA 回连成功后,再次发起升级使用 +/// @param result 升级结果回调 +- (void)cmdOtaDataIIResult:(JL_OTA_RT __nullable)result; + +/// OTA升级III +/// 单备份升级特有!!! +/// 此接口免去了公版 OTA 的外边回连策略,内部实现回连 +/// ⚠️使用此方法时不可使用 delegate 的回调信息,要使用 Result 的回调信息 +/// @param data OTA数据 +/// @param option 回连选项 +/// @param result 回复 +-(void)cmdUpgrade:(NSData *)data Option:(JLOtaReConnectOption *_Nullable)option Result:(JL_OTA_RT _Nonnull)result; + +/** + OTA升级取消 + @param result 回复 + */ +- (void)cmdOTACancelResult:(JL_OTA_RESULT __nullable)result; + +/// 重启设备 +- (void)cmdRebootDevice; + +/// 强制重启设备 +- (void)cmdRebootForceDevice; + +/// 重置OTA manager +- (void)resetOTAManager; + +/// 打印OTA SDK版本 ++ (NSString *)logSDKVersion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h new file mode 100644 index 000000000..313c99ff0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Headers/jl_ufw.h @@ -0,0 +1,207 @@ +/** + * Des: + * author: Bob + * date: 2022/11/29 + * Copyright: Jieli Technology + */ + +#ifndef NATIVEAPPLICATION_JL_UFW_H +#define NATIVEAPPLICATION_JL_UFW_H + + +#include +#include +#include +//#include +//#include +// +//#define tag "myJNI" +//#define logi(TAG, ...) ((void)__android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)) +//#define logw(TAG, ...) ((void)__android_log_print(ANDROID_LOG_WARN, TAG, __VA_ARGS__)) +//#define loge(TAG, ...) ((void)__android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)) + +int parse_fw_info(const char *data, int size, uint8_t *resultBuff, uint32_t buffSize); +#define BIT(n) (1 << n) + +// for FW file +enum eFW_FILE_TYPE { + + FILE_TYPE_FW_FLASH_BIN = 0, // FLASH文件,第一块FLASH数据 + FILE_TYPE_FW_OTP_BIN = 1, // OTP文件 + FILE_TYPE_FW_INFO_LOG = 2, // FW文件中保存的描述信息 + FILE_TYPE_FW_BURN_CFG = 3, // 烧写器配置文件 + FILE_TYPE_FW_SCRIPT_DATA = 4, // 烧写器打包烧写器下载文件时,需要执行的脚本数据 + FILE_TYPE_FW_SRC = 5, // 需要保存在FW文件中的代码文件, FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_NAME_BIN = 6, // 升级名字用的FW文件,已经废除 + FILE_TYPE_FW_OTP_VER_BIN = 7, // OTP maskrom版本 + FILE_TYPE_FW_OTPCFG_BIN = 8, // OTP配置信息 + FILE_TYPE_FW_OTP_CHIP_CONTROL_BIN = 9, // OTP芯片控制信息 + + FILE_TYPE_FW_OTP_MINI_UBOOT = 0xA, // 烧写到OTP的MINI UBOOT文件 + FILE_TYPE_FW_OTP_FIX_UBOOT = 0xB, // 烧写到OTP的FIX UBOOT文件 + FILE_TYPE_FW_FLASH_2_BIN = 0xC, // 第二块FLASH数据 + FILE_TYPE_FW_BR18_EFUSE_CONFIG_BIN = 0xD, // BR18 24BIT EFUSE配置数据 + FILE_TYPE_FW_RESOURCE_FILE = 0xE, // 资源文件 + FILE_TYPE_FW_2018KEY_INFO = 0xF, // 2018年的新KEY信息 + + FILE_TYPE_FW_BURNER_CUSTOMER_DATA = 0x10, // 一拖八烧写器用户信息 + FILE_TYPE_FW_BURNER_DV15_FLASH_BIN = 0x11, // 一拖八烧写器第一块FLASH数据 + FILE_TYPE_FW_BURNER_APP_FLASH_BIN = 0x12, // 一拖八烧写器第二块FLASH数据 + FILE_TYPE_FW_BURNER_DATA_FLASH_BIN = 0x13, // 一拖八烧写器第三块FLASH数据 + FILE_TYPE_FW_BURNER_BR21_FLASH_BIN = 0x14, // 一拖八烧写器第四块FLASH数据 + + FILE_TYPE_FW_FLASH_BIN_2 = 0x20, // 下载到第一块FLASH的文件,下载工具根据条件要么下载FILE_TYPE_FW_FLASH_BIN,要么下载FILE_TYPE_FW_FLASH_BIN_2 + FILE_TYPE_FW_FLASH_BIN_3, + FILE_TYPE_FW_FLASH_BIN_4, + + FILE_TYPE_FW_LOADER_BIN = 0x31, // 打包的LOADER程序代码 + + FILE_TYPE_FW_TEST_BOX_OTA_BIN = 0x64, // 测试盒使用的ota.bin + + FILE_TYPE_FW_3RD_DATA_FILE = 0x71, // 第三方烧写数据 + + FILE_TYPE_FW_OTA_TARGET_DEVICE_INFO = 0xA0, + FILE_TYPE_FW_BURN_COUNT_LIMIT = 0xA1, // 烧写授权信息 + + FILE_TYPE_FW_ADDITIONAL_FILE = 0xEE, // 附加文件,由烧写器根据名字决定用途 + FILE_TYPE_FW_PASSTHROUGH_DATA = 0xEF, // AC691X BTIF数据 + // 仅存在于FW文件中的数据 + FILE_TYPE_FW_HIDDEN_CFG_BIN = 0xFA, + FILE_TYPE_FW_INVISIBLE_DATA = 0xFB, // 保存在FW文件中的隐藏数据,FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_VISIBLE_DATA = 0xFE, // 仅保存在FW文件中的HEX数据 + + FILE_TYPE_FW_TAIL = 0xFF, // FW文件尾部标识 +}; + +typedef struct U16BIT +{ + unsigned char b0 : 1; + unsigned char b1 : 1; + unsigned char b2 : 1; + unsigned char b3 : 1; + unsigned char b4 : 1; + unsigned char b5 : 1; + unsigned char b6 : 1; + unsigned char b7 : 1; + unsigned char b8 : 1; + unsigned char b9 : 1; + unsigned char b10 : 1; + unsigned char b11 : 1; + unsigned char b12 : 1; + unsigned char b13 : 1; + unsigned char b14 : 1; + unsigned char b15 : 1; + +} U16BIT; +typedef union UBIT16 +{ + U16BIT bits; + uint16_t val; +} UBIT16; + +typedef struct stRES_FILE_HEAD { + uint32_t u32Tag; + uint16_t u16Crc; + uint16_t u16CrcOfItems; + uint32_t u32Len; + uint16_t u16Count; + uint16_t u16Res; + uint8_t u8Res16[16]; +}RES_FILE_HEAD; + +typedef struct stRES_CONFIG_ITEM { + uint16_t u16Index; + uint16_t u16Type; + uint32_t u32Addr; + uint32_t u32Len; + uint16_t u16CrcOfData; + uint16_t u16Res; + char szName[16]; +}RES_CONFIG_ITEM; +static uint16_t m_u16ChipKey = 0xFFFF; +static uint16_t m_u16DefaultKey = 0xFFFF; + + +#pragma pack(1) +#define JL_FILE_ITEM_NAME_MAX_LEN 16 +#define JL_CHIP_KEY_ENC_LENGTH 32 + +typedef struct stUFW_SYD_HEAD_V1 { + uint16_t u16Crc; // crc16 for this struct + uint16_t u16CrcOfSydFileHead; + uint32_t u32FileLength; // file length + uint16_t u16FileCount; // 此FW文件中包含的子文件个数 + uint16_t u16Version; + uint32_t u32Res; + char szChipName[16]; // 此FW文件对应的芯片类型,如AC690X,AC691X + uint32_t u32Res2[4]; + uint32_t u32Res3[4]; +}UFW_SYD_HEAD_V1; + +typedef struct stUFW_FILE_HEAD_V1 { + uint8_t u8FileType; // 文件类型 + uint8_t u8Res; // 保留 + uint16_t u16Index; // 文件索引号 + uint16_t u16Crc; // 明文数据的校验码 + uint16_t u16Version; // 本结构体版本 + uint32_t u32Addr; // 地址 + uint32_t u32Length; // 数据长度 + uint32_t u32AllLength; // 数据长度+尾部对齐的数据长度 + uint32_t u32EncryptedAddr; // 加密数据的地址偏移(相对u32Addr的地址) + uint32_t u32EncryptedLength; // 加密的数据长度 + uint32_t u32Res; // 保留 + uint32_t u64Res1[4]; // 保留 + uint32_t u64Res2[4]; // 保留 + char name[JL_FILE_ITEM_NAME_MAX_LEN]; + +}UFW_FILE_HEAD_V1; + +typedef struct stJL_FILE_TAIL { + char szChipKey[JL_CHIP_KEY_ENC_LENGTH]; // 32 // 固定位置 + uint16_t u16ChipKeyCRC16; // 34 // 固定位置 + uint8_t u8Magic[6]; // 40 // 固定位置 + uint8_t u8Res8[8]; // 48 + char szTailChipName[6]; // 54 // 固定位置 + uint8_t u8Reserv10[10]; // 64 +}JL_FILE_TAIL; + +typedef struct { + char szName[3]; + char szVersion[3]; + uint8_t u8Flag; + uint8_t u8Res; + uint32_t u32Crc; + uint16_t u16Crc; + uint16_t u16Res; +}JL_FLASH_BIN_TAIL; + +typedef UFW_SYD_HEAD_V1 jl_ufw_syd_head; +typedef UFW_FILE_HEAD_V1 jl_ufw_file_head; +typedef JL_FILE_TAIL jl_ufw_tail; + +typedef struct stJL_BR22_FLASH_HEAD { + uint16_t u16Crc; // 结构体自身校验码 + uint8_t u8SizeForBurner; // 为烧写器保留的空间大小 + uint8_t u8Version; // FLASH FS版本号 + char vid[4]; // 4byte的vid + uint32_t u32FlashSize; // FLASH大小,由isd_download计算得出 + uint8_t u8FsVersion; // 类型:br18/br22 + uint8_t u8BlockAlingnModulus; // 对齐系数 + uint8_t u8Res; // 保留,以后有可能会用于存放顶层目录的偏移和文件目录内偏移信息 + uint8_t u8SpecialOptFlag; // 用于标记是否需要生成2种flash格式的标记位,目前只用1位,以后如果需要特殊操作需要标记,再用其他位 + char pid[16]; // 16byte的pid +}JL_BR22_FLASH_HEAD; + + + + + + + + + + +#pragma pack() + + +#endif //NATIVEAPPLICATION_JL_UFW_H diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist new file mode 100644 index 000000000..6ca8a27f2 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib new file mode 100755 index 000000000..45b500d0f Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/JL_OTALib differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Modules/module.modulemap new file mode 100644 index 000000000..fbeacb707 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64/JL_OTALib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_OTALib { + umbrella header "JL_OTALib.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOTAFile.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOTAFile.h new file mode 100644 index 000000000..2ab4541b0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOTAFile.h @@ -0,0 +1,52 @@ +// +// JLOTAFile.h +// JL_OTALib +// +// Created by EzioChan on 2024/7/26. +// Copyright © 2024 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(UInt8, JL_OTAUrlResult) { + JL_OTAUrlResultSuccess = 0x00, //OTA文件获取成功 + JL_OTAUrlResultFail = 0x01, //OTA文件获取失败 + JL_OTAUrlResultDownloadFail = 0x02, //OTA文件下载失败 +}; + +typedef void(^JL_OTA_URL)(JL_OTAUrlResult result, + NSString* __nullable version, + NSString* __nullable url, + NSString* __nullable explain); + +@interface JLOTAFile : NSObject + + +#pragma mark -文件下载 +/** + 文件下载 + @param key 授权key + @param code 授权code + @param result 回复 + */ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + Result:(JL_OTA_URL __nullable)result; + +/** + OTA升级文件下载【MD5】 +@param key 授权key +@param code 授权code +@param hash MD5值 +@param result 回复 +*/ +-(void)cmdGetOtaFileKey:(NSString*)key + Code:(NSString*)code + hash:(NSString*)hash + Result:(JL_OTA_URL __nullable)result; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h new file mode 100644 index 000000000..4740d6872 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaCustom.h @@ -0,0 +1,62 @@ +// +// JLOtaCustom.h +// JL_OTALib +// +// Created by EzioChan on 2025/4/17. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class JL_OTAManager; + +/// 自定义命令对象 +@interface JLOtaCustomData : NSObject + +/// 是否需要回复 +@property (nonatomic, assign) BOOL needResponse; + +/// 数据 +@property (nonatomic, strong) NSData *data; + +/// 回复数据 SN +@property (nonatomic, assign) uint8_t sn; + +@end + + +/// 自定义命令回调 +@protocol JLOtaCustomDelegate + +/// 自定义命令回调 +/// - Parameter data: 自定义命令对象 +-(void)otaCustomReceiveData:(JLOtaCustomData *)data; + +@end + +/// 自定义命令 +@interface JLOtaCustom : NSObject + +/// 自定义命令 +/// - Parameters: +/// - delegate: 代理回调 +/// - manager: 升级对象 +-(instancetype)initWithDelegate:(id)delegate OtaManager:(JL_OTAManager *)manager; + +/// 发送自定义命令 +/// - Parameters: +/// - data: 下发的数据 +/// - need: 是否需要回复内容 +/// - result: 命令回复结果 +- (void)cmdSendCommandData:(NSData *)data needResponse:(BOOL)need Result:(void(^)(NSData * __nullable response, NSError * __nullable error)) result; + +/// 回复自定义命令 +/// - Parameters: +/// - data: 回复的数据 +/// - sn: 回复的SN +- (void)cmdResponseData:(NSData *)data sn:(uint8_t)sn; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h new file mode 100644 index 000000000..9b0ecc2c6 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JLOtaReConnectOption.h @@ -0,0 +1,43 @@ +// +// JLOtaReConnectOption.h +// JL_OTALib +// +// Created by EzioChan on 2025/3/27. +// Copyright © 2025 www.zh-jieli.com. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JLOtaReConnectOption : NSObject + +/// 是否需要使用设备认证 +@property (assign, nonatomic) BOOL deviceAuthorize; + +/// 握手(配对)秘钥 +@property(strong,nonatomic)NSData *__nullable authKey; + +/// 设备服务UUID +/// 默认是 AE00 +@property (strong, nonatomic) NSString *serviceUUID; + +///写特征 UUID +/// 默认是 AE01 +@property (strong, nonatomic) NSString *writeUUID; + +/// 读特征 UUID +/// 默认是 AE02 +@property (strong, nonatomic) NSString *readUUID; + +/// 是否需要响应的回应方式 +/// 默认是NO +@property (assign, nonatomic) BOOL isWriteWithResponse; + + + ++ (JLOtaReConnectOption *)defaultOption; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h new file mode 100644 index 000000000..83d1764c2 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTALib.h @@ -0,0 +1,22 @@ +// +// JL_OTALib.h +// JL_OTALib +// +// Created by EzioChan on 2023/1/29. +// Copyright © 2023 www.zh-jieli.com. All rights reserved. +// + +#import + +//! Project version number for JL_OTALib. +FOUNDATION_EXPORT double JL_OTALibVersionNumber; + +//! Project version string for JL_OTALib. +FOUNDATION_EXPORT const unsigned char JL_OTALibVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import +#import +#import +#import diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTAManager.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTAManager.h new file mode 100644 index 000000000..02d53c94f --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/JL_OTAManager.h @@ -0,0 +1,302 @@ +// +// JL_OTAManager.h +// JL_BLEKit +// +// Created by 杰理科技 on 2021/11/16. +// Copyright © 2021 www.zh-jieli.com. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN +@class JLOtaReConnectOption; + +typedef NS_ENUM(UInt16, JL_OTAResult) { + /// OTA升级成功 + JL_OTAResultSuccess = 0x00, + /// OTA升级失败 + JL_OTAResultFail = 0x01, + /// OTA升级数据为空 + JL_OTAResultDataIsNull = 0x02, + /// OTA指令失败 + JL_OTAResultCommandFail = 0x03, + /// OTA标示偏移查找失败 + JL_OTAResultSeekFail = 0x04, + /// OTA升级固件信息错误 + JL_OTAResultInfoFail = 0x05, + /// OTA升级设备电压低 + JL_OTAResultLowPower = 0x06, + /// 未能进入OTA升级模式 + JL_OTAResultEnterFail = 0x07, + /// OTA升级中 + JL_OTAResultUpgrading = 0x08, + /// OTA需重连设备(uuid方式) + JL_OTAResultReconnect = 0x09, + /// OTA需设备重启 + JL_OTAResultReboot = 0x0a, + /// OTA准备中 + JL_OTAResultPreparing = 0x0b, + /// OTA准备完成 + JL_OTAResultPrepared = 0x0f, + /// 设备已在升级中 + JL_OTAResultStatusIsUpdating = 0x10, + /// 当前固件多台设备连接,请手动断开另一个设备连接 + JL_OTAResultFailedConnectMore = 0x11, + /// 升级数据校验失败,SN 多次重复 + JL_OTAResultFailSameSN = 0xe0, + /// 升级取消 + JL_OTAResultCancel = 0xe1, + /// 升级数据校验失败 + JL_OTAResultFailVerification = 0xf1, + /// 升级失败 + JL_OTAResultFailCompletely = 0xf2, + /// 升级数据校验失败,加密Key不对 + JL_OTAResultFailKey = 0xf3, + /// 升级文件出错 + JL_OTAResultFailErrorFile = 0xf4, + /// uboot不匹配 + JL_OTAResultFailUboot = 0xf5, + /// 升级过程长度出错 + JL_OTAResultFailLenght = 0xf6, + /// 升级过程flash读写失败 + JL_OTAResultFailFlash = 0xf7, + /// 升级过程指令超时 + JL_OTAResultFailCmdTimeout = 0xf8, + /// 相同版本 + JL_OTAResultFailSameVersion = 0xf9, + /// TWS耳机未连接 + JL_OTAResultFailTWSDisconnect = 0xfa, + /// 耳机未在充电仓 + JL_OTAResultFailNotInBin = 0xfb, + /// OTA需重连设备(mac方式) + JL_OTAResultReconnectWithMacAddr = 0xfc, + /// OTA设备断开 + JL_OTAResultDisconnect = 0xfd, + /// OTA需重连设备(更新资源) + JL_OTAResultReconnectUpdateSource = 0xfe, + /// OTA未知错误 + JL_OTAResultUnknown +}; + +typedef NS_ENUM(UInt8, JL_OTAReconnectType) { + JL_OTAReconnectTypeUUID = 0x00, // OTA升级回连使用uuid + JL_OTAReconnectTypeMACAddr = 0x01, // OTA升级回连使用mac地址 +}; + +typedef NS_ENUM(UInt8, JL_OtaStatus) { + JL_OtaStatusNormal = 0, // 正常升级 + JL_OtaStatusForce = 1, // 强制升级 +}; +typedef NS_ENUM(UInt8, JL_OtaHeadset) { + JL_OtaHeadsetNO = 0, // 耳机单备份 正常升级 + JL_OtaHeadsetYES = 1, // 耳机单备份 强制升级 +}; + +typedef NS_ENUM(UInt8, JL_OtaWatch) { + JL_OtaWatchNO = 0, // 手表资源 正常升级 + JL_OtaWatchYES = 1, // 手表资源 强制升级 +}__attribute__((deprecated("This enum is deprecated. Use JLOtaSourcesExtendMode instead."))); + +/// OTA资源升级模式 +typedef NS_ENUM(UInt8, JLOtaSourcesExtendMode) { + /// 不启用 + JLSourcesExtendModeDisable = 0, + /// 启用普通资源升级模式 + JLSourcesExtendModeNormal = 1, + /// 启用只升级资源的模式 + JLSourcesExtendModeSourceOnly = 2, + /// 启用只升级固件程序的模式 + JLSourcesExtendModeFirmwareOnly = 3, +}; + +typedef NS_ENUM(UInt8, JL_BootLoader) { + JL_BootLoaderNO = 0, // 不需要下载Bootloader + JL_BootLoaderYES = 1, // 需要下载BootLoader +}; +typedef NS_ENUM(UInt8, JL_Partition) { + JL_PartitionSingle = 0, // 固件单备份 + JL_PartitionDouble = 1, // 固件双备份 +}; + +typedef void (^JL_OTA_RT)(JL_OTAResult result, float progress); + +typedef void (^JL_OTA_RESULT)(uint8_t status, uint8_t sn, NSData *__nullable data); + +@class JL_OTAManager; + +/// OTA 升级管理对象回调 +@protocol JL_OTAManagerDelegate + +/// 即将被发送的数据 +/// @param data 数据内容 +- (void)otaDataSend:(NSData *_Nonnull)data; + +@optional +/// 回调设备状态信息 +/// @param manager 对象状态 +- (void)otaFeatureResult:(JL_OTAManager *_Nonnull)manager; + +/// 回调升级状态以及进度等 +/// @param result 状态以及进度信息 +/// @param progress 进度信息 +- (void)otaUpgradeResult:(JL_OTAResult)result Progress:(float)progress; + +/// 取消OTA升级 +- (void)otaCancel; + +@end + +/// OTA升级管理对象 +@interface JL_OTAManager : NSObject + +/// 设备UUID(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_UUID; + +/// 设备名称(需要开发者填入) +@property(strong, nonatomic) NSString *mBLE_NAME; + +/// 是否仅仅支持BLE +@property(assign, nonatomic) BOOL bleOnly; + +/// ble蓝牙地址 +@property(strong, nonatomic) NSString *bleAddr; + +/// SN值 +@property(assign, nonatomic) uint8_t mCmdSN; + +/// 设备版本号 +@property(assign, nonatomic) uint16_t version; + +/// 设备版本信息 +@property(strong, nonatomic) NSString *versionFirmware; + +/// 设备OTA状态 +@property(assign, nonatomic) JL_OtaStatus otaStatus; + +/// 耳机单备份 是否需要强制升级 +@property(assign, nonatomic) JL_OtaHeadset otaHeadset; + +/// 手表资源 是否需要强制升级 +@property(assign, nonatomic) JL_OtaWatch otaWatch __attribute__((deprecated("This property is deprecated. Use otaSourceMode instead."))); + +/// 是否支持复用空间进行 OTA +@property(assign, nonatomic) BOOL isSupportReuseSpaceOTA; + +/// 是否支持 OTA 拓展功能 +@property (assign, nonatomic) BOOL isSupportExpand; + +/// 资源升级模式类型 +@property(assign, nonatomic) JLOtaSourcesExtendMode otaSourceMode; + +/// 设备OTA时支持单/双备份 +@property(assign, nonatomic) JL_Partition otaPartition; + +/// 设备是否需要下载Loader +@property(assign, nonatomic) JL_BootLoader bootloaderType; + +/// OTA升级回连方式 +@property(assign, nonatomic) JL_OTAReconnectType otaReconnectType; + +/// OTA升级内容大小(设备通知的) +@property(assign, nonatomic, readonly) int64_t otaLength; + +/// 已传输的数据大小 +@property(assign, nonatomic, readonly) uint32_t otaSent; + +/// 设备交互回调代理 +@property(weak, nonatomic) id delegate; + +/// 获取 OTA 升级对象 ++ (JL_OTAManager *)getOTAManager; + +/// 不建议使用自行初始化 +/// 推荐获取 getOTAManager +- (instancetype)init __attribute__((deprecated("Please use getOTAManager instead."))); + +/// 打印OTA发送的数据内容 +/// - Parameter status: 开关 +- (void)logSendData:(BOOL)status; + +/// 当BLE连接上时告知SDK +- (void)noteEntityConnected; + +/// 当BLE断开时告知SDK +- (void)noteEntityDisconnected; + +/// 设置最大丢包次数 +/// - Parameter count: 次数 +/// default: 10 +- (void)maxLostCount:(int)count; + +/// 设置超时时间 +/// - Parameter timeOut: 时间 +/// default: 5 +- (void)cmdTimeOut:(int)timeOut; + +/// 设置是否需要回连 +/// 一般不允许外部干扰状态机,外部不适用此方法 +/// - Parameter isReLink: 回连 +- (void)setOTARelink:(BOOL)isReLink __attribute__((deprecated("Can't be used externally."))); + +/// Receive data from rcsp +/// 设备端过来的数据 +/// - Parameter data: data +- (void)cmdOtaDataReceive:(NSData *)data; + +/// 查询设备OTA信息 +/// 所有情况下都需要执行,而且是在连上后(认证完成)第一步执行 +- (void)cmdTargetFeature; + +/// 查询设备系统状态 +/// 当设备需要挂载外置flash才能正常升级时需要执行,其他情况则无需执行 +- (void)cmdSystemFunction; + +/// OTA单备份,是否正在回连 +- (BOOL)cmdOtaIsRelinking; + +#pragma mark---> OTA升级 +/** + 开始OTA升级 + @param data 升级数据 + @param result 升级结果 + */ +- (void)cmdOTAData:(NSData *)data + Result:(JL_OTA_RT __nullable)result; + +/// OTA升级II +/// 单备份升级特有!!!! +/// 此接口可用于 OTA 回连成功后,再次发起升级使用 +/// @param result 升级结果回调 +- (void)cmdOtaDataIIResult:(JL_OTA_RT __nullable)result; + +/// OTA升级III +/// 单备份升级特有!!! +/// 此接口免去了公版 OTA 的外边回连策略,内部实现回连 +/// ⚠️使用此方法时不可使用 delegate 的回调信息,要使用 Result 的回调信息 +/// @param data OTA数据 +/// @param option 回连选项 +/// @param result 回复 +-(void)cmdUpgrade:(NSData *)data Option:(JLOtaReConnectOption *_Nullable)option Result:(JL_OTA_RT _Nonnull)result; + +/** + OTA升级取消 + @param result 回复 + */ +- (void)cmdOTACancelResult:(JL_OTA_RESULT __nullable)result; + +/// 重启设备 +- (void)cmdRebootDevice; + +/// 强制重启设备 +- (void)cmdRebootForceDevice; + +/// 重置OTA manager +- (void)resetOTAManager; + +/// 打印OTA SDK版本 ++ (NSString *)logSDKVersion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/jl_ufw.h b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/jl_ufw.h new file mode 100644 index 000000000..313c99ff0 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Headers/jl_ufw.h @@ -0,0 +1,207 @@ +/** + * Des: + * author: Bob + * date: 2022/11/29 + * Copyright: Jieli Technology + */ + +#ifndef NATIVEAPPLICATION_JL_UFW_H +#define NATIVEAPPLICATION_JL_UFW_H + + +#include +#include +#include +//#include +//#include +// +//#define tag "myJNI" +//#define logi(TAG, ...) ((void)__android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)) +//#define logw(TAG, ...) ((void)__android_log_print(ANDROID_LOG_WARN, TAG, __VA_ARGS__)) +//#define loge(TAG, ...) ((void)__android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)) + +int parse_fw_info(const char *data, int size, uint8_t *resultBuff, uint32_t buffSize); +#define BIT(n) (1 << n) + +// for FW file +enum eFW_FILE_TYPE { + + FILE_TYPE_FW_FLASH_BIN = 0, // FLASH文件,第一块FLASH数据 + FILE_TYPE_FW_OTP_BIN = 1, // OTP文件 + FILE_TYPE_FW_INFO_LOG = 2, // FW文件中保存的描述信息 + FILE_TYPE_FW_BURN_CFG = 3, // 烧写器配置文件 + FILE_TYPE_FW_SCRIPT_DATA = 4, // 烧写器打包烧写器下载文件时,需要执行的脚本数据 + FILE_TYPE_FW_SRC = 5, // 需要保存在FW文件中的代码文件, FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_NAME_BIN = 6, // 升级名字用的FW文件,已经废除 + FILE_TYPE_FW_OTP_VER_BIN = 7, // OTP maskrom版本 + FILE_TYPE_FW_OTPCFG_BIN = 8, // OTP配置信息 + FILE_TYPE_FW_OTP_CHIP_CONTROL_BIN = 9, // OTP芯片控制信息 + + FILE_TYPE_FW_OTP_MINI_UBOOT = 0xA, // 烧写到OTP的MINI UBOOT文件 + FILE_TYPE_FW_OTP_FIX_UBOOT = 0xB, // 烧写到OTP的FIX UBOOT文件 + FILE_TYPE_FW_FLASH_2_BIN = 0xC, // 第二块FLASH数据 + FILE_TYPE_FW_BR18_EFUSE_CONFIG_BIN = 0xD, // BR18 24BIT EFUSE配置数据 + FILE_TYPE_FW_RESOURCE_FILE = 0xE, // 资源文件 + FILE_TYPE_FW_2018KEY_INFO = 0xF, // 2018年的新KEY信息 + + FILE_TYPE_FW_BURNER_CUSTOMER_DATA = 0x10, // 一拖八烧写器用户信息 + FILE_TYPE_FW_BURNER_DV15_FLASH_BIN = 0x11, // 一拖八烧写器第一块FLASH数据 + FILE_TYPE_FW_BURNER_APP_FLASH_BIN = 0x12, // 一拖八烧写器第二块FLASH数据 + FILE_TYPE_FW_BURNER_DATA_FLASH_BIN = 0x13, // 一拖八烧写器第三块FLASH数据 + FILE_TYPE_FW_BURNER_BR21_FLASH_BIN = 0x14, // 一拖八烧写器第四块FLASH数据 + + FILE_TYPE_FW_FLASH_BIN_2 = 0x20, // 下载到第一块FLASH的文件,下载工具根据条件要么下载FILE_TYPE_FW_FLASH_BIN,要么下载FILE_TYPE_FW_FLASH_BIN_2 + FILE_TYPE_FW_FLASH_BIN_3, + FILE_TYPE_FW_FLASH_BIN_4, + + FILE_TYPE_FW_LOADER_BIN = 0x31, // 打包的LOADER程序代码 + + FILE_TYPE_FW_TEST_BOX_OTA_BIN = 0x64, // 测试盒使用的ota.bin + + FILE_TYPE_FW_3RD_DATA_FILE = 0x71, // 第三方烧写数据 + + FILE_TYPE_FW_OTA_TARGET_DEVICE_INFO = 0xA0, + FILE_TYPE_FW_BURN_COUNT_LIMIT = 0xA1, // 烧写授权信息 + + FILE_TYPE_FW_ADDITIONAL_FILE = 0xEE, // 附加文件,由烧写器根据名字决定用途 + FILE_TYPE_FW_PASSTHROUGH_DATA = 0xEF, // AC691X BTIF数据 + // 仅存在于FW文件中的数据 + FILE_TYPE_FW_HIDDEN_CFG_BIN = 0xFA, + FILE_TYPE_FW_INVISIBLE_DATA = 0xFB, // 保存在FW文件中的隐藏数据,FW文件查看/编辑器都不能显示这些数据 + FILE_TYPE_FW_VISIBLE_DATA = 0xFE, // 仅保存在FW文件中的HEX数据 + + FILE_TYPE_FW_TAIL = 0xFF, // FW文件尾部标识 +}; + +typedef struct U16BIT +{ + unsigned char b0 : 1; + unsigned char b1 : 1; + unsigned char b2 : 1; + unsigned char b3 : 1; + unsigned char b4 : 1; + unsigned char b5 : 1; + unsigned char b6 : 1; + unsigned char b7 : 1; + unsigned char b8 : 1; + unsigned char b9 : 1; + unsigned char b10 : 1; + unsigned char b11 : 1; + unsigned char b12 : 1; + unsigned char b13 : 1; + unsigned char b14 : 1; + unsigned char b15 : 1; + +} U16BIT; +typedef union UBIT16 +{ + U16BIT bits; + uint16_t val; +} UBIT16; + +typedef struct stRES_FILE_HEAD { + uint32_t u32Tag; + uint16_t u16Crc; + uint16_t u16CrcOfItems; + uint32_t u32Len; + uint16_t u16Count; + uint16_t u16Res; + uint8_t u8Res16[16]; +}RES_FILE_HEAD; + +typedef struct stRES_CONFIG_ITEM { + uint16_t u16Index; + uint16_t u16Type; + uint32_t u32Addr; + uint32_t u32Len; + uint16_t u16CrcOfData; + uint16_t u16Res; + char szName[16]; +}RES_CONFIG_ITEM; +static uint16_t m_u16ChipKey = 0xFFFF; +static uint16_t m_u16DefaultKey = 0xFFFF; + + +#pragma pack(1) +#define JL_FILE_ITEM_NAME_MAX_LEN 16 +#define JL_CHIP_KEY_ENC_LENGTH 32 + +typedef struct stUFW_SYD_HEAD_V1 { + uint16_t u16Crc; // crc16 for this struct + uint16_t u16CrcOfSydFileHead; + uint32_t u32FileLength; // file length + uint16_t u16FileCount; // 此FW文件中包含的子文件个数 + uint16_t u16Version; + uint32_t u32Res; + char szChipName[16]; // 此FW文件对应的芯片类型,如AC690X,AC691X + uint32_t u32Res2[4]; + uint32_t u32Res3[4]; +}UFW_SYD_HEAD_V1; + +typedef struct stUFW_FILE_HEAD_V1 { + uint8_t u8FileType; // 文件类型 + uint8_t u8Res; // 保留 + uint16_t u16Index; // 文件索引号 + uint16_t u16Crc; // 明文数据的校验码 + uint16_t u16Version; // 本结构体版本 + uint32_t u32Addr; // 地址 + uint32_t u32Length; // 数据长度 + uint32_t u32AllLength; // 数据长度+尾部对齐的数据长度 + uint32_t u32EncryptedAddr; // 加密数据的地址偏移(相对u32Addr的地址) + uint32_t u32EncryptedLength; // 加密的数据长度 + uint32_t u32Res; // 保留 + uint32_t u64Res1[4]; // 保留 + uint32_t u64Res2[4]; // 保留 + char name[JL_FILE_ITEM_NAME_MAX_LEN]; + +}UFW_FILE_HEAD_V1; + +typedef struct stJL_FILE_TAIL { + char szChipKey[JL_CHIP_KEY_ENC_LENGTH]; // 32 // 固定位置 + uint16_t u16ChipKeyCRC16; // 34 // 固定位置 + uint8_t u8Magic[6]; // 40 // 固定位置 + uint8_t u8Res8[8]; // 48 + char szTailChipName[6]; // 54 // 固定位置 + uint8_t u8Reserv10[10]; // 64 +}JL_FILE_TAIL; + +typedef struct { + char szName[3]; + char szVersion[3]; + uint8_t u8Flag; + uint8_t u8Res; + uint32_t u32Crc; + uint16_t u16Crc; + uint16_t u16Res; +}JL_FLASH_BIN_TAIL; + +typedef UFW_SYD_HEAD_V1 jl_ufw_syd_head; +typedef UFW_FILE_HEAD_V1 jl_ufw_file_head; +typedef JL_FILE_TAIL jl_ufw_tail; + +typedef struct stJL_BR22_FLASH_HEAD { + uint16_t u16Crc; // 结构体自身校验码 + uint8_t u8SizeForBurner; // 为烧写器保留的空间大小 + uint8_t u8Version; // FLASH FS版本号 + char vid[4]; // 4byte的vid + uint32_t u32FlashSize; // FLASH大小,由isd_download计算得出 + uint8_t u8FsVersion; // 类型:br18/br22 + uint8_t u8BlockAlingnModulus; // 对齐系数 + uint8_t u8Res; // 保留,以后有可能会用于存放顶层目录的偏移和文件目录内偏移信息 + uint8_t u8SpecialOptFlag; // 用于标记是否需要生成2种flash格式的标记位,目前只用1位,以后如果需要特殊操作需要标记,再用其他位 + char pid[16]; // 16byte的pid +}JL_BR22_FLASH_HEAD; + + + + + + + + + + +#pragma pack() + + +#endif //NATIVEAPPLICATION_JL_UFW_H diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Info.plist b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Info.plist new file mode 100644 index 000000000..e118ebce9 Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Info.plist differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/JL_OTALib b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/JL_OTALib new file mode 100755 index 000000000..23599f86d Binary files /dev/null and b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/JL_OTALib differ diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Modules/module.modulemap b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Modules/module.modulemap new file mode 100644 index 000000000..fbeacb707 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module JL_OTALib { + umbrella header "JL_OTALib.h" + export * + + module * { export * } +} diff --git a/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/_CodeSignature/CodeResources b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/_CodeSignature/CodeResources new file mode 100644 index 000000000..233cf6377 --- /dev/null +++ b/local_plugins/device_jieli/ios/Frameworks/JL_OTALib.xcframework/ios-arm64_x86_64-simulator/JL_OTALib.framework/_CodeSignature/CodeResources @@ -0,0 +1,207 @@ + + + + + files + + Headers/JLOTAFile.h + + OCi8PoI3GQr4HUxHQQytlXYCxe8= + + Headers/JLOtaCustom.h + + ohGYE+IOCliAaeZaO5VdRBwHvWo= + + Headers/JLOtaReConnectOption.h + + xqKc873u51zqagJXS172BK6h9Tg= + + Headers/JL_OTALib.h + + tH9kHWi/DKzq8j2NoSg0wXoBAro= + + Headers/JL_OTAManager.h + + PMESdvB6Bcu7gn1YJqH1tOi0eEw= + + Headers/jl_ufw.h + + KBTDPNzyz3mtGLkvJLZ7GIRKNeM= + + Info.plist + + WfMSuIuMgNEEbLR1JZENJAqvP5Y= + + Modules/module.modulemap + + Djaqrf2BV/5uLRNN6e4M1DPfyG4= + + + files2 + + Headers/JLOTAFile.h + + hash + + OCi8PoI3GQr4HUxHQQytlXYCxe8= + + hash2 + + lz4Ha2Z62XzIHqsHW1574zMjx1W+IhrqaCJK8HGIs/o= + + + Headers/JLOtaCustom.h + + hash + + ohGYE+IOCliAaeZaO5VdRBwHvWo= + + hash2 + + KntKbJMahP2WujBsJDiGFbjDQvJdw3yo3CqTohYnPcE= + + + Headers/JLOtaReConnectOption.h + + hash + + xqKc873u51zqagJXS172BK6h9Tg= + + hash2 + + obE+hckXBKKcYUtitl4rad/7W1Bi5ciNOH3ZPml7hY4= + + + Headers/JL_OTALib.h + + hash + + tH9kHWi/DKzq8j2NoSg0wXoBAro= + + hash2 + + /E9fkD4b67lRdPY5BqxqffRv3H48y1qpNWHYw+a65Cg= + + + Headers/JL_OTAManager.h + + hash + + PMESdvB6Bcu7gn1YJqH1tOi0eEw= + + hash2 + + uHRHY8s9UMaaynCPFZOCTid9vmTW5l5PVNI5pAyQK/I= + + + Headers/jl_ufw.h + + hash + + KBTDPNzyz3mtGLkvJLZ7GIRKNeM= + + hash2 + + l3c9CmVcHyBHIxKSG6GlCBpaZjnp6+fd4iKu2jGMyuE= + + + Modules/module.modulemap + + hash + + Djaqrf2BV/5uLRNN6e4M1DPfyG4= + + hash2 + + CQv4Q+xyzKhKSJpAY8gU98Qv9Wv1W16ILQ5MGAKukrA= + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + +