54 lines
2.4 KiB
C
54 lines
2.4 KiB
C
/* 共用发送入口只做接口分派;101/104分别提供其实际处理函数。 */
|
|
#include "IEC60870_Slave.h"
|
|
|
|
/**
|
|
* 功能:将普通ASDU发送请求分派给对应协议。
|
|
* 输入参数:self——连接接口;asdu——待提交ASDU。
|
|
* 输出参数:由接入实现记录提交结果。
|
|
* 返回值:接入函数的布尔结果;连接或函数指针为空时返回false。
|
|
* 说明:ASDU合法性由接入实现检查,便于同一次调用记录准确的失败原因。
|
|
*/
|
|
bool IEC60870_MasterConnection_Send_ASDU(IEC60870_MasterConnection_t *self, IEC60870_Asdu_t *asdu)
|
|
{
|
|
return self != NULL && self->send_asdu != NULL && self->send_asdu(self, asdu);
|
|
}
|
|
|
|
/**
|
|
* 功能:将激活确认请求分派给对应协议。
|
|
* 输入参数:self——连接接口;asdu——可修改ASDU;negative——否定标志。
|
|
* 输出参数:由接入实现修改ASDU并记录提交结果。
|
|
* 返回值:接入函数的布尔结果;连接或函数指针为空时返回false。
|
|
* 说明:共用入口不依赖TCP或串口,不保存请求或执行重试。
|
|
*/
|
|
bool IEC60870_MasterConnection_Send_ACT_CON(IEC60870_MasterConnection_t *self,
|
|
IEC60870_Asdu_t *asdu, bool negative)
|
|
{
|
|
return self != NULL && self->send_act_con != NULL && self->send_act_con(self, asdu, negative);
|
|
}
|
|
|
|
/**
|
|
* 功能:将激活终止请求分派给对应协议。
|
|
* 输入参数:self——连接接口;asdu——可修改ASDU。
|
|
* 输出参数:由接入实现修改ASDU并记录提交结果。
|
|
* 返回值:接入函数的布尔结果;连接或函数指针为空时返回false。
|
|
* 说明:本入口不判断业务是否完成,调用时机由业务决定。
|
|
*/
|
|
bool IEC60870_MasterConnection_Send_ACT_TERM(IEC60870_MasterConnection_t *self, IEC60870_Asdu_t *asdu)
|
|
{
|
|
return self != NULL && self->send_act_term != NULL && self->send_act_term(self, asdu);
|
|
}
|
|
|
|
/**
|
|
* 功能:通过协议接入获取应用层参数。
|
|
* 输入参数:self——连接接口。
|
|
* 输出参数:无。
|
|
* 返回值:接入提供的只读参数指针;连接或函数指针为空时返回NULL。
|
|
* 说明:不创建默认参数,不改变连接状态,也不延长参数的生命周期。
|
|
*/
|
|
const IEC60870_AppLayerParameters_t *IEC60870_MasterConnection_Get_Application_Layer_Parameters(
|
|
IEC60870_MasterConnection_t *self)
|
|
{
|
|
if (self == NULL || self->get_application_layer_parameters == NULL) { return NULL; }
|
|
return self->get_application_layer_parameters(self);
|
|
}
|