/**
 *卡尔IOS 读卡SDK_noenc
 *  version:3.8.1 增加https相片解码
 *
 **/
#define SDKVERSION "卡尔IOS 读卡SDK_noenc  version:3.8"

//
//  BleTool.h
//  BLECardReaderDemoCode
//
//  Created by kaer on 15-3-24.
//  Copyright (c) 2015年 kaer. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreBluetooth/CoreBluetooth.h>

@protocol BR_Callback <NSObject>

//蓝牙连接状态代理，yes 蓝牙连接成功  no 蓝牙连接失败
-(void)BR_connectResult:(BOOL)isconnected;

@end

@interface BleTool : NSObject<CBCentralManagerDelegate,CBPeripheralDelegate>

@property(assign,nonatomic)id<BR_Callback> brcallback;

/**
 *  单例方法获取BleTool对象
 *
 *  @param TargetVCL 实现委托的OC类
 *
 *  @return BleTool对象
 */
+(instancetype)getInstance:(id)TargetVCL;



/**
 初始化方法
 @param TargetVCl 当前实现BR_Callback委托的NSObject或UIViewcontroller对象
 @return BleTool对象
 */
-(id)init:(id)TargetVCl;


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

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

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

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

///获取mac
-(NSString*)getBtMac;



/**
 *读身份证
 *返回字典项键值如下：key值picBitmap为图片数据(未解密)、
 *name值为姓名、
 *id_num值为身份证号、
 *sex_code值为性别(汉字)、
 *address值为家庭住址、
 *nation_code值为民族(汉字)、
 *birth值为出生日期yyyyMMdd、
 *sign_office值为签发机关、
 *useful_s_date值为有效期开始日期yyyyMMdd 、
 *useful_e_date值为有效期结束日期yyyyMMdd
 **/
-(NSDictionary*)readIDCard;

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

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

/**
 *读ICCID
 *返回字典项键值如下:
 *errCode: 1 成功，0 失败
 *errDesc:失败时此字段有效,错误描述信息
 *IccidData:NSData型，成功时此字段有效，ICCID的数据
 **/
-(NSDictionary *) readICCID;


/**
 *检查白卡
 *simType：sim卡类型  0表示2G   1表示3G
 *返回字典项键值如下：
 *errCode:1成功 0 失败 -2入参非法 2卡未插入 3不识别的sim卡 4卡插入但还未初始化
 *isBlank:0 白卡 1非白卡
 *IMSI2G NSData型 :2G卡的imsi
 *IMSI3G NSData型 :3G卡的imsi --该key只有输入形参类型是1，即3G的时候存在，形参是0，即2G的时候该key不存在
 **/
-(NSDictionary *)checkSIMisBlank:(int)simType;

/**
 *写IMSI
 *入参： (imsi前三位809已在库中处理) imsi1 必填 ， imsi2 可选， 可选项不填的时候可传nil
 *出参： 1成功 0 失败 -2入参非法 2卡未插入 3不识别的sim卡 4卡插入但还未初始化 -3超时
 **/
-(int)writeIMSI:(NSData*)IMSI2G andIMSI2:(NSData*)IMSI3G;

/**
 *写短信中心
 *入参：PhoneNumber 手机号11位
 *NumberIndex 短信中心号索引
 *出参： 1成功 0 失败 -2入参非法 2卡未插入 3不识别的sim卡 4卡插入但还未初始化 -3超时
 **/
-(int)writeSMSC:(NSString *)PhoneNumber withNumberIndex:(Byte)NumberIndex;

///获取sdk版本
-(NSString*)FrameworkVersion;

@end
