/* * mms_server_connection.h * * Copyright 2013 Michael Zillgith * * This file is part of libIEC61850. * * libIEC61850 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * libIEC61850 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with libIEC61850. If not, see . * * See COPYING file for the complete license text. */ /** * A MmsServerConnection object is responsible for handling a client connection. */ #ifndef MMS_SERVER_CONNECTION_H_ #define MMS_SERVER_CONNECTION_H_ #include "libiec61850_platform_includes.h" #include "mms_common.h" #include "mms_indication.h" #include "mms_device_model.h" #include "mms_value.h" #include "mms_server.h" #include "iso_server.h" #include "linked_list.h" #include "byte_buffer.h" #ifdef __cplusplus extern "C" { #endif MmsServerConnection MmsServerConnection_init(MmsServerConnection connection, MmsServer server, IsoConnection isoCon); void MmsServerConnection_destroy(MmsServerConnection connection); bool MmsServerConnection_addNamedVariableList(MmsServerConnection self, MmsNamedVariableList variableList); MmsNamedVariableList MmsServerConnection_getNamedVariableList(MmsServerConnection self, const char* variableListName); LinkedList MmsServerConnection_getNamedVariableLists(MmsServerConnection self); void MmsServerConnection_deleteNamedVariableList(MmsServerConnection self, char* listName); MmsIndication MmsServerConnection_parseMessage(MmsServerConnection connection, ByteBuffer* message, ByteBuffer* response); /** \brief send information report for a single VMD specific variable * * \param handlerMode send this message in the context of a stack callback handler */ void MmsServerConnection_sendInformationReportSingleVariableVMDSpecific(MmsServerConnection self, char* itemId, MmsValue* value, bool handlerMode); /** \brief send information report for a VMD specific named variable list * * \param handlerMode send this message in the context of a stack callback handler */ void /* send information report for a VMD specific named variable list */ MmsServerConnection_sendInformationReportVMDSpecific(MmsServerConnection self, char* itemId, LinkedList values , bool handlerMode); /** \brief send information report for list of variables * * \param handlerMode send this message in the context of a stack callback handler */ void MmsServerConnection_sendInformationReportListOfVariables( MmsServerConnection self, LinkedList /* MmsVariableAccessSpecification */ variableAccessDeclarations, LinkedList /* MmsValue */ values, bool handlerMode ); void MmsServerConnection_sendWriteResponse(MmsServerConnection self, uint32_t invokeId, MmsDataAccessError indication, bool handlerMode); uint32_t MmsServerConnection_getLastInvokeId(MmsServerConnection self); uint32_t MmsServerConnection_getNextRequestInvokeId(MmsServerConnection self); const char* MmsServerConnection_getFilesystemBasepath(MmsServerConnection self); #ifdef __cplusplus } #endif #endif /* MMS_SERVER_CONNECTION_H_ */