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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
//
//  TuyaSmartSocketChannel.h
//
//
//  Created by xcc on 19/3/13.
//
//
 
#import <Foundation/Foundation.h>
#import "TuyaSmartSocketReadModel.h"
#import "TuyaSmartSocketWriteModel.h"
#import <TuyaSmartBaseKit/TuyaSmartBaseKit.h>
 
// 协议
#define SOCKET_TYPE_BROADCAST             0x00
#define SOCKET_TYPE_BROADCAST_V4          0x13
#define SOCKET_TYPE_BROADCAST_V34         0x23
#define SOCKET_TYPE_AP_ERROR              0x15
#define SOCKET_TYPE_AP_CONFIG             0x01
#define SOCKET_TYPE_AP_ACTIVATE           0x02
#define SOCKET_TYPE_DP_PUBLISH            0x07
#define SOCKET_TYPE_DP_REPORT             0x08
#define SOCKET_TYPE_HEARTBEAT             0x09
#define SOCKET_TYPE_QUERY_DEV_INFO        0x0a
#define SOCKET_TYPE_QUERY_SSID_LIST       0x0b
#define SOCKET_TYPE_DP_CAD_PUBLISH        0x0d
#define SOCKET_TYPE_LOCL_SCENE_EXE        0x11
#define SOCKET_TYPE_ENABLE_LOG            0x20
#define SOCKET_TYPE_BIND_TOKEN            0x0c
#define SOCKET_TYPE_ACTIVE_SUBDEV         0x0e
#define SOCKET_TYPE_QUERY_CAD_DEV_INFO    0x10
#define SOCKET_TYPE_INITIATIVE_QUERY_DPS  0x12
#define SOCKET_TYPE_AP_CONFIG             0x01
#define SOCKET_TYPE_AP_CONFIG_NEW         0x14
 
#define SOCKET_TYPE_HANDSHAKE_RAND_A      0x03
#define SOCKET_TYPE_HANDSHAKE_RAND_B      0x04
#define SOCKET_TYPE_HANDSHAKE_RAND_ACK_B  0x05
 
#define SOCKET_TYPE_IPC_AP_SET_PWD        0x21
 
 
@class TuyaSmartSocketChannel;
 
@protocol TuyaSmartSocketChannelDelegate <NSObject>
 
@optional
 
#pragma mark - TCP Delegate
 
// TCP Connection Successful
- (void)socketDidTcpConnected:(TuyaSmartSocketChannel *)socket devId:(NSString *)devId;
 
// Receive TCP message
- (void)socket:(TuyaSmartSocketChannel *)socket didReceiveTcpData:(TuyaSmartSocketReadModel *)tcpData tag:(long)tag devId:(NSString *)devId;
 
// TCP disconnection
- (void)socketDidTcpDisconnect:(TuyaSmartSocketChannel *)socket devId:(NSString *)devId error:(NSError *)error;
 
 
#pragma mark - UDP Delegate
 
// Receive UDP message
- (void)socket:(TuyaSmartSocketChannel *)socket didReceiveUdpData:(TuyaSmartSocketReadModel *)udpData;
 
// Close UDP connection
- (void)socketDidUdpClose:(TuyaSmartSocketChannel *)socket error:(NSError *)error;
 
@end
 
@interface TuyaSmartSocketChannel : NSObject
 
+ (instancetype)sharedInstance;
 
/**
 *  未激活的设备列表
 */
@property (nonatomic, strong) TYSDKSafeMutableDictionary   *inactiveDevices;
 
#pragma mark - TCP
 
// connect TCP
- (void)initTcpClientWithHost:(NSString *)host devInfo:(NSDictionary *)devInfo;
 
// send TCP message
- (void)sendTcpRequest:(TuyaSmartSocketWriteModel *)request
               success:(TYSuccessDict)success
               failure:(TYFailureHandler)failure __deprecated_msg("This method is deprecated, Use sendTcpWithRequest:success:failure: instead");
 
// send TCP message
- (void)sendTcpWithRequest:(TuyaSmartSocketWriteModel *)request
                   success:(TYSuccessDict)success
                   failure:(TYFailureError)failure;
 
- (void)removeInactiveDevice:(NSString *)gwId;
 
- (void)removeAllInactiveDevice;
 
// whether the TCP connection
- (BOOL)hasTcpClientWithDevId:(NSString *)devId;
 
// close TCP connect
- (void)closeTcpClientWithDevId:(NSString *)devId;
 
// close all TCP connect
- (void)closeAllTcpClient;
 
#pragma mark - UDP
 
// init UDP serve
- (void)initUdpServerWithPort:(NSInteger)port;
 
// send UDP message
- (void)sendUdpRequestWithHost:(NSString *)host port:(NSInteger)port type:(int)type body:(NSDictionary *)body success:(TYSuccessHandler)success failure:(TYFailureHandler)failure;
 
// close UDP serve
- (void)closeUdpServerWithPort:(uint16_t)port;
 
#pragma mark - Delegate
 
// add socket channel delegate
- (void)addDelegate:(id<TuyaSmartSocketChannelDelegate>)delegate;
 
// remove socket channel delegate
- (void)removeDelegate:(id<TuyaSmartSocketChannelDelegate>)delegate;
 
@end