libiec61850  1.6.0
iec61850_server.h
Go to the documentation of this file.
1 /*
2  * iec61850_server.h
3  *
4  * IEC 61850 server API for libiec61850.
5  *
6  * Copyright 2013-2024 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  */
26 
27 #ifndef IED_SERVER_API_H_
28 #define IED_SERVER_API_H_
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
43 #include "mms_server.h"
44 #include "iec61850_dynamic_model.h"
45 #include "iec61850_model.h"
46 #include "hal_filesystem.h"
49 
59 #define IEC61850_REPORTSETTINGS_RPT_ID 1
60 #define IEC61850_REPORTSETTINGS_BUF_TIME 2
61 #define IEC61850_REPORTSETTINGS_DATSET 4
62 #define IEC61850_REPORTSETTINGS_TRG_OPS 8
63 #define IEC61850_REPORTSETTINGS_OPT_FIELDS 16
64 #define IEC61850_REPORTSETTINGS_INTG_PD 32
65 
69 typedef struct sIedServerConfig* IedServerConfig;
70 
72 {
75 
78 
81 
84 
87 
90 
93 
96 
99 
102 
104  uint8_t edition;
105 
108 
111 
114 
117 
120 
123 
126 };
127 
133 LIB61850_API IedServerConfig
135 
139 LIB61850_API void
140 IedServerConfig_destroy(IedServerConfig self);
141 
147 LIB61850_API void
148 IedServerConfig_setEdition(IedServerConfig self, uint8_t edition);
149 
155 LIB61850_API uint8_t
156 IedServerConfig_getEdition(IedServerConfig self);
157 
163 LIB61850_API void
164 IedServerConfig_setReportBufferSize(IedServerConfig self, int reportBufferSize);
165 
171 LIB61850_API int
173 
179 LIB61850_API void
180 IedServerConfig_setReportBufferSizeForURCBs(IedServerConfig self, int reportBufferSize);
181 
187 LIB61850_API int
189 
198 LIB61850_API void
199 IedServerConfig_setMaxMmsConnections(IedServerConfig self, int maxConnections);
200 
206 LIB61850_API int
208 
218 LIB61850_API void
219 IedServerConfig_setSyncIntegrityReportTimes(IedServerConfig self, bool enable);
220 
230 LIB61850_API bool
232 
240 LIB61850_API void
241 IedServerConfig_setFileServiceBasePath(IedServerConfig self, const char* basepath);
242 
246 LIB61850_API const char*
248 
254 LIB61850_API void
255 IedServerConfig_enableFileService(IedServerConfig self, bool enable);
256 
262 LIB61850_API bool
264 
270 LIB61850_API void
271 IedServerConfig_enableDynamicDataSetService(IedServerConfig self, bool enable);
272 
278 LIB61850_API bool
280 
289 LIB61850_API void
290 IedServerConfig_setMaxAssociationSpecificDataSets(IedServerConfig self, int maxDataSets);
291 
297 LIB61850_API int
299 
305 LIB61850_API void
306 IedServerConfig_setMaxDomainSpecificDataSets(IedServerConfig self, int maxDataSets);
307 
313 LIB61850_API int
315 
325 LIB61850_API void
326 IedServerConfig_setMaxDataSetEntries(IedServerConfig self, int maxDataSetEntries);
327 
333 LIB61850_API int
335 
341 LIB61850_API void
342 IedServerConfig_enableLogService(IedServerConfig self, bool enable);
343 
352 LIB61850_API void
353 IedServerConfig_enableEditSG(IedServerConfig self, bool enable);
354 
362 LIB61850_API void
363 IedServerConfig_enableResvTmsForSGCB(IedServerConfig self, bool enable);
364 
370 LIB61850_API void
371 IedServerConfig_enableResvTmsForBRCB(IedServerConfig self, bool enable);
372 
378 LIB61850_API bool
380 
386 LIB61850_API void
387 IedServerConfig_enableOwnerForRCB(IedServerConfig self, bool enable);
388 
394 LIB61850_API bool
396 
404 LIB61850_API void
405 IedServerConfig_useIntegratedGoosePublisher(IedServerConfig self, bool enable);
406 
412 LIB61850_API bool
414 
423 LIB61850_API void
424 IedServerConfig_setReportSetting(IedServerConfig self, uint8_t setting, bool isDyn);
425 
433 LIB61850_API bool
434 IedServerConfig_getReportSetting(IedServerConfig self, uint8_t setting);
435 
449 typedef struct sIedServer* IedServer;
450 
454 typedef struct sClientConnection* ClientConnection;
455 
463 LIB61850_API IedServer
464 IedServer_create(IedModel* dataModel);
465 
474 LIB61850_API IedServer
475 IedServer_createWithTlsSupport(IedModel* dataModel, TLSConfiguration tlsConfiguration);
476 
484 LIB61850_API IedServer
485 IedServer_createWithConfig(IedModel* dataModel, TLSConfiguration tlsConfiguration, IedServerConfig serverConfiguration);
486 
492 LIB61850_API void
494 
505 LIB61850_API bool
506 IedServer_addAccessPoint(IedServer self, const char* ipAddr, int tcpPort, TLSConfiguration tlsConfiguration);
507 
514 LIB61850_API void
515 IedServer_setLocalIpAddress(IedServer self, const char* localIpAddress);
516 
527 LIB61850_API void
528 IedServer_setServerIdentity(IedServer self, const char* vendor, const char* model, const char* revision);
529 
540 LIB61850_API void
541 IedServer_setFilestoreBasepath(IedServer self, const char* basepath);
542 
552 LIB61850_API void
553 IedServer_setLogStorage(IedServer self, const char* logRef, LogStorage logStorage);
554 
561 LIB61850_API void
562 IedServer_start(IedServer self, int tcpPort);
563 
569 LIB61850_API void
571 
582 LIB61850_API void
584 
598 LIB61850_API int
599 IedServer_waitReady(IedServer self, unsigned int timeoutMs);
600 
610 LIB61850_API void
612 
621 LIB61850_API void
623 
629 LIB61850_API void
631 
639 LIB61850_API IedModel*
641 
649 LIB61850_API bool
651 
659 LIB61850_API int
661 
672 LIB61850_API MmsServer
674 
687 LIB61850_API void
689 
700 LIB61850_API void
702 
716 LIB61850_API void
717 IedServer_setGooseInterfaceId(IedServer self, const char* interfaceId);
718 
732 LIB61850_API void
733 IedServer_setGooseInterfaceIdEx(IedServer self, LogicalNode* ln, const char* gcbName, const char* interfaceId);
734 
748 LIB61850_API void
749 IedServer_useGooseVlanTag(IedServer self, LogicalNode* ln, const char* gcbName, bool useVlanTag);
750 
763 LIB61850_API void
764 IedServer_setTimeQuality(IedServer self, bool leapSecondKnown, bool clockFailure, bool clockNotSynchronized, int subsecondPrecision);
765 
788 LIB61850_API void
789 IedServer_setAuthenticator(IedServer self, AcseAuthenticator authenticator, void* authenticatorParameter);
790 
800 LIB61850_API const char*
802 
812 LIB61850_API const char*
814 
825 LIB61850_API void*
827 
837 typedef void (*IedConnectionIndicationHandler) (IedServer self, ClientConnection connection, bool connected, void* parameter);
838 
846 LIB61850_API void
848 
857 void
859 
883 LIB61850_API void
885 
894 LIB61850_API void
896 
909 LIB61850_API MmsValue*
910 IedServer_getAttributeValue(IedServer self, DataAttribute* dataAttribute);
911 
923 LIB61850_API bool
924 IedServer_getBooleanAttributeValue(IedServer self, const DataAttribute* dataAttribute);
925 
937 LIB61850_API int32_t
938 IedServer_getInt32AttributeValue(IedServer self, const DataAttribute* dataAttribute);
939 
951 LIB61850_API int64_t
952 IedServer_getInt64AttributeValue(IedServer self, const DataAttribute* dataAttribute);
953 
965 LIB61850_API uint32_t
966 IedServer_getUInt32AttributeValue(IedServer self, const DataAttribute* dataAttribute);
967 
979 LIB61850_API float
980 IedServer_getFloatAttributeValue(IedServer self, const DataAttribute* dataAttribute);
981 
993 LIB61850_API uint64_t
994 IedServer_getUTCTimeAttributeValue(IedServer self, const DataAttribute* dataAttribute);
995 
1011 LIB61850_API uint32_t
1012 IedServer_getBitStringAttributeValue(IedServer self, const DataAttribute* dataAttribute);
1013 
1025 LIB61850_API const char*
1026 IedServer_getStringAttributeValue(IedServer self, const DataAttribute* dataAttribute);
1027 
1043 LIB61850_API MmsValue*
1045 
1062 LIB61850_API void
1063 IedServer_updateAttributeValue(IedServer self, DataAttribute* dataAttribute, MmsValue* value);
1064 
1077 LIB61850_API void
1078 IedServer_updateFloatAttributeValue(IedServer self, DataAttribute* dataAttribute, float value);
1079 
1092 LIB61850_API void
1093 IedServer_updateInt32AttributeValue(IedServer self, DataAttribute* dataAttribute, int32_t value);
1094 
1107 LIB61850_API void
1108 IedServer_updateDbposValue(IedServer self, DataAttribute* dataAttribute, Dbpos value);
1109 
1122 LIB61850_API void
1123 IedServer_updateInt64AttributeValue(IedServer self, DataAttribute* dataAttribute, int64_t value);
1124 
1137 LIB61850_API void
1138 IedServer_updateUnsignedAttributeValue(IedServer self, DataAttribute* dataAttribute, uint32_t value);
1139 
1152 LIB61850_API void
1153 IedServer_updateBitStringAttributeValue(IedServer self, DataAttribute* dataAttribute, uint32_t value);
1154 
1167 LIB61850_API void
1168 IedServer_updateBooleanAttributeValue(IedServer self, DataAttribute* dataAttribute, bool value);
1169 
1182 LIB61850_API void
1183 IedServer_updateVisibleStringAttributeValue(IedServer self, DataAttribute* dataAttribute, char *value);
1184 
1197 LIB61850_API void
1198 IedServer_updateUTCTimeAttributeValue(IedServer self, DataAttribute* dataAttribute, uint64_t value);
1199 
1212 LIB61850_API void
1213 IedServer_updateTimestampAttributeValue(IedServer self, DataAttribute* dataAttribute, Timestamp* timestamp);
1214 
1229 LIB61850_API void
1230 IedServer_updateQuality(IedServer self, DataAttribute* dataAttribute, Quality quality);
1231 
1252 LIB61850_API void
1253 IedServer_changeActiveSettingGroup(IedServer self, SettingGroupControlBlock* sgcb, uint8_t newActiveSg);
1254 
1263 LIB61850_API uint8_t
1264 IedServer_getActiveSettingGroup(IedServer self, SettingGroupControlBlock* sgcb);
1265 
1281 typedef bool (*ActiveSettingGroupChangedHandler) (void* parameter, SettingGroupControlBlock* sgcb,
1282  uint8_t newActSg, ClientConnection connection);
1283 
1292 LIB61850_API void
1293 IedServer_setActiveSettingGroupChangedHandler(IedServer self, SettingGroupControlBlock* sgcb,
1294  ActiveSettingGroupChangedHandler handler, void* parameter);
1295 
1313 typedef bool (*EditSettingGroupChangedHandler) (void* parameter, SettingGroupControlBlock* sgcb,
1314  uint8_t newEditSg, ClientConnection connection);
1315 
1324 LIB61850_API void
1325 IedServer_setEditSettingGroupChangedHandler(IedServer self, SettingGroupControlBlock* sgcb,
1326  EditSettingGroupChangedHandler handler, void* parameter);
1327 
1337 typedef void (*EditSettingGroupConfirmationHandler) (void* parameter, SettingGroupControlBlock* sgcb,
1338  uint8_t editSg);
1339 
1348 LIB61850_API void
1350  EditSettingGroupConfirmationHandler handler, void* parameter);
1351 
1365 typedef enum {
1372  CONTROL_VALUE_INVALID = 11
1374 
1378 typedef enum {
1383 
1384 typedef void* ControlAction;
1385 
1392 LIB61850_API void
1394 
1401 LIB61850_API void
1403 
1411 LIB61850_API int
1413 
1421 LIB61850_API uint8_t*
1422 ControlAction_getOrIdent(ControlAction self, int* orIdentSize);
1423 
1431 LIB61850_API int
1433 
1441 LIB61850_API bool
1443 
1451 LIB61850_API bool
1453 
1461 LIB61850_API bool
1463 
1471 LIB61850_API ClientConnection
1473 
1481 LIB61850_API DataObject*
1483 
1491 LIB61850_API uint64_t
1493 
1501 LIB61850_API Timestamp*
1503 
1524 typedef CheckHandlerResult (*ControlPerformCheckHandler) (ControlAction action, void* parameter, MmsValue* ctlVal, bool test, bool interlockCheck);
1525 
1549 typedef ControlHandlerResult (*ControlWaitForExecutionHandler) (ControlAction action, void* parameter, MmsValue* ctlVal, bool test, bool synchroCheck);
1550 
1572 typedef ControlHandlerResult (*ControlHandler) (ControlAction action, void* parameter, MmsValue* ctlVal, bool test);
1573 
1577 typedef enum {
1585 
1596 typedef void (*ControlSelectStateChangedHandler) (ControlAction action, void* parameter, bool isSelected, SelectStateChangedReason reason);
1597 
1611 LIB61850_API void
1612 IedServer_setControlHandler(IedServer self, DataObject* node, ControlHandler handler, void* parameter);
1613 
1628 LIB61850_API void
1629 IedServer_setPerformCheckHandler(IedServer self, DataObject* node, ControlPerformCheckHandler handler, void* parameter);
1630 
1645 LIB61850_API void
1646 IedServer_setWaitForExecutionHandler(IedServer self, DataObject* node, ControlWaitForExecutionHandler handler, void* parameter);
1647 
1648 
1664 LIB61850_API void
1666 
1677 LIB61850_API void
1678 IedServer_updateCtlModel(IedServer self, DataObject* ctlObject, ControlModel value);
1679 
1690 typedef enum {
1691  RCB_EVENT_GET_PARAMETER, /* << parameter read by client (not implemented) */
1692  RCB_EVENT_SET_PARAMETER, /* << parameter set by client */
1693  RCB_EVENT_UNRESERVED, /* << RCB reservation canceled */
1694  RCB_EVENT_RESERVED, /* << RCB reserved */
1695  RCB_EVENT_ENABLE, /* << RCB enabled */
1696  RCB_EVENT_DISABLE, /* << RCB disabled */
1697  RCB_EVENT_GI, /* << GI report triggered */
1698  RCB_EVENT_PURGEBUF, /* << Purge buffer procedure executed */
1699  RCB_EVENT_OVERFLOW, /* << Report buffer overflow */
1700  RCB_EVENT_REPORT_CREATED /* << A new report was created and inserted into the buffer */
1702 
1713 typedef void (*IedServer_RCBEventHandler) (void* parameter, ReportControlBlock* rcb, ClientConnection connection, IedServer_RCBEventType event, const char* parameterName, MmsDataAccessError serviceError);
1714 
1722 LIB61850_API void
1724 
1736 #define IEC61850_SVCB_EVENT_ENABLE 1
1737 
1739 #define IEC61850_SVCB_EVENT_DISABLE 0
1740 
1748 typedef void (*SVCBEventHandler) (SVControlBlock* svcb, int event, void* parameter);
1749 
1758 LIB61850_API void
1759 IedServer_setSVCBHandler(IedServer self, SVControlBlock* svcb, SVCBEventHandler handler, void* parameter);
1760 
1771 typedef struct sMmsGooseControlBlock* MmsGooseControlBlock;
1772 
1774 #define IEC61850_GOCB_EVENT_ENABLE 1
1775 
1777 #define IEC61850_GOCB_EVENT_DISABLE 0
1778 
1779 typedef void (*GoCBEventHandler) (MmsGooseControlBlock goCb, int event, void* parameter);
1780 
1791 LIB61850_API void
1792 IedServer_setGoCBHandler(IedServer self, GoCBEventHandler handler, void* parameter);
1793 
1794 LIB61850_API char*
1796 
1797 LIB61850_API LogicalNode*
1799 
1800 LIB61850_API DataSet*
1802 
1803 LIB61850_API bool
1805 
1806 LIB61850_API int
1808 
1809 LIB61850_API int
1811 
1812 LIB61850_API bool
1814 
1815 LIB61850_API bool
1817 
1832 /***************************************************************************
1833  * Access control
1834  **************************************************************************/
1835 
1859 (*WriteAccessHandler) (DataAttribute* dataAttribute, MmsValue* value, ClientConnection connection, void* parameter);
1860 
1880 LIB61850_API void
1881 IedServer_handleWriteAccess(IedServer self, DataAttribute* dataAttribute,
1882  WriteAccessHandler handler, void* parameter);
1883 
1903 LIB61850_API void
1905  WriteAccessHandler handler, void* parameter);
1906 
1917 LIB61850_API void
1918 IedServer_handleWriteAccessForDataObject(IedServer self, DataObject* dataObject, FunctionalConstraint fc, WriteAccessHandler handler, void* parameter);
1919 
1920 typedef enum {
1924 
1933 LIB61850_API void
1935 
1953 (*ReadAccessHandler) (LogicalDevice* ld, LogicalNode* ln, DataObject* dataObject, FunctionalConstraint fc, ClientConnection connection, void* parameter);
1954 
1964 LIB61850_API void
1966 
1967 typedef enum {
1974 
1986 typedef bool
1987 (*IedServer_DataSetAccessHandler) (void* parameter, ClientConnection connection, IedServer_DataSetOperation operation, const char* datasetRef);
1988 
1995 LIB61850_API void
1997 
1998 typedef enum {
2004 
2005 typedef bool
2006 (*IedServer_DirectoryAccessHandler) (void* parameter, ClientConnection connection, IedServer_DirectoryCategory category, LogicalDevice* logicalDevice);
2007 
2008 LIB61850_API void
2010 
2027 typedef bool
2028 (*IedServer_ListObjectsAccessHandler)(void* parameter, ClientConnection connection, ACSIClass acsiClass, LogicalDevice* ld, LogicalNode* ln, const char* objectName, const char* subObjectName, FunctionalConstraint fc);
2029 
2036 LIB61850_API void
2038 
2039 typedef enum {
2043 
2060 typedef bool
2061 (*IedServer_ControlBlockAccessHandler)(void* parameter, ClientConnection connection, ACSIClass acsiClass, LogicalDevice* ld, LogicalNode* ln, const char* objectName, const char* subObjectName, IedServer_ControlBlockAccessType accessType);
2062 
2069 LIB61850_API void
2071 
2078 LIB61850_API void
2080 
2085 #ifdef __cplusplus
2086 }
2087 #endif
2088 
2089 #endif /* IED_SERVER_API_H_ */
ControlAddCause
Definition: iec61850_common.h:205
ControlLastApplError
Definition: iec61850_common.h:244
Dbpos
Definition: iec61850_common.h:380
FunctionalConstraint
Definition: iec61850_common.h:260
LIB61850_API int IedServerConfig_getMaxMmsConnections(IedServerConfig self)
Get the maximum number of MMS (TCP) connections the server accepts.
LIB61850_API void IedServerConfig_enableEditSG(IedServerConfig self, bool enable)
Enable/disable the EditSG service to allow clients to change setting groups (default is enabled)
LIB61850_API bool IedServerConfig_isOwnerForRCBEnabled(IedServerConfig self)
Owner for RCBs enabled (visible)
LIB61850_API void IedServerConfig_enableResvTmsForBRCB(IedServerConfig self, bool enable)
Enable/disable the presence of BRCB.ResvTms (default value is true)
LIB61850_API void IedServerConfig_setMaxDomainSpecificDataSets(IedServerConfig self, int maxDataSets)
Set the maximum allowed number of domain specific (permanent) data sets.
LIB61850_API void IedServerConfig_setReportBufferSize(IedServerConfig self, int reportBufferSize)
Set the report buffer size for buffered reporting.
LIB61850_API bool IedServerConfig_getReportSetting(IedServerConfig self, uint8_t setting)
Check if a configurable report setting is writable or read-only.
LIB61850_API void IedServerConfig_destroy(IedServerConfig self)
Destroy the configuration object.
LIB61850_API int IedServerConfig_getReportBufferSize(IedServerConfig self)
Gets the report buffer size for buffered reporting.
LIB61850_API int IedServerConfig_getMaxAssociationSpecificDataSets(IedServerConfig self)
Get the maximum allowed number of association specific (non-permanent) data sets.
LIB61850_API IedServerConfig IedServerConfig_create(void)
Create a new configuration object.
LIB61850_API const char * IedServerConfig_getFileServiceBasePath(IedServerConfig self)
Get the basepath of the file services.
LIB61850_API void IedServerConfig_useIntegratedGoosePublisher(IedServerConfig self, bool enable)
Enable/disable using the integrated GOOSE publisher for configured GoCBs.
LIB61850_API int IedServerConfig_getReportBufferSizeForURCBs(IedServerConfig self)
Gets the report buffer size for unbuffered reporting.
LIB61850_API bool IedServerConfig_getSyncIntegrityReportTimes(IedServerConfig self)
Check if synchronized integrity report times are enabled.
LIB61850_API int IedServerConfig_getMaxDomainSpecificDataSets(IedServerConfig self)
Get the maximum allowed number of domain specific (permanent) data sets.
LIB61850_API void IedServerConfig_setEdition(IedServerConfig self, uint8_t edition)
Set the IEC 61850 standard edition to use (default is edition 2)
LIB61850_API bool IedServerConfig_isResvTmsForBRCBEnabled(IedServerConfig self)
ResvTms for BRCB enabled (visible)
LIB61850_API void IedServerConfig_setMaxMmsConnections(IedServerConfig self, int maxConnections)
Set the maximum number of MMS (TCP) connections the server accepts.
LIB61850_API bool IedServerConfig_isDynamicDataSetServiceEnabled(IedServerConfig self)
Is the dynamic data set service for MMS enabled or disabled.
LIB61850_API void IedServerConfig_enableOwnerForRCB(IedServerConfig self, bool enable)
Enable/disable the presence of owner in report control blocks (default value is false);.
LIB61850_API void IedServerConfig_setReportBufferSizeForURCBs(IedServerConfig self, int reportBufferSize)
Set the report buffer size for unbuffered reporting.
LIB61850_API void IedServerConfig_setSyncIntegrityReportTimes(IedServerConfig self, bool enable)
Enable synchronized integrity report times.
LIB61850_API bool IedServerConfig_isFileServiceEnabled(IedServerConfig self)
Is the MMS file service enabled or disabled.
LIB61850_API uint8_t IedServerConfig_getEdition(IedServerConfig self)
Get the configued IEC 61850 standard edition.
LIB61850_API void IedServerConfig_enableLogService(IedServerConfig self, bool enable)
Enable/disable the log service for MMS.
LIB61850_API void IedServerConfig_enableFileService(IedServerConfig self, bool enable)
Enable/disable the MMS file service support.
LIB61850_API bool IedServerConfig_isLogServiceEnabled(IedServerConfig self)
Is the log service for MMS enabled or disabled.
LIB61850_API int IedServerConfig_getMaxDatasSetEntries(IedServerConfig self)
Get the maximum number of entries in dynamic data sets.
LIB61850_API void IedServerConfig_setFileServiceBasePath(IedServerConfig self, const char *basepath)
Set the basepath of the file services.
LIB61850_API void IedServerConfig_enableResvTmsForSGCB(IedServerConfig self, bool enable)
Enable/disable the SGCB.ResvTms when EditSG is enabled.
LIB61850_API void IedServerConfig_setMaxDataSetEntries(IedServerConfig self, int maxDataSetEntries)
Set the maximum number of entries in dynamic data sets.
LIB61850_API void IedServerConfig_setMaxAssociationSpecificDataSets(IedServerConfig self, int maxDataSets)
Set the maximum allowed number of association specific (non-permanent) data sets.
LIB61850_API void IedServerConfig_setReportSetting(IedServerConfig self, uint8_t setting, bool isDyn)
Make a configurable report setting writeable or read-only.
LIB61850_API void IedServerConfig_enableDynamicDataSetService(IedServerConfig self, bool enable)
Enable/disable the dynamic data set service for MMS.
LIB61850_API const char * ClientConnection_getPeerAddress(ClientConnection self)
get the peer address of this connection as string
LIB61850_API const char * ClientConnection_getLocalAddress(ClientConnection self)
get the local address of this connection as string
void IedServer_ignoreClientRequests(IedServer self, bool enable)
Ignore all requests from clients (for testing purposes)
void(* IedConnectionIndicationHandler)(IedServer self, ClientConnection connection, bool connected, void *parameter)
User provided callback function that is invoked whenever a new client connects or an existing connect...
Definition: iec61850_server.h:837
LIB61850_API void IedServer_setConnectionIndicationHandler(IedServer self, IedConnectionIndicationHandler handler, void *parameter)
set a callback function that will be called on connection events (open or close).
LIB61850_API void IedServer_setAuthenticator(IedServer self, AcseAuthenticator authenticator, void *authenticatorParameter)
set the authenticator for this server
LIB61850_API void * ClientConnection_getSecurityToken(ClientConnection self)
Get the security token associated with this connection.
LIB61850_API void IedServer_setControlHandler(IedServer self, DataObject *node, ControlHandler handler, void *parameter)
Set control handler for controllable data object.
LIB61850_API void IedServer_setSelectStateChangedHandler(IedServer self, DataObject *node, ControlSelectStateChangedHandler handler, void *parameter)
Set a callback handler for a controllable data object to track select state changes.
ControlHandlerResult(* ControlHandler)(ControlAction action, void *parameter, MmsValue *ctlVal, bool test)
Control model callback to actually perform the control operation.
Definition: iec61850_server.h:1572
ControlHandlerResult
result codes for control handler (ControlWaitForExecutionHandler and ControlHandler)
Definition: iec61850_server.h:1378
LIB61850_API void IedServer_updateCtlModel(IedServer self, DataObject *ctlObject, ControlModel value)
Update the control model for the specified controllable data object with the given value and update "...
ControlHandlerResult(* ControlWaitForExecutionHandler)(ControlAction action, void *parameter, MmsValue *ctlVal, bool test, bool synchroCheck)
Control model callback to perform the dynamic tests (optional).
Definition: iec61850_server.h:1549
LIB61850_API void IedServer_setPerformCheckHandler(IedServer self, DataObject *node, ControlPerformCheckHandler handler, void *parameter)
Set a handler for a controllable data object to perform operative tests.
LIB61850_API DataObject * ControlAction_getControlObject(ControlAction self)
Gets the control object that is subject to this action.
LIB61850_API ClientConnection ControlAction_getClientConnection(ControlAction self)
Gets the client object associated with the client that caused the control action.
LIB61850_API bool ControlAction_getSynchroCheck(ControlAction self)
Gets the synchroCheck bit provided by the client.
void(* ControlSelectStateChangedHandler)(ControlAction action, void *parameter, bool isSelected, SelectStateChangedReason reason)
Control model callback that is called when the select state of a control changes.
Definition: iec61850_server.h:1596
LIB61850_API int ControlAction_getOrCat(ControlAction self)
Gets the originator category provided by the client.
LIB61850_API Timestamp * ControlAction_getT(ControlAction self)
Gets the time (attribute "T") of the last received control action (Oper or Select)
CheckHandlerResult(* ControlPerformCheckHandler)(ControlAction action, void *parameter, MmsValue *ctlVal, bool test, bool interlockCheck)
Control model callback to perform the static tests (optional).
Definition: iec61850_server.h:1524
void * ControlAction
Definition: iec61850_server.h:1384
LIB61850_API bool ControlAction_isSelect(ControlAction self)
Check if the control callback is called by a select or operate command.
LIB61850_API uint8_t * ControlAction_getOrIdent(ControlAction self, int *orIdentSize)
Gets the originator identifier provided by the client.
LIB61850_API void ControlAction_setError(ControlAction self, ControlLastApplError error)
Sets the error code for the next command termination or application error message.
LIB61850_API int ControlAction_getCtlNum(ControlAction self)
Get the ctlNum attribute send by the client.
LIB61850_API uint64_t ControlAction_getControlTime(ControlAction self)
Gets the time of the control (attribute "operTm"), if it's a timeActivatedControl,...
LIB61850_API bool ControlAction_getInterlockCheck(ControlAction self)
Gets the interlockCheck bit provided by the client.
CheckHandlerResult
result code for ControlPerformCheckHandler
Definition: iec61850_server.h:1365
SelectStateChangedReason
Reason why a select state of a control object changed.
Definition: iec61850_server.h:1577
LIB61850_API void IedServer_setWaitForExecutionHandler(IedServer self, DataObject *node, ControlWaitForExecutionHandler handler, void *parameter)
Set a handler for a controllable data object to perform dynamic tests.
LIB61850_API void ControlAction_setAddCause(ControlAction self, ControlAddCause addCause)
Sets the add cause for the next command termination or application error message.
@ CONTROL_RESULT_FAILED
Definition: iec61850_server.h:1379
@ CONTROL_RESULT_OK
Definition: iec61850_server.h:1380
@ CONTROL_RESULT_WAITING
Definition: iec61850_server.h:1381
@ CONTROL_TEMPORARILY_UNAVAILABLE
Definition: iec61850_server.h:1369
@ CONTROL_HARDWARE_FAULT
Definition: iec61850_server.h:1368
@ CONTROL_OBJECT_UNDEFINED
Definition: iec61850_server.h:1371
@ CONTROL_ACCEPTED
Definition: iec61850_server.h:1366
@ CONTROL_VALUE_INVALID
Definition: iec61850_server.h:1372
@ CONTROL_OBJECT_ACCESS_DENIED
Definition: iec61850_server.h:1370
@ CONTROL_WAITING_FOR_SELECT
Definition: iec61850_server.h:1367
@ SELECT_STATE_REASON_DISCONNECTED
Definition: iec61850_server.h:1583
@ SELECT_STATE_REASON_TIMEOUT
Definition: iec61850_server.h:1580
@ SELECT_STATE_REASON_CANCELED
Definition: iec61850_server.h:1579
@ SELECT_STATE_REASON_SELECTED
Definition: iec61850_server.h:1578
@ SELECT_STATE_REASON_OPERATE_FAILED
Definition: iec61850_server.h:1582
@ SELECT_STATE_REASON_OPERATED
Definition: iec61850_server.h:1581
LIB61850_API void IedServer_lockDataModel(IedServer self)
Lock the data model for data update.
LIB61850_API MmsValue * IedServer_getAttributeValue(IedServer self, DataAttribute *dataAttribute)
Get data attribute value.
LIB61850_API void IedServer_updateInt64AttributeValue(IedServer self, DataAttribute *dataAttribute, int64_t value)
Update the value of an IEC 61850 integer64 data attribute (like BCR actVal)
LIB61850_API void IedServer_updateAttributeValue(IedServer self, DataAttribute *dataAttribute, MmsValue *value)
Update the MmsValue object of an IEC 61850 data attribute.
LIB61850_API MmsValue * IedServer_getFunctionalConstrainedData(IedServer self, DataObject *dataObject, FunctionalConstraint fc)
Get the MmsValue object related to a functional constrained data object (FCD)
LIB61850_API void IedServer_updateUnsignedAttributeValue(IedServer self, DataAttribute *dataAttribute, uint32_t value)
Update the value of an IEC 61850 unsigned integer data attribute.
LIB61850_API void IedServer_updateTimestampAttributeValue(IedServer self, DataAttribute *dataAttribute, Timestamp *timestamp)
Update the value of an IEC 61850 UTC time (timestamp) data attribute.
LIB61850_API uint32_t IedServer_getBitStringAttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of a bit string data attribute as integer value.
LIB61850_API void IedServer_updateFloatAttributeValue(IedServer self, DataAttribute *dataAttribute, float value)
Update the value of an IEC 61850 float data attribute.
LIB61850_API void IedServer_updateDbposValue(IedServer self, DataAttribute *dataAttribute, Dbpos value)
Update the value of an IEC 61850 Dbpos (double point/position) data attribute.
LIB61850_API void IedServer_updateBitStringAttributeValue(IedServer self, DataAttribute *dataAttribute, uint32_t value)
Update the value of an IEC 61850 bit string data attribute.
LIB61850_API int32_t IedServer_getInt32AttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of an integer data attribute.
LIB61850_API bool IedServer_getBooleanAttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of a boolean data attribute.
LIB61850_API uint32_t IedServer_getUInt32AttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of an unsigned integer data attribute.
LIB61850_API const char * IedServer_getStringAttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of a string type data attribute.
LIB61850_API int64_t IedServer_getInt64AttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of an integer data attribute.
LIB61850_API float IedServer_getFloatAttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of a floating point data attribute.
LIB61850_API void IedServer_updateBooleanAttributeValue(IedServer self, DataAttribute *dataAttribute, bool value)
Update the value of an IEC 61850 boolean data attribute.
LIB61850_API uint64_t IedServer_getUTCTimeAttributeValue(IedServer self, const DataAttribute *dataAttribute)
Get data attribute value of a UTC time data attribute.
LIB61850_API void IedServer_updateInt32AttributeValue(IedServer self, DataAttribute *dataAttribute, int32_t value)
Update the value of an IEC 61850 integer32 data attribute.
LIB61850_API void IedServer_updateQuality(IedServer self, DataAttribute *dataAttribute, Quality quality)
Update a quality ("q") IEC 61850 data attribute.
LIB61850_API void IedServer_updateUTCTimeAttributeValue(IedServer self, DataAttribute *dataAttribute, uint64_t value)
Update the value of an IEC 61850 UTC time (timestamp) data attribute.
LIB61850_API void IedServer_updateVisibleStringAttributeValue(IedServer self, DataAttribute *dataAttribute, char *value)
Update the value of an IEC 61850 visible string data attribute.
LIB61850_API void IedServer_unlockDataModel(IedServer self)
Unlock the data model and process pending client requests.
IedServer_ControlBlockAccessType
Definition: iec61850_server.h:2039
bool(* IedServer_ControlBlockAccessHandler)(void *parameter, ClientConnection connection, ACSIClass acsiClass, LogicalDevice *ld, LogicalNode *ln, const char *objectName, const char *subObjectName, IedServer_ControlBlockAccessType accessType)
Callback that is called when a client is invoking a read or write service to a control block or log.
Definition: iec61850_server.h:2061
LIB61850_API void IedServer_handleWriteAccessForDataObject(IedServer self, DataObject *dataObject, FunctionalConstraint fc, WriteAccessHandler handler, void *parameter)
Install a WriteAccessHandler for all data attributes of a data object with a specific FC.
IedServer_DirectoryCategory
Definition: iec61850_server.h:1998
LIB61850_API void IedServer_setDataSetAccessHandler(IedServer self, IedServer_DataSetAccessHandler handler, void *parameter)
Set a handler to control access to a dataset (create, delete, read, write, list directory)
LIB61850_API void IedServer_handleWriteAccessForComplexAttribute(IedServer self, DataAttribute *dataAttribute, WriteAccessHandler handler, void *parameter)
Install a WriteAccessHandler for a data attribute and for all sub data attributes.
MmsDataAccessError(* WriteAccessHandler)(DataAttribute *dataAttribute, MmsValue *value, ClientConnection connection, void *parameter)
callback handler to intercept/control client write access to data attributes
Definition: iec61850_server.h:1859
MmsDataAccessError(* ReadAccessHandler)(LogicalDevice *ld, LogicalNode *ln, DataObject *dataObject, FunctionalConstraint fc, ClientConnection connection, void *parameter)
callback handler to control client read access to data attributes
Definition: iec61850_server.h:1953
IedServer_DataSetOperation
Definition: iec61850_server.h:1967
LIB61850_API void IedServer_handleWriteAccess(IedServer self, DataAttribute *dataAttribute, WriteAccessHandler handler, void *parameter)
Install a WriteAccessHandler for a data attribute.
LIB61850_API void IedServer_setControlBlockAccessHandler(IedServer self, IedServer_ControlBlockAccessHandler handler, void *parameter)
Set a handler to control read and write access to control blocks and logs.
AccessPolicy
Definition: iec61850_server.h:1920
LIB61850_API void IedServer_ignoreReadAccess(IedServer self, bool ignore)
Temporarily ignore read requests (for testing purposes)
bool(* IedServer_DataSetAccessHandler)(void *parameter, ClientConnection connection, IedServer_DataSetOperation operation, const char *datasetRef)
Callback that is called when the client is calling a dataset operation (create, delete,...
Definition: iec61850_server.h:1987
bool(* IedServer_ListObjectsAccessHandler)(void *parameter, ClientConnection connection, ACSIClass acsiClass, LogicalDevice *ld, LogicalNode *ln, const char *objectName, const char *subObjectName, FunctionalConstraint fc)
Callback that is called when a client is invoking a list objects service.
Definition: iec61850_server.h:2028
LIB61850_API void IedServer_setReadAccessHandler(IedServer self, ReadAccessHandler handler, void *parameter)
Install the global read access handler.
LIB61850_API void IedServer_setListObjectsAccessHandler(IedServer self, IedServer_ListObjectsAccessHandler handler, void *parameter)
Set a handler to control which objects are return by the list objects services.
LIB61850_API void IedServer_setWriteAccessPolicy(IedServer self, FunctionalConstraint fc, AccessPolicy policy)
Change the default write access policy for functional constraint data with a specific FC.
LIB61850_API void IedServer_setDirectoryAccessHandler(IedServer self, IedServer_DirectoryAccessHandler handler, void *parameter)
bool(* IedServer_DirectoryAccessHandler)(void *parameter, ClientConnection connection, IedServer_DirectoryCategory category, LogicalDevice *logicalDevice)
Definition: iec61850_server.h:2006
@ IEC61850_CB_ACCESS_TYPE_READ
Definition: iec61850_server.h:2040
@ IEC61850_CB_ACCESS_TYPE_WRITE
Definition: iec61850_server.h:2041
@ DIRECTORY_CAT_LD_LIST
Definition: iec61850_server.h:1999
@ DIRECTORY_CAT_DATASET_LIST
Definition: iec61850_server.h:2001
@ DIRECTORY_CAT_LOG_LIST
Definition: iec61850_server.h:2002
@ DIRECTORY_CAT_DATA_LIST
Definition: iec61850_server.h:2000
@ DATASET_WRITE
Definition: iec61850_server.h:1971
@ DATASET_DELETE
Definition: iec61850_server.h:1969
@ DATASET_READ
Definition: iec61850_server.h:1970
@ DATASET_CREATE
Definition: iec61850_server.h:1968
@ DATASET_GET_DIRECTORY
Definition: iec61850_server.h:1972
@ ACCESS_POLICY_ALLOW
Definition: iec61850_server.h:1921
@ ACCESS_POLICY_DENY
Definition: iec61850_server.h:1922
struct sClientConnection * ClientConnection
Definition: iec61850_server.h:454
LIB61850_API void IedServer_stop(IedServer self)
Stop handling client connections.
LIB61850_API IedServer IedServer_createWithTlsSupport(IedModel *dataModel, TLSConfiguration tlsConfiguration)
Create a new IedServer with TLS support.
LIB61850_API IedModel * IedServer_getDataModel(IedServer self)
Return the data model of the server.
LIB61850_API void IedServer_start(IedServer self, int tcpPort)
Start handling client connections.
LIB61850_API int IedServer_getNumberOfOpenConnections(IedServer self)
Get number of open MMS connections.
LIB61850_API bool IedServer_addAccessPoint(IedServer self, const char *ipAddr, int tcpPort, TLSConfiguration tlsConfiguration)
Add a new local access point (server will listen to provided IP/port combination)
LIB61850_API void IedServer_setLocalIpAddress(IedServer self, const char *localIpAddress)
Set the local IP address to listen on.
LIB61850_API void IedServer_processIncomingData(IedServer self)
handle incoming TCP data in non-threaded mode
LIB61850_API void IedServer_setLogStorage(IedServer self, const char *logRef, LogStorage logStorage)
Assign a LogStorage instance to a log reference.
LIB61850_API void IedServer_destroy(IedServer self)
Destroy an IedServer instance and release all resources (memory, TCP sockets)
LIB61850_API void IedServer_setServerIdentity(IedServer self, const char *vendor, const char *model, const char *revision)
Set the identify for the MMS identify service.
LIB61850_API MmsServer IedServer_getMmsServer(IedServer self)
Get access to the underlying MmsServer instance.
LIB61850_API void IedServer_setTimeQuality(IedServer self, bool leapSecondKnown, bool clockFailure, bool clockNotSynchronized, int subsecondPrecision)
Set the time quality for all timestamps internally generated by this IedServer instance.
LIB61850_API void IedServer_stopThreadless(IedServer self)
Stop handling client connections for non-threaded mode.
LIB61850_API bool IedServer_isRunning(IedServer self)
Check if IedServer instance is listening for client connections.
LIB61850_API void IedServer_setGooseInterfaceIdEx(IedServer self, LogicalNode *ln, const char *gcbName, const char *interfaceId)
Set the Ethernet interface to be used by GOOSE publishing.
LIB61850_API IedServer IedServer_create(IedModel *dataModel)
Create a new IedServer instance.
LIB61850_API void IedServer_setGooseInterfaceId(IedServer self, const char *interfaceId)
Set the Ethernet interface to be used by GOOSE publishing.
LIB61850_API void IedServer_disableGoosePublishing(IedServer self)
Disable all GOOSE control blocks.
LIB61850_API void IedServer_enableGoosePublishing(IedServer self)
Enable all GOOSE control blocks.
LIB61850_API void IedServer_performPeriodicTasks(IedServer self)
perform periodic background tasks in non-threaded mode
LIB61850_API int IedServer_waitReady(IedServer self, unsigned int timeoutMs)
Wait until a server connection is ready (with timeout)
LIB61850_API void IedServer_useGooseVlanTag(IedServer self, LogicalNode *ln, const char *gcbName, bool useVlanTag)
Enable/disable the use of VLAN tags in GOOSE messages.
LIB61850_API IedServer IedServer_createWithConfig(IedModel *dataModel, TLSConfiguration tlsConfiguration, IedServerConfig serverConfiguration)
Create new new IedServer with extended configurations parameters.
LIB61850_API void IedServer_setFilestoreBasepath(IedServer self, const char *basepath)
Set the virtual filestore basepath for the MMS file services.
LIB61850_API void IedServer_startThreadless(IedServer self, int tcpPort)
Start handling client connection for non-threaded mode.
struct sIedServer * IedServer
Definition: iec61850_server.h:449
LIB61850_API int MmsGooseControlBlock_getMinTime(MmsGooseControlBlock self)
LIB61850_API char * MmsGooseControlBlock_getName(MmsGooseControlBlock self)
LIB61850_API bool MmsGooseControlBlock_getGoEna(MmsGooseControlBlock self)
struct sMmsGooseControlBlock * MmsGooseControlBlock
Definition: iec61850_server.h:1771
LIB61850_API LogicalNode * MmsGooseControlBlock_getLogicalNode(MmsGooseControlBlock self)
LIB61850_API int MmsGooseControlBlock_getMaxTime(MmsGooseControlBlock self)
LIB61850_API void IedServer_setGoCBHandler(IedServer self, GoCBEventHandler handler, void *parameter)
Set a callback handler for GoCB events (enabled/disabled)
LIB61850_API bool MmsGooseControlBlock_getNdsCom(MmsGooseControlBlock self)
void(* GoCBEventHandler)(MmsGooseControlBlock goCb, int event, void *parameter)
Definition: iec61850_server.h:1779
LIB61850_API DataSet * MmsGooseControlBlock_getDataSet(MmsGooseControlBlock self)
LIB61850_API bool MmsGooseControlBlock_getFixedOffs(MmsGooseControlBlock self)
LIB61850_API void IedServer_setRCBEventHandler(IedServer self, IedServer_RCBEventHandler handler, void *parameter)
Set a handler for report control block (RCB) events.
void(* IedServer_RCBEventHandler)(void *parameter, ReportControlBlock *rcb, ClientConnection connection, IedServer_RCBEventType event, const char *parameterName, MmsDataAccessError serviceError)
Callback that is called in case of RCB event.
Definition: iec61850_server.h:1713
IedServer_RCBEventType
Definition: iec61850_server.h:1690
@ RCB_EVENT_SET_PARAMETER
Definition: iec61850_server.h:1692
@ RCB_EVENT_PURGEBUF
Definition: iec61850_server.h:1698
@ RCB_EVENT_GET_PARAMETER
Definition: iec61850_server.h:1691
@ RCB_EVENT_GI
Definition: iec61850_server.h:1697
@ RCB_EVENT_DISABLE
Definition: iec61850_server.h:1696
@ RCB_EVENT_UNRESERVED
Definition: iec61850_server.h:1693
@ RCB_EVENT_RESERVED
Definition: iec61850_server.h:1694
@ RCB_EVENT_REPORT_CREATED
Definition: iec61850_server.h:1700
@ RCB_EVENT_OVERFLOW
Definition: iec61850_server.h:1699
@ RCB_EVENT_ENABLE
Definition: iec61850_server.h:1695
LIB61850_API void IedServer_setEditSettingGroupConfirmationHandler(IedServer self, SettingGroupControlBlock *sgcb, EditSettingGroupConfirmationHandler handler, void *parameter)
Set the callback handler for the COnfEditSG event.
LIB61850_API uint8_t IedServer_getActiveSettingGroup(IedServer self, SettingGroupControlBlock *sgcb)
Get the active setting group number.
LIB61850_API void IedServer_setActiveSettingGroupChangedHandler(IedServer self, SettingGroupControlBlock *sgcb, ActiveSettingGroupChangedHandler handler, void *parameter)
Set the callback handler for the SetActSG event.
LIB61850_API void IedServer_setEditSettingGroupChangedHandler(IedServer self, SettingGroupControlBlock *sgcb, EditSettingGroupChangedHandler handler, void *parameter)
Set the callback handler for the SetEditSG event.
bool(* ActiveSettingGroupChangedHandler)(void *parameter, SettingGroupControlBlock *sgcb, uint8_t newActSg, ClientConnection connection)
Callback handler that is invoked when the active setting group is about to be changed by an external ...
Definition: iec61850_server.h:1281
LIB61850_API void IedServer_changeActiveSettingGroup(IedServer self, SettingGroupControlBlock *sgcb, uint8_t newActiveSg)
Change active setting group.
bool(* EditSettingGroupChangedHandler)(void *parameter, SettingGroupControlBlock *sgcb, uint8_t newEditSg, ClientConnection connection)
Callback handler that is invoked when the edit setting group is about to be changed by an external cl...
Definition: iec61850_server.h:1313
void(* EditSettingGroupConfirmationHandler)(void *parameter, SettingGroupControlBlock *sgcb, uint8_t editSg)
Callback handler that is invoked when the edit setting group has been confirmed by an external client...
Definition: iec61850_server.h:1337
LIB61850_API void IedServer_setSVCBHandler(IedServer self, SVControlBlock *svcb, SVCBEventHandler handler, void *parameter)
Set a handler for SVCB control block events (enable/disable)
void(* SVCBEventHandler)(SVControlBlock *svcb, int event, void *parameter)
callback handler for SVCB events.
Definition: iec61850_server.h:1748
struct sMmsValue MmsValue
Definition: mms_value.h:68
MmsDataAccessError
Definition: mms_value.h:46
uint16_t Quality
Definition: iec61850_common.h:326
ACSIClass
Definition: iec61850_common.h:59
ControlModel
Control model (represented by "ctlModel" attribute)
Definition: iec61850_common.h:76
bool(* AcseAuthenticator)(void *parameter, AcseAuthenticationParameter authParameter, void **securityToken, IsoApplicationReference *appReference)
Callback function to authenticate a client.
Definition: iso_connection_parameters.h:109
Configuration object to configure IEC 61850 stack features.
Definition: iec61850_server.h:72
int maxMmsConnections
Definition: iec61850_server.h:107
bool useIntegratedGoosePublisher
Definition: iec61850_server.h:101
bool enableFileService
Definition: iec61850_server.h:83
uint8_t edition
Definition: iec61850_server.h:104
bool enableOwnerForRCB
Definition: iec61850_server.h:119
int maxDomainSpecificDataSets
Definition: iec61850_server.h:92
uint8_t reportSettingsWritable
Definition: iec61850_server.h:125
char * fileServiceBasepath
Definition: iec61850_server.h:80
int reportBufferSize
Definition: iec61850_server.h:74
int maxDataSetEntries
Definition: iec61850_server.h:95
int reportBufferSizeURCBs
Definition: iec61850_server.h:77
int maxAssociationSpecificDataSets
Definition: iec61850_server.h:89
bool enableDynamicDataSetService
Definition: iec61850_server.h:86
bool syncIntegrityReportTimes
Definition: iec61850_server.h:122
bool enableResvTmsForBRCB
Definition: iec61850_server.h:116
bool enableLogService
Definition: iec61850_server.h:98
bool enableResvTmsForSGCB
Definition: iec61850_server.h:113
bool enableEditSG
Definition: iec61850_server.h:110
Definition: iec61850_common.h:417