libIEC61850  1.1.2
Open-source IEC 61850 MMS/GOOSE/SV server and client library
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 
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;
67  int error;
70 
72 typedef enum
73 {
78 
80 typedef enum {
81  /* general errors */
82 
85 
88 
91 
94 
97 
100 
101  /* client side errors */
102 
105 
107 
110 
113 
114  /* service error - error reported by server */
115 
118 
121 
124 
127 
130 
133 
136 
139 
142 
145 
148 
151 
154 
157 
160 
164 
165 /**************************************************
166  * Connection creation and destruction
167  **************************************************/
168 
178 IedConnection
180 
189 void
190 IedConnection_destroy(IedConnection self);
191 
192 
202 void
203 IedConnection_setConnectTimeout(IedConnection self, uint32_t timeoutInMs);
204 
205 /**************************************************
206  * Association service
207  **************************************************/
208 
217 void
218 IedConnection_connect(IedConnection self, IedClientError* error, const char* hostname, int tcpPort);
219 
232 void
233 IedConnection_abort(IedConnection self, IedClientError* error);
234 
247 void
248 IedConnection_release(IedConnection self, IedClientError* error);
249 
257 void
258 IedConnection_close(IedConnection self);
259 
269 IedConnectionState
270 IedConnection_getState(IedConnection self);
271 
280 IedConnection_getLastApplError(IedConnection self);
281 
282 
283 typedef void (*IedConnectionClosedHandler) (void* parameter, IedConnection connection);
284 
292 void
294  void* parameter);
295 
307 IedConnection_getMmsConnection(IedConnection self);
308 
318 #define IEC61850_SV_OPT_REFRESH_TIME 1
319 
321 #define IEC61850_SV_OPT_SAMPLE_SYNC 2
322 
324 #define IEC61850_SV_OPT_SAMPLE_RATE 4
325 
327 #define IEC61850_SV_OPT_DATA_SET 8
328 
330 #define IEC61850_SV_OPT_SECURITY 16
331 
332 
334 typedef struct sClientSVControlBlock* ClientSVControlBlock;
335 
347 ClientSVControlBlock
348 ClientSVControlBlock_create(IedConnection connection, const char* reference);
349 
355 void
356 ClientSVControlBlock_destroy(ClientSVControlBlock self);
357 
358 bool
359 ClientSVControlBlock_isMulticast(ClientSVControlBlock self);
360 
369 ClientSVControlBlock_getLastComError(ClientSVControlBlock self);
370 
371 
372 bool
373 ClientSVControlBlock_setSvEna(ClientSVControlBlock self, bool svEna);
374 
375 bool
376 ClientSVControlBlock_getSvEna(ClientSVControlBlock self);
377 
378 bool
379 ClientSVControlBlock_setResv(ClientSVControlBlock self, bool svEna);
380 
381 bool
382 ClientSVControlBlock_getResv(ClientSVControlBlock self);
383 
384 char*
385 ClientSVControlBlock_getMsvID(ClientSVControlBlock self);
386 
398 char*
399 ClientSVControlBlock_getDatSet(ClientSVControlBlock self);
400 
401 uint32_t
402 ClientSVControlBlock_getConfRev(ClientSVControlBlock self);
403 
404 uint16_t
405 ClientSVControlBlock_getSmpRate(ClientSVControlBlock self);
406 
407 
414 ClientSVControlBlock_getDstAddress(ClientSVControlBlock self);
415 
421 int
422 ClientSVControlBlock_getOptFlds(ClientSVControlBlock self);
423 
429 uint8_t
430 ClientSVControlBlock_getSmpMod(ClientSVControlBlock self);
431 
437 int
438 ClientSVControlBlock_getNoASDU(ClientSVControlBlock self);
439 
440 
449 /*********************************************************
450  * GOOSE services handling (MMS part)
451  ********************************************************/
452 
454 #define GOCB_ELEMENT_GO_ENA 1
455 
457 #define GOCB_ELEMENT_GO_ID 2
458 
460 #define GOCB_ELEMENT_DATSET 4
461 
463 #define GOCB_ELEMENT_CONF_REV 8
464 
466 #define GOCB_ELEMENT_NDS_COMM 16
467 
469 #define GOCB_ELEMENT_DST_ADDRESS 32
470 
472 #define GOCB_ELEMENT_MIN_TIME 64
473 
475 #define GOCB_ELEMENT_MAX_TIME 128
476 
478 #define GOCB_ELEMENT_FIXED_OFFS 256
479 
481 #define GOCB_ELEMENT_ALL 511
482 
483 
484 /**************************************************
485  * ClientGooseControlBlock class
486  **************************************************/
487 
488 ClientGooseControlBlock
489 ClientGooseControlBlock_create(const char* dataAttributeReference);
490 
491 void
492 ClientGooseControlBlock_destroy(ClientGooseControlBlock self);
493 
494 bool
495 ClientGooseControlBlock_getGoEna(ClientGooseControlBlock self);
496 
497 void
498 ClientGooseControlBlock_setGoEna(ClientGooseControlBlock self, bool goEna);
499 
500 const char*
501 ClientGooseControlBlock_getGoID(ClientGooseControlBlock self);
502 
503 void
504 ClientGooseControlBlock_setGoID(ClientGooseControlBlock self, const char* goID);
505 
506 const char*
507 ClientGooseControlBlock_getDatSet(ClientGooseControlBlock self);
508 
509 void
510 ClientGooseControlBlock_setDatSet(ClientGooseControlBlock self, const char* datSet);
511 
512 uint32_t
513 ClientGooseControlBlock_getConfRev(ClientGooseControlBlock self);
514 
515 bool
516 ClientGooseControlBlock_getNdsComm(ClientGooseControlBlock self);
517 
518 uint32_t
519 ClientGooseControlBlock_getMinTime(ClientGooseControlBlock self);
520 
521 uint32_t
522 ClientGooseControlBlock_getMaxTime(ClientGooseControlBlock self);
523 
524 bool
525 ClientGooseControlBlock_getFixedOffs(ClientGooseControlBlock self);
526 
527 MmsValue* /* MMS_OCTET_STRING */
528 ClientGooseControlBlock_getDstAddress_addr(ClientGooseControlBlock self);
529 
530 void
531 ClientGooseControlBlock_setDstAddress_addr(ClientGooseControlBlock self, MmsValue* macAddr);
532 
533 uint8_t
534 ClientGooseControlBlock_getDstAddress_priority(ClientGooseControlBlock self);
535 
536 void
537 ClientGooseControlBlock_setDstAddress_priority(ClientGooseControlBlock self, uint8_t priorityValue);
538 
539 uint16_t
540 ClientGooseControlBlock_getDstAddress_vid(ClientGooseControlBlock self);
541 
542 void
543 ClientGooseControlBlock_setDstAddress_vid(ClientGooseControlBlock self, uint16_t vidValue);
544 
545 uint16_t
546 ClientGooseControlBlock_getDstAddress_appid(ClientGooseControlBlock self);
547 
548 void
549 ClientGooseControlBlock_setDstAddress_appid(ClientGooseControlBlock self, uint16_t appidValue);
550 
551 
552 /*********************************************************
553  * GOOSE services (access to GOOSE Control Blocks (GoCB))
554  ********************************************************/
555 
583 ClientGooseControlBlock
584 IedConnection_getGoCBValues(IedConnection self, IedClientError* error, const char* goCBReference, ClientGooseControlBlock updateGoCB);
585 
607 void
608 IedConnection_setGoCBValues(IedConnection self, IedClientError* error, ClientGooseControlBlock goCB,
609  uint32_t parametersMask, bool singleRequest);
610 
613 /********************************************
614  * Reporting services
615  ********************************************/
616 
656 ClientReportControlBlock
657 IedConnection_getRCBValues(IedConnection self, IedClientError* error, const char* rcbReference,
658  ClientReportControlBlock updateRcb);
659 
661 typedef enum {
664 
667 
670 
673 
676 
679 
683 
684 #define REASON_NOT_INCLUDED IEC61850_REASON_NOT_INCLUDED
685 #define REASON_DATA_CHANGE IEC61850_REASON_DATA_CHANGE
686 #define REASON_QUALITY_CHANGE IEC61850_REASON_QUALITY_CHANGE
687 #define REASON_DATA_UPDATE IEC61850_REASON_DATA_UPDATE
688 #define REASON_INTEGRITY IEC61850_REASON_INTEGRITY
689 #define REASON_GI IEC61850_REASON_GI
690 #define REASON_UNKNOWN IEC61850_REASON_UNKNOWN
691 
692 
693 /* Element encoding mask values for ClientReportControlBlock */
694 
696 #define RCB_ELEMENT_RPT_ID 1
697 
699 #define RCB_ELEMENT_RPT_ENA 2
700 
702 #define RCB_ELEMENT_RESV 4
703 
705 #define RCB_ELEMENT_DATSET 8
706 
708 #define RCB_ELEMENT_CONF_REV 16
709 
711 #define RCB_ELEMENT_OPT_FLDS 32
712 
714 #define RCB_ELEMENT_BUF_TM 64
715 
717 #define RCB_ELEMENT_SQ_NUM 128
718 
720 #define RCB_ELEMENT_TRG_OPS 256
721 
723 #define RCB_ELEMENT_INTG_PD 512
724 
726 #define RCB_ELEMENT_GI 1024
727 
729 #define RCB_ELEMENT_PURGE_BUF 2048
730 
732 #define RCB_ELEMENT_ENTRY_ID 4096
733 
735 #define RCB_ELEMENT_TIME_OF_ENTRY 8192
736 
738 #define RCB_ELEMENT_RESV_TMS 16384
739 
741 #define RCB_ELEMENT_OWNER 32768
742 
764 void
765 IedConnection_setRCBValues(IedConnection self, IedClientError* error, ClientReportControlBlock rcb,
766  uint32_t parametersMask, bool singleRequest);
767 
774 typedef void (*ReportCallbackFunction) (void* parameter, ClientReport report);
775 
795 void
796 IedConnection_installReportHandler(IedConnection self, const char* rcbReference, const char* rptId, ReportCallbackFunction handler,
797  void* handlerParameter);
798 
805 void
806 IedConnection_uninstallReportHandler(IedConnection self, const char* rcbReference);
807 
819 void
820 IedConnection_triggerGIReport(IedConnection self, IedClientError* error, const char* rcbReference);
821 
822 /****************************************
823  * Access to received reports
824  ****************************************/
825 
834 const char*
835 ClientReport_getDataSetName(ClientReport self);
836 
843 MmsValue*
844 ClientReport_getDataSetValues(ClientReport self);
845 
852 char*
853 ClientReport_getRcbReference(ClientReport self);
854 
861 char*
862 ClientReport_getRptId(ClientReport self);
863 
873 ClientReport_getReasonForInclusion(ClientReport self, int elementIndex);
874 
884 MmsValue*
885 ClientReport_getEntryId(ClientReport self);
886 
894 bool
895 ClientReport_hasTimestamp(ClientReport self);
896 
897 bool
898 ClientReport_hasSeqNum(ClientReport self);
899 
900 uint16_t
901 ClientReport_getSeqNum(ClientReport self);
902 
903 bool
904 ClientReport_hasDataSetName(ClientReport self);
905 
906 bool
907 ClientReport_hasReasonForInclusion(ClientReport self);
908 
909 bool
910 ClientReport_hasConfRev(ClientReport self);
911 
912 uint32_t
913 ClientReport_getConfRev(ClientReport self);
914 
922 bool
923 ClientReport_hasBufOvfl(ClientReport self);
924 
932 bool
933 ClientReport_getBufOvfl(ClientReport self);
934 
942 bool
943 ClientReport_hasDataReference(ClientReport self);
944 
958 const char*
959 ClientReport_getDataReference(ClientReport self, int elementIndex);
960 
961 
972 uint64_t
973 ClientReport_getTimestamp(ClientReport self);
974 
982 char*
984 
985 /**************************************************
986  * ClientReportControlBlock access class
987  **************************************************/
988 
989 ClientReportControlBlock
990 ClientReportControlBlock_create(const char* rcbReference);
991 
992 void
993 ClientReportControlBlock_destroy(ClientReportControlBlock self);
994 
995 char*
996 ClientReportControlBlock_getObjectReference(ClientReportControlBlock self);
997 
998 bool
999 ClientReportControlBlock_isBuffered(ClientReportControlBlock self);
1000 
1001 const char*
1002 ClientReportControlBlock_getRptId(ClientReportControlBlock self);
1003 
1004 void
1005 ClientReportControlBlock_setRptId(ClientReportControlBlock self, const char* rptId);
1006 
1007 bool
1008 ClientReportControlBlock_getRptEna(ClientReportControlBlock self);
1009 
1010 void
1011 ClientReportControlBlock_setRptEna(ClientReportControlBlock self, bool rptEna);
1012 
1013 bool
1014 ClientReportControlBlock_getResv(ClientReportControlBlock self);
1015 
1016 void
1017 ClientReportControlBlock_setResv(ClientReportControlBlock self, bool resv);
1018 
1019 const char*
1020 ClientReportControlBlock_getDataSetReference(ClientReportControlBlock self);
1021 
1038 void
1039 ClientReportControlBlock_setDataSetReference(ClientReportControlBlock self, const char* dataSetReference);
1040 
1041 uint32_t
1042 ClientReportControlBlock_getConfRev(ClientReportControlBlock self);
1043 
1044 int
1045 ClientReportControlBlock_getOptFlds(ClientReportControlBlock self);
1046 
1047 void
1048 ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds);
1049 
1050 uint32_t
1051 ClientReportControlBlock_getBufTm(ClientReportControlBlock self);
1052 
1053 void
1054 ClientReportControlBlock_setBufTm(ClientReportControlBlock self, uint32_t bufTm);
1055 
1056 uint16_t
1057 ClientReportControlBlock_getSqNum(ClientReportControlBlock self);
1058 
1059 int
1060 ClientReportControlBlock_getTrgOps(ClientReportControlBlock self);
1061 
1062 void
1063 ClientReportControlBlock_setTrgOps(ClientReportControlBlock self, int trgOps);
1064 
1065 uint32_t
1066 ClientReportControlBlock_getIntgPd(ClientReportControlBlock self);
1067 
1068 void
1069 ClientReportControlBlock_setIntgPd(ClientReportControlBlock self, uint32_t intgPd);
1070 
1071 bool
1072 ClientReportControlBlock_getGI(ClientReportControlBlock self);
1073 
1074 void
1075 ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi);
1076 
1077 bool
1078 ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self);
1079 
1080 void
1081 ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBuf);
1082 
1083 int16_t
1084 ClientReportControlBlock_getResvTms(ClientReportControlBlock self);
1085 
1086 void
1087 ClientReportControlBlock_setResvTms(ClientReportControlBlock self, int16_t resvTms);
1088 
1089 MmsValue* /* <MMS_OCTET_STRING> */
1090 ClientReportControlBlock_getEntryId(ClientReportControlBlock self);
1091 
1092 void
1093 ClientReportControlBlock_setEntryId(ClientReportControlBlock self, MmsValue* entryId);
1094 
1095 uint64_t
1096 ClientReportControlBlock_getEntryTime(ClientReportControlBlock self);
1097 
1098 MmsValue* /* <MMS_OCTET_STRING> */
1099 ClientReportControlBlock_getOwner(ClientReportControlBlock self);
1100 
1101 
1104 /****************************************
1105  * Data model access services
1106  ****************************************/
1107 
1124 MmsValue*
1125 IedConnection_readObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc);
1126 
1136 void
1137 IedConnection_writeObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc,
1138  MmsValue* value);
1139 
1140 
1149 bool
1150 IedConnection_readBooleanValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1151 
1160 float
1161 IedConnection_readFloatValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1162 
1175 char*
1176 IedConnection_readStringValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1177 
1188 int32_t
1189 IedConnection_readInt32Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1190 
1201 int64_t
1202 IedConnection_readInt64Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1203 
1214 uint32_t
1215 IedConnection_readUnsigned32Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1216 
1232 Timestamp*
1233 IedConnection_readTimestampValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc,
1234  Timestamp* timeStamp);
1235 
1246 Quality
1247 IedConnection_readQualityValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1248 
1258 void
1259 IedConnection_writeBooleanValue(IedConnection self, IedClientError* error, const char* objectReference,
1260  FunctionalConstraint fc, bool value);
1261 
1271 void
1272 IedConnection_writeInt32Value(IedConnection self, IedClientError* error, const char* objectReference,
1273  FunctionalConstraint fc, int32_t value);
1274 
1284 void
1285 IedConnection_writeUnsigned32Value(IedConnection self, IedClientError* error, const char* objectReference,
1286  FunctionalConstraint fc, uint32_t value);
1287 
1297 void
1298 IedConnection_writeFloatValue(IedConnection self, IedClientError* error, const char* objectReference,
1299  FunctionalConstraint fc, float value);
1300 
1301 void
1302 IedConnection_writeVisibleStringValue(IedConnection self, IedClientError* error, const char* objectReference,
1303  FunctionalConstraint fc, char* value);
1304 
1305 void
1306 IedConnection_writeOctetString(IedConnection self, IedClientError* error, const char* objectReference,
1307  FunctionalConstraint fc, uint8_t* value, int valueLength);
1308 
1311 /****************************************
1312  * Data set handling
1313  ****************************************/
1314 
1338 ClientDataSet
1339 IedConnection_readDataSetValues(IedConnection self, IedClientError* error, const char* dataSetReference, ClientDataSet dataSet);
1340 
1358 void
1359 IedConnection_createDataSet(IedConnection self, IedClientError* error, const char* dataSetReference, LinkedList /* char* */ dataSetElements);
1360 
1374 bool
1375 IedConnection_deleteDataSet(IedConnection self, IedClientError* error, const char* dataSetReference);
1376 
1377 
1392 LinkedList /* <char*> */
1393 IedConnection_getDataSetDirectory(IedConnection self, IedClientError* error, const char* dataSetReference, bool* isDeletable);
1394 
1410 void
1411 IedConnection_writeDataSetValues(IedConnection self, IedClientError* error, const char* dataSetReference,
1412  LinkedList/*<MmsValue*>*/ values, /* OUTPUT */LinkedList* /* <MmsValue*> */accessResults);
1413 
1414 
1415 /********************************************************
1416  * Data set object (local representation of a data set)
1417  *******************************************************/
1418 
1427 void
1428 ClientDataSet_destroy(ClientDataSet self);
1429 
1444 MmsValue*
1445 ClientDataSet_getValues(ClientDataSet self);
1446 
1454 char*
1455 ClientDataSet_getReference(ClientDataSet self);
1456 
1464 int
1465 ClientDataSet_getDataSetSize(ClientDataSet self);
1466 
1469 /************************************
1470  * Control service functions
1471  ************************************/
1472 
1479 typedef struct sControlObjectClient* ControlObjectClient;
1480 
1481 typedef enum {
1487 } ControlModel;
1488 
1489 
1501 ControlObjectClient
1502 ControlObjectClient_create(const char* objectReference, IedConnection connection);
1503 
1504 void
1505 ControlObjectClient_destroy(ControlObjectClient self);
1506 
1507 char*
1508 ControlObjectClient_getObjectReference(ControlObjectClient self);
1509 
1510 ControlModel
1511 ControlObjectClient_getControlModel(ControlObjectClient self);
1512 
1522 bool
1523 ControlObjectClient_operate(ControlObjectClient self, MmsValue* ctlVal, uint64_t operTime);
1524 
1525 bool
1526 ControlObjectClient_select(ControlObjectClient self);
1527 
1536 bool
1537 ControlObjectClient_selectWithValue(ControlObjectClient self, MmsValue* ctlVal);
1538 
1539 bool
1540 ControlObjectClient_cancel(ControlObjectClient self);
1541 
1542 void
1543 ControlObjectClient_setLastApplError(ControlObjectClient self, LastApplError lastAppIError);
1544 
1546 ControlObjectClient_getLastApplError(ControlObjectClient self);
1547 
1548 void
1549 ControlObjectClient_setTestMode(ControlObjectClient self, bool value);
1550 
1551 void
1552 ControlObjectClient_setOrigin(ControlObjectClient self, const char* orIdent, int orCat);
1553 
1562 void
1563 ControlObjectClient_useConstantT(ControlObjectClient self, bool useConstantT);
1564 
1568 void
1569 ControlObjectClient_enableInterlockCheck(ControlObjectClient self);
1570 
1574 void
1575 ControlObjectClient_enableSynchroCheck(ControlObjectClient self);
1576 
1583 void
1584 ControlObjectClient_setInterlockCheck(ControlObjectClient self, bool value);
1585 
1592 void
1593 ControlObjectClient_setSynchroCheck(ControlObjectClient self, bool value);
1594 
1595 
1607 typedef void (*CommandTerminationHandler) (void* parameter, ControlObjectClient controlClient);
1608 
1609 void
1611  void* handlerParameter);
1612 
1615 /*************************************
1616  * Model discovery services
1617  ************************************/
1618 
1635 void
1636 IedConnection_getDeviceModelFromServer(IedConnection self, IedClientError* error);
1637 
1648 LinkedList /*<char*>*/
1649 IedConnection_getLogicalDeviceList(IedConnection self, IedClientError* error);
1650 
1663 LinkedList /*<char*>*/
1664 IedConnection_getServerDirectory(IedConnection self, IedClientError* error, bool getFileNames);
1665 
1678 LinkedList /*<char*>*/
1679 IedConnection_getLogicalDeviceDirectory(IedConnection self, IedClientError* error, const char* logicalDeviceName);
1680 
1681 typedef enum {
1693 } ACSIClass;
1694 
1708 LinkedList /*<char*>*/
1709 IedConnection_getLogicalNodeVariables(IedConnection self, IedClientError* error,
1710  const char* logicalNodeReference);
1711 
1728 LinkedList /*<char*>*/
1729 IedConnection_getLogicalNodeDirectory(IedConnection self, IedClientError* error,
1730  const char* logicalNodeReference, ACSIClass acsiClass);
1731 
1745 LinkedList /*<char*>*/
1746 IedConnection_getDataDirectory(IedConnection self, IedClientError* error, const char* dataReference);
1747 
1762 LinkedList /*<char*>*/
1763 IedConnection_getDataDirectoryFC(IedConnection self, IedClientError* error, const char* dataReference);
1764 
1782 LinkedList
1783 IedConnection_getDataDirectoryByFC(IedConnection self, IedClientError* error, const char* dataReference, FunctionalConstraint fc);
1784 
1799 MmsVariableSpecification*
1800 IedConnection_getVariableSpecification(IedConnection self, IedClientError* error, const char* dataAttributeReference,
1802 
1828 LinkedList /* <MmsJournalEntry> */
1829 IedConnection_queryLogByTime(IedConnection self, IedClientError* error, const char* logReference,
1830  uint64_t startTime, uint64_t endTime, bool* moreFollows);
1831 
1849 LinkedList /* <MmsJournalEntry> */
1850 IedConnection_queryLogAfter(IedConnection self, IedClientError* error, const char* logReference,
1851  MmsValue* entryID, uint64_t timeStamp, bool* moreFollows);
1852 
1853 
1854 
1863 typedef struct sFileDirectoryEntry* FileDirectoryEntry;
1864 
1865 FileDirectoryEntry
1866 FileDirectoryEntry_create(const char* fileName, uint32_t fileSize, uint64_t lastModified);
1867 
1868 void
1869 FileDirectoryEntry_destroy(FileDirectoryEntry self);
1870 
1871 char*
1872 FileDirectoryEntry_getFileName(FileDirectoryEntry self);
1873 
1874 uint32_t
1875 FileDirectoryEntry_getFileSize(FileDirectoryEntry self);
1876 
1877 uint64_t
1878 FileDirectoryEntry_getLastModified(FileDirectoryEntry self);
1879 
1880 
1899 LinkedList /*<FileDirectoryEntry>*/
1900 IedConnection_getFileDirectory(IedConnection self, IedClientError* error, const char* directoryName);
1901 
1902 
1930 LinkedList /*<FileDirectoryEntry>*/
1931 IedConnection_getFileDirectoryEx(IedConnection self, IedClientError* error, const char* directoryName, const char* continueAfter,
1932  bool* moreFollows);
1933 
1948 typedef bool
1949 (*IedClientGetFileHandler) (void* parameter, uint8_t* buffer, uint32_t bytesRead);
1950 
1962 uint32_t
1963 IedConnection_getFile(IedConnection self, IedClientError* error, const char* fileName, IedClientGetFileHandler handler,
1964  void* handlerParameter);
1965 
1976 void
1977 IedConnection_setFilestoreBasepath(IedConnection, const char* basepath);
1978 
1989 void
1990 IedConnection_setFile(IedConnection self, IedClientError* error, const char* sourceFilename, const char* destinationFilename);
1991 
1992 
2002 void
2003 IedConnection_deleteFile(IedConnection self, IedClientError* error, const char* fileName);
2004 
2005 
2010 #ifdef __cplusplus
2011 }
2012 #endif
2013 
2014 
2015 #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.
void ClientGooseControlBlock_setDstAddress_vid(ClientGooseControlBlock self, uint16_t vidValue)
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:1949
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:67
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:1481
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:334
void ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi)
struct sFileDirectoryEntry * FileDirectoryEntry
Definition: iec61850_client.h:1863
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:67
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:1686
Definition: iec61850_client.h:126
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:106
Definition: iec61850_client.h:1682
const char * ClientReport_getDataReference(ClientReport self, int elementIndex)
get the data-reference of the element of the report data set
Definition: iec61850_client.h:99
Definition: iec61850_client.h:74
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:129
ReasonForInclusion
Definition: iec61850_client.h:661
Definition: iec61850_client.h:84
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:144
uint8_t ClientGooseControlBlock_getDstAddress_priority(ClientGooseControlBlock self)
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 ...
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:138
void ClientReportControlBlock_setEntryId(ClientReportControlBlock self, MmsValue *entryId)
const char * ClientGooseControlBlock_getGoID(ClientGooseControlBlock self)
bool ClientSVControlBlock_setResv(ClientSVControlBlock self, bool svEna)
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:120
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:1690
const char * ClientReport_getDataSetName(ClientReport self)
Get the name of the report data set.
Definition: iec61850_client.h:669
uint32_t ClientReportControlBlock_getConfRev(ClientReportControlBlock self)
Definition: iec61850_client.h:1685
struct sControlObjectClient * ControlObjectClient
Definition: iec61850_client.h:1479
struct sClientReportControlBlock * ClientReportControlBlock
Definition: iec61850_client.h:49
Definition: iec61850_client.h:1483
void IedConnection_writeDataSetValues(IedConnection self, IedClientError *error, const char *dataSetReference, LinkedList values, LinkedList *accessResults)
Write the data set values to the server.
Definition: iec61850_client.h:1486
bool ClientReport_getBufOvfl(ClientReport self)
Get the value of the bufOvfl flag.
IedConnectionState
Definition: iec61850_client.h:72
int ClientDataSet_getDataSetSize(ClientDataSet self)
get the size of the data set (number of members)
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:93
ControlModel ControlObjectClient_getControlModel(ControlObjectClient 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
uint16_t ClientGooseControlBlock_getDstAddress_appid(ClientGooseControlBlock self)
ControlAddCause addCause
Definition: iec61850_client.h:68
void ClientGooseControlBlock_setDstAddress_addr(ClientGooseControlBlock self, MmsValue *macAddr)
Definition: iec61850_client.h:159
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:46
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:1681
Definition: iec61850_client.h:1689
char * ClientReportControlBlock_getObjectReference(ClientReportControlBlock self)
int ctlNum
Definition: iec61850_client.h:66
Definition: iec61850_client.h:75
Definition: iec61850_client.h:156
MmsValue * ClientGooseControlBlock_getDstAddress_addr(ClientGooseControlBlock self)
Definition: iec61850_client.h:153
Definition: iec61850_client.h:1484
bool ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self)
Definition: iec61850_client.h:87
bool ClientSVControlBlock_setSvEna(ClientSVControlBlock self, bool svEna)
Definition: iec61850_client.h:112
bool ClientReportControlBlock_isBuffered(ClientReportControlBlock self)
int ClientReportControlBlock_getTrgOps(ClientReportControlBlock self)
uint32_t ClientReport_getConfRev(ClientReport self)
uint16_t ClientReportControlBlock_getSqNum(ClientReportControlBlock self)
uint16_t ClientGooseControlBlock_getDstAddress_vid(ClientGooseControlBlock 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)
Definition: iec61850_client.h:1684
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:132
struct sClientGooseControlBlock * ClientGooseControlBlock
Definition: iec61850_client.h:52
Definition: iec61850_client.h:117
Definition: iec61850_client.h:76
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:147
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:663
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:109
ClientSVControlBlock ClientSVControlBlock_create(IedConnection connection, const char *reference)
Create a new ClientSVControlBlock instance.
Definition: iec61850_client.h:96
void ClientReportControlBlock_setBufTm(ClientReportControlBlock self, uint32_t bufTm)
Definition: iec61850_client.h:162
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:1485
bool ClientGooseControlBlock_getGoEna(ClientGooseControlBlock self)
void ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds)
Definition: iec61850_client.h:681
void ClientReportControlBlock_destroy(ClientReportControlBlock self)
bool ClientSVControlBlock_isMulticast(ClientSVControlBlock self)
Definition: iec61850_client.h:123
void(* ReportCallbackFunction)(void *parameter, ClientReport report)
Callback function for receiving reports.
Definition: iec61850_client.h:774
void ClientGooseControlBlock_setDstAddress_priority(ClientGooseControlBlock self, uint8_t priorityValue)
void ClientGooseControlBlock_setDstAddress_appid(ClientGooseControlBlock self, uint16_t appidValue)
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:1691
Definition: iec61850_client.h:1687
Definition: iec61850_client.h:1688
void ClientReportControlBlock_setIntgPd(ClientReportControlBlock self, uint32_t intgPd)
void ControlObjectClient_enableInterlockCheck(ControlObjectClient self)
Definition: iec61850_client.h:672
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:678
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:283
Definition: iec61850_client.h:141
void ClientGooseControlBlock_setGoEna(ClientGooseControlBlock self, bool goEna)
uint32_t ClientGooseControlBlock_getMinTime(ClientGooseControlBlock self)
Definition: iec61850_client.h:666
char * ClientReport_getRptId(ClientReport self)
return RptId of the server RCB associated with this ClientReport object
Definition: iec61850_client.h:1692
Definition: iec61850_client.h:1482
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:1607
FunctionalConstraint
Definition: iec61850_common.h:202
Definition: iec61850_client.h:675
int ClientSVControlBlock_getOptFlds(ClientSVControlBlock self)
returns the OptFlds bit string as integer
struct sClientDataSet * ClientDataSet
Definition: iec61850_client.h:43
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:1683
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:61
Definition: iec61850_client.h:150
Definition: iec61850_client.h:104
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:64
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:135
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:90
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:80