You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

293 lines
9.8 KiB

2 years ago
//
// 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
3BLE
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