libiec61850  1.5.3
iec61850_client.h
Go to the documentation of this file.
1 /*
2  * iec61850_client.h
3  *
4  * Copyright 2013-2021 Michael Zillgith
5  *
6  * This file is part of libIEC61850.
7  *
8  * libIEC61850 is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * libIEC61850 is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
20  *
21  * See COPYING file for the complete license text.
22  */
23 
24 #ifndef IEC61850_CLIENT_H_
25 #define IEC61850_CLIENT_H_
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #include "libiec61850_common_api.h"
32 #include "iec61850_common.h"
33 #include "mms_value.h"
34 #include "mms_client_connection.h"
35 #include "linked_list.h"
36 
43 typedef struct sClientDataSet* ClientDataSet;
44 
46 typedef struct sClientReport* ClientReport;
47 
49 typedef struct sClientReportControlBlock* ClientReportControlBlock;
50 
52 typedef struct sClientGooseControlBlock* ClientGooseControlBlock;
53 
61 typedef struct sIedConnection* IedConnection;
62 
64 typedef struct
65 {
66  int ctlNum;
70 
72 typedef enum
73 {
79 
81 typedef enum {
82  /* general errors */
83 
86 
89 
92 
95 
98 
101 
104 
105  /* client side errors */
106 
109 
111 
114 
117 
118  /* service error - error reported by server */
119 
122 
125 
128 
131 
134 
137 
140 
143 
146 
149 
152 
155 
158 
161 
164 
167 
169  IED_ERROR_UNKNOWN = 99
171 
172 /**************************************************
173  * Connection creation and destruction
174  **************************************************/
175 
185 LIB61850_API IedConnection
187 
203 LIB61850_API IedConnection
204 IedConnection_createEx(TLSConfiguration tlsConfig, bool useThreads);
205 
220 LIB61850_API IedConnection
221 IedConnection_createWithTlsSupport(TLSConfiguration tlsConfig);
222 
231 LIB61850_API void
233 
243 LIB61850_API void
244 IedConnection_setLocalAddress(IedConnection self, const char* localIpAddress, int localPort);
245 
255 LIB61850_API void
256 IedConnection_setConnectTimeout(IedConnection self, uint32_t timeoutInMs);
257 
267 LIB61850_API void
268 IedConnection_setRequestTimeout(IedConnection self, uint32_t timeoutInMs);
269 
277 LIB61850_API uint32_t
279 
289 LIB61850_API void
290 IedConnection_setTimeQuality(IedConnection self, bool leapSecondKnown, bool clockFailure, bool clockNotSynchronized, int subsecondPrecision);
291 
304 LIB61850_API bool
306 
317 typedef void
318 (*IedConnection_GenericServiceHandler) (uint32_t invokeId, void* parameter, IedClientError err);
319 
320 /**************************************************
321  * Association service
322  **************************************************/
323 
334 LIB61850_API void
335 IedConnection_connect(IedConnection self, IedClientError* error, const char* hostname, int tcpPort);
336 
350 LIB61850_API void
351 IedConnection_connectAsync(IedConnection self, IedClientError* error, const char* hostname, int tcpPort);
352 
365 LIB61850_API void
367 
381 LIB61850_API void
383 
396 LIB61850_API void
398 
411 LIB61850_API void
413 
421 LIB61850_API void
423 
433 LIB61850_API IedConnectionState
435 
443 LIB61850_API LastApplError
445 
454 typedef void
455 (*IedConnectionClosedHandler) (void* parameter, IedConnection connection);
456 
466 LIB61850_API void
468  void* parameter);
469 
477 typedef void
478 (*IedConnection_StateChangedHandler) (void* parameter, IedConnection connection, IedConnectionState newState);
479 
487 LIB61850_API void
489 
500 LIB61850_API MmsConnection
502 
512 #define IEC61850_SV_OPT_REFRESH_TIME 1
513 
515 #define IEC61850_SV_OPT_SAMPLE_SYNC 2
516 
518 #define IEC61850_SV_OPT_SAMPLE_RATE 4
519 
521 #define IEC61850_SV_OPT_DATA_SET 8
522 
524 #define IEC61850_SV_OPT_SECURITY 16
525 
526 #define IEC61850_SV_SMPMOD_SAMPLES_PER_PERIOD 0
527 
528 #define IEC61850_SV_SMPMOD_SAMPLES_PER_SECOND 1
529 
530 #define IEC61850_SV_SMPMOD_SECONDS_PER_SAMPLE 2
531 
532 
534 typedef struct sClientSVControlBlock* ClientSVControlBlock;
535 
551 LIB61850_API ClientSVControlBlock
552 ClientSVControlBlock_create(IedConnection connection, const char* reference);
553 
559 LIB61850_API void
561 
569 LIB61850_API bool
571 
579 LIB61850_API IedClientError
581 
582 
583 LIB61850_API bool
585 
586 LIB61850_API bool
588 
589 LIB61850_API bool
591 
592 LIB61850_API bool
594 
595 LIB61850_API char*
597 
609 LIB61850_API char*
611 
612 LIB61850_API uint32_t
614 
615 LIB61850_API uint16_t
617 
618 
624 LIB61850_API PhyComAddress
626 
633 LIB61850_API int
635 
641 LIB61850_API uint8_t
643 
651 LIB61850_API int
653 
654 
663 /*********************************************************
664  * GOOSE services handling (MMS part)
665  ********************************************************/
666 
668 #define GOCB_ELEMENT_GO_ENA 1
669 
671 #define GOCB_ELEMENT_GO_ID 2
672 
674 #define GOCB_ELEMENT_DATSET 4
675 
677 #define GOCB_ELEMENT_CONF_REV 8
678 
680 #define GOCB_ELEMENT_NDS_COMM 16
681 
683 #define GOCB_ELEMENT_DST_ADDRESS 32
684 
686 #define GOCB_ELEMENT_MIN_TIME 64
687 
689 #define GOCB_ELEMENT_MAX_TIME 128
690 
692 #define GOCB_ELEMENT_FIXED_OFFS 256
693 
695 #define GOCB_ELEMENT_ALL 511
696 
697 
698 /**************************************************
699  * ClientGooseControlBlock class
700  **************************************************/
701 
702 LIB61850_API ClientGooseControlBlock
703 ClientGooseControlBlock_create(const char* dataAttributeReference);
704 
705 LIB61850_API void
707 
708 LIB61850_API bool
710 
711 LIB61850_API void
713 
714 LIB61850_API const char*
716 
717 LIB61850_API void
719 
720 LIB61850_API const char*
722 
723 LIB61850_API void
725 
726 LIB61850_API uint32_t
728 
729 LIB61850_API bool
731 
732 LIB61850_API uint32_t
734 
735 LIB61850_API uint32_t
737 
738 LIB61850_API bool
740 
741 LIB61850_API PhyComAddress
743 
744 LIB61850_API void
746 
747 LIB61850_API DEPRECATED MmsValue* /* MMS_OCTET_STRING */
749 
750 LIB61850_API DEPRECATED void
752 
753 LIB61850_API DEPRECATED uint8_t
755 
756 LIB61850_API DEPRECATED void
758 
759 LIB61850_API DEPRECATED uint16_t
761 
762 LIB61850_API DEPRECATED void
764 
765 LIB61850_API DEPRECATED uint16_t
767 
768 LIB61850_API DEPRECATED void
770 
771 
772 /*********************************************************
773  * GOOSE services (access to GOOSE Control Blocks (GoCB))
774  ********************************************************/
775 
803 LIB61850_API ClientGooseControlBlock
804 IedConnection_getGoCBValues(IedConnection self, IedClientError* error, const char* goCBReference, ClientGooseControlBlock updateGoCB);
805 
827 LIB61850_API void
829  uint32_t parametersMask, bool singleRequest);
830 
834 /****************************************
835  * Data model access services
836  ****************************************/
837 
854 LIB61850_API MmsValue*
855 IedConnection_readObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc);
856 
857 typedef void
858 (*IedConnection_ReadObjectHandler) (uint32_t invokeId, void* parameter, IedClientError err, MmsValue* value);
859 
872 LIB61850_API uint32_t
874  IedConnection_ReadObjectHandler handler, void* parameter);
875 
885 LIB61850_API void
886 IedConnection_writeObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc,
887  MmsValue* value);
888 
902 LIB61850_API uint32_t
903 IedConnection_writeObjectAsync(IedConnection self, IedClientError* error, const char* objectReference,
904  FunctionalConstraint fc, MmsValue* value, IedConnection_GenericServiceHandler handler, void* parameter);
905 
914 LIB61850_API bool
916 
925 LIB61850_API float
926 IedConnection_readFloatValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
927 
940 LIB61850_API char*
942 
953 LIB61850_API int32_t
954 IedConnection_readInt32Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
955 
966 LIB61850_API int64_t
967 IedConnection_readInt64Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
968 
979 LIB61850_API uint32_t
981 
997 LIB61850_API Timestamp*
999  Timestamp* timeStamp);
1000 
1011 LIB61850_API Quality
1013 
1023 LIB61850_API void
1024 IedConnection_writeBooleanValue(IedConnection self, IedClientError* error, const char* objectReference,
1025  FunctionalConstraint fc, bool value);
1026 
1036 LIB61850_API void
1037 IedConnection_writeInt32Value(IedConnection self, IedClientError* error, const char* objectReference,
1038  FunctionalConstraint fc, int32_t value);
1039 
1049 LIB61850_API void
1050 IedConnection_writeUnsigned32Value(IedConnection self, IedClientError* error, const char* objectReference,
1051  FunctionalConstraint fc, uint32_t value);
1052 
1062 LIB61850_API void
1063 IedConnection_writeFloatValue(IedConnection self, IedClientError* error, const char* objectReference,
1064  FunctionalConstraint fc, float value);
1065 
1066 LIB61850_API void
1067 IedConnection_writeVisibleStringValue(IedConnection self, IedClientError* error, const char* objectReference,
1068  FunctionalConstraint fc, char* value);
1069 
1070 LIB61850_API void
1071 IedConnection_writeOctetString(IedConnection self, IedClientError* error, const char* objectReference,
1072  FunctionalConstraint fc, uint8_t* value, int valueLength);
1073 
1076 /********************************************
1077  * Reporting services
1078  ********************************************/
1079 
1119 LIB61850_API ClientReportControlBlock
1120 IedConnection_getRCBValues(IedConnection self, IedClientError* error, const char* rcbReference,
1121  ClientReportControlBlock updateRcb);
1122 
1123 typedef void
1124 (*IedConnection_GetRCBValuesHandler) (uint32_t invokeId, void* parameter, IedClientError err, ClientReportControlBlock rcb);
1125 
1126 LIB61850_API uint32_t
1128  IedConnection_GetRCBValuesHandler handler, void* parameter);
1129 
1132 
1134 #define IEC61850_REASON_NOT_INCLUDED 0
1135 
1137 #define IEC61850_REASON_DATA_CHANGE 1
1138 
1140 #define IEC61850_REASON_QUALITY_CHANGE 2
1141 
1143 #define IEC61850_REASON_DATA_UPDATE 4
1144 
1146 #define IEC61850_REASON_INTEGRITY 8
1147 
1149 #define IEC61850_REASON_GI 16
1150 
1152 #define IEC61850_REASON_UNKNOWN 32
1153 
1154 #define REASON_NOT_INCLUDED IEC61850_REASON_NOT_INCLUDED
1155 #define REASON_DATA_CHANGE IEC61850_REASON_DATA_CHANGE
1156 #define REASON_QUALITY_CHANGE IEC61850_REASON_QUALITY_CHANGE
1157 #define REASON_DATA_UPDATE IEC61850_REASON_DATA_UPDATE
1158 #define REASON_INTEGRITY IEC61850_REASON_INTEGRITY
1159 #define REASON_GI IEC61850_REASON_GI
1160 #define REASON_UNKNOWN IEC61850_REASON_UNKNOWN
1161 
1162 
1163 /* Element encoding mask values for ClientReportControlBlock */
1164 
1166 #define RCB_ELEMENT_RPT_ID 1
1167 
1169 #define RCB_ELEMENT_RPT_ENA 2
1170 
1172 #define RCB_ELEMENT_RESV 4
1173 
1175 #define RCB_ELEMENT_DATSET 8
1176 
1178 #define RCB_ELEMENT_CONF_REV 16
1179 
1181 #define RCB_ELEMENT_OPT_FLDS 32
1182 
1184 #define RCB_ELEMENT_BUF_TM 64
1185 
1187 #define RCB_ELEMENT_SQ_NUM 128
1188 
1190 #define RCB_ELEMENT_TRG_OPS 256
1191 
1193 #define RCB_ELEMENT_INTG_PD 512
1194 
1196 #define RCB_ELEMENT_GI 1024
1197 
1199 #define RCB_ELEMENT_PURGE_BUF 2048
1200 
1202 #define RCB_ELEMENT_ENTRY_ID 4096
1203 
1205 #define RCB_ELEMENT_TIME_OF_ENTRY 8192
1206 
1208 #define RCB_ELEMENT_RESV_TMS 16384
1209 
1211 #define RCB_ELEMENT_OWNER 32768
1212 
1234 LIB61850_API void
1236  uint32_t parametersMask, bool singleRequest);
1237 
1238 LIB61850_API uint32_t
1240  uint32_t parametersMask, bool singleRequest, IedConnection_GenericServiceHandler handler, void* parameter);
1241 
1248 typedef void (*ReportCallbackFunction) (void* parameter, ClientReport report);
1249 
1269 LIB61850_API void
1270 IedConnection_installReportHandler(IedConnection self, const char* rcbReference, const char* rptId, ReportCallbackFunction handler,
1271  void* handlerParameter);
1272 
1279 LIB61850_API void
1280 IedConnection_uninstallReportHandler(IedConnection self, const char* rcbReference);
1281 
1293 LIB61850_API void
1294 IedConnection_triggerGIReport(IedConnection self, IedClientError* error, const char* rcbReference);
1295 
1296 /****************************************
1297  * Access to received reports
1298  ****************************************/
1299 
1308 LIB61850_API const char*
1310 
1321 LIB61850_API MmsValue*
1323 
1330 LIB61850_API char*
1332 
1339 LIB61850_API char*
1341 
1350 LIB61850_API ReasonForInclusion
1352 
1362 LIB61850_API MmsValue*
1364 
1372 LIB61850_API bool
1374 
1382 LIB61850_API bool
1384 
1394 LIB61850_API uint16_t
1396 
1404 LIB61850_API bool
1406 
1414 LIB61850_API bool
1416 
1424 LIB61850_API bool
1426 
1436 LIB61850_API uint32_t
1438 
1446 LIB61850_API bool
1448 
1456 LIB61850_API bool
1458 
1466 LIB61850_API bool
1468 
1482 LIB61850_API const char*
1484 
1485 
1496 LIB61850_API uint64_t
1498 
1506 LIB61850_API bool
1508 
1519 LIB61850_API uint16_t
1521 
1532 LIB61850_API bool
1534 
1542 LIB61850_API char*
1544 
1545 /**************************************************
1546  * ClientReportControlBlock access class
1547  **************************************************/
1548 
1549 LIB61850_API ClientReportControlBlock
1550 ClientReportControlBlock_create(const char* rcbReference);
1551 
1552 LIB61850_API void
1554 
1555 LIB61850_API char*
1557 
1558 LIB61850_API bool
1560 
1561 LIB61850_API const char*
1563 
1564 LIB61850_API void
1566 
1567 LIB61850_API bool
1569 
1570 LIB61850_API void
1572 
1573 LIB61850_API bool
1575 
1576 LIB61850_API void
1578 
1579 LIB61850_API const char*
1581 
1598 LIB61850_API void
1600 
1601 LIB61850_API uint32_t
1603 
1611 LIB61850_API int
1613 
1620 LIB61850_API void
1622 
1631 LIB61850_API uint32_t
1633 
1643 LIB61850_API void
1645 
1646 LIB61850_API uint16_t
1648 
1649 LIB61850_API int
1651 
1652 LIB61850_API void
1654 
1655 LIB61850_API uint32_t
1657 
1658 LIB61850_API void
1660 
1661 LIB61850_API bool
1663 
1664 LIB61850_API void
1666 
1667 LIB61850_API bool
1669 
1677 LIB61850_API void
1679 
1685 LIB61850_API bool
1687 
1688 LIB61850_API int16_t
1690 
1691 LIB61850_API void
1693 
1694 LIB61850_API MmsValue* /* <MMS_OCTET_STRING> */
1696 
1697 LIB61850_API void
1699 
1700 LIB61850_API uint64_t
1702 
1703 LIB61850_API MmsValue* /* <MMS_OCTET_STRING> */
1705 
1706 
1709 /****************************************
1710  * Data set handling
1711  ****************************************/
1712 
1736 LIB61850_API ClientDataSet
1737 IedConnection_readDataSetValues(IedConnection self, IedClientError* error, const char* dataSetReference, ClientDataSet dataSet);
1738 
1739 typedef void
1740 (*IedConnection_ReadDataSetHandler) (uint32_t invokeId, void* parameter, IedClientError err, ClientDataSet dataSet);
1741 
1761 LIB61850_API uint32_t
1762 IedConnection_readDataSetValuesAsync(IedConnection self, IedClientError* error, const char* dataSetReference, ClientDataSet dataSet,
1763  IedConnection_ReadDataSetHandler handler, void* parameter);
1764 
1782 LIB61850_API void
1783 IedConnection_createDataSet(IedConnection self, IedClientError* error, const char* dataSetReference, LinkedList /* char* */ dataSetElements);
1784 
1806 LIB61850_API uint32_t
1807 IedConnection_createDataSetAsync(IedConnection self, IedClientError* error, const char* dataSetReference, LinkedList /* char* */ dataSetElements,
1808  IedConnection_GenericServiceHandler handler, void* parameter);
1809 
1823 LIB61850_API bool
1824 IedConnection_deleteDataSet(IedConnection self, IedClientError* error, const char* dataSetReference);
1825 
1843 LIB61850_API uint32_t
1844 IedConnection_deleteDataSetAsync(IedConnection self, IedClientError* error, const char* dataSetReference,
1845  IedConnection_GenericServiceHandler handler, void* parameter);
1846 
1861 LIB61850_API LinkedList /* <char*> */
1862 IedConnection_getDataSetDirectory(IedConnection self, IedClientError* error, const char* dataSetReference, bool* isDeletable);
1863 
1871 typedef void
1872 (*IedConnection_GetDataSetDirectoryHandler) (uint32_t invokeId, void* parameter, IedClientError err, LinkedList /* <char*> */ dataSetDirectory, bool isDeletable);
1873 
1888 LIB61850_API uint32_t
1889 IedConnection_getDataSetDirectoryAsync(IedConnection self, IedClientError* error, const char* dataSetReference,
1890  IedConnection_GetDataSetDirectoryHandler handler, void* parameter);
1891 
1907 LIB61850_API void
1908 IedConnection_writeDataSetValues(IedConnection self, IedClientError* error, const char* dataSetReference,
1909  LinkedList/*<MmsValue*>*/ values, /* OUTPUT */LinkedList* /* <MmsValue*> */accessResults);
1910 
1919 typedef void
1920 (*IedConnection_WriteDataSetHandler) (uint32_t invokeId, void* parameter, IedClientError err, LinkedList /* <MmsValue*> */accessResults);
1921 
1943 LIB61850_API uint32_t
1944 IedConnection_writeDataSetValuesAsync(IedConnection self, IedClientError* error, const char* dataSetReference,
1945  LinkedList/*<MmsValue*>*/ values, IedConnection_WriteDataSetHandler handler, void* parameter);
1946 
1947 
1948 /********************************************************
1949  * Data set object (local representation of a data set)
1950  *******************************************************/
1951 
1960 LIB61850_API void
1962 
1977 LIB61850_API MmsValue*
1979 
1987 LIB61850_API char*
1989 
1997 LIB61850_API int
1999 
2002 /************************************
2003  * Control service functions
2004  ************************************/
2005 
2012 typedef struct sControlObjectClient* ControlObjectClient;
2013 
2030 LIB61850_API ControlObjectClient
2031 ControlObjectClient_create(const char* objectReference, IedConnection connection);
2032 
2045 LIB61850_API ControlObjectClient
2046 ControlObjectClient_createEx(const char* objectReference, IedConnection connection, ControlModel ctlModel, MmsVariableSpecification* controlObjectSpec);
2047 
2053 LIB61850_API void
2055 
2059 typedef enum
2060 {
2065 
2082 typedef void
2083 (*ControlObjectClient_ControlActionHandler) (uint32_t invokeId, void* parameter, IedClientError err, ControlActionType type, bool success);
2084 
2092 LIB61850_API const char*
2094 
2102 LIB61850_API ControlModel
2104 
2113 LIB61850_API void
2115 
2125 LIB61850_API void
2127 
2138 LIB61850_API MmsType
2140 
2148 LIB61850_API IedClientError
2150 
2161 LIB61850_API bool
2163 
2174 LIB61850_API bool
2176 
2188 LIB61850_API bool
2190 
2201 LIB61850_API bool
2203 
2204 
2218 LIB61850_API uint32_t
2220  ControlObjectClient_ControlActionHandler handler, void* parameter);
2221 
2235 LIB61850_API uint32_t
2237 
2252 LIB61850_API uint32_t
2254  ControlObjectClient_ControlActionHandler handler, void* parameter);
2255 
2269 LIB61850_API uint32_t
2271 
2279 LIB61850_API LastApplError
2281 
2291 LIB61850_API void
2293 
2304 LIB61850_API void
2305 ControlObjectClient_setOrigin(ControlObjectClient self, const char* orIdent, int orCat);
2306 
2315 LIB61850_API void
2317 
2321 LIB61850_API DEPRECATED void
2323 
2327 LIB61850_API DEPRECATED void
2329 
2333 LIB61850_API DEPRECATED void
2335 
2342 LIB61850_API void
2344 
2351 LIB61850_API void
2353 
2354 
2372 typedef void (*CommandTerminationHandler) (void* parameter, ControlObjectClient controlClient);
2373 
2388 LIB61850_API void
2390  void* handlerParameter);
2391 
2394 /*************************************
2395  * Model discovery services
2396  ************************************/
2397 
2414 LIB61850_API void
2416 
2430 LIB61850_API LinkedList /*<char*>*/
2432 
2449 LIB61850_API LinkedList /*<char*>*/
2451 
2467 LIB61850_API LinkedList /*<char*>*/
2468 IedConnection_getLogicalDeviceDirectory(IedConnection self, IedClientError* error, const char* logicalDeviceName);
2469 
2470 typedef enum {
2483 
2499 LIB61850_API LinkedList /*<char*>*/
2501  const char* logicalNodeReference);
2502 
2519 LIB61850_API LinkedList /*<char*>*/
2521  const char* logicalNodeReference, ACSIClass acsiClass);
2522 
2538 LIB61850_API LinkedList /*<char*>*/
2539 IedConnection_getDataDirectory(IedConnection self, IedClientError* error, const char* dataReference);
2540 
2557 LIB61850_API LinkedList /*<char*>*/
2558 IedConnection_getDataDirectoryFC(IedConnection self, IedClientError* error, const char* dataReference);
2559 
2579 LIB61850_API LinkedList
2581 
2597 LIB61850_API MmsVariableSpecification*
2598 IedConnection_getVariableSpecification(IedConnection self, IedClientError* error, const char* dataAttributeReference,
2600 
2613 LIB61850_API LinkedList
2615 
2628 LIB61850_API LinkedList
2630 
2631 /*****************************************
2632  * Asynchronous model discovery functions
2633  *****************************************/
2634 
2635 typedef void
2636 (*IedConnection_GetNameListHandler) (uint32_t invokeId, void* parameter, IedClientError err, LinkedList nameList, bool moreFollows);
2637 
2650 LIB61850_API uint32_t
2651 IedConnection_getServerDirectoryAsync(IedConnection self, IedClientError* error, const char* continueAfter, LinkedList result,
2652  IedConnection_GetNameListHandler handler, void* parameter);
2653 
2670 LIB61850_API uint32_t
2671 IedConnection_getLogicalDeviceVariablesAsync(IedConnection self, IedClientError* error, const char* ldName, const char* continueAfter, LinkedList result,
2672  IedConnection_GetNameListHandler handler, void* parameter);
2673 
2690 LIB61850_API uint32_t
2691 IedConnection_getLogicalDeviceDataSetsAsync(IedConnection self, IedClientError* error, const char* ldName, const char* continueAfter, LinkedList result,
2692  IedConnection_GetNameListHandler handler, void* parameter);
2693 
2694 
2695 typedef void
2696 (*IedConnection_GetVariableSpecificationHandler) (uint32_t invokeId, void* parameter, IedClientError err, MmsVariableSpecification* spec);
2697 
2709 LIB61850_API uint32_t
2710 IedConnection_getVariableSpecificationAsync(IedConnection self, IedClientError* error, const char* dataAttributeReference,
2712 
2738 LIB61850_API LinkedList /* <MmsJournalEntry> */
2739 IedConnection_queryLogByTime(IedConnection self, IedClientError* error, const char* logReference,
2740  uint64_t startTime, uint64_t endTime, bool* moreFollows);
2741 
2759 LIB61850_API LinkedList /* <MmsJournalEntry> */
2760 IedConnection_queryLogAfter(IedConnection self, IedClientError* error, const char* logReference,
2761  MmsValue* entryID, uint64_t timeStamp, bool* moreFollows);
2762 
2763 
2764 typedef void
2765 (*IedConnection_QueryLogHandler) (uint32_t invokeId, void* parameter, IedClientError mmsError, LinkedList /* <MmsJournalEntry> */ journalEntries, bool moreFollows);
2766 
2767 LIB61850_API uint32_t
2768 IedConnection_queryLogByTimeAsync(IedConnection self, IedClientError* error, const char* logReference,
2769  uint64_t startTime, uint64_t endTime, IedConnection_QueryLogHandler handler, void* parameter);
2770 
2771 LIB61850_API uint32_t
2772 IedConnection_queryLogAfterAsync(IedConnection self, IedClientError* error, const char* logReference,
2773  MmsValue* entryID, uint64_t timeStamp, IedConnection_QueryLogHandler handler, void* parameter);
2774 
2783 typedef struct sFileDirectoryEntry* FileDirectoryEntry;
2784 
2788 LIB61850_API FileDirectoryEntry
2789 FileDirectoryEntry_create(const char* fileName, uint32_t fileSize, uint64_t lastModified);
2790 
2798 LIB61850_API void
2800 
2808 LIB61850_API const char*
2810 
2818 LIB61850_API uint32_t
2820 
2828 LIB61850_API uint64_t
2830 
2831 
2850 LIB61850_API LinkedList /*<FileDirectoryEntry>*/
2851 IedConnection_getFileDirectory(IedConnection self, IedClientError* error, const char* directoryName);
2852 
2853 
2881 LIB61850_API LinkedList /*<FileDirectoryEntry>*/
2882 IedConnection_getFileDirectoryEx(IedConnection self, IedClientError* error, const char* directoryName, const char* continueAfter,
2883  bool* moreFollows);
2884 
2909 typedef bool
2910 (*IedConnection_FileDirectoryEntryHandler) (uint32_t invokeId, void* parameter, IedClientError err, char* filename, uint32_t size, uint64_t lastModfified,
2911  bool moreFollows);
2912 
2931 LIB61850_API uint32_t
2932 IedConnection_getFileDirectoryAsyncEx(IedConnection self, IedClientError* error, const char* directoryName, const char* continueAfter,
2933  IedConnection_FileDirectoryEntryHandler handler, void* parameter);
2934 
2949 typedef bool
2950 (*IedClientGetFileHandler) (void* parameter, uint8_t* buffer, uint32_t bytesRead);
2951 
2963 LIB61850_API uint32_t
2965  void* handlerParameter);
2966 
2967 
2986 typedef bool
2987 (*IedConnection_GetFileAsyncHandler) (uint32_t invokeId, void* parameter, IedClientError err, uint32_t originalInvokeId,
2988  uint8_t* buffer, uint32_t bytesRead, bool moreFollows);
2989 
2990 
3007 LIB61850_API uint32_t
3009  void* parameter);
3010 
3021 LIB61850_API void
3023 
3034 LIB61850_API void
3035 IedConnection_setFile(IedConnection self, IedClientError* error, const char* sourceFilename, const char* destinationFilename);
3036 
3049 LIB61850_API uint32_t
3050 IedConnection_setFileAsync(IedConnection self, IedClientError* error, const char* sourceFilename, const char* destinationFilename,
3051  IedConnection_GenericServiceHandler handler, void* parameter);
3052 
3062 LIB61850_API void
3063 IedConnection_deleteFile(IedConnection self, IedClientError* error, const char* fileName);
3064 
3076 LIB61850_API uint32_t
3078  IedConnection_GenericServiceHandler handler, void* parameter);
3079 
3080 
3085 #ifdef __cplusplus
3086 }
3087 #endif
3088 
3089 
3090 #endif /* IEC61850_CLIENT_H_ */
ControlAddCause
Definition: iec61850_common.h:190
ControlLastApplError
Definition: iec61850_common.h:229
FunctionalConstraint
Definition: iec61850_common.h:264
LIB61850_API void ControlObjectClient_setInterlockCheck(ControlObjectClient self, bool value)
Set the value of the interlock check flag when a control command is sent.
LIB61850_API LastApplError ControlObjectClient_getLastApplError(ControlObjectClient self)
Get the last received control application error.
LIB61850_API MmsType ControlObjectClient_getCtlValType(ControlObjectClient self)
Get the type of ctlVal.
ControlActionType
Definition: iec61850_client.h:2060
LIB61850_API bool ControlObjectClient_selectWithValue(ControlObjectClient self, MmsValue *ctlVal)
Send an select with value command to the server.
LIB61850_API void ControlObjectClient_setSynchroCheck(ControlObjectClient self, bool value)
Set the value of the synchro check flag when a control command is sent.
void(* ControlObjectClient_ControlActionHandler)(uint32_t invokeId, void *parameter, IedClientError err, ControlActionType type, bool success)
A callback handler that is invoked when a command termination message is received.
Definition: iec61850_client.h:2083
struct sControlObjectClient * ControlObjectClient
Definition: iec61850_client.h:2012
LIB61850_API void ControlObjectClient_setTestMode(ControlObjectClient self, bool value)
Send commands in test mode.
LIB61850_API void ControlObjectClient_setOrigin(ControlObjectClient self, const char *orIdent, int orCat)
Set the origin parameter for control commands.
LIB61850_API void ControlObjectClient_changeServerControlModel(ControlObjectClient self, ControlModel ctlModel)
Change the control model of the server.
LIB61850_API uint32_t ControlObjectClient_operateAsync(ControlObjectClient self, IedClientError *err, MmsValue *ctlVal, uint64_t operTime, ControlObjectClient_ControlActionHandler handler, void *parameter)
Send an operate command to the server - async version.
LIB61850_API DEPRECATED void ControlObjectClient_setCtlNum(ControlObjectClient self, uint8_t ctlNum)
LIB61850_API IedClientError ControlObjectClient_getLastError(ControlObjectClient self)
Get the error code of the last synchronous control action (operate, select, select-with-value,...
LIB61850_API uint32_t ControlObjectClient_selectWithValueAsync(ControlObjectClient self, IedClientError *err, MmsValue *ctlVal, ControlObjectClient_ControlActionHandler handler, void *parameter)
Send a select-with-value command to the server - async version.
LIB61850_API void ControlObjectClient_setCommandTerminationHandler(ControlObjectClient self, CommandTerminationHandler handler, void *handlerParameter)
Set the command termination callback handler for this control object.
LIB61850_API void ControlObjectClient_destroy(ControlObjectClient self)
Destroy the client control object instance and release all related resources.
LIB61850_API uint32_t ControlObjectClient_selectAsync(ControlObjectClient self, IedClientError *err, ControlObjectClient_ControlActionHandler handler, void *parameter)
Send a select command to the server - async version.
LIB61850_API ControlObjectClient ControlObjectClient_create(const char *objectReference, IedConnection connection)
Create a new client control object.
LIB61850_API DEPRECATED void ControlObjectClient_enableInterlockCheck(ControlObjectClient self)
LIB61850_API void ControlObjectClient_setControlModel(ControlObjectClient self, ControlModel ctlModel)
Set the applied control model.
LIB61850_API const char * ControlObjectClient_getObjectReference(ControlObjectClient self)
Get the object reference of the control data object.
LIB61850_API DEPRECATED void ControlObjectClient_enableSynchroCheck(ControlObjectClient self)
LIB61850_API ControlModel ControlObjectClient_getControlModel(ControlObjectClient self)
Get the current control model (local representation) applied to the control object.
LIB61850_API bool ControlObjectClient_cancel(ControlObjectClient self)
Send a cancel command to the server.
void(* CommandTerminationHandler)(void *parameter, ControlObjectClient controlClient)
A callback handler that is invoked when a command termination message is received.
Definition: iec61850_client.h:2372
LIB61850_API bool ControlObjectClient_operate(ControlObjectClient self, MmsValue *ctlVal, uint64_t operTime)
Send an operate command to the server.
LIB61850_API bool ControlObjectClient_select(ControlObjectClient self)
Send a select command to the server.
LIB61850_API uint32_t ControlObjectClient_cancelAsync(ControlObjectClient self, IedClientError *err, ControlObjectClient_ControlActionHandler handler, void *parameter)
Send a cancel command to the server - async version.
LIB61850_API void ControlObjectClient_useConstantT(ControlObjectClient self, bool useConstantT)
Use a constant T parameter for all command (select, operate, cancel) of a single control sequence.
LIB61850_API ControlObjectClient ControlObjectClient_createEx(const char *objectReference, IedConnection connection, ControlModel ctlModel, MmsVariableSpecification *controlObjectSpec)
Create a new client control object - doesn't send requests to the server (doesn't block)
@ CONTROL_ACTION_TYPE_CANCEL
Definition: iec61850_client.h:2063
@ CONTROL_ACTION_TYPE_OPERATE
Definition: iec61850_client.h:2062
@ CONTROL_ACTION_TYPE_SELECT
Definition: iec61850_client.h:2061
LIB61850_API void IedConnection_writeBooleanValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, bool value)
write a functional constrained data attribute (FCDA) of type boolean
LIB61850_API void IedConnection_writeObject(IedConnection self, IedClientError *error, const char *dataAttributeReference, FunctionalConstraint fc, MmsValue *value)
write a functional constrained data attribute (FCDA) or functional constrained data (FCD).
LIB61850_API void IedConnection_writeFloatValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, float value)
write a functional constrained data attribute (FCDA) of type float
LIB61850_API void IedConnection_writeInt32Value(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, int32_t value)
write a functional constrained data attribute (FCDA) of type integer
LIB61850_API bool IedConnection_readBooleanValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type boolean
LIB61850_API void IedConnection_writeVisibleStringValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, char *value)
LIB61850_API Quality IedConnection_readQualityValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type Quality
LIB61850_API MmsValue * IedConnection_readObject(IedConnection self, IedClientError *error, const char *dataAttributeReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) or functional constrained data (FCD).
LIB61850_API Timestamp * IedConnection_readTimestampValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, Timestamp *timeStamp)
read a functional constrained data attribute (FCDA) of type Timestamp (UTC Time)
LIB61850_API int32_t IedConnection_readInt32Value(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type Integer or Unsigned and return the result...
void(* IedConnection_ReadObjectHandler)(uint32_t invokeId, void *parameter, IedClientError err, MmsValue *value)
Definition: iec61850_client.h:858
LIB61850_API uint32_t IedConnection_writeObjectAsync(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, MmsValue *value, IedConnection_GenericServiceHandler handler, void *parameter)
write a functional constrained data attribute (FCDA) or functional constrained data (FCD) - async ver...
LIB61850_API float IedConnection_readFloatValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type float
LIB61850_API void IedConnection_writeOctetString(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, uint8_t *value, int valueLength)
LIB61850_API uint32_t IedConnection_readObjectAsync(IedConnection self, IedClientError *error, const char *objRef, FunctionalConstraint fc, IedConnection_ReadObjectHandler handler, void *parameter)
read a functional constrained data attribute (FCDA) or functional constrained data (FCD) - async vers...
LIB61850_API char * IedConnection_readStringValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type VisibleString or MmsString
LIB61850_API void IedConnection_writeUnsigned32Value(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, uint32_t value)
write a functional constrained data attribute (FCDA) of type unsigned (integer)
LIB61850_API int64_t IedConnection_readInt64Value(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type Integer or Unsigned and return the result...
LIB61850_API uint32_t IedConnection_readUnsigned32Value(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type Integer or Unsigned and return the result...
LIB61850_API char * ClientDataSet_getReference(ClientDataSet self)
Get the object reference of the data set.
LIB61850_API uint32_t IedConnection_readDataSetValuesAsync(IedConnection self, IedClientError *error, const char *dataSetReference, ClientDataSet dataSet, IedConnection_ReadDataSetHandler handler, void *parameter)
get data set values from the server - async version
LIB61850_API void IedConnection_writeDataSetValues(IedConnection self, IedClientError *error, const char *dataSetReference, LinkedList values, LinkedList *accessResults)
Write the data set values to the server.
LIB61850_API uint32_t IedConnection_getDataSetDirectoryAsync(IedConnection self, IedClientError *error, const char *dataSetReference, IedConnection_GetDataSetDirectoryHandler handler, void *parameter)
read the data set directory - asynchronous version
LIB61850_API void IedConnection_createDataSet(IedConnection self, IedClientError *error, const char *dataSetReference, LinkedList dataSetElements)
create a new data set at the connected server device
LIB61850_API int ClientDataSet_getDataSetSize(ClientDataSet self)
get the size of the data set (number of members)
LIB61850_API uint32_t IedConnection_writeDataSetValuesAsync(IedConnection self, IedClientError *error, const char *dataSetReference, LinkedList values, IedConnection_WriteDataSetHandler handler, void *parameter)
Write the data set values to the server - async version.
LIB61850_API uint32_t IedConnection_deleteDataSetAsync(IedConnection self, IedClientError *error, const char *dataSetReference, IedConnection_GenericServiceHandler handler, void *parameter)
delete a deletable data set at the connected server device - asynchronous version
LIB61850_API ClientDataSet IedConnection_readDataSetValues(IedConnection self, IedClientError *error, const char *dataSetReference, ClientDataSet dataSet)
get data set values from the server
void(* IedConnection_WriteDataSetHandler)(uint32_t invokeId, void *parameter, IedClientError err, LinkedList accessResults)
Callback handler for asynchronous write data set values services (set data set)
Definition: iec61850_client.h:1920
LIB61850_API uint32_t IedConnection_createDataSetAsync(IedConnection self, IedClientError *error, const char *dataSetReference, LinkedList dataSetElements, IedConnection_GenericServiceHandler handler, void *parameter)
create a new data set at the connected server device
void(* IedConnection_GetDataSetDirectoryHandler)(uint32_t invokeId, void *parameter, IedClientError err, LinkedList dataSetDirectory, bool isDeletable)
GetDataSetDirectory response or timeout callback.
Definition: iec61850_client.h:1872
LIB61850_API LinkedList IedConnection_getDataSetDirectory(IedConnection self, IedClientError *error, const char *dataSetReference, bool *isDeletable)
read the data set directory
LIB61850_API bool IedConnection_deleteDataSet(IedConnection self, IedClientError *error, const char *dataSetReference)
delete a deletable data set at the connected server device
LIB61850_API void ClientDataSet_destroy(ClientDataSet self)
destroy an ClientDataSet instance. Has to be called by the application.
LIB61850_API MmsValue * ClientDataSet_getValues(ClientDataSet self)
get the data set values locally stored in the ClientDataSet instance.
void(* IedConnection_ReadDataSetHandler)(uint32_t invokeId, void *parameter, IedClientError err, ClientDataSet dataSet)
Definition: iec61850_client.h:1740
LIB61850_API uint32_t FileDirectoryEntry_getFileSize(FileDirectoryEntry self)
Get the file size in bytes.
LIB61850_API uint32_t IedConnection_setFileAsync(IedConnection self, IedClientError *error, const char *sourceFilename, const char *destinationFilename, IedConnection_GenericServiceHandler handler, void *parameter)
Implementation of the SetFile ACSI service - asynchronous version.
LIB61850_API uint32_t IedConnection_getFileAsync(IedConnection self, IedClientError *error, const char *fileName, IedConnection_GetFileAsyncHandler handler, void *parameter)
Implementation of the GetFile ACSI service - asynchronous version.
struct sFileDirectoryEntry * FileDirectoryEntry
Definition: iec61850_client.h:2783
LIB61850_API LinkedList IedConnection_getFileDirectoryEx(IedConnection self, IedClientError *error, const char *directoryName, const char *continueAfter, bool *moreFollows)
returns the directory entries of the specified file directory returned by a single file directory req...
LIB61850_API void IedConnection_setFile(IedConnection self, IedClientError *error, const char *sourceFilename, const char *destinationFilename)
Implementation of the SetFile ACSI service.
LIB61850_API uint32_t IedConnection_getFileDirectoryAsyncEx(IedConnection self, IedClientError *error, const char *directoryName, const char *continueAfter, IedConnection_FileDirectoryEntryHandler handler, void *parameter)
Get file directory (single request) - asynchronous version.
LIB61850_API LinkedList IedConnection_getFileDirectory(IedConnection self, IedClientError *error, const char *directoryName)
returns the directory entries of the specified file directory.
LIB61850_API uint32_t IedConnection_deleteFileAsync(IedConnection self, IedClientError *error, const char *fileName, IedConnection_GenericServiceHandler handler, void *parameter)
Implementation of the DeleteFile ACSI service - asynchronous version.
LIB61850_API void FileDirectoryEntry_destroy(FileDirectoryEntry self)
Destroy a FileDirectoryEntry object (free all resources)
LIB61850_API void IedConnection_setFilestoreBasepath(IedConnection, const char *basepath)
Set the virtual filestore basepath for the setFile service.
LIB61850_API FileDirectoryEntry FileDirectoryEntry_create(const char *fileName, uint32_t fileSize, uint64_t lastModified)
LIB61850_API const char * FileDirectoryEntry_getFileName(FileDirectoryEntry self)
Get the name of the file.
LIB61850_API uint32_t IedConnection_getFile(IedConnection self, IedClientError *error, const char *fileName, IedClientGetFileHandler handler, void *handlerParameter)
Implementation of the GetFile ACSI service.
bool(* IedClientGetFileHandler)(void *parameter, uint8_t *buffer, uint32_t bytesRead)
user provided handler to receive the data of the GetFile request
Definition: iec61850_client.h:2950
bool(* IedConnection_FileDirectoryEntryHandler)(uint32_t invokeId, void *parameter, IedClientError err, char *filename, uint32_t size, uint64_t lastModfified, bool moreFollows)
Callback handler for the get file directory service.
Definition: iec61850_client.h:2910
LIB61850_API uint64_t FileDirectoryEntry_getLastModified(FileDirectoryEntry self)
Get the timestamp of last modification of the file.
bool(* IedConnection_GetFileAsyncHandler)(uint32_t invokeId, void *parameter, IedClientError err, uint32_t originalInvokeId, uint8_t *buffer, uint32_t bytesRead, bool moreFollows)
User provided handler to receive the data of the asynchronous GetFile request.
Definition: iec61850_client.h:2987
LIB61850_API void IedConnection_deleteFile(IedConnection self, IedClientError *error, const char *fileName)
Implementation of the DeleteFile ACSI service.
LIB61850_API IedConnection IedConnection_createEx(TLSConfiguration tlsConfig, bool useThreads)
create a new IedConnection instance (extended version)
LIB61850_API IedConnection IedConnection_createWithTlsSupport(TLSConfiguration tlsConfig)
create a new IedConnection instance that has support for TLS
LIB61850_API void IedConnection_setLocalAddress(IedConnection self, const char *localIpAddress, int localPort)
Set the local IP address and port to be used by the client.
LIB61850_API void IedConnection_installStateChangedHandler(IedConnection self, IedConnection_StateChangedHandler handler, void *parameter)
Install a handler function that is called when the connection state changes.
LIB61850_API void IedConnection_close(IedConnection self)
Close the connection.
LIB61850_API void IedConnection_setRequestTimeout(IedConnection self, uint32_t timeoutInMs)
set the request timeout in ms
LIB61850_API LastApplError IedConnection_getLastApplError(IedConnection self)
Access to last application error received by the client connection.
LIB61850_API void IedConnection_release(IedConnection self, IedClientError *error)
Release the connection.
LIB61850_API void IedConnection_installConnectionClosedHandler(IedConnection self, IedConnectionClosedHandler handler, void *parameter)
Install a handler function that is called when the connection is lost/closed.
void(* IedConnection_StateChangedHandler)(void *parameter, IedConnection connection, IedConnectionState newState)
Callback handler that is invoked whenever the connection state (IedConnectionState) changes.
Definition: iec61850_client.h:478
IedConnectionState
Definition: iec61850_client.h:73
LIB61850_API void IedConnection_connect(IedConnection self, IedClientError *error, const char *hostname, int tcpPort)
Connect to a server.
LIB61850_API void IedConnection_setConnectTimeout(IedConnection self, uint32_t timeoutInMs)
set the connect timeout in ms
void(* IedConnectionClosedHandler)(void *parameter, IedConnection connection)
Callback handler that is invoked when the connection is closed.
Definition: iec61850_client.h:455
IedClientError
Definition: iec61850_client.h:81
LIB61850_API void IedConnection_destroy(IedConnection self)
destroy an IedConnection instance.
LIB61850_API void IedConnection_setTimeQuality(IedConnection self, bool leapSecondKnown, bool clockFailure, bool clockNotSynchronized, int subsecondPrecision)
Set the time quality for all timestamps generated by this IedConnection instance.
LIB61850_API MmsConnection IedConnection_getMmsConnection(IedConnection self)
get a handle to the underlying MmsConnection
struct sIedConnection * IedConnection
Definition: iec61850_client.h:61
LIB61850_API IedConnectionState IedConnection_getState(IedConnection self)
return the state of the connection.
LIB61850_API bool IedConnection_tick(IedConnection self)
Perform MMS message handling and house-keeping tasks (for non-thread mode only)
LIB61850_API IedConnection IedConnection_create(void)
create a new IedConnection instance
LIB61850_API void IedConnection_abortAsync(IedConnection self, IedClientError *error)
Asynchronously abort the connection.
LIB61850_API void IedConnection_connectAsync(IedConnection self, IedClientError *error, const char *hostname, int tcpPort)
Asynchronously connect to a server.
LIB61850_API void IedConnection_releaseAsync(IedConnection self, IedClientError *error)
Asynchronously release the connection.
void(* IedConnection_GenericServiceHandler)(uint32_t invokeId, void *parameter, IedClientError err)
Generic serivce callback handler.
Definition: iec61850_client.h:318
LIB61850_API uint32_t IedConnection_getRequestTimeout(IedConnection self)
get the request timeout in ms for this connection
LIB61850_API void IedConnection_abort(IedConnection self, IedClientError *error)
Abort the connection.
@ IED_STATE_CONNECTED
Definition: iec61850_client.h:76
@ IED_STATE_CONNECTING
Definition: iec61850_client.h:75
@ IED_STATE_CLOSING
Definition: iec61850_client.h:77
@ IED_STATE_CLOSED
Definition: iec61850_client.h:74
@ IED_ERROR_ACCESS_DENIED
Definition: iec61850_client.h:124
@ IED_ERROR_ENABLE_REPORT_FAILED_DATASET_MISMATCH
Definition: iec61850_client.h:110
@ IED_ERROR_NOT_CONNECTED
Definition: iec61850_client.h:88
@ IED_ERROR_TYPE_UNSUPPORTED
Definition: iec61850_client.h:151
@ IED_ERROR_MALFORMED_MESSAGE
Definition: iec61850_client.h:163
@ IED_ERROR_OBJECT_VALUE_INVALID
Definition: iec61850_client.h:157
@ IED_ERROR_USER_PROVIDED_INVALID_ARGUMENT
Definition: iec61850_client.h:108
@ IED_ERROR_ALREADY_CONNECTED
Definition: iec61850_client.h:91
@ IED_ERROR_HARDWARE_FAULT
Definition: iec61850_client.h:148
@ IED_ERROR_TYPE_INCONSISTENT
Definition: iec61850_client.h:136
@ IED_ERROR_OK
Definition: iec61850_client.h:85
@ IED_ERROR_OBJECT_ATTRIBUTE_INCONSISTENT
Definition: iec61850_client.h:154
@ IED_ERROR_OBJECT_REFERENCE_INVALID
Definition: iec61850_client.h:113
@ IED_ERROR_OUTSTANDING_CALL_LIMIT_REACHED
Definition: iec61850_client.h:103
@ IED_ERROR_INVALID_ADDRESS
Definition: iec61850_client.h:145
@ IED_ERROR_UNKNOWN
Definition: iec61850_client.h:169
@ IED_ERROR_OBJECT_UNDEFINED
Definition: iec61850_client.h:142
@ IED_ERROR_SERVICE_NOT_SUPPORTED
Definition: iec61850_client.h:97
@ IED_ERROR_OBJECT_ACCESS_UNSUPPORTED
Definition: iec61850_client.h:133
@ IED_ERROR_OBJECT_DOES_NOT_EXIST
Definition: iec61850_client.h:127
@ IED_ERROR_CONNECTION_LOST
Definition: iec61850_client.h:94
@ IED_ERROR_OBJECT_INVALIDATED
Definition: iec61850_client.h:160
@ IED_ERROR_UNEXPECTED_VALUE_RECEIVED
Definition: iec61850_client.h:116
@ IED_ERROR_OBJECT_EXISTS
Definition: iec61850_client.h:130
@ IED_ERROR_SERVICE_NOT_IMPLEMENTED
Definition: iec61850_client.h:166
@ IED_ERROR_TIMEOUT
Definition: iec61850_client.h:121
@ IED_ERROR_TEMPORARILY_UNAVAILABLE
Definition: iec61850_client.h:139
@ IED_ERROR_CONNECTION_REJECTED
Definition: iec61850_client.h:100
LIB61850_API ClientGooseControlBlock ClientGooseControlBlock_create(const char *dataAttributeReference)
LIB61850_API bool ClientGooseControlBlock_getNdsComm(ClientGooseControlBlock self)
LIB61850_API DEPRECATED uint16_t ClientGooseControlBlock_getDstAddress_appid(ClientGooseControlBlock self)
LIB61850_API const char * ClientGooseControlBlock_getGoID(ClientGooseControlBlock self)
LIB61850_API void ClientGooseControlBlock_setDstAddress(ClientGooseControlBlock self, PhyComAddress value)
LIB61850_API const char * ClientGooseControlBlock_getDatSet(ClientGooseControlBlock self)
LIB61850_API void ClientGooseControlBlock_setDatSet(ClientGooseControlBlock self, const char *datSet)
LIB61850_API DEPRECATED void ClientGooseControlBlock_setDstAddress_appid(ClientGooseControlBlock self, uint16_t appidValue)
LIB61850_API DEPRECATED MmsValue * ClientGooseControlBlock_getDstAddress_addr(ClientGooseControlBlock self)
LIB61850_API void ClientGooseControlBlock_destroy(ClientGooseControlBlock self)
LIB61850_API bool ClientGooseControlBlock_getFixedOffs(ClientGooseControlBlock self)
LIB61850_API DEPRECATED uint16_t ClientGooseControlBlock_getDstAddress_vid(ClientGooseControlBlock self)
LIB61850_API bool ClientGooseControlBlock_getGoEna(ClientGooseControlBlock self)
LIB61850_API uint32_t ClientGooseControlBlock_getMaxTime(ClientGooseControlBlock self)
LIB61850_API DEPRECATED uint8_t ClientGooseControlBlock_getDstAddress_priority(ClientGooseControlBlock self)
LIB61850_API DEPRECATED void ClientGooseControlBlock_setDstAddress_priority(ClientGooseControlBlock self, uint8_t priorityValue)
LIB61850_API uint32_t ClientGooseControlBlock_getMinTime(ClientGooseControlBlock self)
LIB61850_API void IedConnection_setGoCBValues(IedConnection self, IedClientError *error, ClientGooseControlBlock goCB, uint32_t parametersMask, bool singleRequest)
Write access to attributes of a GOOSE control block (GoCB) at the connected server.
LIB61850_API PhyComAddress ClientGooseControlBlock_getDstAddress(ClientGooseControlBlock self)
LIB61850_API DEPRECATED void ClientGooseControlBlock_setDstAddress_addr(ClientGooseControlBlock self, MmsValue *macAddr)
LIB61850_API void ClientGooseControlBlock_setGoEna(ClientGooseControlBlock self, bool goEna)
LIB61850_API DEPRECATED void ClientGooseControlBlock_setDstAddress_vid(ClientGooseControlBlock self, uint16_t vidValue)
LIB61850_API ClientGooseControlBlock IedConnection_getGoCBValues(IedConnection self, IedClientError *error, const char *goCBReference, ClientGooseControlBlock updateGoCB)
Read access to attributes of a GOOSE control block (GoCB) at the connected server....
LIB61850_API void ClientGooseControlBlock_setGoID(ClientGooseControlBlock self, const char *goID)
LIB61850_API uint32_t ClientGooseControlBlock_getConfRev(ClientGooseControlBlock self)
LIB61850_API uint32_t IedConnection_queryLogByTimeAsync(IedConnection self, IedClientError *error, const char *logReference, uint64_t startTime, uint64_t endTime, IedConnection_QueryLogHandler handler, void *parameter)
LIB61850_API LinkedList IedConnection_queryLogAfter(IedConnection self, IedClientError *error, const char *logReference, MmsValue *entryID, uint64_t timeStamp, bool *moreFollows)
Implementation of the QueryLogAfter ACSI service.
void(* IedConnection_QueryLogHandler)(uint32_t invokeId, void *parameter, IedClientError mmsError, LinkedList journalEntries, bool moreFollows)
Definition: iec61850_client.h:2765
LIB61850_API LinkedList IedConnection_queryLogByTime(IedConnection self, IedClientError *error, const char *logReference, uint64_t startTime, uint64_t endTime, bool *moreFollows)
Implementation of the QueryLogByTime ACSI service.
LIB61850_API uint32_t IedConnection_queryLogAfterAsync(IedConnection self, IedClientError *error, const char *logReference, MmsValue *entryID, uint64_t timeStamp, IedConnection_QueryLogHandler handler, void *parameter)
LIB61850_API LinkedList IedConnection_getLogicalNodeDirectory(IedConnection self, IedClientError *error, const char *logicalNodeReference, ACSIClass acsiClass)
returns the directory of the given logical node (LN) containing elements of the specified ACSI class
ACSIClass
Definition: iec61850_client.h:2470
void(* IedConnection_GetVariableSpecificationHandler)(uint32_t invokeId, void *parameter, IedClientError err, MmsVariableSpecification *spec)
Definition: iec61850_client.h:2696
LIB61850_API LinkedList IedConnection_getDataDirectoryFC(IedConnection self, IedClientError *error, const char *dataReference)
returns the directory of the given data object (DO)
LIB61850_API LinkedList IedConnection_getDataDirectoryByFC(IedConnection self, IedClientError *error, const char *dataReference, FunctionalConstraint fc)
returns the directory of the given data object/data attribute with the given FC
LIB61850_API LinkedList IedConnection_getLogicalDeviceDataSets(IedConnection self, IedClientError *error, const char *ldName)
Get the data set names of the logical device.
LIB61850_API LinkedList IedConnection_getServerDirectory(IedConnection self, IedClientError *error, bool getFileNames)
Get the list of logical devices or files available at the server.
LIB61850_API LinkedList IedConnection_getLogicalDeviceList(IedConnection self, IedClientError *error)
Get the list of logical devices available at the server (DEPRECATED)
LIB61850_API uint32_t IedConnection_getLogicalDeviceDataSetsAsync(IedConnection self, IedClientError *error, const char *ldName, const char *continueAfter, LinkedList result, IedConnection_GetNameListHandler handler, void *parameter)
Get the data set names in the logical device - asynchronous version.
void(* IedConnection_GetNameListHandler)(uint32_t invokeId, void *parameter, IedClientError err, LinkedList nameList, bool moreFollows)
Definition: iec61850_client.h:2636
LIB61850_API void IedConnection_getDeviceModelFromServer(IedConnection self, IedClientError *error)
Retrieve the device model from the server.
LIB61850_API LinkedList IedConnection_getDataDirectory(IedConnection self, IedClientError *error, const char *dataReference)
returns the directory of the given data object (DO)
LIB61850_API MmsVariableSpecification * IedConnection_getVariableSpecification(IedConnection self, IedClientError *error, const char *dataAttributeReference, FunctionalConstraint fc)
return the MMS variable type specification of the data attribute referenced by dataAttributeReference...
LIB61850_API uint32_t IedConnection_getVariableSpecificationAsync(IedConnection self, IedClientError *error, const char *dataAttributeReference, FunctionalConstraint fc, IedConnection_GetVariableSpecificationHandler handler, void *parameter)
Get the specification of a variable (data attribute or functional constraint data object) - asynchron...
LIB61850_API uint32_t IedConnection_getServerDirectoryAsync(IedConnection self, IedClientError *error, const char *continueAfter, LinkedList result, IedConnection_GetNameListHandler handler, void *parameter)
Get the server directory (logical devices name) - asynchronous version.
LIB61850_API LinkedList IedConnection_getLogicalNodeVariables(IedConnection self, IedClientError *error, const char *logicalNodeReference)
returns a list of all MMS variables that are children of the given logical node
LIB61850_API uint32_t IedConnection_getLogicalDeviceVariablesAsync(IedConnection self, IedClientError *error, const char *ldName, const char *continueAfter, LinkedList result, IedConnection_GetNameListHandler handler, void *parameter)
Get the variables in the logical device - asynchronous version.
LIB61850_API LinkedList IedConnection_getLogicalDeviceVariables(IedConnection self, IedClientError *error, const char *ldName)
Get all variables of the logical device.
LIB61850_API LinkedList IedConnection_getLogicalDeviceDirectory(IedConnection self, IedClientError *error, const char *logicalDeviceName)
Get the list of logical nodes (LN) of a logical device.
@ ACSI_CLASS_URCB
Definition: iec61850_client.h:2474
@ ACSI_CLASS_DATA_SET
Definition: iec61850_client.h:2472
@ ACSI_CLASS_BRCB
Definition: iec61850_client.h:2473
@ ACSI_CLASS_MSVCB
Definition: iec61850_client.h:2480
@ ACSI_CLASS_DATA_OBJECT
Definition: iec61850_client.h:2471
@ ACSI_CLASS_GsCB
Definition: iec61850_client.h:2479
@ ACSI_CLASS_LCB
Definition: iec61850_client.h:2475
@ ACSI_CLASS_SGCB
Definition: iec61850_client.h:2477
@ ACSI_CLASS_GoCB
Definition: iec61850_client.h:2478
@ ACSI_CLASS_USVCB
Definition: iec61850_client.h:2481
@ ACSI_CLASS_LOG
Definition: iec61850_client.h:2476
LIB61850_API bool ClientReportControlBlock_hasResvTms(ClientReportControlBlock self)
Check if optional attribute "ResvTms" is present in BRCB.
LIB61850_API char * ClientReport_getRcbReference(ClientReport self)
return reference (name) of the server RCB associated with this ClientReport object
LIB61850_API void ClientReportControlBlock_setIntgPd(ClientReportControlBlock self, uint32_t intgPd)
LIB61850_API int ClientReportControlBlock_getOptFlds(ClientReportControlBlock self)
Gets the OptFlds parameter of the RCB (decides what information to include in a report)
LIB61850_API uint32_t ClientReportControlBlock_getIntgPd(ClientReportControlBlock self)
LIB61850_API char * ClientReportControlBlock_getObjectReference(ClientReportControlBlock self)
LIB61850_API void ClientReportControlBlock_setBufTm(ClientReportControlBlock self, uint32_t bufTm)
Set the BufTm (buffer time) parameter of the RCB.
LIB61850_API bool ClientReport_hasReasonForInclusion(ClientReport self)
determine if the last received report contains reason-for-inclusion information
void(* IedConnection_GetRCBValuesHandler)(uint32_t invokeId, void *parameter, IedClientError err, ClientReportControlBlock rcb)
Definition: iec61850_client.h:1124
LIB61850_API bool ClientReport_hasDataSetName(ClientReport self)
determine if the last received report contains the data set name
LIB61850_API bool ClientReport_hasTimestamp(ClientReport self)
determine if the last received report contains a timestamp
LIB61850_API bool ClientReport_hasBufOvfl(ClientReport self)
indicates if the report contains the bufOvfl (buffer overflow) flag
LIB61850_API uint64_t ClientReport_getTimestamp(ClientReport self)
get the timestamp of the report
LIB61850_API void IedConnection_uninstallReportHandler(IedConnection self, const char *rcbReference)
uninstall a report handler function for the specified report control block (RCB)
LIB61850_API MmsValue * ClientReport_getDataSetValues(ClientReport self)
return the received data set values of the report
LIB61850_API void ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBuf)
Set the "PurgeBuf" attribute value (only BRCB)
LIB61850_API uint64_t ClientReportControlBlock_getEntryTime(ClientReportControlBlock self)
LIB61850_API uint32_t ClientReportControlBlock_getConfRev(ClientReportControlBlock self)
LIB61850_API void ClientReportControlBlock_setEntryId(ClientReportControlBlock self, MmsValue *entryId)
LIB61850_API void ClientReportControlBlock_setDataSetReference(ClientReportControlBlock self, const char *dataSetReference)
set the data set to be observed by the RCB
LIB61850_API bool ClientReport_hasDataReference(ClientReport self)
indicates if the report contains data references for the reported data set members
LIB61850_API ReasonForInclusion ClientReport_getReasonForInclusion(ClientReport self, int elementIndex)
get the reason code (reason for inclusion) for a specific report data set element
LIB61850_API void ClientReportControlBlock_setTrgOps(ClientReportControlBlock self, int trgOps)
LIB61850_API void IedConnection_setRCBValues(IedConnection self, IedClientError *error, ClientReportControlBlock rcb, uint32_t parametersMask, bool singleRequest)
Write access to attributes of a report control block (RCB) at the connected server.
int ReasonForInclusion
Definition: iec61850_client.h:1131
LIB61850_API bool ClientReport_getBufOvfl(ClientReport self)
get the value of the bufOvfl flag
LIB61850_API void ClientReportControlBlock_setRptId(ClientReportControlBlock self, const char *rptId)
LIB61850_API bool ClientReportControlBlock_isBuffered(ClientReportControlBlock self)
LIB61850_API bool ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self)
LIB61850_API char * ClientReport_getRptId(ClientReport self)
return RptId of the server RCB associated with this ClientReport object
LIB61850_API uint16_t ClientReportControlBlock_getSqNum(ClientReportControlBlock self)
LIB61850_API void ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds)
Set the OptFlds parameter of the RCB (decides what information to include in a report)
LIB61850_API uint32_t ClientReportControlBlock_getBufTm(ClientReportControlBlock self)
Get the BufTm (buffer time) parameter of the RCB.
LIB61850_API const char * ClientReportControlBlock_getRptId(ClientReportControlBlock self)
LIB61850_API void ClientReportControlBlock_setResvTms(ClientReportControlBlock self, int16_t resvTms)
LIB61850_API bool ClientReport_hasSeqNum(ClientReport self)
determine if the last received report contains a sequence number
LIB61850_API bool ClientReport_hasSubSeqNum(ClientReport self)
indicates if the report contains a sub sequence number and a more segments follow flags (for segmente...
LIB61850_API void IedConnection_installReportHandler(IedConnection self, const char *rcbReference, const char *rptId, ReportCallbackFunction handler, void *handlerParameter)
Install a report handler function for the specified report control block (RCB)
LIB61850_API uint16_t ClientReport_getSeqNum(ClientReport self)
get the value of the sequence number
LIB61850_API ClientReportControlBlock ClientReportControlBlock_create(const char *rcbReference)
LIB61850_API void ClientReportControlBlock_setResv(ClientReportControlBlock self, bool resv)
LIB61850_API uint16_t ClientReport_getSubSeqNum(ClientReport self)
get the sub sequence number of the report (for segmented reporting)
LIB61850_API int ClientReportControlBlock_getTrgOps(ClientReportControlBlock self)
LIB61850_API MmsValue * ClientReportControlBlock_getOwner(ClientReportControlBlock self)
LIB61850_API bool ClientReport_getMoreSeqmentsFollow(ClientReport self)
get the more segments follow flag of the received report segment (for segmented reporting)
LIB61850_API uint32_t IedConnection_setRCBValuesAsync(IedConnection self, IedClientError *error, ClientReportControlBlock rcb, uint32_t parametersMask, bool singleRequest, IedConnection_GenericServiceHandler handler, void *parameter)
LIB61850_API const char * ClientReport_getDataSetName(ClientReport self)
get the name of the report data set
LIB61850_API bool ClientReport_hasConfRev(ClientReport self)
determine if the last received report contains the configuration revision
LIB61850_API const char * ClientReportControlBlock_getDataSetReference(ClientReportControlBlock self)
LIB61850_API uint32_t IedConnection_getRCBValuesAsync(IedConnection self, IedClientError *error, const char *rcbReference, ClientReportControlBlock updateRcb, IedConnection_GetRCBValuesHandler handler, void *parameter)
LIB61850_API void ClientReportControlBlock_destroy(ClientReportControlBlock self)
LIB61850_API bool ClientReportControlBlock_getRptEna(ClientReportControlBlock self)
LIB61850_API int16_t ClientReportControlBlock_getResvTms(ClientReportControlBlock self)
LIB61850_API void ClientReportControlBlock_setRptEna(ClientReportControlBlock self, bool rptEna)
LIB61850_API bool ClientReportControlBlock_getResv(ClientReportControlBlock self)
LIB61850_API const char * ClientReport_getDataReference(ClientReport self, int elementIndex)
get the data-reference of the element of the report data set
LIB61850_API ClientReportControlBlock IedConnection_getRCBValues(IedConnection self, IedClientError *error, const char *rcbReference, ClientReportControlBlock updateRcb)
Read access to attributes of a report control block (RCB) at the connected server.
LIB61850_API MmsValue * ClientReportControlBlock_getEntryId(ClientReportControlBlock self)
void(* ReportCallbackFunction)(void *parameter, ClientReport report)
Callback function for receiving reports.
Definition: iec61850_client.h:1248
LIB61850_API bool ClientReportControlBlock_getGI(ClientReportControlBlock self)
LIB61850_API char * ReasonForInclusion_getValueAsString(ReasonForInclusion reasonCode)
get the reason for inclusion of as a human readable string
LIB61850_API void ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi)
LIB61850_API void IedConnection_triggerGIReport(IedConnection self, IedClientError *error, const char *rcbReference)
trigger a general interrogation (GI) report for the specified report control block (RCB)
LIB61850_API uint32_t ClientReport_getConfRev(ClientReport self)
get the value of the configuration revision
LIB61850_API MmsValue * ClientReport_getEntryId(ClientReport self)
get the entry ID of the report
LIB61850_API bool ClientSVControlBlock_setSvEna(ClientSVControlBlock self, bool value)
LIB61850_API bool ClientSVControlBlock_getResv(ClientSVControlBlock self)
LIB61850_API ClientSVControlBlock ClientSVControlBlock_create(IedConnection connection, const char *reference)
Create a new ClientSVControlBlock instance.
LIB61850_API uint32_t ClientSVControlBlock_getConfRev(ClientSVControlBlock self)
LIB61850_API char * ClientSVControlBlock_getMsvID(ClientSVControlBlock self)
LIB61850_API uint8_t ClientSVControlBlock_getSmpMod(ClientSVControlBlock self)
returns number of sample mode of the SV publisher
LIB61850_API bool ClientSVControlBlock_setResv(ClientSVControlBlock self, bool value)
LIB61850_API int ClientSVControlBlock_getOptFlds(ClientSVControlBlock self)
Gets the OptFlds parameter of the RCB (decides what information to include in a report)
LIB61850_API IedClientError ClientSVControlBlock_getLastComError(ClientSVControlBlock self)
Return the error code of the last write or write acccess to the SVCB.
LIB61850_API char * ClientSVControlBlock_getDatSet(ClientSVControlBlock self)
Get the (MMS) reference to the data set.
LIB61850_API int ClientSVControlBlock_getNoASDU(ClientSVControlBlock self)
returns number of ASDUs included in the SV message
LIB61850_API bool ClientSVControlBlock_getSvEna(ClientSVControlBlock self)
LIB61850_API bool ClientSVControlBlock_isMulticast(ClientSVControlBlock self)
Test if this SVCB is multicast.
LIB61850_API uint16_t ClientSVControlBlock_getSmpRate(ClientSVControlBlock self)
LIB61850_API PhyComAddress ClientSVControlBlock_getDstAddress(ClientSVControlBlock self)
returns the destination address of the SV publisher
LIB61850_API void ClientSVControlBlock_destroy(ClientSVControlBlock self)
Free all resources related to the ClientSVControlBlock instance.
struct sClientSVControlBlock * ClientSVControlBlock
Definition: iec61850_client.h:534
struct sMmsValue MmsValue
Definition: mms_value.h:68
uint16_t Quality
Definition: iec61850_common.h:330
MmsType
Definition: mms_common.h:106
struct sClientReportControlBlock * ClientReportControlBlock
Definition: iec61850_client.h:49
struct sClientGooseControlBlock * ClientGooseControlBlock
Definition: iec61850_client.h:52
struct sClientReport * ClientReport
Definition: iec61850_client.h:46
struct sClientDataSet * ClientDataSet
Definition: iec61850_client.h:43
ControlModel
Control model (represented by "ctlModel" attribute)
Definition: iec61850_common.h:61
struct sMmsConnection * MmsConnection
Definition: mms_client_connection.h:75
#define DEPRECATED
Definition: sv_subscriber.h:556
Definition: iec61850_client.h:65
ControlAddCause addCause
Definition: iec61850_client.h:68
int ctlNum
Definition: iec61850_client.h:66
ControlLastApplError error
Definition: iec61850_client.h:67
Definition: iec61850_common.h:51
Definition: iec61850_common.h:421