/* 共用发送入口只做接口分派;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); }