Documentation
Includes
tuya_cloud_com_defs.h
#include "tuya_cloud_com_defs.h"
lan_rpc.h
#include "lan_rpc.h"
Macros
Marco __LAN_CLUSTER_BASE_H
#define __LAN_CLUSTER_BASE_H
Marco CLS_CAP_MASTER_MIN
#define CLS_CAP_MASTER_MIN 1000 //能变成master节点的最低能力值
Marco CLS_CAP_NODE_MIN
#define CLS_CAP_NODE_MIN 100 //能变成普通节点的最低能力值
Marco MASTER_CONFIRM_MSG_TIME
#define MASTER_CONFIRM_MSG_TIME 5 //master广播周期,秒为单位
Marco MASTER_CONFIRM_MSG_WAIT_NUM
#define MASTER_CONFIRM_MSG_WAIT_NUM 4 //master连续广播之后能成为master的广播次数
Marco MASTER_KEEPALIVE_CHECK_NUM
#define MASTER_KEEPALIVE_CHECK_NUM 3 //普通节点判断master离线的 周期个数
Marco MASTER_KEEPALIVE_CHECK_TIME
#define MASTER_KEEPALIVE_CHECK_TIME MASTER_CONFIRM_MSG_TIME //普通节点保活检测定时器周期
Marco MST_CFM_MSG_MAX_LEN
#define MST_CFM_MSG_MAX_LEN 128
Functions
Func lan_cluster_init_node_master_status
OPERATE_RET lan_cluster_init_node_master_status();
Func lan_cluster_master_confirm_msg_st2json
VOID lan_cluster_master_confirm_msg_st2json(CONST LAN_NODE_S *msg_node, CHAR_T msg_json[MST_CFM_MSG_MAX_LEN]);
Func lan_cluster_master_confirm_msg_json2st
OPERATE_RET lan_cluster_master_confirm_msg_json2st(CONST CHAR_T *msg_json, LAN_NODE_S *msg_node);
Func lan_cluster_has_master_cap
BOOL_T lan_cluster_has_master_cap(USHORT_T cap);
Func lan_cluster_has_node_cap
BOOL_T lan_cluster_has_node_cap(USHORT_T cap);
Func lan_cluster_init_node_state
OPERATE_RET lan_cluster_init_node_state(IN STATE_CHANGE_CALLBACK_REG cb_reg);
Func lan_cluster_lan_rpc_master_get_cb
OPERATE_RET lan_cluster_lan_rpc_master_get_cb(LAN_RPC_MASTER_S *master);
Func lan_cluster_status_change_inner2out
VOID lan_cluster_status_change_inner2out(NODE_ST_T new_status_in, const LAN_NODE_S *master_node_in, NODE_CLS_ST_T *new_status_out, LAN_NODE_S *master_node_out);
Func lan_setup_udp_server_socket
OPERATE_RET lan_setup_udp_server_socket(IN INT_T port, OUT INT_T *fd_out);
Vars
Consts
Types
Typedefs
Typedef NODE_CLS_ST_T
typedef BYTE_T NODE_CLS_ST_T;
#define CLS_ST_INVALID 0 // 没有加到集群
#define CLS_ST_MASTER 1 // 我是master
#define CLS_ST_NORMAL_NODE 2 // 我是普通节点
Typedef NODE_ST_T
typedef BYTE_T NODE_ST_T;
#define ST_MASTER_WAIT 0 // master等待状态
#define ST_MASTER_OK 1 // master
#define ST_NORMAL_WAIT 2 // 普通节点等待
#define ST_NORMAL 3 // 普通节点
#define ST_MAX_NUM 4
Typedef NODE_CHANGE_ST_T
typedef BYTE_T NODE_CHANGE_ST_T;
#define NODE_ST_JOINING 0 // 节点发现
#define NODE_ST_JOINED 1 // 节点加入集群
#define NODE_ST_LEAVE 2 // 节点离开
#define NODE_ST_FAST_REJOIN 3 // 离开后快速加入
#define NODE_ST_FORBIDDEN 4 // 发现非法节点
Typedef LAN_NODE_S;
typedef struct {
CHAR_T id[GW_ID_LEN+1]; // virtual id
UINT_T ip;
INT_T seqno;
USHORT_T cap;
}LAN_NODE_S;
Typedef LAN_NODE_REPORT_S;
typedef struct {
CHAR_T id[GW_ID_LEN+1]; // virtual id
}LAN_NODE_REPORT_S;
Typedef LAN_NODE_ACK_S;
typedef struct {
CHAR_T id[GW_ID_LEN+1]; // virtual id
CHAR_T local_key[LOCAL_KEY_LEN+1]; // local key
BOOL_T allow;
}LAN_NODE_ACK_S;
Typedef STATE_CHANGE_CALLBACK
typedef VOID(*STATE_CHANGE_CALLBACK)(NODE_CLS_ST_T new_state, IN CONST LAN_NODE_S *master_node);
Typedef CLS_NODE_CHANGE_CALLBACK
typedef VOID(*CLS_NODE_CHANGE_CALLBACK)(IN CONST LAN_NODE_REPORT_S *node, UINT_T num);
Typedef CLS_NODE_CHANGE_SINGLE_CALLBACK
typedef VOID(*CLS_NODE_CHANGE_SINGLE_CALLBACK)(IN CONST LAN_NODE_REPORT_S *node, NODE_CHANGE_ST_T st);
Typedef LAN_CLUSTER_INIT
typedef OPERATE_RET (*LAN_CLUSTER_INIT)(IN CONST LAN_NODE_S* node);
Typedef STATE_CHANGE_CALLBACK_REG
typedef OPERATE_RET (*STATE_CHANGE_CALLBACK_REG)(STATE_CHANGE_CALLBACK cb);
Typedef NODE_CHANGE_CALLBACK_REG
typedef OPERATE_RET (*NODE_CHANGE_CALLBACK_REG)(CLS_NODE_CHANGE_CALLBACK cb);
Typedef NODE_ACK
typedef OPERATE_RET (*NODE_ACK)(IN CONST LAN_NODE_ACK_S *node_array, UINT_T node_num);