/****************************************************************************
** File name    :  HTIEC61850Protocol.h
** Description  :  define iec 61850 network protocol api
** Create date  :  2019.09.01
** Auther by    :  Liuyx
** Version info :  V1.0.01
** Copyright (C) 2002-2019 xi'an huatek, Inc Co., Ltd
** Update record:
** DATE         AUTHER   DESC
** -------------------------------------------------------------------------
** 2019.09.01   Liuyx    first build
****************************************************************************/
#ifndef __HT_IEC_61850_PROTOCOL_H
#define __HT_IEC_61850_PROTOCOL_H

#if defined (__cplusplus)
extern "C" {
#endif /* defined (__cplusplus) */
#pragma pack (push ,1)

    /************************************************************************************
    * svpdu_lpdu_head - 9-2/9-1采样值(sample value)链路层(link layer)报文(pdu)头部信息。
    * @des_mac: 目标地址(为FF:FF:FF:FF:FF:FF表示广播包),ISO/IEC8802-3标准地址；
    * @src_mac: 源地址,ISO/IEC8802-3标准地址；
    * @tpid: 标记的协议标识(Tag Protocol Identifier),有些报文没有该字段(非标准的)；
    * @tci: 标记的控制信息(Tag Control Information),有些报文没有该字段(非标准的)；
    * @ether_type: 以太网类型；
    * @appid: 应用标识,标识不用的应用的采样值,连续几个包取得采样值时需要核对应用标识,否则会导致取得采
    *              样值混乱；
    * @epdu_length: 包括以APPID开始的以太网类型PDU在内的八位位组的数目，其值为8＋m(m<1480);
    * @reserve1: 保留字节，为0;
    * @reserve2: 保留字节，为0;
    *
    * TPID 值：0x8100;
    * TCI 值: 由三部分组成：
    *      PRI：User priority(优先权),占前3bit(BS3)，应对user priority值进行配置,以区分采样值和定时苛
    *           刻的、保护相关的GOOSE信息，或低优先级的总线负载。如果不配置优先级，则应采用缺省值(4);
    *      CFI：占PRI后面1bit，用于标识是否含有RIF信息;在以太网标记帧中长度/类型域后没有嵌入RIF域,值应
    *           该为0;若值为1，则表明在ISO/IEC8802-3标记帧中，Length/Type域后接着内嵌的路由信息域(RIF);
    *      VID: 占之后剩下的12bit;为支持虚拟局域网是一种可选的机制，如果采用了这种机制，那么配置时应设
    *           定虚拟局域网标识(VID)。另外，虚拟局域网标识VID 缺省值为0；
    * 注：IEEE802.1Q允许应用带有一组优先级限制，高优先级帧应设置其优先级为4～7，低优先级帧则为1～3，优
    *     先级1为未标记的帧，应避免采用优先级0，因为这会引起正常通信下不可预见的传输时延。优先级和虚拟
    *     网标识(VID)的缺省值表：优先级和虚拟网标识(VID)的缺省值
    *               服务      VID缺省值  优先级缺省值
    *               采样值    0          4
    * ETHER_TYPE 值: 以太网类型码16位表示，下表描述[以太网类型码]取值和[APPID类型码]取值；
    *      表：分配的以太网类型码取值（[APPID类型码]指APPID的最高两位）
    *              应用                    以太网类型码取值(16进制)        APPID类型
    *              IEC61850-8-1GOOSE       88-B8                           0 0
    *              IEC61850-8-1GSE管理     88-B9                           0 0
    *              IEC61850-9-1采样值      88-BA                           0 1
    *              IEC61850-9-2采样值      88-BA                           0 1
    * APPID 值：应用标识。APPID 用以选择采样值信息并区分应用关联。APPID的值是[APPID 类型码]和[实际标识]
    *      的组合，APPID 类型码被定义为其最高两位(如表8 所定义)。因而采样值取如下值：
    *      为采样值保留的取值范围为 0x4000～0x7fff。如果没有配置APPID，缺省值应为0x4000。缺省值被保留为
    *      表明缺少配置。强烈推荐在同一系统内采用唯一的、面向数据源的采样值应用标识(SV APPID)。这应当由
    *      配置系统强迫执行。
    *
    ************************************************************************************/
    typedef struct {
        unsigned char des_mac[6];
        unsigned char src_mac[6];
        unsigned short tpid;
        unsigned short tci;
        unsigned short ether_type;
        unsigned short appid;
        unsigned short epdu_length;
        unsigned short reserve1;
        unsigned short reserve2;
    }ST_SVPDU_LPDU_HEAD;






#pragma pack (pop)
#if defined (__cplusplus)
}
#endif /* defined (__cplusplus) */

#endif /* __HT_IEC_61850_PROTOCOL_H */
