libIEC61850  0.8.3
Open-source IEC 61850 MMS/GOOSE server and client library
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Classes | Macros | Typedefs | Enumerations | Functions
iec61850_client.h File Reference
#include "libiec61850_common_api.h"
#include "iec61850_common.h"
#include "goose_subscriber.h"
#include "mms_value.h"
#include "mms_client_connection.h"
#include "linked_list.h"

Go to the source code of this file.

Classes

struct  LastApplError
 

Macros

#define GOCB_ELEMENT_GO_ENA   1
 
#define GOCB_ELEMENT_GO_ID   2
 
#define GOCB_ELEMENT_DATSET   4
 
#define GOCB_ELEMENT_CONF_REV   8
 
#define GOCB_ELEMENT_NDS_COMM   16
 
#define GOCB_ELEMENT_DST_ADDRESS   32
 
#define GOCB_ELEMENT_MIN_TIME   64
 
#define GOCB_ELEMENT_MAX_TIME   128
 
#define GOCB_ELEMENT_FIXED_OFFS   256
 
#define GOCB_ELEMENT_ALL   511
 
#define RCB_ELEMENT_RPT_ID   1
 
#define RCB_ELEMENT_RPT_ENA   2
 
#define RCB_ELEMENT_RESV   4
 
#define RCB_ELEMENT_DATSET   8
 
#define RCB_ELEMENT_CONF_REV   16
 
#define RCB_ELEMENT_OPT_FLDS   32
 
#define RCB_ELEMENT_BUF_TM   64
 
#define RCB_ELEMENT_SQ_NUM   128
 
#define RCB_ELEMENT_TRG_OPS   256
 
#define RCB_ELEMENT_INTG_PD   512
 
#define RCB_ELEMENT_GI   1024
 
#define RCB_ELEMENT_PURGE_BUF   2048
 
#define RCB_ELEMENT_ENTRY_ID   4096
 
#define RCB_ELEMENT_TIME_OF_ENTRY   8192
 
#define RCB_ELEMENT_RESV_TMS   16384
 
#define RCB_ELEMENT_OWNER   32768
 

Typedefs

typedef struct sClientDataSet * ClientDataSet
 
typedef struct sClientReport * ClientReport
 
typedef struct
sClientReportControlBlock * 
ClientReportControlBlock
 
typedef struct
sClientGooseControlBlock * 
ClientGooseControlBlock
 
typedef struct sIedConnection * IedConnection
 
typedef void(* IedConnectionClosedHandler )(void *parameter, IedConnection connection)
 
typedef void(* ReportCallbackFunction )(void *parameter, ClientReport report)
 Callback function for receiving reports. More...
 
typedef struct
sControlObjectClient * 
ControlObjectClient
 
typedef void(* CommandTerminationHandler )(void *parameter, ControlObjectClient controlClient)
 Private a callback handler that is invoked when a command termination message is received. More...
 
typedef struct
sFileDirectoryEntry * 
FileDirectoryEntry
 
typedef bool(* IedClientGetFileHandler )(void *parameter, uint8_t *buffer, uint32_t bytesRead)
 user provided handler to receive the data of the GetFile request More...
 

Enumerations

enum  IedConnectionState { IED_STATE_IDLE, IED_STATE_CONNECTED, IED_STATE_CLOSED }
 
enum  IedClientError {
  IED_ERROR_OK = 0, IED_ERROR_NOT_CONNECTED = 1, IED_ERROR_ALREADY_CONNECTED = 2, IED_ERROR_CONNECTION_LOST = 3,
  IED_ERROR_SERVICE_NOT_SUPPORTED = 4, IED_ERROR_CONNECTION_REJECTED = 5, IED_ERROR_USER_PROVIDED_INVALID_ARGUMENT = 10, IED_ERROR_ENABLE_REPORT_FAILED_DATASET_MISMATCH = 11,
  IED_ERROR_OBJECT_REFERENCE_INVALID = 12, IED_ERROR_UNEXPECTED_VALUE_RECEIVED = 13, IED_ERROR_TIMEOUT = 20, IED_ERROR_ACCESS_DENIED = 21,
  IED_ERROR_OBJECT_DOES_NOT_EXIST = 22, IED_ERROR_OBJECT_EXISTS = 23, IED_ERROR_OBJECT_ACCESS_UNSUPPORTED = 24, IED_ERROR_UNKNOWN = 99
}
 
enum  ReasonForInclusion {
  REASON_NOT_INCLUDED = 0, REASON_DATA_CHANGE = 1, REASON_QUALITY_CHANGE = 2, REASON_DATA_UPDATE = 3,
  REASON_INTEGRITY = 4, REASON_GI = 5, REASON_UNKNOWN = 6
}
 
enum  ControlModel {
  CONTROL_MODEL_STATUS_ONLY, CONTROL_MODEL_DIRECT_NORMAL, CONTROL_MODEL_SBO_NORMAL, CONTROL_MODEL_DIRECT_ENHANCED,
  CONTROL_MODEL_SBO_ENHANCED
}
 
enum  ACSIClass {
  ACSI_CLASS_DATA_OBJECT, ACSI_CLASS_DATA_SET, ACSI_CLASS_BRCB, ACSI_CLASS_URCB,
  ACSI_CLASS_LCB, ACSI_CLASS_LOG, ACSI_CLASS_SGCB, ACSI_CLASS_GoCB,
  ACSI_CLASS_GsCB, ACSI_CLASS_MSVCB, ACSI_CLASS_USVCB
}
 

Functions

IedConnection IedConnection_create (void)
 create a new IedConnection instance More...
 
void IedConnection_destroy (IedConnection self)
 destroy an IedConnection instance. More...
 
void IedConnection_setConnectTimeout (IedConnection self, uint32_t timeoutInMs)
 set the connect timeout in ms More...
 
void IedConnection_connect (IedConnection self, IedClientError *error, char *hostname, int tcpPort)
 Connect to a server. More...
 
void IedConnection_abort (IedConnection self, IedClientError *error)
 Abort the connection. More...
 
void IedConnection_release (IedConnection self, IedClientError *error)
 Release the connection. More...
 
void IedConnection_close (IedConnection self)
 Close the connection. More...
 
IedConnectionState IedConnection_getState (IedConnection self)
 return the state of the connection. More...
 
LastApplError IedConnection_getLastApplError (IedConnection self)
 Access to last application error received by the client connection. More...
 
void IedConnection_installConnectionClosedHandler (IedConnection self, IedConnectionClosedHandler handler, void *parameter)
 Install a handler function that will be called when the connection is lost. More...
 
MmsConnection IedConnection_getMmsConnection (IedConnection self)
 get a handle to the underlying MmsConnection More...
 
ClientGooseControlBlock ClientGooseControlBlock_create (char *dataAttributeReference)
 
void ClientGooseControlBlock_destroy (ClientGooseControlBlock self)
 
bool ClientGooseControlBlock_getGoEna (ClientGooseControlBlock self)
 
void ClientGooseControlBlock_setGoEna (ClientGooseControlBlock self, bool goEna)
 
char * ClientGooseControlBlock_getGoID (ClientGooseControlBlock self)
 
void ClientGooseControlBlock_setGoID (ClientGooseControlBlock self, char *goID)
 
char * ClientGooseControlBlock_getDatSet (ClientGooseControlBlock self)
 
void ClientGooseControlBlock_setDatSet (ClientGooseControlBlock self, char *datSet)
 
uint32_t ClientGooseControlBlock_getConfRev (ClientGooseControlBlock self)
 
bool ClientGooseControlBlock_getNdsComm (ClientGooseControlBlock self)
 
uint32_t ClientGooseControlBlock_getMinTime (ClientGooseControlBlock self)
 
uint32_t ClientGooseControlBlock_getMaxTime (ClientGooseControlBlock self)
 
bool ClientGooseControlBlock_getFixedOffs (ClientGooseControlBlock self)
 
MmsValueClientGooseControlBlock_getDstAddress_addr (ClientGooseControlBlock self)
 
void ClientGooseControlBlock_setDstAddress_addr (ClientGooseControlBlock self, MmsValue *macAddr)
 
uint8_t ClientGooseControlBlock_getDstAddress_priority (ClientGooseControlBlock self)
 
void ClientGooseControlBlock_setDstAddress_priority (ClientGooseControlBlock self, uint8_t priorityValue)
 
uint16_t ClientGooseControlBlock_getDstAddress_vid (ClientGooseControlBlock self)
 
void ClientGooseControlBlock_setDstAddress_vid (ClientGooseControlBlock self, uint16_t vidValue)
 
uint16_t ClientGooseControlBlock_getDstAddress_appid (ClientGooseControlBlock self)
 
void ClientGooseControlBlock_setDstAddress_appid (ClientGooseControlBlock self, uint16_t appidValue)
 
ClientGooseControlBlock IedConnection_getGoCBValues (IedConnection self, IedClientError *error, 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. More...
 
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. More...
 
ClientReportControlBlock IedConnection_getRCBValues (IedConnection self, IedClientError *error, char *rcbReference, ClientReportControlBlock updateRcb)
 Read access to attributes of a report control block (RCB) at the connected server. More...
 
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. More...
 
void IedConnection_installReportHandler (IedConnection self, char *rcbReference, char *rptId, ReportCallbackFunction handler, void *handlerParameter)
 Install a report handler function for the specified report control block (RCB) More...
 
void IedConnection_uninstallReportHandler (IedConnection self, char *rcbReference)
 uninstall a report handler function for the specified report control block (RCB) More...
 
void IedConnection_triggerGIReport (IedConnection self, IedClientError *error, char *rcbReference)
 Trigger a general interrogation (GI) report for the specified report control block (RCB) More...
 
MmsValueClientReport_getDataSetValues (ClientReport self)
 return the received data set values of the report More...
 
char * ClientReport_getRcbReference (ClientReport self)
 return reference (name) of the server RCB associated with this ClientReport object More...
 
char * ClientReport_getRptId (ClientReport self)
 return RptId of the server RCB associated with this ClientReport object More...
 
ReasonForInclusion ClientReport_getReasonForInclusion (ClientReport self, int elementIndex)
 get the reason code (reason for inclusion) for a specific report data set element More...
 
MmsValueClientReport_getEntryId (ClientReport self)
 get the entry ID of the report More...
 
bool ClientReport_hasTimestamp (ClientReport self)
 determine if the last received report contains a timestamp More...
 
bool ClientReport_hasSeqNum (ClientReport self)
 
uint16_t ClientReport_getSeqNum (ClientReport self)
 
bool ClientReport_hasDataSetName (ClientReport self)
 
bool ClientReport_hasReasonForInclusion (ClientReport self)
 
bool ClientReport_hasConfRev (ClientReport self)
 
uint32_t ClientReport_getConfRev (ClientReport self)
 
bool ClientReport_hasBufOvfl (ClientReport self)
 
bool ClientReport_hasDataReference (ClientReport self)
 
uint64_t ClientReport_getTimestamp (ClientReport self)
 get the timestamp of the report More...
 
char * ReasonForInclusion_getValueAsString (ReasonForInclusion reasonCode)
 get the reason for inclusion of as a human readable string More...
 
ClientReportControlBlock ClientReportControlBlock_create (char *rcbReference)
 
void ClientReportControlBlock_destroy (ClientReportControlBlock self)
 
char * ClientReportControlBlock_getObjectReference (ClientReportControlBlock self)
 
bool ClientReportControlBlock_isBuffered (ClientReportControlBlock self)
 
char * ClientReportControlBlock_getRptId (ClientReportControlBlock self)
 
void ClientReportControlBlock_setRptId (ClientReportControlBlock self, char *rptId)
 
bool ClientReportControlBlock_getRptEna (ClientReportControlBlock self)
 
void ClientReportControlBlock_setRptEna (ClientReportControlBlock self, bool rptEna)
 
bool ClientReportControlBlock_getResv (ClientReportControlBlock self)
 
void ClientReportControlBlock_setResv (ClientReportControlBlock self, bool resv)
 
char * ClientReportControlBlock_getDataSetReference (ClientReportControlBlock self)
 
void ClientReportControlBlock_setDataSetReference (ClientReportControlBlock self, char *dataSetReference)
 set the data set to be observed by the RCB More...
 
uint32_t ClientReportControlBlock_getConfRev (ClientReportControlBlock self)
 
int ClientReportControlBlock_getOptFlds (ClientReportControlBlock self)
 
void ClientReportControlBlock_setOptFlds (ClientReportControlBlock self, int optFlds)
 
uint32_t ClientReportControlBlock_getBufTm (ClientReportControlBlock self)
 
void ClientReportControlBlock_setBufTm (ClientReportControlBlock self, uint32_t bufTm)
 
uint16_t ClientReportControlBlock_getSqNum (ClientReportControlBlock self)
 
int ClientReportControlBlock_getTrgOps (ClientReportControlBlock self)
 
void ClientReportControlBlock_setTrgOps (ClientReportControlBlock self, int trgOps)
 
uint32_t ClientReportControlBlock_getIntgPd (ClientReportControlBlock self)
 
void ClientReportControlBlock_setIntgPd (ClientReportControlBlock self, uint32_t intgPd)
 
bool ClientReportControlBlock_getGI (ClientReportControlBlock self)
 
void ClientReportControlBlock_setGI (ClientReportControlBlock self, bool gi)
 
bool ClientReportControlBlock_getPurgeBuf (ClientReportControlBlock self)
 
void ClientReportControlBlock_setPurgeBuf (ClientReportControlBlock self, bool purgeBuf)
 
int16_t ClientReportControlBlock_getResvTms (ClientReportControlBlock self)
 
void ClientReportControlBlock_setResvTms (ClientReportControlBlock self, int16_t resvTms)
 
MmsValueClientReportControlBlock_getEntryId (ClientReportControlBlock self)
 
void ClientReportControlBlock_setEntryId (ClientReportControlBlock self, MmsValue *entryId)
 
uint64_t ClientReportControlBlock_getEntryTime (ClientReportControlBlock self)
 
MmsValueClientReportControlBlock_getOwner (ClientReportControlBlock self)
 
MmsValueIedConnection_readObject (IedConnection self, IedClientError *error, const char *dataAttributeReference, FunctionalConstraint fc)
 read a functional constrained data attribute (FCDA) or functional constrained data (FCD). More...
 
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). More...
 
bool IedConnection_readBooleanValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
 read a functional constrained data attribute (FCDA) of type boolean More...
 
float IedConnection_readFloatValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
 read a functional constrained data attribute (FCDA) of type float More...
 
char * IedConnection_readStringValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
 read a functional constrained data attribute (FCDA) of type VisibleString or MmsString More...
 
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 as int32_t More...
 
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 as uint32_t More...
 
TimestampIedConnection_readTimestampValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, Timestamp *timeStamp)
 read a functional constrained data attribute (FCDA) of type Timestamp (UTC Time) More...
 
Quality IedConnection_readQualityValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc)
 read a functional constrained data attribute (FCDA) of type Quality More...
 
void IedConnection_writeBooleanValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, bool value)
 write a functional constrained data attribute (FCDA) of type boolean More...
 
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 More...
 
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) More...
 
void IedConnection_writeFloatValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, float value)
 write a functional constrained data attribute (FCDA) of type float More...
 
void IedConnection_writeVisibleStringValue (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, char *value)
 
void IedConnection_writeOctetString (IedConnection self, IedClientError *error, const char *objectReference, FunctionalConstraint fc, uint8_t *value, int valueLength)
 
ClientDataSet IedConnection_readDataSetValues (IedConnection self, IedClientError *error, const char *dataSetReference, ClientDataSet dataSet)
 get data set values from a server device More...
 
void IedConnection_createDataSet (IedConnection self, IedClientError *error, const char *dataSetReference, LinkedListdataSetElements)
 create a new data set at the connected server device More...
 
void IedConnection_deleteDataSet (IedConnection self, IedClientError *error, const char *dataSetReference)
 delete a deletable data set at the connected server device More...
 
LinkedList IedConnection_getDataSetDirectory (IedConnection self, IedClientError *error, const char *dataSetReference, bool *isDeletable)
 returns the object references of the elements of a data set More...
 
void ClientDataSet_destroy (ClientDataSet self)
 destroy an ClientDataSet instance. Has to be called by the application. More...
 
MmsValueClientDataSet_getValues (ClientDataSet self)
 get the data set values locally stored in the ClientDataSet instance. More...
 
char * ClientDataSet_getReference (ClientDataSet self)
 Get the object reference of the data set. More...
 
int ClientDataSet_getDataSetSize (ClientDataSet self)
 get the size of the data set (number of members) More...
 
ControlObjectClient ControlObjectClient_create (char *dataAttributeReference, IedConnection connection)
 
void ControlObjectClient_destroy (ControlObjectClient self)
 
char * ControlObjectClient_getObjectReference (ControlObjectClient self)
 
ControlModel ControlObjectClient_getControlModel (ControlObjectClient self)
 
bool ControlObjectClient_operate (ControlObjectClient self, MmsValue *ctlVal, uint64_t operTime)
 
bool ControlObjectClient_select (ControlObjectClient self)
 
bool ControlObjectClient_selectWithValue (ControlObjectClient self, MmsValue *ctlVal)
 
bool ControlObjectClient_cancel (ControlObjectClient self)
 
void ControlObjectClient_setLastApplError (ControlObjectClient self, LastApplError lastAppIError)
 
LastApplError ControlObjectClient_getLastApplError (ControlObjectClient self)
 
void ControlObjectClient_setTestMode (ControlObjectClient self)
 
void ControlObjectClient_setOrigin (ControlObjectClient self, const char *orIdent, int orCat)
 
void ControlObjectClient_enableInterlockCheck (ControlObjectClient self)
 
void ControlObjectClient_enableSynchroCheck (ControlObjectClient self)
 
void ControlObjectClient_setCommandTerminationHandler (ControlObjectClient self, CommandTerminationHandler handler, void *handlerParameter)
 
void IedConnection_getDeviceModelFromServer (IedConnection self, IedClientError *error)
 Retrieve the device model from the server. More...
 
LinkedList IedConnection_getLogicalDeviceList (IedConnection self, IedClientError *error)
 Get the list of logical devices available at the server (DEPRECATED) More...
 
LinkedList IedConnection_getServerDirectory (IedConnection self, IedClientError *error, bool getFileNames)
 Get the list of logical devices or files available at the server. More...
 
LinkedList IedConnection_getLogicalDeviceDirectory (IedConnection self, IedClientError *error, const char *logicalDeviceName)
 Get the list of logical nodes (LN) of a logical device. More...
 
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 More...
 
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 More...
 
LinkedList IedConnection_getDataDirectory (IedConnection self, IedClientError *error, const char *dataReference)
 returns the directory of the given data object (DO) More...
 
LinkedList IedConnection_getDataDirectoryFC (IedConnection self, IedClientError *error, const char *dataReference)
 returns the directory of the given data object (DO) More...
 
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 More...
 
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 and function constraint fc. More...
 
FileDirectoryEntry FileDirectoryEntry_create (const char *fileName, uint32_t fileSize, uint64_t lastModified)
 
void FileDirectoryEntry_destroy (FileDirectoryEntry self)
 
char * FileDirectoryEntry_getFileName (FileDirectoryEntry self)
 
uint32_t FileDirectoryEntry_getFileSize (FileDirectoryEntry self)
 
uint64_t FileDirectoryEntry_getLastModified (FileDirectoryEntry self)
 
LinkedList IedConnection_getFileDirectory (IedConnection self, IedClientError *error, const char *directoryName)
 returns the directory entries of the specified file directory. More...
 
uint32_t IedConnection_getFile (IedConnection self, IedClientError *error, const char *fileName, IedClientGetFileHandler handler, void *handlerParameter)
 Implementation of the GetFile ACSI service. More...
 
void IedConnection_deleteFile (IedConnection self, IedClientError *error, const char *fileName)
 Implementation of the DeleteFile ACSI service. More...