|
|
|
|
//
|
|
|
|
|
// JL_TwsManager.h
|
|
|
|
|
// JL_BLEKit
|
|
|
|
|
//
|
|
|
|
|
// Created by 凌煊峰 on 2021/12/17.
|
|
|
|
|
// Copyright © 2021 www.zh-jieli.com. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
|
#import <JL_BLEKit/JL_FunctionBaseManager.h>
|
|
|
|
|
#import <JL_BLEKit/JL_Tools.h>
|
|
|
|
|
#import <JL_BLEKit/JLModel_ANC.h>
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
|
|
|
|
|
///耳机电量
|
|
|
|
|
///TWS earphones Electricity
|
|
|
|
|
@interface TwsElectricity:NSObject
|
|
|
|
|
// @"ISCHARGING_L"
|
|
|
|
|
@property(nonatomic,assign) BOOL isChargingLeft;
|
|
|
|
|
// @"ISCHARGING_R"
|
|
|
|
|
@property(nonatomic,assign) BOOL isChargingRight;
|
|
|
|
|
// @"ISCHARGING_C"
|
|
|
|
|
@property(nonatomic,assign) BOOL isChargingCenter;
|
|
|
|
|
// @"POWER_L"
|
|
|
|
|
@property(nonatomic,assign) int powerLeft;
|
|
|
|
|
// @"POWER_R"
|
|
|
|
|
@property(nonatomic,assign) int powerRight;
|
|
|
|
|
// @"POWER_C"
|
|
|
|
|
@property(nonatomic,assign) int powerCenter;
|
|
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
@interface JL_TwsManager : JL_FunctionBaseManager
|
|
|
|
|
|
|
|
|
|
///耳机电量
|
|
|
|
|
///TWS earphones Electricity
|
|
|
|
|
@property (nonatomic,strong)TwsElectricity *electricity;
|
|
|
|
|
//@"EDR_NAME"
|
|
|
|
|
@property (nonatomic,strong)NSString *edrName;
|
|
|
|
|
//@"KEY_LR"
|
|
|
|
|
@property (nonatomic,assign)int keyLR;
|
|
|
|
|
//@"KEY_ACTION"
|
|
|
|
|
@property (nonatomic,assign)int keyAction;
|
|
|
|
|
//@"KEY_FUNCTION"
|
|
|
|
|
@property (nonatomic,assign)int keyFunction;
|
|
|
|
|
//@"LED_SCENE"
|
|
|
|
|
@property (nonatomic,assign)int ledScen;
|
|
|
|
|
//@"LED_EFFECT"
|
|
|
|
|
@property (nonatomic,assign)int ledEffect;
|
|
|
|
|
//@"MIC_MODE"
|
|
|
|
|
@property (nonatomic,assign)int micMode;
|
|
|
|
|
//@"WORK_MODE"
|
|
|
|
|
@property (nonatomic,assign)int workMode;
|
|
|
|
|
//@"VID"
|
|
|
|
|
@property (nonatomic,assign)uint16_t vid;
|
|
|
|
|
//@"UID"
|
|
|
|
|
@property (nonatomic,assign)uint16_t uid;
|
|
|
|
|
//@"PID"
|
|
|
|
|
@property (nonatomic,assign)uint16_t pid;
|
|
|
|
|
//@"LINK_TIME"
|
|
|
|
|
@property (nonatomic,assign)uint32_t linkTime;
|
|
|
|
|
//@""IN_EAR_TEST"
|
|
|
|
|
@property (nonatomic,assign)uint8_t earEntryDection;
|
|
|
|
|
//@"DEVICE_LANGUAGE"
|
|
|
|
|
@property (nonatomic,strong)NSString *deviceLanguage;
|
|
|
|
|
//@"KEY_ANC_MODE" ANC的模式数组
|
|
|
|
|
@property (nonatomic,strong)NSArray *ancModels;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@param 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:(JL_HeadsetButtonSettingKey)key
|
|
|
|
|
Action:(JL_HeadsetButtonSettingAction)act
|
|
|
|
|
Function:(JL_HeadsetButtonSettingFunction)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:(JL_HeadsetScene)scene
|
|
|
|
|
Effect:(JL_HeadsetLedEffect)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:(JL_HeadsetWorkingMode)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, //语言类型
|
|
|
|
|
};
|
|
|
|
|
/**
|
|
|
|
|
@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"
|
|
|
|
|
@"VID"
|
|
|
|
|
@"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,
|
|
|
|
|
@"VID": ,
|
|
|
|
|
@"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;
|
|
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_END
|