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.

168 lines
6.7 KiB

2 years ago
//
// 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
* 0AI音箱
* 1TWS
* 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
AndroidMac是否一致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