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.

218 lines
7.5 KiB

3 years ago
/*!
* \~chinese
* @header PTDispatcher.h
* @abstract
*
* \~english
* @header PTDispatcher.h
* @abstract Protocol
*/
#import <Foundation/Foundation.h>
#import <CoreBluetooth/CoreBluetooth.h>
#import "SDKDefine.h"
#import "PTPrinter.h"
/// 连接模式
typedef NS_ENUM(NSInteger, PTDispatchMode) {
/// 未知类型
PTDispatchModeUnconnect = 0,
/// 蓝牙
PTDispatchModeBLE = 1,
/// 无线
PTDispatchModeWiFi = 2
};
/// 手机蓝牙状态
typedef NS_ENUM(NSInteger, PTBluetoothState) {
/// 未授权,请前往系统设置授权
PTBluetoothStateUnauthorized = 0,
/// 蓝牙未开
PTBluetoothStatePoweredOff = 1,
/// 正常
PTBluetoothStatePoweredOn = 2,
};
/// 打印完成后打印机返回的状态
typedef NS_ENUM(NSInteger, PTPrintState) {
/// 打印成功
PTPrintStateSuccess = 0xcc00,
/// 打印失败(缺纸)
PTPrintStateFailurePaperEmpty = 0xcc01,
/// 打印失败(开盖)
PTPrintStateFailureLidOpen = 0xcc02
};
/// 返回连接的错误类型
typedef NS_ENUM(NSInteger, PTConnectError) {
/// 连接超时
PTConnectErrorBleTimeout = 0,
/// 获取服务超时
PTConnectErrorBleDisvocerServiceTimeout = 1,
/// 验证超时
PTConnectErrorBleValidateTimeout = 2,
/// 未知设备
PTConnectErrorBleUnknownDevice = 3,
/// 系统错误,由coreBluetooth框架返回
PTConnectErrorBleSystem = 4,
/// 验证失败
PTConnectErrorBleValidateFail = 5,
/// 无线连接超时
PTConnectErrorWifiTimeout = 6,
/// socket错误
PTConnectErrorWifiSocketError = 7
};
/// 返回固件升级错误
typedef NS_ENUM(NSInteger, PTUpgradeFirmwareState) {
/// 升级成功
PTUpgradeFirmwareStateSuccess = 0,
/// 升级失败,数据长度错误
PTUpgradeFirmwareStateFailureDataLengthError,
/// 升级失败,验证或者校验失败
PTUpgradeFirmwareStateFailureValidateFail,
/// 升级失败,写入超时
PTUpgradeFirmwareStateFailureWriteTimout,
/// 升级失败,包序号错误
PTUpgradeFirmwareStateFailurePackageNumberError,
/// 升级失败,包长度错误
PTUpgradeFirmwareStateFailurePackageLengthError,
/// 升级失败,写入失败
PTUpgradeFirmwareStateFailureWriteFail,
/// 升级失败
PTUpgradeFirmwareStateFail
};
@class PTPrinter;
typedef void(^PTPrinterMutableArrayBlock)(NSMutableArray<PTPrinter *> *printerArray);
typedef void(^PTEmptyParameterBlock)(void);
typedef void(^PTBluetoothConnectFailBlock)(PTConnectError error);
typedef void(^PTNumberParameterBlock)(NSNumber *number);
typedef void(^PTDataParameterBlock)(NSData *data);
typedef void(^PTPrintStateBlock)(PTPrintState state);
typedef BOOL(^PTPeripheralFilterBlock)(CBPeripheral *peripheral, NSDictionary<NSString *,id> *advertisementData, NSNumber *RSSI);
typedef void(^PTUnconnectBlock)(NSNumber *number, BOOL isActive);
typedef void(^PTSendSuccessParameterBlock)(int64_t dataCount, double time);
typedef void(^PTUpgradeFirmwareStateBlock)(PTUpgradeFirmwareState state);
@interface PTDispatcher : NSObject
@property (assign, nonatomic) PTDispatchMode mode;
@property (strong, nonatomic, readwrite) PTPrinter *printerConnected; //该属性表示连接后的打印机对象
@property (copy, nonatomic, readwrite) PTSendSuccessParameterBlock sendSuccessBlock;
@property (copy, nonatomic, readwrite) PTEmptyParameterBlock sendFailureBlock;
@property (copy, nonatomic, readwrite) PTNumberParameterBlock sendProgressBlock;
@property (copy, nonatomic, readwrite) PTDataParameterBlock receiveDataBlock;
@property (copy, nonatomic, readwrite) PTPrintStateBlock printStateBlock;
@property (copy, nonatomic, readwrite) PTPrinterMutableArrayBlock findAllPeripheralBlock;
@property (copy, nonatomic, readwrite) PTEmptyParameterBlock connectSuccessBlock;
@property (copy, nonatomic, readwrite) PTBluetoothConnectFailBlock connectFailBlock;
@property (copy, nonatomic, readwrite) PTUnconnectBlock unconnectBlock;
@property (copy, nonatomic, readwrite) PTNumberParameterBlock readRSSIBlock;
@property (copy, nonatomic, readwrite) PTPeripheralFilterBlock peripheralFilterBlock;
@property (copy, nonatomic, readwrite) PTUpgradeFirmwareStateBlock upgradeFirmwareStateBlock;
/// 创建单例对象
+ (instancetype)share;
/// 发送数据
- (void)sendData:(NSData *)data;
/// 暂停发送
- (void)pauseWriteData;
/// 继续发送
- (void)resumeWriteData;
/// 开始扫描蓝牙
- (void)scanBluetooth;
/// 停止扫描蓝牙连接成功后SDK会自动停止扫描
- (void)stopScanBluetooth;
/// 扫描Wi-Fi wifi的端口是9100, 如果需要获得路由的名称以及mac地址信息 ios12+需要Access WiFi Information的权限iOS13+以后要开启定位权限
- (void)scanWiFi:(PTPrinterMutableArrayBlock)wifiAllBlock;
/// 获取已发现的所有打印机
- (void)whenFindAllBluetooth:(PTPrinterMutableArrayBlock)bluetoothBlock;
/// 获取蓝牙的rssi信号强度
- (void)whenReadRSSI:(PTNumberParameterBlock)readRSSIBlock;
/// 连接打印机,传入的是打印机对象
- (void)connectPrinter:(PTPrinter *)printer;
/// 断开打印机连接
- (void)unconnectPrinter:(PTPrinter *)printer;
/// 连接成功回调,连接成功后,会停止扫码设备
- (void)whenConnectSuccess:(PTEmptyParameterBlock)connectSuccessBlock;
/// 连接失败的回调
- (void)whenConnectFailureWithErrorBlock:(PTBluetoothConnectFailBlock)connectFailBlock;
/// 断开连接的回调调用unconnectPrinter断开打印机后会调用该方法
- (void)whenUnconnect:(PTUnconnectBlock)unconnectBlock;
/// 数据发送成功的回调,数据发送完成后,会调用该方法
- (void)whenSendSuccess:(PTSendSuccessParameterBlock)sendSuccessBlock;
/// 数据发送失败的回调
- (void)whenSendFailure:(PTEmptyParameterBlock)sendFailureBlock;
/// 数据发送进度的回调
- (void)whenSendProgressUpdate:(PTNumberParameterBlock)sendProgressBlock;
/// 接收到打印机返回的数据,比如获取打印机名称就是通过该方法返回
- (void)whenReceiveData:(PTDataParameterBlock)receiveDataBlock;
/// 接收到打印机打印状态回调使用该方法前需要保证打印机打开了状态回调的开关比如CPCL指令集中的cpclTurnOnPrintStatusCallBack方法ESC中的turnOnPrintStatusCallBack方法
- (void)whenUpdatePrintState:(PTPrintStateBlock)printStateBlock;
/// 设置蓝牙连接超时时间
- (void)setupBleConnectTimeout:(double)timeout;
/// 设置外设过滤,在发现打印机设备的回调中进行一些过滤,返回自己想要的机型
- (void)setupPeripheralFilter:(PTPeripheralFilterBlock)block;
/// 注册蓝牙中心该接口用于兼容你自己实现的CoreBluetooth框架
- (void)registerCentralManager:(CBCentralManager *)manager delegate:(id<CBCentralManagerDelegate>)delegate;
/// 注销代理
- (void)unregisterDelegate;
/// 升级固件状态回调
- (void)whenUpgradeFirmwareStateBlock:(PTUpgradeFirmwareStateBlock)upgradeFirmwareStateBlock;
/// 手机的蓝牙状态,为了准确获取手机蓝牙状态需要在app启动的时候初始化PTDispatcher
- (PTBluetoothState)getBluetoothStatus;
/// SDK打包时间
- (NSString *)SDKBuildTime;
@end