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.
167 lines
6.7 KiB
167 lines
6.7 KiB
// |
|
// JL_EntityM.h |
|
// JL_BLEKit |
|
// |
|
// Created by 杰理科技 on 2020/9/1. |
|
// Copyright © 2020 www.zh-jieli.com. All rights reserved. |
|
// |
|
|
|
#import <Foundation/Foundation.h> |
|
#import <AVFoundation/AVFoundation.h> |
|
#import <CoreBluetooth/CoreBluetooth.h> |
|
#import <UIKit/UIKit.h> |
|
#import <JL_BLEKit/JL_Tools.h> |
|
#import <JL_BLEKit/JL_ManagerM.h> |
|
|
|
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 void(^JL_EntityM_STATUS_BK)(JL_EntityM_Status status); |
|
|
|
@interface JL_EntityM : NSObject<NSCopying> |
|
@property(nonatomic,strong) JL_ManagerM *mCmdManager; //命令中心 |
|
|
|
@property(nonatomic,readonly,copy) CBPeripheral *mPeripheral; //BLE外设备 |
|
@property(nonatomic,strong) NSString *mSERVICE; //服务号AE00 |
|
@property(nonatomic,strong) NSString *mRCSP_W; //命令【写】通道AE01 |
|
@property(nonatomic,strong) NSString *mRCSP_R; //命令【读】通道AE02 |
|
@property(nonatomic,strong) NSData *__nullable mFilterKey; //过滤码 |
|
@property(nonatomic,strong) NSData *__nullable mPairKey; //配对码 |
|
@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; //是否【开启配对】 |
|
@property(nonatomic,assign) BOOL mBLE_IS_PAIRED; //是否完成配对 |
|
@property(nonatomic,assign) BOOL mBLE_NEED_OTA; //是否需要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; |
|
@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; |
|
@property(assign,nonatomic) uint8_t mSeq; //Seq 每次开机会加 1,用于app区分是否同一次开机 |
|
@property(assign,nonatomic) uint8_t mTWS_Paired; //TWS配对标识,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; //连接标识 (0:可以连接 1:不可连接) |
|
/** |
|
* mWatchScene值说明: |
|
* 0x00:经典蓝牙未连接 |
|
* 0x01:经典蓝牙已连接 |
|
* 0x02:设备正在回连 |
|
* 0x03:设备不可连接 (需要手动进入配对模式) |
|
*/ |
|
@property(assign,nonatomic) uint8_t mWatchScene; //连接标识 (0:可以连接 1:不可连接) |
|
@property(assign,nonatomic) uint8_t mWatchWay; //连接方式 0:ble 1:spp |
|
/// 设备特殊类型 |
|
@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; |
|
|
|
/** |
|
开启GCD发数定时器 |
|
@param delay 发数时间间隔 |
|
*/ |
|
-(void)installTimingModeDelay:(NSTimeInterval)delay; |
|
|
|
-(void)flashFinishedAction; |
|
|
|
|
|
#pragma mark - 连接超时管理 |
|
-(void)startTimeout:(int)code; |
|
-(void)stopTimeout; |
|
|
|
#pragma mark - EntityM 模型转换 |
|
-(void)updateEntity:(NSDictionary*)dic; |
|
+(JL_EntityM*)changeToEntity:(NSDictionary*)dic; |
|
+(NSArray*)turnToEntityArray:(NSArray*)array; |
|
|
|
@end |
|
|
|
NS_ASSUME_NONNULL_END
|
|
|