commCPU_SUPV/code/link60870/inc/iec103_link_srv.h

139 lines
3.6 KiB
C
Raw Normal View History

2025-04-30 16:24:29 +08:00
#ifndef IEC103_LINK_SRV_123_INCLUDED
#define IEC103_LINK_SRV_123_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
/************************************************************************/
#include "iec103_apdu.h"
#include "general_function.h"
#include "general_socket.h"
#include "general_serial.h"
#include "general_can.h"
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
#define IEC103_SEND_CMD_BUFFER_MAX_COUNT 96
//<2F><>Ҫ<EFBFBD><D2AA>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><><C2BC>16000<30>㣬160֡)
#define IEC103_SEND_URGENT_BUFFER_MAX_COUNT 224
//cbt modified 2021.5.17 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>෢3֡<33><D6A1>Ϊ<EFBFBD><CEAA><EFBFBD>෢5֡<35><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD>
//<2F><>Ҫ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,<2C><><EFBFBD>뼰ʱ<EBBCB0><CAB1><EFBFBD><EFBFBD>)
#define IEC103_SEND_GENERAL_BUFFER_MAX_COUNT 12//8
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
#define IEC103_DINGZHI_MAX_NUM 256
/*************2011.10.26<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD>õĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>****************************/
typedef enum
{
IEC103_I_ASDU_TYPE_CMD=0,
IEC103_I_ASDU_TYPE_URGENT,
IEC103_I_ASDU_TYPE_GENERAL
} IEC103_I_ASDU_TYPE;
/*************2011.10.26<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>****************************/
typedef enum{
IEC103_LINK_STATUS_SRV_IDLE=0, //<2F><><EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ӻ<EFBFBD>û<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
IEC103_LINK_STATUS_SRV_OK, //<2F>ȴ<EFBFBD><C8B4>ͻ<EFBFBD><CDBB>˷<EFBFBD><CBB7>͸<EFBFBD>λCU֡
//<2F><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
IEC103_LINK_STATUS_SRV_START_RECV //<2F>յ<EFBFBD><D5B5><EFBFBD>һ֡,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} IEC103_LINK_STATUS_SRV;
/********<2A>յ<EFBFBD><D5B5><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><E1B9B9>*******/
typedef struct
{
FLAG_LINK flagLink; //<2F><><EFBFBD><EFBFBD>֪ͨ<CDA8>ⲿ
IEC103_LINK_PROPER link_proper;
struct
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF>ƣ<EFBFBD><C6A3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBBBA><EFBFBD><EFBFBD>)
ST_INT send_cmd_readIP;
ST_INT send_cmd_writeIP;
ST_UCHAR send_cmd_Buffer[IEC103_SEND_CMD_BUFFER_MAX_COUNT][IEC103_APDU_MAX_LEN];
ST_INT send_urgent_readIP;
ST_INT send_urgent_writeIP;
ST_UCHAR send_urgent_Buffer[IEC103_SEND_URGENT_BUFFER_MAX_COUNT][IEC103_APDU_MAX_LEN];
ST_INT send_general_readIP;
ST_INT send_general_writeIP;
ST_UCHAR send_general_Buffer[IEC103_SEND_GENERAL_BUFFER_MAX_COUNT][IEC103_APDU_MAX_LEN];
} link_send_buffer;
struct
{
IEC103_LINK_STATUS_SRV linkStatus;
ST_UCHAR ctrl_FCB_recv;
ST_DOUBLE record_time_tm; //<2F><>¼:<3A>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD><CABE><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD>
ST_DOUBLE space_tm; //10000,
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>ʱ<EFBFBD><CAB1>
//ST_DOUBLE record_time_sendL2;
//ST_DOUBLE space_sendL2; //1*300,
} link_records;
struct
{
IEC103_LINK_TYPE link_type;
union
{
SOCKET_LINK_ATTRIB *sock_attrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB6A8>Ϊָ<CEAA><EFBFBD><EBA3AC>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>λ<EFBFBD><CEBB>
SERIAL_ATTRIB *serial_attrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
CAN_LINK_ATTRIB *can_link; //CAN<41><4E><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
} u;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><EFBFBD><EFBFBD>TCP <20><><EFBFBD><EFBFBD> <20><> CAN
ST_VOID *iec103_service_srv; //<2F><><EFBFBD>汾ָ<E6B1BE><D6B8>, <20>յ<EFBFBD>I<EFBFBD><49>ʱ<EFBFBD><CAB1>ȷ<EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ST_INT monitorChannel; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
} link_attrib;
} IEC103_LINK_SRV;
//<2F>յ<EFBFBD>ASDUʱ<55><CAB1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/***<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ʱ<EFBFBD>򣬵<EFBFBD><F2A3ACB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݷŵ<DDB7>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***/
ST_RET iec103_link_srv_save_asdu( IEC103_LINK_SRV *iec103_link_srv, ST_UCHAR *asdu, ST_INT asduLen, IEC103_I_ASDU_TYPE type );
/***<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ***/
ST_RET iec103_link_srv_property_init( IEC103_LINK_SRV * iec103_link );
/*** <20><>Ҫ<EFBFBD><D2AA><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ***/
ST_RET iec103_link_srv_property_set( IEC103_LINK_SRV * iec103_link, IEC103_LINK_TYPE link_type,
ST_VOID *link_attrib, ST_UCHAR linkAddr, ST_VOID *iec103_service_srv, ST_INT monitorChl );
/*** <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD> ***/
ST_RET iec103_link_srv_property_release( IEC103_LINK_SRV * iec103_link );
/** ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>״̬, <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **/
ST_RET iec103_link_srv_check_status( IEC103_LINK_SRV *iec103_link );
/************************************************************************/
#ifdef __cplusplus
}
#endif
#endif