libIEC61850  1.0.0
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 "goose_subscriber.h"
34 #include "mms_value.h"
35 #include "mms_client_connection.h"
36 #include "linked_list.h"
37 
44 typedef struct sClientDataSet* ClientDataSet;
45 
47 typedef struct sClientReport* ClientReport;
48 
50 typedef struct sClientReportControlBlock* ClientReportControlBlock;
51 
53 typedef struct sClientGooseControlBlock* ClientGooseControlBlock;
54 
62 typedef struct sIedConnection* IedConnection;
63 
65 typedef struct
66 {
67  int ctlNum;
68  int error;
71 
73 typedef enum
74 {
79 
81 typedef enum {
82  /* general errors */
83 
86 
89 
92 
95 
98 
101 
102  /* client side errors */
103 
106 
108 
111 
114 
115  /* service error - error reported by server */
116 
119 
122 
125 
128 
131 
134 
137 
140 
143 
146 
149 
152 
155 
158 
161 
165 
166 /**************************************************
167  * Connection creation and destruction
168  **************************************************/
169 
179 IedConnection
181 
190 void
191 IedConnection_destroy(IedConnection self);
192 
193 
203 void
204 IedConnection_setConnectTimeout(IedConnection self, uint32_t timeoutInMs);
205 
206 /**************************************************
207  * Association service
208  **************************************************/
209 
218 void
219 IedConnection_connect(IedConnection self, IedClientError* error, const char* hostname, int tcpPort);
220 
233 void
234 IedConnection_abort(IedConnection self, IedClientError* error);
235 
248 void
249 IedConnection_release(IedConnection self, IedClientError* error);
250 
258 void
259 IedConnection_close(IedConnection self);
260 
270 IedConnectionState
271 IedConnection_getState(IedConnection self);
272 
281 IedConnection_getLastApplError(IedConnection self);
282 
283 
284 typedef void (*IedConnectionClosedHandler) (void* parameter, IedConnection connection);
285 
293 void
295  void* parameter);
296 
308 IedConnection_getMmsConnection(IedConnection self);
309 
319 #define IEC61850_SV_OPT_REFRESH_TIME 1
320 
322 #define IEC61850_SV_OPT_SAMPLE_SYNC 2
323 
325 #define IEC61850_SV_OPT_SAMPLE_RATE 4
326 
328 #define IEC61850_SV_OPT_DATA_SET 8
329 
331 #define IEC61850_SV_OPT_SECURITY 16
332 
333 
335 typedef struct sClientSVControlBlock* ClientSVControlBlock;
336 
348 ClientSVControlBlock
349 ClientSVControlBlock_create(IedConnection connection, const char* reference);
350 
356 void
357 ClientSVControlBlock_destroy(ClientSVControlBlock self);
358 
359 bool
360 ClientSVControlBlock_isMulticast(ClientSVControlBlock self);
361 
370 ClientSVControlBlock_getLastComError(ClientSVControlBlock self);
371 
372 
373 bool
374 ClientSVControlBlock_setSvEna(ClientSVControlBlock self, bool svEna);
375 
376 bool
377 ClientSVControlBlock_getSvEna(ClientSVControlBlock self);
378 
379 bool
380 ClientSVControlBlock_setResv(ClientSVControlBlock self, bool svEna);
381 
382 bool
383 ClientSVControlBlock_getResv(ClientSVControlBlock self);
384 
385 char*
386 ClientSVControlBlock_getMsvID(ClientSVControlBlock self);
387 
399 char*
400 ClientSVControlBlock_getDatSet(ClientSVControlBlock self);
401 
402 uint32_t
403 ClientSVControlBlock_getConfRev(ClientSVControlBlock self);
404 
405 uint16_t
406 ClientSVControlBlock_getSmpRate(ClientSVControlBlock self);
407 
408 
415 ClientSVControlBlock_getDstAddress(ClientSVControlBlock self);
416 
422 int
423 ClientSVControlBlock_getOptFlds(ClientSVControlBlock self);
424 
430 uint8_t
431 ClientSVControlBlock_getSmpMod(ClientSVControlBlock self);
432 
438 int
439 ClientSVControlBlock_getNoASDU(ClientSVControlBlock self);
440 
441 
450 /*********************************************************
451  * GOOSE services handling (MMS part)
452  ********************************************************/
453 
455 #define GOCB_ELEMENT_GO_ENA 1
456 
458 #define GOCB_ELEMENT_GO_ID 2
459 
461 #define GOCB_ELEMENT_DATSET 4
462 
464 #define GOCB_ELEMENT_CONF_REV 8
465 
467 #define GOCB_ELEMENT_NDS_COMM 16
468 
470 #define GOCB_ELEMENT_DST_ADDRESS 32
471 
473 #define GOCB_ELEMENT_MIN_TIME 64
474 
476 #define GOCB_ELEMENT_MAX_TIME 128
477 
479 #define GOCB_ELEMENT_FIXED_OFFS 256
480 
482 #define GOCB_ELEMENT_ALL 511
483 
484 
485 /**************************************************
486  * ClientGooseControlBlock class
487  **************************************************/
488 
489 ClientGooseControlBlock
490 ClientGooseControlBlock_create(const char* dataAttributeReference);
491 
492 void
493 ClientGooseControlBlock_destroy(ClientGooseControlBlock self);
494 
495 bool
496 ClientGooseControlBlock_getGoEna(ClientGooseControlBlock self);
497 
498 void
499 ClientGooseControlBlock_setGoEna(ClientGooseControlBlock self, bool goEna);
500 
501 const char*
502 ClientGooseControlBlock_getGoID(ClientGooseControlBlock self);
503 
504 void
505 ClientGooseControlBlock_setGoID(ClientGooseControlBlock self, const char* goID);
506 
507 const char*
508 ClientGooseControlBlock_getDatSet(ClientGooseControlBlock self);
509 
510 void
511 ClientGooseControlBlock_setDatSet(ClientGooseControlBlock self, const char* datSet);
512 
513 uint32_t
514 ClientGooseControlBlock_getConfRev(ClientGooseControlBlock self);
515 
516 bool
517 ClientGooseControlBlock_getNdsComm(ClientGooseControlBlock self);
518 
519 uint32_t
520 ClientGooseControlBlock_getMinTime(ClientGooseControlBlock self);
521 
522 uint32_t
523 ClientGooseControlBlock_getMaxTime(ClientGooseControlBlock self);
524 
525 bool
526 ClientGooseControlBlock_getFixedOffs(ClientGooseControlBlock self);
527 
528 MmsValue* /* MMS_OCTET_STRING */
529 ClientGooseControlBlock_getDstAddress_addr(ClientGooseControlBlock self);
530 
531 void
532 ClientGooseControlBlock_setDstAddress_addr(ClientGooseControlBlock self, MmsValue* macAddr);
533 
534 uint8_t
535 ClientGooseControlBlock_getDstAddress_priority(ClientGooseControlBlock self);
536 
537 void
538 ClientGooseControlBlock_setDstAddress_priority(ClientGooseControlBlock self, uint8_t priorityValue);
539 
540 uint16_t
541 ClientGooseControlBlock_getDstAddress_vid(ClientGooseControlBlock self);
542 
543 void
544 ClientGooseControlBlock_setDstAddress_vid(ClientGooseControlBlock self, uint16_t vidValue);
545 
546 uint16_t
547 ClientGooseControlBlock_getDstAddress_appid(ClientGooseControlBlock self);
548 
549 void
550 ClientGooseControlBlock_setDstAddress_appid(ClientGooseControlBlock self, uint16_t appidValue);
551 
552 
553 /*********************************************************
554  * GOOSE services (access to GOOSE Control Blocks (GoCB))
555  ********************************************************/
556 
584 ClientGooseControlBlock
585 IedConnection_getGoCBValues(IedConnection self, IedClientError* error, const char* goCBReference, ClientGooseControlBlock updateGoCB);
586 
608 void
609 IedConnection_setGoCBValues(IedConnection self, IedClientError* error, ClientGooseControlBlock goCB,
610  uint32_t parametersMask, bool singleRequest);
611 
614 /********************************************
615  * Reporting services
616  ********************************************/
617 
657 ClientReportControlBlock
658 IedConnection_getRCBValues(IedConnection self, IedClientError* error, const char* rcbReference,
659  ClientReportControlBlock updateRcb);
660 
662 typedef enum {
665 
668 
671 
674 
677 
680 
684 
685 #define REASON_NOT_INCLUDED IEC61850_REASON_NOT_INCLUDED
686 #define REASON_DATA_CHANGE IEC61850_REASON_DATA_CHANGE
687 #define REASON_QUALITY_CHANGE IEC61850_REASON_QUALITY_CHANGE
688 #define REASON_DATA_UPDATE IEC61850_REASON_DATA_UPDATE
689 #define REASON_INTEGRITY IEC61850_REASON_INTEGRITY
690 #define REASON_GI IEC61850_REASON_GI
691 #define REASON_UNKNOWN IEC61850_REASON_UNKNOWN
692 
693 
694 /* Element encoding mask values for ClientReportControlBlock */
695 
697 #define RCB_ELEMENT_RPT_ID 1
698 
700 #define RCB_ELEMENT_RPT_ENA 2
701 
703 #define RCB_ELEMENT_RESV 4
704 
706 #define RCB_ELEMENT_DATSET 8
707 
709 #define RCB_ELEMENT_CONF_REV 16
710 
712 #define RCB_ELEMENT_OPT_FLDS 32
713 
715 #define RCB_ELEMENT_BUF_TM 64
716 
718 #define RCB_ELEMENT_SQ_NUM 128
719 
721 #define RCB_ELEMENT_TRG_OPS 256
722 
724 #define RCB_ELEMENT_INTG_PD 512
725 
727 #define RCB_ELEMENT_GI 1024
728 
730 #define RCB_ELEMENT_PURGE_BUF 2048
731 
733 #define RCB_ELEMENT_ENTRY_ID 4096
734 
736 #define RCB_ELEMENT_TIME_OF_ENTRY 8192
737 
739 #define RCB_ELEMENT_RESV_TMS 16384
740 
742 #define RCB_ELEMENT_OWNER 32768
743 
765 void
766 IedConnection_setRCBValues(IedConnection self, IedClientError* error, ClientReportControlBlock rcb,
767  uint32_t parametersMask, bool singleRequest);
768 
775 typedef void (*ReportCallbackFunction) (void* parameter, ClientReport report);
776 
796 void
797 IedConnection_installReportHandler(IedConnection self, const char* rcbReference, const char* rptId, ReportCallbackFunction handler,
798  void* handlerParameter);
799 
806 void
807 IedConnection_uninstallReportHandler(IedConnection self, const char* rcbReference);
808 
818 void
819 IedConnection_triggerGIReport(IedConnection self, IedClientError* error, const char* rcbReference);
820 
821 /****************************************
822  * Access to received reports
823  ****************************************/
824 
833 const char*
834 ClientReport_getDataSetName(ClientReport self);
835 
842 MmsValue*
843 ClientReport_getDataSetValues(ClientReport self);
844 
851 char*
852 ClientReport_getRcbReference(ClientReport self);
853 
860 char*
861 ClientReport_getRptId(ClientReport self);
862 
872 ClientReport_getReasonForInclusion(ClientReport self, int elementIndex);
873 
883 MmsValue*
884 ClientReport_getEntryId(ClientReport self);
885 
893 bool
894 ClientReport_hasTimestamp(ClientReport self);
895 
896 bool
897 ClientReport_hasSeqNum(ClientReport self);
898 
899 uint16_t
900 ClientReport_getSeqNum(ClientReport self);
901 
902 bool
903 ClientReport_hasDataSetName(ClientReport self);
904 
905 bool
906 ClientReport_hasReasonForInclusion(ClientReport self);
907 
908 bool
909 ClientReport_hasConfRev(ClientReport self);
910 
911 uint32_t
912 ClientReport_getConfRev(ClientReport self);
913 
921 bool
922 ClientReport_hasBufOvfl(ClientReport self);
923 
931 bool
932 ClientReport_getBufOvfl(ClientReport self);
933 
941 bool
942 ClientReport_hasDataReference(ClientReport self);
943 
957 const char*
958 ClientReport_getDataReference(ClientReport self, int elementIndex);
959 
960 
971 uint64_t
972 ClientReport_getTimestamp(ClientReport self);
973 
981 char*
983 
984 /**************************************************
985  * ClientReportControlBlock access class
986  **************************************************/
987 
988 ClientReportControlBlock
989 ClientReportControlBlock_create(const char* rcbReference);
990 
991 void
992 ClientReportControlBlock_destroy(ClientReportControlBlock self);
993 
994 char*
995 ClientReportControlBlock_getObjectReference(ClientReportControlBlock self);
996 
997 bool
998 ClientReportControlBlock_isBuffered(ClientReportControlBlock self);
999 
1000 const char*
1001 ClientReportControlBlock_getRptId(ClientReportControlBlock self);
1002 
1003 void
1004 ClientReportControlBlock_setRptId(ClientReportControlBlock self, const char* rptId);
1005 
1006 bool
1007 ClientReportControlBlock_getRptEna(ClientReportControlBlock self);
1008 
1009 void
1010 ClientReportControlBlock_setRptEna(ClientReportControlBlock self, bool rptEna);
1011 
1012 bool
1013 ClientReportControlBlock_getResv(ClientReportControlBlock self);
1014 
1015 void
1016 ClientReportControlBlock_setResv(ClientReportControlBlock self, bool resv);
1017 
1018 const char*
1019 ClientReportControlBlock_getDataSetReference(ClientReportControlBlock self);
1020 
1037 void
1038 ClientReportControlBlock_setDataSetReference(ClientReportControlBlock self, const char* dataSetReference);
1039 
1040 uint32_t
1041 ClientReportControlBlock_getConfRev(ClientReportControlBlock self);
1042 
1043 int
1044 ClientReportControlBlock_getOptFlds(ClientReportControlBlock self);
1045 
1046 void
1047 ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds);
1048 
1049 uint32_t
1050 ClientReportControlBlock_getBufTm(ClientReportControlBlock self);
1051 
1052 void
1053 ClientReportControlBlock_setBufTm(ClientReportControlBlock self, uint32_t bufTm);
1054 
1055 uint16_t
1056 ClientReportControlBlock_getSqNum(ClientReportControlBlock self);
1057 
1058 int
1059 ClientReportControlBlock_getTrgOps(ClientReportControlBlock self);
1060 
1061 void
1062 ClientReportControlBlock_setTrgOps(ClientReportControlBlock self, int trgOps);
1063 
1064 uint32_t
1065 ClientReportControlBlock_getIntgPd(ClientReportControlBlock self);
1066 
1067 void
1068 ClientReportControlBlock_setIntgPd(ClientReportControlBlock self, uint32_t intgPd);
1069 
1070 bool
1071 ClientReportControlBlock_getGI(ClientReportControlBlock self);
1072 
1073 void
1074 ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi);
1075 
1076 bool
1077 ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self);
1078 
1079 void
1080 ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBuf);
1081 
1082 int16_t
1083 ClientReportControlBlock_getResvTms(ClientReportControlBlock self);
1084 
1085 void
1086 ClientReportControlBlock_setResvTms(ClientReportControlBlock self, int16_t resvTms);
1087 
1088 MmsValue* /* <MMS_OCTET_STRING> */
1089 ClientReportControlBlock_getEntryId(ClientReportControlBlock self);
1090 
1091 void
1092 ClientReportControlBlock_setEntryId(ClientReportControlBlock self, MmsValue* entryId);
1093 
1094 uint64_t
1095 ClientReportControlBlock_getEntryTime(ClientReportControlBlock self);
1096 
1097 MmsValue* /* <MMS_OCTET_STRING> */
1098 ClientReportControlBlock_getOwner(ClientReportControlBlock self);
1099 
1100 
1103 /****************************************
1104  * Data model access services
1105  ****************************************/
1106 
1123 MmsValue*
1124 IedConnection_readObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc);
1125 
1135 void
1136 IedConnection_writeObject(IedConnection self, IedClientError* error, const char* dataAttributeReference, FunctionalConstraint fc,
1137  MmsValue* value);
1138 
1139 
1148 bool
1149 IedConnection_readBooleanValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1150 
1159 float
1160 IedConnection_readFloatValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1161 
1174 char*
1175 IedConnection_readStringValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1176 
1187 int32_t
1188 IedConnection_readInt32Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1189 
1200 uint32_t
1201 IedConnection_readUnsigned32Value(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1202 
1217 Timestamp*
1218 IedConnection_readTimestampValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc,
1219  Timestamp* timeStamp);
1220 
1231 Quality
1232 IedConnection_readQualityValue(IedConnection self, IedClientError* error, const char* objectReference, FunctionalConstraint fc);
1233 
1243 void
1244 IedConnection_writeBooleanValue(IedConnection self, IedClientError* error, const char* objectReference,
1245  FunctionalConstraint fc, bool value);
1246 
1256 void
1257 IedConnection_writeInt32Value(IedConnection self, IedClientError* error, const char* objectReference,
1258  FunctionalConstraint fc, int32_t value);
1259 
1269 void
1270 IedConnection_writeUnsigned32Value(IedConnection self, IedClientError* error, const char* objectReference,
1271  FunctionalConstraint fc, uint32_t value);
1272 
1282 void
1283 IedConnection_writeFloatValue(IedConnection self, IedClientError* error, const char* objectReference,
1284  FunctionalConstraint fc, float value);
1285 
1286 void
1287 IedConnection_writeVisibleStringValue(IedConnection self, IedClientError* error, const char* objectReference,
1288  FunctionalConstraint fc, char* value);
1289 
1290 void
1291 IedConnection_writeOctetString(IedConnection self, IedClientError* error, const char* objectReference,
1292  FunctionalConstraint fc, uint8_t* value, int valueLength);
1293 
1296 /****************************************
1297  * Data set handling
1298  ****************************************/
1299 
1317 ClientDataSet
1318 IedConnection_readDataSetValues(IedConnection self, IedClientError* error, const char* dataSetReference, ClientDataSet dataSet);
1319 
1337 void
1338 IedConnection_createDataSet(IedConnection self, IedClientError* error, const char* dataSetReference, LinkedList /* char* */ dataSetElements);
1339 
1353 bool
1354 IedConnection_deleteDataSet(IedConnection self, IedClientError* error, const char* dataSetReference);
1355 
1356 
1371 LinkedList /* <char*> */
1372 IedConnection_getDataSetDirectory(IedConnection self, IedClientError* error, const char* dataSetReference, bool* isDeletable);
1373 
1374 /********************************************************
1375  * Data set object (local representation of a data set)
1376  *******************************************************/
1377 
1386 void
1387 ClientDataSet_destroy(ClientDataSet self);
1388 
1403 MmsValue*
1404 ClientDataSet_getValues(ClientDataSet self);
1405 
1413 char*
1414 ClientDataSet_getReference(ClientDataSet self);
1415 
1423 int
1424 ClientDataSet_getDataSetSize(ClientDataSet self);
1425 
1428 /************************************
1429  * Control service functions
1430  ************************************/
1431 
1438 typedef struct sControlObjectClient* ControlObjectClient;
1439 
1440 typedef enum {
1446 } ControlModel;
1447 
1448 
1460 ControlObjectClient
1461 ControlObjectClient_create(const char* objectReference, IedConnection connection);
1462 
1463 void
1464 ControlObjectClient_destroy(ControlObjectClient self);
1465 
1466 char*
1467 ControlObjectClient_getObjectReference(ControlObjectClient self);
1468 
1469 ControlModel
1470 ControlObjectClient_getControlModel(ControlObjectClient self);
1471 
1481 bool
1482 ControlObjectClient_operate(ControlObjectClient self, MmsValue* ctlVal, uint64_t operTime);
1483 
1484 bool
1485 ControlObjectClient_select(ControlObjectClient self);
1486 
1495 bool
1496 ControlObjectClient_selectWithValue(ControlObjectClient self, MmsValue* ctlVal);
1497 
1498 bool
1499 ControlObjectClient_cancel(ControlObjectClient self);
1500 
1501 void
1502 ControlObjectClient_setLastApplError(ControlObjectClient self, LastApplError lastAppIError);
1503 
1505 ControlObjectClient_getLastApplError(ControlObjectClient self);
1506 
1507 void
1508 ControlObjectClient_setTestMode(ControlObjectClient self, bool value);
1509 
1510 void
1511 ControlObjectClient_setOrigin(ControlObjectClient self, const char* orIdent, int orCat);
1512 
1521 void
1522 ControlObjectClient_useConstantT(ControlObjectClient self, bool useConstantT);
1523 
1527 void
1528 ControlObjectClient_enableInterlockCheck(ControlObjectClient self);
1529 
1533 void
1534 ControlObjectClient_enableSynchroCheck(ControlObjectClient self);
1535 
1542 void
1543 ControlObjectClient_setInterlockCheck(ControlObjectClient self, bool value);
1544 
1551 void
1552 ControlObjectClient_setSynchroCheck(ControlObjectClient self, bool value);
1553 
1554 
1566 typedef void (*CommandTerminationHandler) (void* parameter, ControlObjectClient controlClient);
1567 
1568 void
1570  void* handlerParameter);
1571 
1574 /*************************************
1575  * Model discovery services
1576  ************************************/
1577 
1594 void
1595 IedConnection_getDeviceModelFromServer(IedConnection self, IedClientError* error);
1596 
1607 LinkedList /*<char*>*/
1608 IedConnection_getLogicalDeviceList(IedConnection self, IedClientError* error);
1609 
1622 LinkedList /*<char*>*/
1623 IedConnection_getServerDirectory(IedConnection self, IedClientError* error, bool getFileNames);
1624 
1638 LinkedList /*<char*>*/
1639 IedConnection_getLogicalDeviceDirectory(IedConnection self, IedClientError* error, const char* logicalDeviceName);
1640 
1641 typedef enum {
1653 } ACSIClass;
1654 
1668 LinkedList /*<char*>*/
1669 IedConnection_getLogicalNodeVariables(IedConnection self, IedClientError* error,
1670  const char* logicalNodeReference);
1671 
1688 LinkedList /*<char*>*/
1689 IedConnection_getLogicalNodeDirectory(IedConnection self, IedClientError* error,
1690  const char* logicalNodeReference, ACSIClass acsiClass);
1691 
1705 LinkedList /*<char*>*/
1706 IedConnection_getDataDirectory(IedConnection self, IedClientError* error, const char* dataReference);
1707 
1722 LinkedList /*<char*>*/
1723 IedConnection_getDataDirectoryFC(IedConnection self, IedClientError* error, const char* dataReference);
1724 
1740 LinkedList
1741 IedConnection_getDataDirectoryByFC(IedConnection self, IedClientError* error, const char* dataReference, FunctionalConstraint fc);
1742 
1757 MmsVariableSpecification*
1758 IedConnection_getVariableSpecification(IedConnection self, IedClientError* error, const char* dataAttributeReference,
1760 
1786 LinkedList /* <MmsJournalEntry> */
1787 IedConnection_queryLogByTime(IedConnection self, IedClientError* error, const char* logReference,
1788  uint64_t startTime, uint64_t endTime, bool* moreFollows);
1789 
1807 LinkedList /* <MmsJournalEntry> */
1808 IedConnection_queryLogAfter(IedConnection self, IedClientError* error, const char* logReference,
1809  MmsValue* entryID, uint64_t timeStamp, bool* moreFollows);
1810 
1811 
1812 
1821 typedef struct sFileDirectoryEntry* FileDirectoryEntry;
1822 
1823 FileDirectoryEntry
1824 FileDirectoryEntry_create(const char* fileName, uint32_t fileSize, uint64_t lastModified);
1825 
1826 void
1827 FileDirectoryEntry_destroy(FileDirectoryEntry self);
1828 
1829 char*
1830 FileDirectoryEntry_getFileName(FileDirectoryEntry self);
1831 
1832 uint32_t
1833 FileDirectoryEntry_getFileSize(FileDirectoryEntry self);
1834 
1835 uint64_t
1836 FileDirectoryEntry_getLastModified(FileDirectoryEntry self);
1837 
1838 
1857 LinkedList /*<FileDirectoryEntry>*/
1858 IedConnection_getFileDirectory(IedConnection self, IedClientError* error, const char* directoryName);
1859 
1874 typedef bool
1875 (*IedClientGetFileHandler) (void* parameter, uint8_t* buffer, uint32_t bytesRead);
1876 
1888 uint32_t
1889 IedConnection_getFile(IedConnection self, IedClientError* error, const char* fileName, IedClientGetFileHandler handler,
1890  void* handlerParameter);
1891 
1902 void
1903 IedConnection_setFile(IedConnection self, IedClientError* error, const char* sourceFilename, const char* destinationFilename);
1904 
1905 
1915 void
1916 IedConnection_deleteFile(IedConnection self, IedClientError* error, const char* fileName);
1917 
1918 
1923 #ifdef __cplusplus
1924 }
1925 #endif
1926 
1927 
1928 #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:1875
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:68
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:1440
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:335
void ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi)
struct sFileDirectoryEntry * FileDirectoryEntry
Definition: iec61850_client.h:1821
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:1646
Definition: iec61850_client.h:127
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:107
Definition: iec61850_client.h:1642
const char * ClientReport_getDataReference(ClientReport self, int elementIndex)
get the data-reference of the element of the report data set
Definition: iec61850_client.h:100
Definition: iec61850_client.h:75
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:130
ReasonForInclusion
Definition: iec61850_client.h:662
Definition: iec61850_client.h:85
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:145
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)
void ControlObjectClient_setTestMode(ControlObjectClient self, bool value)
Definition: iec61850_client.h:139
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:121
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:1650
const char * ClientReport_getDataSetName(ClientReport self)
Get the name of the report data set.
Definition: iec61850_client.h:670
uint32_t ClientReportControlBlock_getConfRev(ClientReportControlBlock self)
Definition: iec61850_client.h:1645
struct sControlObjectClient * ControlObjectClient
Definition: iec61850_client.h:1438
struct sClientReportControlBlock * ClientReportControlBlock
Definition: iec61850_client.h:50
Definition: iec61850_client.h:1442
Definition: iec61850_client.h:1445
bool ClientReport_getBufOvfl(ClientReport self)
Get the value of the bufOvfl flag.
IedConnectionState
Definition: iec61850_client.h:73
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:94
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:69
void ClientGooseControlBlock_setDstAddress_addr(ClientGooseControlBlock self, MmsValue *macAddr)
Definition: iec61850_client.h:160
Definition: iec61850_common.h:352
uint32_t ClientReportControlBlock_getBufTm(ClientReportControlBlock self)
uint8_t ClientSVControlBlock_getSmpMod(ClientSVControlBlock self)
returns number of sample mode of the SV publisher
struct sClientReport * ClientReport
Definition: iec61850_client.h:47
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:1641
Definition: iec61850_client.h:1649
char * ClientReportControlBlock_getObjectReference(ClientReportControlBlock self)
int ctlNum
Definition: iec61850_client.h:67
Definition: iec61850_client.h:76
Definition: iec61850_client.h:157
MmsValue * ClientGooseControlBlock_getDstAddress_addr(ClientGooseControlBlock self)
Definition: iec61850_client.h:154
Definition: iec61850_client.h:1443
bool ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self)
Definition: iec61850_client.h:88
bool ClientSVControlBlock_setSvEna(ClientSVControlBlock self, bool svEna)
Definition: iec61850_client.h:113
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:1644
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:133
struct sClientGooseControlBlock * ClientGooseControlBlock
Definition: iec61850_client.h:53
Definition: iec61850_client.h:118
Definition: iec61850_client.h:77
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:148
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:664
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:110
ClientSVControlBlock ClientSVControlBlock_create(IedConnection connection, const char *reference)
Create a new ClientSVControlBlock instance.
Definition: iec61850_client.h:97
void ClientReportControlBlock_setBufTm(ClientReportControlBlock self, uint32_t bufTm)
Definition: iec61850_client.h:163
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:1444
bool ClientGooseControlBlock_getGoEna(ClientGooseControlBlock self)
void ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds)
Definition: iec61850_client.h:682
void ClientReportControlBlock_destroy(ClientReportControlBlock self)
bool ClientSVControlBlock_isMulticast(ClientSVControlBlock self)
Definition: iec61850_client.h:124
void(* ReportCallbackFunction)(void *parameter, ClientReport report)
Callback function for receiving reports.
Definition: iec61850_client.h:775
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:1651
Definition: iec61850_client.h:1647
Definition: iec61850_client.h:1648
void ClientReportControlBlock_setIntgPd(ClientReportControlBlock self, uint32_t intgPd)
void ControlObjectClient_enableInterlockCheck(ControlObjectClient self)
Definition: iec61850_client.h:673
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:679
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:284
Definition: iec61850_client.h:142
void ClientGooseControlBlock_setGoEna(ClientGooseControlBlock self, bool goEna)
uint32_t ClientGooseControlBlock_getMinTime(ClientGooseControlBlock self)
Definition: iec61850_client.h:667
char * ClientReport_getRptId(ClientReport self)
return RptId of the server RCB associated with this ClientReport object
Definition: iec61850_client.h:1652
Definition: iec61850_client.h:1441
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:1566
FunctionalConstraint
Definition: iec61850_common.h:202
Definition: iec61850_client.h:676
int ClientSVControlBlock_getOptFlds(ClientSVControlBlock self)
returns the OptFlds bit string as integer
struct sClientDataSet * ClientDataSet
Definition: iec61850_client.h:44
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:1643
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:62
Definition: iec61850_client.h:151
Definition: iec61850_client.h:105
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:65
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:136
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:91
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:81