/*
 * Area_state.h
 *
 *  Created on: 2025年12月9日
 *      Author: adan
 */

#ifndef MSCP_AREA_AREA_STATE_H_
#define MSCP_AREA_AREA_STATE_H_
#include "CM_Types.h"

#define MSCP_AREA_NET_A 0  /**< 区域通信A网 */
#define MSCP_AREA_NET_B 1  /**< 区域通信B网 */

#define MSCP_AREA_NET_OK 0x05u  /**< 网络状态正常 */
#define MSCP_AREA_NET_FILD 0x0au  /**< 网络状态不正常 */

#define MSCP_AREA_DEVICE_MAX   0x04 /**< 区域设备最大数量 */

#define MSCP_AREA_ID_A  0x05  /**< A地区域通信id */
#define MSCP_AREA_ID_B  0x0A  /**< B地区域通信id */

#define MSCP_AREA_A_BOARD_ID_A  0x01
#define MSCP_AREA_A_BOARD_ID_B  0x02
#define MSCP_AREA_B_BOARD_ID_A  0x03
#define MSCP_AREA_B_BOARD_ID_B  0x04

#define MSCP_AREA_UNKNOW_COUNT_MAX  0x0au

#define MSCP_MSG_BUF_MAX  1024u /**< 区域通信消息最大缓冲区大小 */

#define MSCP_AREA_NET_HEALTH_LOW  0x02u
#define MSCP_AREA_NET_HEALTH_MAX  0x02u


#define MSCP_AREA_TIME_SYNC_OK   0x01u

#define MSCP_AREA_NET_SYNC_ERR_FLAG    0x01u /*网络同时故障宏*/
#define MSCP_AREA_NET_ASYNC_ERR_FLAG   0x00u /*网络非同时故障宏*/
/*定义枚举型函数返回值*/
typedef enum
{
	ENUM_AREA_SHUTDOWN 	= 0x00u,
	ENUM_AREA_UNKNOW  = 0x01u,   /**< 未知地 */
	ENUM_AREA_OFFLINE = 0x02u,  /**< 离线地 */
	ENUM_AREA_MASTER  = 0x03u,  /**< 主地 */
	ENUM_AREA_SLAVE   = 0x04u    /**< 备地 */
}ENUM_AREA_STATE;

#pragma pack(1) /** 声明为一字节对齐 */
typedef struct
{
    CM_UINT16 len;  /**< 消息长度 */
    CM_UINT8 msgType;  /**< 消息类型 */
    CM_UINT64 arqCount;  /**< 区域通信请求序号 */
    CM_UINT32 srcId;  /**< 源ID */
    CM_UINT32 destId;  /**< 目的ID */
    ENUM_AREA_STATE Localstate;  /**< 区域状态 */
    CM_INT32 sync_finish_flag;  /**< 同步完成标识 */
    CM_UINT32 crc1;/**< 校验和1 */
    CM_UINT32 crc2;/**< 校验和2 */
    CM_UINT8 reserver[8];/**< 保留字段 */
    CM_UINT32 crc;  /**< 校验和 */
}STR_Area_Req;
#pragma pack()


typedef struct
{
//	ENUM_AREA_STATE state;/**< 区域状态*/
    CM_UINT8 Area_ID;/**< 区域ID*/

    CM_UINT8 Local_Net_A_state;/**< 本地 A 网网络状态*/
    CM_UINT32 Local_Net_A_state_ErrCnt;/**< 本地 A 网网络错误状态计数器*/
    CM_UINT8 Local_Net_B_state;/**< 本地B 网网络状态*/
    CM_UINT32 Local_Net_B_state_ErrCnt;/**< 本地 B 网网络错误状态计数器*/
    CM_UINT8 Peer_Net_A_state;/**<  邻机 A 网网络状态*/
    CM_UINT32 Peer_Net_A_state_ErrCnt;/**< 邻机 A 网网络错误状态计数器*/
    CM_UINT8 Peer_Net_B_state;/**<  邻机 B 网网络状态*/
    CM_UINT32 Peer_Net_B_state_ErrCnt;/**< 邻机 B 网网络错误状态计数器*/

    CM_UINT32 Net_Health;/**< 网络健康状态*/
    CM_UINT32 Net_ERR_FLAG;/**< 网络4线同时中断标志位状态，有3根线。4根线存在认为正常，其余情况都是非同时中断*/

    CM_UINT8 send_buf[MSCP_MSG_BUF_MAX];/**< 发送缓冲区*/
    CM_UINT8 recv_buf[MSCP_MSG_BUF_MAX];/**< 接收缓冲区*/

    STR_Area_Req Area_Req ;
}STR_Area_State_Ctl;

#endif /* MSCP_AREA_AREA_STATE_H_ */
