/**
 * @file:    $RCSfile: node.h,v $
 * @brief:   $节点定义头
 *
 * @version: $Revision: 1.1 $
 * @date:    $Date: 2018/11/24 06:54:49 $
 * @author:  $Author: lizhongming $
 * @state:   $State: Exp $
 *
 * @latest:  $Id: node.h,v 1.1 2018/11/24 06:54:49 lizhongming Exp $
 */

#ifndef _COMMUNICATION_NODE_H
#define _COMMUNICATION_NODE_H

#include "ied.h"
 

typedef struct node_t  node_t;
struct node_t {
    uint32_t   id;              /**< 标志(唯一性)                             */
    //uint32_t   flags;           /**< 属性控制字                               */
    //byte_t     chntype;         /**< 通信通道类型(Socket/Serial/CAN)          */
    //byte_t     worktype;        /**< 类型(Client/Server)                      */
    //byte_t     mode;            /**< 传输模式(polling、cyclic)                */
	//uint32_t   systoken_st;		/**< 系统令牌的状态				              */
    char       name[LONGNAME];  /**< 节点的名称                               */
    //void       *driver_config;  /**< 驱动的私有配置                           */
    //char       *special_config; /**< 私有配置文件名                           */
    char       *process_name;   /**< 处理进程名称                             */

    /* Runtime data buffer */
    //uint16_t   index;           /**< 设备索引                                 */ 
    uint16_t   n_clients;       /**< 节点包含设备总数                         */
    ied_t      **clients;       /**< 节点包含设备ied_t链表                    */
    apr_time_t start_time;   
    apr_time_t last_used;       /**< 该节点进程的最后一次正常访问时间         */
    CP56Time2a proc_tmstamp;    /**< 该节点进程的启动时间                     */
    int		 status;          /**< 节点运行运行状态                         */
	//byte_t	   node_state[2];   /**< 各节点状态								  */

    /* Extend property */
    void       *sys_ext;        /**< NODE的系统扩展属性,由基本库实现          */
    void       *app_ext;        /**< NODE的应用扩展属性,由应用库实现          */
    void       *usr_ext;        /**< NODE的用户扩展属性,由应用程序实现        */
  
};

#ifdef __cplusplus
extern "C" {
#endif

 

/** Get channel(of IED) by address */
APR_DECLARE(channel_t*) get_channel_by_addr(uint32_t address);

 

#ifdef __cplusplus
}
#endif

#endif  /** _COMMUNICATION_NODE_H */
