202 lines
5.5 KiB
C
202 lines
5.5 KiB
C
![]() |
/*****************************************************************
|
|||
|
*(C) Copyright H.S.J.
|
|||
|
*
|
|||
|
* MODULE NAME : iec104_service_srv.h
|
|||
|
* PRODUCT(S) : IEC60870
|
|||
|
*
|
|||
|
* MODULE DESCRIPTION :
|
|||
|
* ʵ<EFBFBD><EFBFBD>IEC104<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ
|
|||
|
*
|
|||
|
* GLOBAL FUNCTIONS DEFINED IN THIS MODULE :
|
|||
|
*
|
|||
|
*
|
|||
|
* MODIFICATION LOG :
|
|||
|
* Date Who Rev Comments
|
|||
|
* -------- --- ------ ----------------------------------
|
|||
|
* 2011-12-25 hsj 1.0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>_WIN32<EFBFBD><EFBFBD>linux<EFBFBD><EFBFBD>VXWORKS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ)
|
|||
|
*
|
|||
|
*****************************************************************/
|
|||
|
|
|||
|
|
|||
|
#ifndef IEC104_SERVICE_SRV_123_INCLUDED
|
|||
|
#define IEC104_SERVICE_SRV_123_INCLUDED
|
|||
|
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
/************************************************************************/
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//#define IEC60870_RELEASE
|
|||
|
|
|||
|
#ifdef IEC60870_RELEASE
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
IEC104_I_ASDU_TYPE_CMD=0,
|
|||
|
IEC104_I_ASDU_TYPE_URGENT,
|
|||
|
IEC104_I_ASDU_TYPE_GENERAL
|
|||
|
} IEC104_I_ASDU_TYPE;
|
|||
|
|
|||
|
#else
|
|||
|
#include "glbtypes.h"
|
|||
|
#include "iec104_link_srv.h"
|
|||
|
#endif
|
|||
|
|
|||
|
//ע<><D7A2>: <20><>ͷ<EFBFBD>ļ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>뷢<EFBFBD><EBB7A2><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
typedef int (*IEC104_SRV_RECV_ASDU)(unsigned char *recvAsdu, int linkIndex);
|
|||
|
//<2F><><EFBFBD>ں<EFBFBD>CAN, <20><>ipaddress<73><73>ֵΪNULL, CAN<41><4E><EFBFBD><EFBFBD>Ԥ<EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>CANID,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8>ͻ<EFBFBD><CDBB><EFBFBD>
|
|||
|
typedef int (*IEC104_SRV_RECV_CONN)(int linkIndex, const char * recvIpAddress);
|
|||
|
typedef int (*IEC104_SRV_RECV_DISCON)(int linkIndex);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>104<30><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
struct
|
|||
|
{
|
|||
|
IEC104_SRV_RECV_ASDU fun_recv_asdu; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C>յ<EFBFBD>I֡<49><D6A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IEC104_SRV_RECV_CONN fun_recv_conn; //<2F>յ<EFBFBD><D5B5>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IEC104_SRV_RECV_DISCON fun_recv_discon; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӶϿ<D3B6>
|
|||
|
|
|||
|
char listen_ip[32];
|
|||
|
int listen_port;
|
|||
|
int max_recv_num; //ÿ<><C3BF>listen<65>˿ڣ<CBBF><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int *monitorChl; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|||
|
} link_tcp_para;
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD>漸<EFBFBD><E6BCB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA>ֵ<EFBFBD><D6B5><EFBFBD>߸<EFBFBD><DFB8><EFBFBD>. <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>Գ<EFBFBD>ʼΪNULL
|
|||
|
#ifdef IEC60870_RELEASE
|
|||
|
struct
|
|||
|
{
|
|||
|
void *socket_listen;
|
|||
|
void *socket_link;
|
|||
|
void *link104_srv;
|
|||
|
} srv_tcp_property;
|
|||
|
#else
|
|||
|
struct
|
|||
|
{
|
|||
|
SOCKET_LISN_ATTRIB *socket_listen;
|
|||
|
SOCKET_LINK_ATTRIB *socket_link;
|
|||
|
IEC104_LINK_SRV *link104_srv;
|
|||
|
} srv_tcp_property;
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
} IEC104_SERVICE_SRV_TCP;
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>104<30><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
struct
|
|||
|
{
|
|||
|
IEC104_SRV_RECV_ASDU fun_recv_asdu; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C>յ<EFBFBD>I֡<49><D6A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IEC104_SRV_RECV_CONN fun_recv_conn; //<2F>յ<EFBFBD><D5B5>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IEC104_SRV_RECV_DISCON fun_recv_discon; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӶϿ<D3B6>
|
|||
|
|
|||
|
int com_index; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int com_baud; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int com_parity; //У<>鷽ʽ N,O,E
|
|||
|
unsigned char linkAddr; //<2F><>·<EFBFBD><C2B7>ַ
|
|||
|
|
|||
|
int monitorChl; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|||
|
} link_serial_para;
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD>漸<EFBFBD><E6BCB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA>ֵ<EFBFBD><D6B5><EFBFBD>߸<EFBFBD><DFB8><EFBFBD>. <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>Գ<EFBFBD>ʼΪNULL
|
|||
|
#ifdef IEC60870_RELEASE
|
|||
|
struct
|
|||
|
{
|
|||
|
void *serial_link;
|
|||
|
void *link104_srv;
|
|||
|
} srv_serial_property;
|
|||
|
#else
|
|||
|
struct
|
|||
|
{
|
|||
|
SERIAL_ATTRIB *serial_link;
|
|||
|
IEC104_LINK_SRV *link104_srv;
|
|||
|
} srv_serial_property;
|
|||
|
#endif
|
|||
|
|
|||
|
} IEC104_SERVICE_SRV_SERIAL;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>CAN 104<30><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
struct
|
|||
|
{
|
|||
|
IEC104_SRV_RECV_ASDU fun_recv_asdu; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C>յ<EFBFBD>I֡<49><D6A1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IEC104_SRV_RECV_CONN fun_recv_conn; //<2F>յ<EFBFBD><D5B5>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
IEC104_SRV_RECV_DISCON fun_recv_discon; //<2F><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӶϿ<D3B6>
|
|||
|
|
|||
|
int can_index; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int can_baud; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> k
|
|||
|
|
|||
|
int max_recv_num; //һ<><D2BB>CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>,<2C><><EFBFBD><EFBFBD>CANID<49><44><EFBFBD><EFBFBD>
|
|||
|
unsigned char *linkAddr; //<2F><>·<EFBFBD><C2B7>ַ, <20><><EFBFBD><EFBFBD>. <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|||
|
int *canID; // CAN<41><4E>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>CANID, <20><><EFBFBD><EFBFBD>
|
|||
|
int *monitorChl; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
|
|||
|
} link_can_para;
|
|||
|
|
|||
|
|
|||
|
//<2F><><EFBFBD>漸<EFBFBD><E6BCB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫ<EFBFBD><D2AA>ֵ<EFBFBD><D6B5><EFBFBD>߸<EFBFBD><DFB8><EFBFBD>. <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>Գ<EFBFBD>ʼΪNULL
|
|||
|
#ifdef IEC60870_RELEASE
|
|||
|
struct
|
|||
|
{
|
|||
|
void *can_listen; //ֻ<><D6BB>һ<EFBFBD><D2BB>
|
|||
|
void *can_link; //<2F><><EFBFBD><EFBFBD>
|
|||
|
void *link104_srv; //<2F><><EFBFBD><EFBFBD>
|
|||
|
} srv_can_property;
|
|||
|
#else
|
|||
|
struct
|
|||
|
{
|
|||
|
CAN_ATTRIB *can_listen; //ֻ<><D6BB>һ<EFBFBD><D2BB>
|
|||
|
CAN_LINK_ATTRIB *can_link; //<2F><><EFBFBD><EFBFBD>
|
|||
|
IEC104_LINK_SRV *link104_srv; //<2F><><EFBFBD><EFBFBD>
|
|||
|
} srv_can_property;
|
|||
|
#endif
|
|||
|
|
|||
|
} IEC104_SERVICE_SRV_CAN;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#ifndef IEC60870_RELEASE
|
|||
|
int iec104_service_srv_recv_asdu( IEC104_LINK_SRV *iec104_link_srv, unsigned char *recvAsdu );
|
|||
|
#endif
|
|||
|
|
|||
|
int iec104_service_srv_init_tcp( IEC104_SERVICE_SRV_TCP *iec104_srv_tcp );
|
|||
|
int iec104_service_srv_release_tcp( IEC104_SERVICE_SRV_TCP *iec104_srv_tcp );
|
|||
|
|
|||
|
// int iec104_service_srv_init_serial( IEC104_SERVICE_SRV_SERIAL *iec104_srv_serial );
|
|||
|
// int iec104_service_srv_release_serial( IEC104_SERVICE_SRV_SERIAL *iec104_srv_serial );
|
|||
|
//
|
|||
|
// int iec104_service_srv_init_can( IEC104_SERVICE_SRV_CAN *iec104_srv_can );
|
|||
|
// int iec104_service_srv_release_can( IEC104_SERVICE_SRV_CAN *iec104_srv_can );
|
|||
|
|
|||
|
|
|||
|
int iec104_service_srv_check_status_tcp( IEC104_SERVICE_SRV_TCP *iec104_srv_tcp );
|
|||
|
// int iec104_service_srv_check_status_serial( IEC104_SERVICE_SRV_SERIAL *iec104_srv_serial );
|
|||
|
// int iec104_service_srv_check_status_can( IEC104_SERVICE_SRV_CAN *iec104_srv_can );
|
|||
|
|
|||
|
|
|||
|
/*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>I֡<49><D6A1><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>Ϣ(ti<74><69>ǰ)<29><>У<EFBFBD><D0A3><EFBFBD>롢<EFBFBD><EBA1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ***/
|
|||
|
/*** <20><><EFBFBD><EFBFBD>linkIndex=-1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD> ***/
|
|||
|
/*** asduLen<65>ǰ<EFBFBD><C7B0><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵı<DAB5><C4B1><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD> ***/
|
|||
|
int iec104_service_srv_asdu_send_tcp(IEC104_SERVICE_SRV_TCP *iec104_srv_tcp, int linkIndex,
|
|||
|
unsigned char *asdu, int asduLen, IEC104_I_ASDU_TYPE type );
|
|||
|
// int iec104_service_srv_asdu_send_serial(IEC104_SERVICE_SRV_SERIAL *iec104_srv_serial, int linkIndex,
|
|||
|
// unsigned char *asdu, int asduLen, IEC104_I_ASDU_TYPE type );
|
|||
|
// int iec104_service_srv_asdu_send_can(IEC104_SERVICE_SRV_CAN *iec104_srv_can, int linkIndex,
|
|||
|
// unsigned char *asdu, int asduLen, IEC104_I_ASDU_TYPE type );
|
|||
|
|
|||
|
/************************************************************************/
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|