TuyaOS
tuya_svc_netmgr_linkage.h
浏览该文件的文档.
1
10#ifndef __TUYA_SVC_NETMGR_LINKAGE_H__
11#define __TUYA_SVC_NETMGR_LINKAGE_H__
12
13#include "tuya_os_adapter.h"
14#include "tuya_cloud_com_defs.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#define DEFAULT_ACTIVATE_RETRY_CNT (10)
21
22typedef UINT_T LINKAGE_CAP_E;
23#define LINKAGE_CAP_LINK_EVENT BIT(0)
24#define LINKAGE_CAP_ACTIVATE_TOKEN BIT(1)
25#define LINKAGE_CAP_ACTIVATE_META BIT(2)
26#define LINKAGE_CAP_ACTIVATE (LINKAGE_CAP_ACTIVATE_TOKEN | LINKAGE_CAP_ACTIVATE_META)
27
28typedef enum {
29 LINKAGE_TYPE_DEFAULT, // keep it first(current active linkage)
30 LINKAGE_TYPE_WIRED, // Wired
31 LINKAGE_TYPE_WIFI, // Wi-Fi
32 LINKAGE_TYPE_BT, // BLE
33 LINKAGE_TYPE_CAT1, // CN/4G
34 LINKAGE_TYPE_NB, // NB-IoT
35 LINKAGE_TYPE_EXT1, // reserved
36 LINKAGE_TYPE_EXT2, // reserved
37 LINKAGE_TYPE_EXT3, // reserved
38 LINKAGE_TYPE_VIRTUAL, // keep it last
39
40 LINKAGE_TYPE_MAX
41} LINKAGE_TYPE_E;
42
43typedef enum {
44 LINKAGE_CFG_LOWPOWER, // BOOL_T
45 LINKAGE_CFG_IP, // NW_IP_S
46 LINKAGE_CFG_MAC, // NW_MAC_S
47 LINKAGE_CFG_RSSI, // SCHAR_T
48 LINKAGE_CFG_STATUS, // BYTE_T (linkage customized status)
49
50 LINKAGE_CFG_MAX
51} LINKAGE_CFG_E;
52
53typedef struct {
54 LINKAGE_TYPE_E type;
55 LINKAGE_CAP_E capability;
56 OPERATE_RET(*open)(LINKAGE_CAP_E cap);
57 OPERATE_RET(*close)(VOID);
58 OPERATE_RET(*reset)(IN GW_RESET_TYPE_E reset_type);
59 OPERATE_RET(*set)(IN LINKAGE_CFG_E cfg, IN VOID* data);
60 OPERATE_RET(*get)(IN LINKAGE_CFG_E cfg, OUT VOID* data);
62
66typedef BYTE_T ACTIVATE_STAGE_E;
67#define ACTIVATE_STAGE_START 0 // new activate
68#define ACTIVATE_STAGE_SUCCESS 1 // activate success
69#define ACTIVATE_STAGE_FAIL_URL 2 // activate fail(get url from iot dns)
70#define ACTIVATE_STAGE_FAIL_ACTIVE 3 // activate fail(active error)
71#define ACTIVATE_STAGE_FAIL_RESULT 4 // activate fail(meta invalid)
72#define ACTIVATE_STAGE_FAIL_UNKNOWN 5 // activate fail(unknown reason)
73#define ACTIVATE_STAGE_STOP 0xFF // stop current activate
74
75
79typedef BYTE_T ACTIVATE_TYPE_E;
80#define ACTIVATE_TYPE_TOKEN 0 // activate via token
81#define ACTIVATE_TYPE_META 1 // activate via meta data
82#define ACTIVATE_TYPE_3RD 255 // 3rd party cloud
83
87typedef struct {
92
93 //the following items are valid only when stage == ACTIVATE_STAGE_START
94
102 VOID *data;
106 UINT_T len;
110 LINKAGE_TYPE_E linkage;
114 UINT_T retry_cnt;
116
125
133OPERATE_RET tuya_svc_netmgr_linkage_event(IN CONST netmgr_linkage_t *linkage, IN BOOL_T is_link_up);
134
144
152CONST netmgr_linkage_t * tuya_svc_netmgr_linkage_get(IN LINKAGE_TYPE_E type);
153
161OPERATE_RET tuya_svc_netmgr_linkage_set_default(IN LINKAGE_TYPE_E type);
162
171
180OPERATE_RET tuya_svc_netmgr_linkage_set_priority(IN LINKAGE_TYPE_E *types, IN UINT_T count);
181
189BOOL_T tuya_svc_netmgr_linkage_is_up(IN LINKAGE_TYPE_E type);
190
198OPERATE_RET tuya_svc_netmgr_linkage_set_retry_cnt(IN UINT_T count);
199
200#ifdef __cplusplus
201} // extern "C"
202#endif
203
204#endif // __TUYA_SVC_NETMGR_LINKAGE_H__
205
Definition of activate data
Definition: tuya_svc_netmgr_linkage.h:87
UINT_T retry_cnt
Definition: tuya_svc_netmgr_linkage.h:114
ACTIVATE_TYPE_E type
Definition: tuya_svc_netmgr_linkage.h:98
UINT_T len
Definition: tuya_svc_netmgr_linkage.h:106
VOID * data
Definition: tuya_svc_netmgr_linkage.h:102
LINKAGE_TYPE_E linkage
Definition: tuya_svc_netmgr_linkage.h:110
ACTIVATE_STAGE_E stage
Definition: tuya_svc_netmgr_linkage.h:91
Definition: tuya_svc_netmgr_linkage.h:53
Common process - Initialization
OPERATE_RET tuya_svc_netmgr_linkage_set_retry_cnt(IN UINT_T count)
Set retry count for activation
OPERATE_RET tuya_svc_netmgr_linkage_set_priority(IN LINKAGE_TYPE_E *types, IN UINT_T count)
Set priority for all linkages
OPERATE_RET tuya_svc_netmgr_linkage_set_default(IN LINKAGE_TYPE_E type)
Set and keep the default linkage
BOOL_T tuya_svc_netmgr_linkage_is_up(IN LINKAGE_TYPE_E type)
Is the linkage link-up or down
BYTE_T ACTIVATE_STAGE_E
Definition of linkage activate stage
Definition: tuya_svc_netmgr_linkage.h:66
OPERATE_RET tuya_svc_netmgr_linkage_register(IN CONST netmgr_linkage_t *linkage)
Register a linkage to network manager
CONST netmgr_linkage_t * tuya_svc_netmgr_linkage_get(IN LINKAGE_TYPE_E type)
Get a linkage with specific type
OPERATE_RET tuya_svc_netmgr_linkage_switch(VOID)
Switch to next linkage
OPERATE_RET tuya_svc_netmgr_linkage_event(IN CONST netmgr_linkage_t *linkage, IN BOOL_T is_link_up)
Send linkage status to network manager
OPERATE_RET tuya_svc_netmgr_linkage_activate(IN CONST netmgr_linkage_t *linkage, IN activate_info_t *info)
Send linkage activation to network manager
BYTE_T ACTIVATE_TYPE_E
Definition of activate type
Definition: tuya_svc_netmgr_linkage.h:79