//
//  KaerAdapter.h
//卡尔射频卡云平台——IOS sdk
//version：1.26.1
//更新内容：增加6891 端口websocket AES加密传输
//        修复传入相片解码服务url返回错误的bug

#import <Foundation/Foundation.h>
#import "kt8003reader_global.h"
#import "IDCardItem.h"
#import "WaitTimer.h"

#import "KEDelegateProtocol.h"




@interface KaerAdapter : NSObject

@property(assign,nonatomic)id<KaerAdapterDelegate> KEDelegate;


//初始化方法，入参是实现委托的OC对象
+ (instancetype)getInstance:(id)targetDelegateCls ;


///连接服务器   返回值0 成功，其他失败
-(int)connectServer:(NSString*)siteUrl withUser:(NSString *)uname andPwd:(NSString*)upwd;

///读卡
-(IDCardItem*)readCert;


///扫描周围蓝牙阅读器
-(NSMutableArray*)ScanDeviceList:(float)scanTime;//scanTime扫描等待时间，秒

///连接蓝牙
-(BOOL)connectBt:(NSString*)UUID; //uuid 要连接的设备uuid

///蓝牙断开
-(BOOL)disconnectBt;


///分体专用-断开服务器
-(BOOL)disconnectSSL;

///蓝牙连接状态查询,返回值:YES 已连接  NO 未连接
-(BOOL)connectStatus;

///分体专用-服务器连接状态查询，返回值yes  已连接   no 未连接
-(BOOL)connectStatusSSL;

///当前连接的设备蓝牙名
-(NSString*)connectedBLEName;

///当前连接设备是否是分体设备  返回yes 是分体设备  返回no  一体设备
-(BOOL)connectedIsNetworkType;

/**
 *  获取最后一次读卡数据的照片的wlt解码后数据
 *
 *  @return 返回类型NSDictionary<br>
 *  keys:<br>
 *  errCode 0为解码成功 -1解码失败<br>
 *  errDesc 在解码失败时有效，失败错误信息描述<br>
 *  DecPicData NSData型，解码成功时该key有效,解码后的相片信息
 */
-(NSDictionary*)GetDecodedPicData;

/**
 *  获取最后一次读卡数据的照片的wlt解码后数据 ,可传入服务器地址
 *
 *  @param ServUrl 自建的可用相片解码服务器外网地址
 *
 *  @return 返回类型NSDictionary<br>
 *  keys:<br>
 *  errCode 0为解码成功 -1解码失败<br>
 *  errDesc 在解码失败时有效，失败错误信息描述<br>
 *  DecPicData NSData型，解码成功时该key有效,解码后的相片信息
 */
-(NSDictionary*)getDecodedPicDataOnServerUrl:(NSString*)ServUrl;


/**
 一体设备专用-获取SAMID

 @return samid结果
 */
-(NSData *)getSAMNo;


/**
 获取摘要

 @return 摘要结果
 */
-(NSData*)getSummary;

/**
 *readICCID   读iccid
 *返回值keys:
 *     errCode: NSString 0 成功 其他失败
 *     ICCIDData:NSData iccid数据
 **/
-(NSDictionary *) readICCID;
/**
 *readIMSI   读imsi
 *入参:Byte   0x02 读2G卡   0x03 读3G卡
 *返回值keys:
 *     errCode: NSString 0成功 其他失败
 *     isBlank: NSNumber 0 成卡  1 白卡
 *     IMSI2G:  NSData  2GIMSI  成卡时有此值
 *     IMSI3G:  NSData  3GIMSI  成卡时有此值
 **/
-(NSDictionary*)readIMSI:(Byte)simType;
/**
 *writeIMSI andIMSI2  写imsi
 *入参: IMSI2G(必填) 写IMSI2G  、 IMSI3G(选填) 写IMSI3G ，填nil则只写IMSI2G
 *返回值 int: 0 成功  1失败
 *
 **/
-(int)writeIMSI:(NSString*)IMSI2G andIMSI2:(NSString*)IMSI3G;

/**
 *writeSMSC withNumberIndex  写短信中心号
 *入参: PhoneNumber 短信中心号  、 NumberIndex 短信中心号索引
 *返回值 int: 0成功  1失败
 *
 **/
-(int)writeSMSC:(NSString *)PhoneNumber withNumberIndex:(Byte)NumberIndex;


/**
 发送指令关闭蓝牙

 @return 设备响应结果
 */
-(NSData*)command_BLE_turnoff;

/**
 发送指令设备进入休眠

 @return 设备响应结果
 */
-(NSData*)command_SleepMode;



+(NSString*)getSDKVersion;

@end
