1
wei
2021-01-21 62d098cb78296feaa6f786a20748921338db838c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//
//  TYBLECharacteristic.h
//  TuyaSmartPublic
//
//  Created by 冯晓 on 16/8/2.
//  Copyright © 2016年 Tuya. All rights reserved.
//
 
#import <Foundation/Foundation.h>
#import <CoreBluetooth/CoreBluetooth.h>
 
 
 
typedef void (^TYBLECentralCharacteristicReadCallback)  (NSData*data, NSError *error);
typedef void (^TYBLECentralCharacteristicNotifyCallback)(NSData* data, NSError *error);
typedef void (^TYBLECentralCharacteristicWriteCallback) (NSError *error);
 
 
 
 
@interface TYBLECharacteristic : NSObject
 
/**
 * 内部CBCharacteristic对象
 */
@property (strong, nonatomic, readonly) CBCharacteristic *cbCharacteristic;
 
/**
 * UUID字符串
 */
@property (weak, nonatomic, readonly) NSString *UUIDString;
 
/**
 *  Characteristic的特征值
 */
@property (nonatomic, assign) CBCharacteristicProperties properties;
 
@property (nonatomic, copy  ) TYBLECentralCharacteristicNotifyCallback notifyCallback;
@property (nonatomic, copy  ) TYBLECentralCharacteristicReadCallback readCallback;
@property (nonatomic, copy  ) TYBLECentralCharacteristicWriteCallback writeCallback;
 
/**
 *  创建TYBLECharacteristic对象
 *
 *  @param aCharacteristic CBCharacteristic对象
 *
 *  @return TYBLECharacteristic
 */
- (instancetype)initWithCharacteristic:(CBCharacteristic *)aCharacteristic;
 
 
/**
 *  通知Peripheral向Central push数据
 *
 *  @param notifyValue 开关标志位
 *  @param aCallback   完成的回调
 */
- (void)notifyValue:(BOOL)notifyValue
     Withcompletion:(TYBLECentralCharacteristicNotifyCallback)aCallback;
 
/**
 *  向Peripheral写数据
 *
 *  @param data      待写的二进制流
 *  @param aCallback 完成的回调
 */
- (void)writeData:(NSData *)data
   Withcompletion:(TYBLECentralCharacteristicWriteCallback)aCallback;
 
/**
 *  向Peripheral写字节
 *
 *  @param aByte     待写入的字节
 *  @param aCallback 完成的回调
 */
- (void)writeByte:(int8_t)aByte
   Withcompletion:(TYBLECentralCharacteristicWriteCallback)aCallback;
 
/**
 *  向Peripheral读数据
 *
 *  @param aCallback 完成的回调
 */
- (void)readValueWithBlock:(TYBLECentralCharacteristicReadCallback)aCallback;
 
 
@end
 
@interface TYBLECharacteristic(ToolMethods)
 
// ----- Used for input events -----/
 
- (void)handleSetNotified:(NSData*)data WithError:(NSError *)anError;
 
- (void)handleReadValue:(NSData *)aValue error:(NSError *)anError;
 
- (void)handleWrittenValueWithError:(NSError *)anError;
 
- (void)handleNotfiyStateUpdate:(NSError *)anError;
 
@end