libiec61850  1.2.0
iec61850_client.h
Go to the documentation of this file.
1 /*
2  * iec61850_client.h
3  *
4  * Copyright 2013, 2014, 2015 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 
37 #ifndef DEPRECATED
38 #if defined(__GNUC__) || defined(__clang__)
39  #define DEPRECATED __attribute__((deprecated))
40 #else
41  #define DEPRECATED
42 #endif
43 #endif
44 
51 typedef struct sClientDataSet* ClientDataSet;
52 
54 typedef struct sClientReport* ClientReport;
55 
57 typedef struct sClientReportControlBlock* ClientReportControlBlock;
58 
60 typedef struct sClientGooseControlBlock* ClientGooseControlBlock;
61 
69 typedef struct sIedConnection* IedConnection;
70 
72 typedef struct
73 {
74  int ctlNum;
75  int error;
78 
80 typedef enum
81 {
86 
88 typedef enum {
89  /* general errors */
90 
93 
96 
99 
102 
105 
108 
109  /* client side errors */
110 
113 
115 
118 
121 
122  /* service error - error reported by server */
123 
126 
129 
132 
135 
138 
141 
144 
147 
150 
153 
156 
159 
162 
165 
168 
172 
173 /**************************************************
174  * Connection creation and destruction
175  **************************************************/
176 
186 IedConnection
188 
201 IedConnection
202 IedConnection_createWithTlsSupport(TLSConfiguration tlsConfig);
203 
212 void
213 IedConnection_destroy(IedConnection self);
214 
215 
225 void
226 IedConnection_setConnectTimeout(IedConnection self, uint32_t timeoutInMs);
227 
228 /**************************************************
229  * Association service
230  **************************************************/
231 
240 void
241 IedConnection_connect(IedConnection self, IedClientError* error, const char* hostname, int tcpPort);
242 
255 void
256 IedConnection_abort(IedConnection self, IedClientError* error);
257 
270 void
271 IedConnection_release(IedConnection self, IedClientError* error);
272 
280 void
281 IedConnection_close(IedConnection self);
282 
292 IedConnectionState
293 IedConnection_getState(IedConnection self);
294 
303 IedConnection_getLastApplError(IedConnection self);
304 
305 
306 typedef void (*IedConnectionClosedHandler) (void* parameter, IedConnection connection);
307 
315 void
317  void* parameter);
318 
330 IedConnection_getMmsConnection(IedConnection self);
331 
341 #define IEC61850_SV_OPT_REFRESH_TIME 1
342 
344 #define IEC61850_SV_OPT_SAMPLE_SYNC 2
345 
347 #define IEC61850_SV_OPT_SAMPLE_RATE 4
348 
350 #define IEC61850_SV_OPT_DATA_SET 8
351 
353 #define IEC61850_SV_OPT_SECURITY 16
354 
355 #define IEC61850_SV_SMPMOD_SAMPLES_PER_PERIOD 0
356 
357 #define IEC61850_SV_SMPMOD_SAMPLES_PER_SECOND 1
358 
359 #define IEC61850_SV_SMPMOD_SECONDS_PER_SAMPLE 2
360 
361 
363 typedef struct sClientSVControlBlock* ClientSVControlBlock;
364 
376 ClientSVControlBlock
377 ClientSVControlBlock_create(IedConnection connection, const char* reference);
378 
384 void
385 ClientSVControlBlock_destroy(ClientSVControlBlock self);
386 
387 bool
388 ClientSVControlBlock_isMulticast(ClientSVControlBlock self);
389 
398 ClientSVControlBlock_getLastComError(ClientSVControlBlock self);
399 
400 
401 bool
402 ClientSVControlBlock_setSvEna(ClientSVControlBlock self, bool value);
403 
404 bool
405 ClientSVControlBlock_getSvEna(ClientSVControlBlock self);
406 
407 bool
408 ClientSVControlBlock_setResv(ClientSVControlBlock self, bool value);
409 
410 bool
411 ClientSVControlBlock_getResv(ClientSVControlBlock self);
412 
413 char*
414 ClientSVControlBlock_getMsvID(ClientSVControlBlock self);
415 
427 char*
428 ClientSVControlBlock_getDatSet(ClientSVControlBlock self);
429 
430 uint32_t
431 ClientSVControlBlock_getConfRev(ClientSVControlBlock self);
432 
433 uint16_t
434 ClientSVControlBlock_getSmpRate(ClientSVControlBlock self);
435 
436 
443 ClientSVControlBlock_getDstAddress(ClientSVControlBlock self);
444 
450 int
451 ClientSVControlBlock_getOptFlds(ClientSVControlBlock self);
452 
458 uint8_t
459 ClientSVControlBlock_getSmpMod(ClientSVControlBlock self);
460 
466 int
467 ClientSVControlBlock_getNoASDU(ClientSVControlBlock self);
468 
469 
478 /*********************************************************
479  * GOOSE services handling (MMS part)
480  ********************************************************/
481 
483 #define GOCB_ELEMENT_GO_ENA 1
484 
486 #define GOCB_ELEMENT_GO_ID 2
487 
489 #define GOCB_ELEMENT_DATSET 4
490 
492 #define GOCB_ELEMENT_CONF_REV 8
493 
495 #define GOCB_ELEMENT_NDS_COMM 16
496 
498 #define GOCB_ELEMENT_DST_ADDRESS 32
499 
501 #define GOCB_ELEMENT_MIN_TIME 64
502 
504 #define GOCB_ELEMENT_MAX_TIME 128
505 
507 #define GOCB_ELEMENT_FIXED_OFFS 256
508 
510 #define GOCB_ELEMENT_ALL 511
511 
512 
513 /**************************************************
514  * ClientGooseControlBlock class
515  **************************************************/
516 
517 ClientGooseControlBlock
518 ClientGooseControlBlock_create(const char* dataAttributeReference);
519 
520 void
521 ClientGooseControlBlock_destroy(ClientGooseControlBlock self);
522 
523 bool
524 ClientGooseControlBlock_getGoEna(ClientGooseControlBlock self);
525 
526 void
527 ClientGooseControlBlock_setGoEna(ClientGooseControlBlock self, bool goEna);
528 
529 const char*
530 ClientGooseControlBlock_getGoID(ClientGooseControlBlock self);
531 
532 void
533 ClientGooseControlBlock_setGoID(ClientGooseControlBlock self, const char* goID);
534 
535 const char*
536 ClientGooseControlBlock_getDatSet(ClientGooseControlBlock self);
537 
538 void
539 ClientGooseControlBlock_setDatSet(ClientGooseControlBlock self, const char* datSet);
540 
541 uint32_t
542 ClientGooseControlBlock_getConfRev(ClientGooseControlBlock self);
543 
544 bool
545 ClientGooseControlBlock_getNdsComm(ClientGooseControlBlock self);
546 
547 uint32_t
548 ClientGooseControlBlock_getMinTime(ClientGooseControlBlock self);
549 
550 uint32_t
551 ClientGooseControlBlock_getMaxTime(ClientGooseControlBlock self);
552 
553 bool
554 ClientGooseControlBlock_getFixedOffs(ClientGooseControlBlock self);
555 
557 ClientGooseControlBlock_getDstAddress(ClientGooseControlBlock self);
558 
559 void
560 ClientGooseControlBlock_setDstAddress(ClientGooseControlBlock self, PhyComAddress value);
561 
562 DEPRECATED MmsValue* /* MMS_OCTET_STRING */
563 ClientGooseControlBlock_getDstAddress_addr(ClientGooseControlBlock self);
564 
565 DEPRECATED void
566 ClientGooseControlBlock_setDstAddress_addr(ClientGooseControlBlock self, MmsValue* macAddr);
567 
568 DEPRECATED uint8_t
569 ClientGooseControlBlock_getDstAddress_priority(ClientGooseControlBlock self);
570 
571 DEPRECATED void
572 ClientGooseControlBlock_setDstAddress_priority(ClientGooseControlBlock self, uint8_t priorityValue);
573 
574 DEPRECATED uint16_t
575 ClientGooseControlBlock_getDstAddress_vid(ClientGooseControlBlock self);
576 
577 DEPRECATED void
578 ClientGooseControlBlock_setDstAddress_vid(ClientGooseControlBlock self, uint16_t vidValue);
579 
580 DEPRECATED uint16_t
581 ClientGooseControlBlock_getDstAddress_appid(ClientGooseControlBlock self);
582 
583 DEPRECATED void
584 ClientGooseControlBlock_setDstAddress_appid(ClientGooseControlBlock self, uint16_t appidValue);
585 
586 
587 /*********************************************************
588  * GOOSE services (access to GOOSE Control Blocks (GoCB))
589  ********************************************************/
590 
618 ClientGooseControlBlock
619 IedConnection_getGoCBValues(IedConnection self, IedClientError* error, const char* goCBReference, ClientGooseControlBlock updateGoCB);
620 
642 void
643 IedConnection_setGoCBValues(IedConnection self, IedClientError* error, ClientGooseControlBlock goCB,
644  uint32_t parametersMask, bool singleRequest);
645 
648 /********************************************
649  * Reporting services
650  ********************************************/
651 
691 ClientReportControlBlock
692 IedConnection_getRCBValues(IedConnection self, IedClientError* error, const char* rcbReference,
693  ClientReportControlBlock updateRcb);
694 
696 typedef enum {
699 
702 
705 
708 
711 
714 
718 
719 #define REASON_NOT_INCLUDED IEC61850_REASON_NOT_INCLUDED
720 #define REASON_DATA_CHANGE IEC61850_REASON_DATA_CHANGE
721 #define REASON_QUALITY_CHANGE IEC61850_REASON_QUALITY_CHANGE
722 #define REASON_DATA_UPDATE IEC61850_REASON_DATA_UPDATE
723 #define REASON_INTEGRITY IEC61850_REASON_INTEGRITY
724 #define REASON_GI IEC61850_REASON_GI
725 #define REASON_UNKNOWN IEC61850_REASON_UNKNOWN
726 
727 
728 /* Element encoding mask values for ClientReportControlBlock */
729 
731 #define RCB_ELEMENT_RPT_ID 1
732 
734 #define RCB_ELEMENT_RPT_ENA 2
735 
737 #define RCB_ELEMENT_RESV 4
738 
740 #define RCB_ELEMENT_DATSET 8
741 
743 #define RCB_ELEMENT_CONF_REV 16
744 
746 #define RCB_ELEMENT_OPT_FLDS 32
747 
749 #define RCB_ELEMENT_BUF_TM 64
750 
752 #define RCB_ELEMENT_SQ_NUM 128
753 
755 #define RCB_ELEMENT_TRG_OPS 256
756 
758 #define RCB_ELEMENT_INTG_PD 512
759 
761 #define RCB_ELEMENT_GI 1024
762 
764 #define RCB_ELEMENT_PURGE_BUF 2048
765 
767 #define RCB_ELEMENT_ENTRY_ID 4096
768 
770 #define RCB_ELEMENT_TIME_OF_ENTRY 8192
771 
773 #define RCB_ELEMENT_RESV_TMS 16384
774 
776 #define RCB_ELEMENT_OWNER 32768
777 
799 void
800 IedConnection_setRCBValues(IedConnection self, IedClientError* error, ClientReportControlBlock rcb,
801  uint32_t parametersMask, bool singleRequest);
802 
809 typedef void (*ReportCallbackFunction) (void* parameter, ClientReport report);
810 
830 void
831 IedConnection_installReportHandler(IedConnection self, const char* rcbReference, const char* rptId, ReportCallbackFunction handler,
832  void* handlerParameter);
833 
840 void
841 IedConnection_uninstallReportHandler(IedConnection self, const char* rcbReference);
842 
854 void
855 IedConnection_triggerGIReport(IedConnection self, IedClientError* error, const char* rcbReference);
856 
857 /****************************************
858  * Access to received reports
859  ****************************************/
860 
869 const char*
870 ClientReport_getDataSetName(ClientReport self);
871 
878 MmsValue*
879 ClientReport_getDataSetValues(ClientReport self);
880 
887 char*
888 ClientReport_getRcbReference(ClientReport self);
889 
896 char*
897 ClientReport_getRptId(ClientReport self);
898 
908 ClientReport_getReasonForInclusion(ClientReport self, int elementIndex);
909 
919 MmsValue*
920 ClientReport_getEntryId(ClientReport self);
921 
929 bool
930 ClientReport_hasTimestamp(ClientReport self);
931 
932 bool
933 ClientReport_hasSeqNum(ClientReport self);
934 
935 uint16_t
936 ClientReport_getSeqNum(ClientReport self);
937 
938 bool
939 ClientReport_hasDataSetName(ClientReport self);
940 
941 bool
942 ClientReport_hasReasonForInclusion(ClientReport self);
943 
944 bool
945 ClientReport_hasConfRev(ClientReport self);
946 
947 uint32_t
948 ClientReport_getConfRev(ClientReport self);
949 
957 bool
958 ClientReport_hasBufOvfl(ClientReport self);
959 
967 bool
968 ClientReport_getBufOvfl(ClientReport self);
969 
977 bool
978 ClientReport_hasDataReference(ClientReport self);
979 
993 const char*
994 ClientReport_getDataReference(ClientReport self, int elementIndex);
995 
996 
1007 uint64_t
1008 ClientReport_getTimestamp(ClientReport self);
1009 
1017 char*
1019 
1020 /**************************************************
1021  * ClientReportControlBlock access class
1022  **************************************************/
1023 
1024 ClientReportControlBlock
1025 ClientReportControlBlock_create(const char* rcbReference);
1026 
1027 void
1028 ClientReportControlBlock_destroy(ClientReportControlBlock self);
1029 
1030 char*
1031 ClientReportControlBlock_getObjectReference(ClientReportControlBlock self);
1032 
1033 bool
1034 ClientReportControlBlock_isBuffered(ClientReportControlBlock self);
1035 
1036 const char*
1037 ClientReportControlBlock_getRptId(ClientReportControlBlock self);
1038 
1039 void
1040 ClientReportControlBlock_setRptId(ClientReportControlBlock self, const char* rptId);
1041 
1042 bool
1043 ClientReportControlBlock_getRptEna(ClientReportControlBlock self);
1044 
1045 void
1046 ClientReportControlBlock_setRptEna(ClientReportControlBlock self, bool rptEna);
1047 
1048 bool
1049 ClientReportControlBlock_getResv(ClientReportControlBlock self);
1050 
1051 void
1052 ClientReportControlBlock_setResv(ClientReportControlBlock self, bool resv);
1053 
1054 const char*
1055 ClientReportControlBlock_getDataSetReference(ClientReportControlBlock self);
1056 
1073 void
1074 ClientReportControlBlock_setDataSetReference(ClientReportControlBlock self, const char* dataSetReference);
1075 
1076 uint32_t
1077 ClientReportControlBlock_getConfRev(ClientReportControlBlock self);
1078 
1079 int
1080 ClientReportControlBlock_getOptFlds(ClientReportControlBlock self);
1081 
1082 void
1083 ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds);
1084 
1085 uint32_t
1086 ClientReportControlBlock_getBufTm(ClientReportControlBlock self);
1087 
1088 void
1089 ClientReportControlBlock_setBufTm(ClientReportControlBlock self, uint32_t bufTm);
1090 
1091 uint16_t
1092 ClientReportControlBlock_getSqNum(ClientReportControlBlock self);
1093 
1094 int
1095 ClientReportControlBlock_getTrgOps(ClientReportControlBlock self);
1096 
1097 void
1098 ClientReportControlBlock_setTrgOps(ClientReportControlBlock self, int trgOps);
1099 
1100 uint32_t
1101 ClientReportControlBlock_getIntgPd(ClientReportControlBlock self);
1102 
1103 void
1104 ClientReportControlBlock_setIntgPd(ClientReportControlBlock self, uint32_t intgPd);
1105 
1106 bool
1107 ClientReportControlBlock_getGI(ClientReportControlBlock self);
1108 
1109 void
1110 ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi);
1111 
1112 bool
1113 ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self);
1114 
1115 void
1116 ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBuf);
1117 
1118 int16_t
1119 ClientReportControlBlock_getResvTms(ClientReportControlBlock self);
1120 
1121 void
1122 ClientReportControlBlock_setResvTms(ClientReportControlBlock self, int16_t resvTms);
1123 
1124 MmsValue* /* <MMS_OCTET_STRING> */
1125 ClientReportControlBlock_getEntryId(ClientReportControlBlock self);
1126 
1127 void
1128 ClientReportControlBlock_setEntryId(ClientReportControlBlock self, MmsValue* entryId);
1129 
1130 uint64_t
1131 ClientReportControlBlock_getEntryTime(ClientReportControlBlock self);
1132 
1133 MmsValue* /* <MMS_OCTET_STRING> */
1134 ClientReportControlBlock_getOwner(ClientReportControlBlock self);
1135 
1136 
1139 /****************************************
1140  * Data model access services
1141  ****************************************/
1142 
1159 MmsValue*
1160 IedConnection_readObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc);
1161 
1171 void
1172 IedConnection_writeObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc,
1173  MmsValue* value);
1174 
1175 
1184 bool
1185 IedConnection_readBooleanValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1186 
1195 float
1196 IedConnection_readFloatValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1197 
1210 char*
1211 IedConnection_readStringValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1212 
1223 int32_t
1224 IedConnection_readInt32Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1225 
1236 int64_t
1237 IedConnection_readInt64Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1238 
1249 uint32_t
1250 IedConnection_readUnsigned32Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1251 
1267 Timestamp*
1268 IedConnection_readTimestampValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc,
1269  Timestamp* timeStamp);
1270 
1281 Quality
1282 IedConnection_readQualityValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1283 
1293 void
1294 IedConnection_writeBooleanValue(IedConnection self, IedClientError* error, const char* objectReference,
1295  FunctionalConstraint fc, bool value);
1296 
1306 void
1307 IedConnection_writeInt32Value(IedConnection self, IedClientError* error, const char* objectReference,
1308  FunctionalConstraint fc, int32_t value);
1309 
1319 void
1320 IedConnection_writeUnsigned32Value(IedConnection self, IedClientError* error, const char* objectReference,
1321  FunctionalConstraint fc, uint32_t value);
1322 
1332 void
1333 IedConnection_writeFloatValue(IedConnection self, IedClientError* error, const char* objectReference,
1334  FunctionalConstraint fc, float value);
1335 
1336 void
1337 IedConnection_writeVisibleStringValue(IedConnection self, IedClientError* error, const char* objectReference,
1338  FunctionalConstraint fc, char* value);
1339 
1340 void
1341 IedConnection_writeOctetString(IedConnection self, IedClientError* error, const char* objectReference,
1342  FunctionalConstraint fc, uint8_t* value, int valueLength);
1343 
1346 /****************************************
1347  * Data set handling
1348  ****************************************/
1349 
1373 ClientDataSet
1374 IedConnection_readDataSetValues(IedConnection self, IedClientError* error, const char* dataSetReference, ClientDataSet dataSet);
1375 
1393 void
1394 IedConnection_createDataSet(IedConnection self, IedClientError* error, const char* dataSetReference, LinkedList /* char* */ dataSetElements);
1395 
1409 bool
1410 IedConnection_deleteDataSet(IedConnection self, IedClientError* error, const char* dataSetReference);
1411 
1412 
1427 LinkedList /* <char*> */
1428 IedConnection_getDataSetDirectory(IedConnection self, IedClientError* error, const char* dataSetReference, bool* isDeletable);
1429 
1445 void
1446 IedConnection_writeDataSetValues(IedConnection self, IedClientError* error, const char* dataSetReference,
1447  LinkedList/*<MmsValue*>*/ values, /* OUTPUT */LinkedList* /* <MmsValue*> */accessResults);
1448 
1449 
1450 /********************************************************
1451  * Data set object (local representation of a data set)
1452  *******************************************************/
1453 
1462 void
1463 ClientDataSet_destroy(ClientDataSet self);
1464 
1479 MmsValue*
1480 ClientDataSet_getValues(ClientDataSet self);
1481 
1489 char*
1490 ClientDataSet_getReference(ClientDataSet self);
1491 
1499 int
1500 ClientDataSet_getDataSetSize(ClientDataSet self);
1501 
1504 /************************************
1505  * Control service functions
1506  ************************************/
1507 
1514 typedef struct sControlObjectClient* ControlObjectClient;
1515 
1516 typedef enum {
1522 } ControlModel;
1523 
1524 
1536 ControlObjectClient
1537 ControlObjectClient_create(const char* objectReference, IedConnection connection);
1538 
1539 void
1540 ControlObjectClient_destroy(ControlObjectClient self);
1541 
1542 char*
1543 ControlObjectClient_getObjectReference(ControlObjectClient self);
1544 
1545 ControlModel
1546 ControlObjectClient_getControlModel(ControlObjectClient self);
1547 
1557 bool
1558 ControlObjectClient_operate(ControlObjectClient self, MmsValue* ctlVal, uint64_t operTime);
1559 
1560 bool
1561 ControlObjectClient_select(ControlObjectClient self);
1562 
1571 bool
1572 ControlObjectClient_selectWithValue(ControlObjectClient self, MmsValue* ctlVal);
1573 
1574 bool
1575 ControlObjectClient_cancel(ControlObjectClient self);
1576 
1577 void
1578 ControlObjectClient_setLastApplError(ControlObjectClient self, LastApplError lastAppIError);
1579 
1581 ControlObjectClient_getLastApplError(ControlObjectClient self);
1582 
1583 void
1584 ControlObjectClient_setTestMode(ControlObjectClient self, bool value);
1585 
1586 void
1587 ControlObjectClient_setOrigin(ControlObjectClient self, const char* orIdent, int orCat);
1588 
1597 void
1598 ControlObjectClient_useConstantT(ControlObjectClient self, bool useConstantT);
1599 
1603 void
1604 ControlObjectClient_enableInterlockCheck(ControlObjectClient self);
1605 
1609 void
1610 ControlObjectClient_enableSynchroCheck(ControlObjectClient self);
1611 
1618 void
1619 ControlObjectClient_setInterlockCheck(ControlObjectClient self, bool value);
1620 
1627 void
1628 ControlObjectClient_setSynchroCheck(ControlObjectClient self, bool value);
1629 
1630 
1642 typedef void (*CommandTerminationHandler) (void* parameter, ControlObjectClient controlClient);
1643 
1644 void
1646  void* handlerParameter);
1647 
1650 /*************************************
1651  * Model discovery services
1652  ************************************/
1653 
1670 void
1671 IedConnection_getDeviceModelFromServer(IedConnection self, IedClientError* error);
1672 
1683 LinkedList /*<char*>*/
1684 IedConnection_getLogicalDeviceList(IedConnection self, IedClientError* error);
1685 
1698 LinkedList /*<char*>*/
1699 IedConnection_getServerDirectory(IedConnection self, IedClientError* error, bool getFileNames);
1700 
1713 LinkedList /*<char*>*/
1714 IedConnection_getLogicalDeviceDirectory(IedConnection self, IedClientError* error, const char* logicalDeviceName);
1715 
1716 typedef enum {
1728 } ACSIClass;
1729 
1743 LinkedList /*<char*>*/
1744 IedConnection_getLogicalNodeVariables(IedConnection self, IedClientError* error,
1745  const char* logicalNodeReference);
1746 
1763 LinkedList /*<char*>*/
1764 IedConnection_getLogicalNodeDirectory(IedConnection self, IedClientError* error,
1765  const char* logicalNodeReference, ACSIClass acsiClass);
1766 
1780 LinkedList /*<char*>*/
1781 IedConnection_getDataDirectory(IedConnection self, IedClientError* error, const char* dataReference);
1782 
1797 LinkedList /*<char*>*/
1798 IedConnection_getDataDirectoryFC(IedConnection self, IedClientError* error, const char* dataReference);
1799 
1817 LinkedList
1818 IedConnection_getDataDirectoryByFC(IedConnection self, IedClientError* error, const char* dataReference, FunctionalConstraint fc);
1819 
1836 MmsVariableSpecification*
1837 IedConnection_getVariableSpecification(IedConnection self, IedClientError* error, const char* dataAttributeReference,
1839 
1865 LinkedList /* <MmsJournalEntry> */
1866 IedConnection_queryLogByTime(IedConnection self, IedClientError* error, const char* logReference,
1867  uint64_t startTime, uint64_t endTime, bool* moreFollows);
1868 
1886 LinkedList /* <MmsJournalEntry> */
1887 IedConnection_queryLogAfter(IedConnection self, IedClientError* error, const char* logReference,
1888  MmsValue* entryID, uint64_t timeStamp, bool* moreFollows);
1889 
1890 
1891 
1900 typedef struct sFileDirectoryEntry* FileDirectoryEntry;
1901 
1902 FileDirectoryEntry
1903 FileDirectoryEntry_create(const char* fileName, uint32_t fileSize, uint64_t lastModified);
1904 
1905 void
1906 FileDirectoryEntry_destroy(FileDirectoryEntry self);
1907 
1908 char*
1909 FileDirectoryEntry_getFileName(FileDirectoryEntry self);
1910 
1911 uint32_t
1912 FileDirectoryEntry_getFileSize(FileDirectoryEntry self);
1913 
1914 uint64_t
1915 FileDirectoryEntry_getLastModified(FileDirectoryEntry self);
1916 
1917 
1936 LinkedList /*<FileDirectoryEntry>*/
1937 IedConnection_getFileDirectory(IedConnection self, IedClientError* error, const char* directoryName);
1938 
1939 
1967 LinkedList /*<FileDirectoryEntry>*/
1968 IedConnection_getFileDirectoryEx(IedConnection self, IedClientError* error, const char* directoryName, const char* continueAfter,
1969  bool* moreFollows);
1970 
1985 typedef bool
1986 (*IedClientGetFileHandler) (void* parameter, uint8_t* buffer, uint32_t bytesRead);
1987 
1999 uint32_t
2000 IedConnection_getFile(IedConnection self, IedClientError* error, const char* fileName, IedClientGetFileHandler handler,
2001  void* handlerParameter);
2002 
2013 void
2014 IedConnection_setFilestoreBasepath(IedConnection, const char* basepath);
2015 
2026 void
2027 IedConnection_setFile(IedConnection self, IedClientError* error, const char* sourceFilename, const char* destinationFilename);
2028 
2029 
2039 void
2040 IedConnection_deleteFile(IedConnection self, IedClientError* error, const char* fileName);
2041 
2042 
2047 #ifdef __cplusplus
2048 }
2049 #endif
2050 
2051 
2052 #endif /* IEC61850_CLIENT_H_ */
ClientReportControlBlock ClientReportControlBlock_create(const char *rcbReference)
uint32_t FileDirectoryEntry_getFileSize(FileDirectoryEntry self)
LinkedList IedConnection_queryLogAfter(IedConnection self, IedClientError *error, const char *logReference, MmsValue *entryID, uint64_t timeStamp, bool *moreFollows)
Implementation of the QueryLogAfter ACSI service.
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)
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:1986
bool IedConnection_readBooleanValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type boolean
void ControlObjectClient_useConstantT(ControlObjectClient self, bool useConstantT)
Use a constant T parameter for all command (select, operate, cancel) of a single control sequence...
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_triggerGIReport(IedConnection self, IedClientError *error, const char *rcbReference)
Trigger a general interrogation (GI) report for the specified report control block (RCB) ...
int error
Definition: iec61850_client.h:75
uint32_t ClientGooseControlBlock_getConfRev(ClientGooseControlBlock self)
void ClientGooseControlBlock_destroy(ClientGooseControlBlock self)
bool ControlObjectClient_selectWithValue(ControlObjectClient self, MmsValue *ctlVal)
Send an select with value command to the server.
bool ClientReport_hasReasonForInclusion(ClientReport self)
void IedConnection_writeVisibleStringValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, char *value)
void IedConnection_release(IedConnection self, IedClientError *error)
Release the connection.
uint64_t ClientReportControlBlock_getEntryTime(ClientReportControlBlock self)
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)
ControlModel
Definition: iec61850_client.h:1516
void IedConnection_deleteFile(IedConnection self, IedClientError *error, const char *fileName)
Implementation of the DeleteFile ACSI service.
void ControlObjectClient_setSynchroCheck(ControlObjectClient self, bool value)
Set the value of the synchro check flag when a control command is sent.
struct sClientSVControlBlock * ClientSVControlBlock
Definition: iec61850_client.h:363
void ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi)
struct sFileDirectoryEntry * FileDirectoryEntry
Definition: iec61850_client.h:1900
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...
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 ...
const char * ClientReportControlBlock_getRptId(ClientReportControlBlock self)
struct sMmsConnection * MmsConnection
Definition: mms_client_connection.h:69
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
Definition: iec61850_client.h:1721
Definition: iec61850_client.h:134
void IedConnection_writeOctetString(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, uint8_t *value, int valueLength)
LinkedList IedConnection_getFileDirectory(IedConnection self, IedClientError *error, const char *directoryName)
returns the directory entries of the specified file directory.
uint32_t ClientSVControlBlock_getConfRev(ClientSVControlBlock self)
bool ControlObjectClient_select(ControlObjectClient self)
Definition: iec61850_common.h:41
bool ClientGooseControlBlock_getNdsComm(ClientGooseControlBlock self)
uint16_t Quality
Definition: iec61850_common.h:266
char * ClientSVControlBlock_getDatSet(ClientSVControlBlock self)
Get the (MMS) reference to the data set.
void IedConnection_abort(IedConnection self, IedClientError *error)
Abort the connection.
Definition: iec61850_client.h:114
Definition: iec61850_client.h:1717
const char * ClientReport_getDataReference(ClientReport self, int elementIndex)
get the data-reference of the element of the report data set
Definition: iec61850_client.h:107
Definition: iec61850_client.h:82
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
void ClientReportControlBlock_setResv(ClientReportControlBlock self, bool resv)
LinkedList IedConnection_getServerDirectory(IedConnection self, IedClientError *error, bool getFileNames)
Get the list of logical devices or files available at the server.
LinkedList IedConnection_getDataSetDirectory(IedConnection self, IedClientError *error, const char *dataSetReference, bool *isDeletable)
returns the object references of the elements of a data set
Definition: iec61850_client.h:137
ReasonForInclusion
Definition: iec61850_client.h:696
Definition: iec61850_client.h:92
MmsValue * ClientReport_getEntryId(ClientReport self)
get the entry ID of the report
bool ControlObjectClient_operate(ControlObjectClient self, MmsValue *ctlVal, uint64_t operTime)
Send an operate command to the server.
void ClientSVControlBlock_destroy(ClientSVControlBlock self)
Free all resources related to the ClientSVControlBlock instance.
void ClientDataSet_destroy(ClientDataSet self)
destroy an ClientDataSet instance. Has to be called by the application.
Definition: iec61850_client.h:152
uint16_t ClientReport_getSeqNum(ClientReport self)
ReasonForInclusion ClientReport_getReasonForInclusion(ClientReport self, int elementIndex)
get the reason code (reason for inclusion) for a specific report data set element ...
int ClientSVControlBlock_getNoASDU(ClientSVControlBlock self)
returns number of ASDUs included in the SV message
void ControlObjectClient_setLastApplError(ControlObjectClient self, LastApplError lastAppIError)
char * IedConnection_readStringValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type VisibleString or MmsString ...
DEPRECATED uint8_t ClientGooseControlBlock_getDstAddress_priority(ClientGooseControlBlock self)
uint32_t ClientReportControlBlock_getIntgPd(ClientReportControlBlock self)
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...
void IedConnection_setFilestoreBasepath(IedConnection, const char *basepath)
Set the virtual filestore basepath for the setFile service.
void ControlObjectClient_setTestMode(ControlObjectClient self, bool value)
Definition: iec61850_client.h:146
void ClientReportControlBlock_setEntryId(ClientReportControlBlock self, MmsValue *entryId)
const char * ClientGooseControlBlock_getGoID(ClientGooseControlBlock self)
PhyComAddress ClientGooseControlBlock_getDstAddress(ClientGooseControlBlock self)
LinkedList IedConnection_getLogicalDeviceDirectory(IedConnection self, IedClientError *error, const char *logicalDeviceName)
Get the list of logical nodes (LN) of a logical device.
void FileDirectoryEntry_destroy(FileDirectoryEntry self)
void IedConnection_connect(IedConnection self, IedClientError *error, const char *hostname, int tcpPort)
Connect to a server.
Definition: iec61850_client.h:128
IedConnection IedConnection_createWithTlsSupport(TLSConfiguration tlsConfig)
create a new IedConnection instance that has support for TLS
bool ClientReportControlBlock_getRptEna(ClientReportControlBlock self)
bool ClientReport_hasBufOvfl(ClientReport self)
Indicates if the report contains the bufOvfl (buffer overflow) flag.
uint64_t FileDirectoryEntry_getLastModified(FileDirectoryEntry self)
IedConnectionState IedConnection_getState(IedConnection self)
return the state of the connection.
void ClientReportControlBlock_setResvTms(ClientReportControlBlock self, int16_t resvTms)
Definition: iec61850_client.h:1725
const char * ClientReport_getDataSetName(ClientReport self)
Get the name of the report data set.
Definition: iec61850_client.h:704
uint32_t ClientReportControlBlock_getConfRev(ClientReportControlBlock self)
Definition: iec61850_client.h:1720
struct sControlObjectClient * ControlObjectClient
Definition: iec61850_client.h:1514
struct sClientReportControlBlock * ClientReportControlBlock
Definition: iec61850_client.h:57
Definition: iec61850_client.h:1518
void IedConnection_writeDataSetValues(IedConnection self, IedClientError *error, const char *dataSetReference, LinkedList values, LinkedList *accessResults)
Write the data set values to the server.
DEPRECATED uint16_t ClientGooseControlBlock_getDstAddress_appid(ClientGooseControlBlock self)
Definition: iec61850_client.h:1521
bool ClientReport_getBufOvfl(ClientReport self)
Get the value of the bufOvfl flag.
IedConnectionState
Definition: iec61850_client.h:80
int ClientDataSet_getDataSetSize(ClientDataSet self)
get the size of the data set (number of members)
DEPRECATED uint16_t ClientGooseControlBlock_getDstAddress_vid(ClientGooseControlBlock self)
LinkedList IedConnection_getDataDirectory(IedConnection self, IedClientError *error, const char *dataReference)
returns the directory of the given data object (DO)
ControlAddCause
Definition: iec61850_common.h:143
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)...
Definition: iec61850_client.h:101
ControlModel ControlObjectClient_getControlModel(ControlObjectClient self)
DEPRECATED MmsValue * ClientGooseControlBlock_getDstAddress_addr(ClientGooseControlBlock self)
void IedConnection_uninstallReportHandler(IedConnection self, const char *rcbReference)
uninstall a report handler function for the specified report control block (RCB)
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.
float IedConnection_readFloatValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type float
ControlAddCause addCause
Definition: iec61850_client.h:76
Definition: iec61850_client.h:167
Definition: iec61850_common.h:352
uint32_t ClientReportControlBlock_getBufTm(ClientReportControlBlock self)
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...
uint8_t ClientSVControlBlock_getSmpMod(ClientSVControlBlock self)
returns number of sample mode of the SV publisher
struct sClientReport * ClientReport
Definition: iec61850_client.h:54
void ClientReportControlBlock_setRptId(ClientReportControlBlock self, const char *rptId)
uint64_t ClientReport_getTimestamp(ClientReport self)
get the timestamp of the report
int ClientReportControlBlock_getOptFlds(ClientReportControlBlock self)
MmsValue * ClientReportControlBlock_getEntryId(ClientReportControlBlock self)
ACSIClass
Definition: iec61850_client.h:1716
Definition: iec61850_client.h:1724
char * ClientReportControlBlock_getObjectReference(ClientReportControlBlock self)
int ctlNum
Definition: iec61850_client.h:74
Definition: iec61850_client.h:83
DEPRECATED void ClientGooseControlBlock_setDstAddress_vid(ClientGooseControlBlock self, uint16_t vidValue)
Definition: iec61850_client.h:164
Definition: iec61850_client.h:161
#define DEPRECATED
Definition: iec61850_client.h:41
Definition: iec61850_client.h:1519
bool ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self)
Definition: iec61850_client.h:95
Definition: iec61850_client.h:120
bool ClientReportControlBlock_isBuffered(ClientReportControlBlock self)
int ClientReportControlBlock_getTrgOps(ClientReportControlBlock self)
uint32_t ClientReport_getConfRev(ClientReport self)
bool ClientSVControlBlock_setSvEna(ClientSVControlBlock self, bool value)
uint16_t ClientReportControlBlock_getSqNum(ClientReportControlBlock self)
uint32_t IedConnection_getFile(IedConnection self, IedClientError *error, const char *fileName, IedClientGetFileHandler handler, void *handlerParameter)
Implementation of the GetFile ACSI service.
LastApplError ControlObjectClient_getLastApplError(ControlObjectClient self)
bool ClientSVControlBlock_setResv(ClientSVControlBlock self, bool value)
Definition: iec61850_client.h:1719
void IedConnection_createDataSet(IedConnection self, IedClientError *error, const char *dataSetReference, LinkedListdataSetElements)
create a new data set at the connected server device
LastApplError IedConnection_getLastApplError(IedConnection self)
Access to last application error received by the client connection.
MmsValue * ClientReport_getDataSetValues(ClientReport self)
return the received data set values of the report
void IedConnection_setFile(IedConnection self, IedClientError *error, const char *sourceFilename, const char *destinationFilename)
Implementation of the SetFile ACSI service.
Definition: iec61850_client.h:140
DEPRECATED void ClientGooseControlBlock_setDstAddress_priority(ClientGooseControlBlock self, uint8_t priorityValue)
struct sClientGooseControlBlock * ClientGooseControlBlock
Definition: iec61850_client.h:60
Definition: iec61850_client.h:125
void ClientGooseControlBlock_setDstAddress(ClientGooseControlBlock self, PhyComAddress value)
Definition: iec61850_client.h:84
FileDirectoryEntry FileDirectoryEntry_create(const char *fileName, uint32_t fileSize, uint64_t lastModified)
bool IedConnection_deleteDataSet(IedConnection self, IedClientError *error, const char *dataSetReference)
delete a deletable data set at the connected server device
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
Definition: iec61850_client.h:155
bool ClientReport_hasConfRev(ClientReport self)
bool ClientReport_hasDataSetName(ClientReport self)
char * ClientSVControlBlock_getMsvID(ClientSVControlBlock self)
void IedConnection_destroy(IedConnection self)
destroy an IedConnection instance.
void ClientReportControlBlock_setTrgOps(ClientReportControlBlock self, int trgOps)
Definition: iec61850_client.h:698
bool ClientReport_hasTimestamp(ClientReport self)
determine if the last received report contains a timestamp
ClientGooseControlBlock ClientGooseControlBlock_create(const char *dataAttributeReference)
bool ClientSVControlBlock_getResv(ClientSVControlBlock self)
char * ControlObjectClient_getObjectReference(ControlObjectClient self)
Definition: iec61850_client.h:117
ClientSVControlBlock ClientSVControlBlock_create(IedConnection connection, const char *reference)
Create a new ClientSVControlBlock instance.
Definition: iec61850_client.h:104
void ClientReportControlBlock_setBufTm(ClientReportControlBlock self, uint32_t bufTm)
Definition: iec61850_client.h:170
LinkedList IedConnection_getDataDirectoryFC(IedConnection self, IedClientError *error, const char *dataReference)
returns the directory of the given data object (DO)
bool ClientReportControlBlock_getResv(ClientReportControlBlock self)
bool ClientGooseControlBlock_getFixedOffs(ClientGooseControlBlock self)
MmsConnection IedConnection_getMmsConnection(IedConnection self)
get a handle to the underlying MmsConnection
Definition: iec61850_client.h:1520
bool ClientGooseControlBlock_getGoEna(ClientGooseControlBlock self)
void ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds)
Definition: iec61850_client.h:716
void ClientReportControlBlock_destroy(ClientReportControlBlock self)
bool ClientSVControlBlock_isMulticast(ClientSVControlBlock self)
Definition: iec61850_client.h:131
DEPRECATED void ClientGooseControlBlock_setDstAddress_addr(ClientGooseControlBlock self, MmsValue *macAddr)
void(* ReportCallbackFunction)(void *parameter, ClientReport report)
Callback function for receiving reports.
Definition: iec61850_client.h:809
void ControlObjectClient_setOrigin(ControlObjectClient self, const char *orIdent, int orCat)
const char * ClientReportControlBlock_getDataSetReference(ClientReportControlBlock self)
bool ClientSVControlBlock_getSvEna(ClientSVControlBlock self)
Definition: iec61850_client.h:1726
Definition: iec61850_client.h:1722
Definition: iec61850_client.h:1723
void ClientReportControlBlock_setIntgPd(ClientReportControlBlock self, uint32_t intgPd)
void ControlObjectClient_enableInterlockCheck(ControlObjectClient self)
Definition: iec61850_client.h:707
void ClientGooseControlBlock_setDatSet(ClientGooseControlBlock self, const char *datSet)
const char * ClientGooseControlBlock_getDatSet(ClientGooseControlBlock self)
void ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBuf)
void IedConnection_close(IedConnection self)
Close the connection.
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. A GoCB contains the configuration values for a single GOOSE publisher.
bool ClientReport_hasSeqNum(ClientReport self)
void ControlObjectClient_enableSynchroCheck(ControlObjectClient self)
void ControlObjectClient_setCommandTerminationHandler(ControlObjectClient self, CommandTerminationHandler handler, void *handlerParameter)
void ClientGooseControlBlock_setGoID(ClientGooseControlBlock self, const char *goID)
uint32_t ClientGooseControlBlock_getMaxTime(ClientGooseControlBlock self)
Definition: iec61850_client.h:713
void ClientReportControlBlock_setRptEna(ClientReportControlBlock self, bool rptEna)
char * ReasonForInclusion_getValueAsString(ReasonForInclusion reasonCode)
get the reason for inclusion of as a human readable string
void IedConnection_getDeviceModelFromServer(IedConnection self, IedClientError *error)
Retrieve the device model from the server.
Quality IedConnection_readQualityValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) of type Quality
void(* IedConnectionClosedHandler)(void *parameter, IedConnection connection)
Definition: iec61850_client.h:306
Definition: iec61850_client.h:149
void ClientGooseControlBlock_setGoEna(ClientGooseControlBlock self, bool goEna)
uint32_t ClientGooseControlBlock_getMinTime(ClientGooseControlBlock self)
Definition: iec61850_client.h:701
char * ClientReport_getRptId(ClientReport self)
return RptId of the server RCB associated with this ClientReport object
Definition: iec61850_client.h:1727
Definition: iec61850_client.h:1517
void ControlObjectClient_destroy(ControlObjectClient self)
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.
LinkedList IedConnection_getLogicalDeviceList(IedConnection self, IedClientError *error)
Get the list of logical devices available at the server (DEPRECATED)
void IedConnection_setConnectTimeout(IedConnection self, uint32_t timeoutInMs)
set the connect timeout in ms
void(* CommandTerminationHandler)(void *parameter, ControlObjectClient controlClient)
Private a callback handler that is invoked when a command termination message is received.
Definition: iec61850_client.h:1642
FunctionalConstraint
Definition: iec61850_common.h:202
Definition: iec61850_client.h:710
int ClientSVControlBlock_getOptFlds(ClientSVControlBlock self)
returns the OptFlds bit string as integer
struct sClientDataSet * ClientDataSet
Definition: iec61850_client.h:51
DEPRECATED void ClientGooseControlBlock_setDstAddress_appid(ClientGooseControlBlock self, uint16_t appidValue)
int16_t ClientReportControlBlock_getResvTms(ClientReportControlBlock self)
void ClientReportControlBlock_setDataSetReference(ClientReportControlBlock self, const char *dataSetReference)
set the data set to be observed by the RCB
bool ControlObjectClient_cancel(ControlObjectClient self)
char * ClientReport_getRcbReference(ClientReport self)
return reference (name) of the server RCB associated with this ClientReport object ...
bool ClientReportControlBlock_getGI(ClientReportControlBlock self)
PhyComAddress ClientSVControlBlock_getDstAddress(ClientSVControlBlock self)
returns the destination address of the SV publisher
Definition: iec61850_client.h:1718
IedClientError ClientSVControlBlock_getLastComError(ClientSVControlBlock self)
Return the error code of the last write or write acccess to the SVCB.
struct sIedConnection * IedConnection
Definition: iec61850_client.h:69
Definition: iec61850_client.h:158
Definition: iec61850_client.h:112
void IedConnection_writeBooleanValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, bool value)
write a functional constrained data attribute (FCDA) of type boolean
uint16_t ClientSVControlBlock_getSmpRate(ClientSVControlBlock self)
bool ClientReport_hasDataReference(ClientReport self)
Indicates if the report contains data references for the reported data set members.
ClientDataSet IedConnection_readDataSetValues(IedConnection self, IedClientError *error, const char *dataSetReference, ClientDataSet dataSet)
get data set values from a server device
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.
IedConnection IedConnection_create(void)
create a new IedConnection instance
Definition: iec61850_client.h:72
char * ClientDataSet_getReference(ClientDataSet self)
Get the object reference of the data set.
MmsValue * ClientReportControlBlock_getOwner(ClientReportControlBlock self)
void IedConnection_installConnectionClosedHandler(IedConnection self, IedConnectionClosedHandler handler, void *parameter)
Install a handler function that will be called when the connection is lost.
char * FileDirectoryEntry_getFileName(FileDirectoryEntry self)
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)
MmsValue * IedConnection_readObject(IedConnection self, IedClientError *error, const char *dataAttributeReference, FunctionalConstraint fc)
read a functional constrained data attribute (FCDA) or functional constrained data (FCD)...
Definition: iec61850_client.h:143
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...
ControlObjectClient ControlObjectClient_create(const char *objectReference, IedConnection connection)
Create a new client control object.
void IedConnection_writeFloatValue(IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, float value)
write a functional constrained data attribute (FCDA) of type float
MmsValue * ClientDataSet_getValues(ClientDataSet self)
get the data set values locally stored in the ClientDataSet instance.
void ControlObjectClient_setInterlockCheck(ControlObjectClient self, bool value)
Set the value of the interlock check flag when a control command is sent.
struct sMmsValue MmsValue
Definition: mms_value.h:68
Definition: iec61850_client.h:98
LinkedList IedConnection_queryLogByTime(IedConnection self, IedClientError *error, const char *logReference, uint64_t startTime, uint64_t endTime, bool *moreFollows)
Implementation of the QueryLogByTime ACSI service.
IedClientError
Definition: iec61850_client.h:88