libIEC61850
Open-source IEC 61850 MMS server and client library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
server_api_v2.h
Go to the documentation of this file.
1 /*
2  * server_api_v2.h
3  *
4  * IEC 61850 server API for libiec61850.
5  *
6  * Copyright 2013 Michael Zillgith
7  *
8  * This file is part of libIEC61850.
9  *
10  * libIEC61850 is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * libIEC61850 is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
22  *
23  * See COPYING file for the complete license text.
24  *
25  * Description:
26  *
27  * The user of this API has to handle MMS values directly. It provides no additional
28  * abstraction layer on top of the MMS layer. Therefore it is not intended to implement
29  * a generic IEC 61850 server. But an IEC 61850 compliant MMS server can be implemented
30  * easily with this API.
31  * This API is intended to be used on embedded devices that should not be burdened with an
32  * additional data modeling and data handling layer.
33  *
34  * This API provides two different usage patterns that can also be combined in a single
35  * application:
36  *
37  * Option 1: The user can provide callbacks for MMS server read and write operations.
38  * Every time a client requests a value a callback will be invoked and the appropriate
39  * value has to be provided by the application.
40  *
41  * Option 2: The MMS server can handle all read and write operations autonomously without
42  * invoking any application callbacks. The application can provide updated process values
43  * by pushing them periodically or on demand to the MMS server.
44  *
45  */
46 
47 #ifndef IED_SERVER_API_V2_H_
48 #define IED_SERVER_API_V2_H_
49 
54 #include "mms_server.h"
55 #include "model.h"
56 
57 typedef struct sIedServer* IedServer;
58 
67 IedServer_create(IedModel* iedModel);
68 
74 void
76 
83 void
84 IedServer_start(IedServer self, int tcpPort);
85 
91 void
93 
101 bool
103 
114 MmsValue*
115 IedServer_getAttributeValue(IedServer self, ModelNode* node);
116 
117 
132 void
133 IedServer_updateAttributeValue(IedServer self, DataAttribute* node, MmsValue* value);
134 
142 typedef bool (*ControlHandler) (void* parameter, MmsValue* ctlVal);
143 
157 void
158 IedServer_setControlHandler(IedServer self, DataObject* node, ControlHandler handler, void* parameter);
159 
165 void
167 
173 void
175 
176 
179 #endif /* IED_SERVER_API_V2_H_ */