//
//  SYDIDCardReader.h
//  SYDIDCardReader
//
//  Created by apple on 15/10/15.
//  Copyright © 2015年 apple. All rights reserved.
//

#import <UIKit/UIKit.h>

/*------------------------版本号:1.0--------------------------*/

//! Project version number for SYDIDCardReader.
FOUNDATION_EXPORT double SYDIDCardReaderVersionNumber;

//! Project version string for SYDIDCardReader.
FOUNDATION_EXPORT const unsigned char SYDIDCardReaderVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <SYDIDCardReader/PublicHeader.h>


@interface SYDDeviceInfo : NSObject
@property(nonatomic,retain)NSString *Id;              //物理id(设备唯一序列号)
@property(nonatomic,retain)NSString *factoryNo;       //厂家编码
@property(nonatomic,retain)NSString *useFlg;          //使用接口标识（1-蓝牙、2-NFC、3-OTG、4-PC、5-UART）
@property(nonatomic,retain)NSString *deviceType;      //设备型号
@property(nonatomic,retain)NSString *softVersion;     //软件版本
@property(nonatomic,retain)NSString *hardwareVersion; //硬件版本
@end


@interface SYDMyPeripheral : NSObject
@property(nonatomic,retain) NSString *advName;
@property(nonatomic,retain) NSString *mac;
@end

@interface SYDIDReadCardInfo : NSObject
@property(nonatomic,retain) NSString *ICCID;
@property(nonatomic,retain) NSString *CARDTYPE;
@property(nonatomic,assign) BOOL writeCardResult;
@property(nonatomic,assign) BOOL messageResult;
@property(nonatomic,retain) NSString *IMSI;
@end

@protocol SYDIDCardReaderDelegate;

@interface SYDIDCardReader : NSObject;
@property (weak) id<SYDIDCardReaderDelegate> delegate;


/*
 功能：初始化
 返回值：无
 */
+ (id)instance;

/*
 功能：实例方法，设置使用的服务器IP和端口，设置ip端口请在初始化的时候调用。
 参数：serVerIp        服务器IP地址
 Port                 服务器端口号
 返回值：YES为连接服务器成功，NO为连接服务器失败
 */
- (void)setServerIp:(NSString*)serVerIp andPort:(int)port;

/*
 功能：实例方法，设置使用的服务器IP和端口，设置ip端口请在初始化的时候调用。
 参数：serVerIp        服务器IP地址
 Port                 服务器端口号
 serimageDecodeURL    头像解码服务器地址
 返回值：YES为连接服务器成功，NO为连接服务器失败
 */
- (void)setServerIp:(NSString*)serVerIp andPort:(int)port serimageDecodeIp:(NSString*)serimageDecodeURL;



/*
 功能：实例方法，设置用于身份证解码的蓝牙设备。
 参数：periperalHandle 通过代理方法didUpdatePeripheralList返回的蓝牙设备对象
 返回值：无
 */
- (void)setLisentPeripheral:(SYDMyPeripheral* )periperalHandle;



/*
 功能：实例方法，开始执行读取身份证
 参数：timeOut超时时间15秒
 返回值：无
 */
- (void)startScaleCard:(int)timeOut;



/*
 功能：实例方法，重新扫描周边的蓝牙设备，并通过代理方法didUpdatePeripheralList返回周边的蓝牙设备对象。
 参数：time 扫描蓝牙时间
 返回值：无
 */
- (void)refreshDeviceListWithTime:(NSInteger)time;



/*
 功能：断开蓝牙连接
 参数：无
 返回值：无
 */
-(void)SYDDisConnect;



/*写白卡
 功能：写白卡imsi号和短信中心号
 参数：imsi 国际移动用户识别码
      smsNo 短信中心号码
 返回值：delegate回调
 */
-(void)writeSimCard:(NSString *)imsi withNo:(NSString *)smsNo;



/*
 功能：读取ICCID，并判断是否是成白卡
 参数：
 返回值：delegate回调
 */
-(void)readSimICCID;



/*
 功能：一体式读头读取二代证
 参数：
 返回值：
 */
-(void)readAllInOneIDCard;

/*
 功能：卡片上电
 参数：SLOT 卡通道号     
 SLOT参数如下:
 0:大卡槽
 1:psam卡槽1    
 2:psam卡槽2
 返回值：
 */
-(void)SYDCardPowerOn:(NSString*)SLOT;



/*
 功能：卡片下电
 参数：SLOT 卡通道号
 SLOT参数如下:
 0:大卡槽
 1:psam卡槽1
 2:psam卡槽2
 返回值：
 */
-(void)SYDCardPowerOff:(NSString*)SLOT;



/*
 功能：卡片命令交换
 参数： str  卡片交互命令
       SLOT 卡通道号        SLOT参数如下:
                                    0:大卡槽
                                    1:psam卡槽1
                                    2:psam卡槽2
 返回值：
 */
-(void)changeCommand:(NSString *)str withSLOT:(NSString *)SLOT;


/*
 功能：打开/关闭验钞灯
 参数： flg    YES打开验钞灯   NO关闭验钞灯
 返回值：无
 */
-(void)moneyLedOn:(BOOL)flg;


/*
 功能：一体式加密读取二代证(打印机)
 参数： 无
 返回值：无
 */
-(void)readAllInOneIDCardDes;

/*
 功能：蓝牙打印
 参数：str:打印文字   wordSpace:字间距     lineSpace:行间距      underLine:下划线
      fontSice:字体大小   whitePrint:翻白打印    leftSpace:左边距      rightSpace:又边距
 返回值：
 */
-(void)blueToothPrint:(NSString *)str setPrintMessage:(NSString *)wordSpace lineSpace:(NSString *)lineSpace Underline:(NSString *)underLine fontSize:(NSString *)fontSize isWhitePrint:(NSString *)whitePrint leftSpace:(NSString *)leftSpace rightSpace:(NSString *)rightSpace;

/*
 功能：蓝牙打印图片
 参数：imgData:图片data    width:图片宽度     high:图片高度
      location:起始位置   topSpace:垂直间距   backSpace:水平间距
 返回值：
 */
-(void)SYDPrintImage:(NSData *)imgData width:(int)width high:(int)high location:(int)location top_space:(int)topSpace back_space:(int)backSpace;



@end

@protocol SYDIDCardReaderDelegate <NSObject>

@required

/*
 功能：代理方法，当扫描到周围的蓝牙设备时，通过该代理获得代表各个蓝牙设备的对象数组。
 参数：peripherals 蓝牙设备对象数组
 返回值: 无
 */
- (void)SYDdidUpdatePeripheralList:(NSArray *)peripherals;



/*
 功能：代理方法，读取身份证失败时可以通过这个代理方法获取失败的蓝牙对象和原因。
 参数：peripheral 代表蓝牙设备的对象
 error 描述失败的具体原因
 返回值：无
 */
- (void)SYDfailedBack:(SYDMyPeripheral*)peripheral withError:(NSError *)error;



/*
 功能： 代理方法，读取身份证成功时可以通过这个代理方法获取身份证的文本信息和照片信息。
 参数：peripheral代表蓝牙设备的对象
 data 如果data是NSDictionary类型，则里面包含的信息是文本信息，具体获取各字段信息见下表；如果data是NSData类型，则里面包含的是照片的二进制数据流
 返回值：无
 */
- (void)SYDsuccessBack:(SYDMyPeripheral*)peripheral withData:(id)data;



/*
 功能： 代理方法，读iccid回调。
 参数：peripheral号卡业务返回的结果
 返回值：无
 */
- (void)SYDReadICCIDsuccessBack:(SYDIDReadCardInfo*)peripheral withData:(id)data;



/*
 功能： 代理方法，写卡回调。
 参数：peripheral号卡业务返回的结果
 返回值：无
 */
- (void)SYDwriteCardResultBack:(SYDIDReadCardInfo*)peripheral withData:(id)data;



/*
 功能： 代理方法,蓝牙连接成功回调。
 参数：无
 返回值：error：错误信息
 */
-(void)SYDblueToothConnectCallBackWithError:(NSError *)error;



/*
 功能： 代理方法,卡片上电回调。
 参数：isSuccess为YES 上电成功
                为NO 上电失败
 返回值：无
 */
-(void)SYDCardPowerOnCallBack:(BOOL)isSuccess;



/*
 功能： 代理方法,卡片下电回调。
 参数：isSuccess为YES 下电成功
                为NO 下电失败
 返回值：无
 */
-(void)SYDCardPowerOffCallBack:(BOOL)isSuccess;



/*
 功能： 代理方法,卡片命令交换回调。
 参数： data为卡片回复数据
       error 描述失败的原因
 返回值：无
 */
-(void)changeCommandCallBack:(NSData *)data withError:(NSError *)error;


/*
 功能： 代理方法，验钞灯回调。
 参数：isSuccess  成功为YES，失败为NO
 返回值：无
 */
- (void)ledCallBack:(BOOL)isSuccess;

/*
 功能： 代理方法,打印文字回调。
 参数：isSuccess  成功为YES，失败为NO
 返回值：无
 */

-(void)printCallBack:(BOOL)isSuccess;

/*
 功能： 代理方法,打印图片回调。
 参数：isSuccess  成功为YES，失败为NO
 返回值：无
 */

-(void)printImageCallBack:(BOOL)isSuccess;
@end

