Files
STM32F4-Base/IEC60870-Slave/common/IEC60870_Slave.c
T
STF 4c55544f05
CI / L0 静态门禁 (pre-commit) (push) Failing after 45s
CI / L0.5 主机侧单测 (MSVC) (push) Failing after 42s
通信协议代码
2026-10-26 08:31:48 -04:00

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);
}