libiec61850
1.6.0
|
Functions to create, configure, and manage an IEC 61850 server instance. More...
Typedefs | |
typedef struct sIedServer * | IedServer |
typedef struct sClientConnection * | ClientConnection |
Functions | |
LIB61850_API IedServer | IedServer_create (IedModel *dataModel) |
Create a new IedServer instance. More... | |
LIB61850_API IedServer | IedServer_createWithTlsSupport (IedModel *dataModel, TLSConfiguration tlsConfiguration) |
Create a new IedServer with TLS support. More... | |
LIB61850_API IedServer | IedServer_createWithConfig (IedModel *dataModel, TLSConfiguration tlsConfiguration, IedServerConfig serverConfiguration) |
Create new new IedServer with extended configurations parameters. More... | |
LIB61850_API void | IedServer_destroy (IedServer self) |
Destroy an IedServer instance and release all resources (memory, TCP sockets) More... | |
LIB61850_API bool | IedServer_addAccessPoint (IedServer self, const char *ipAddr, int tcpPort, TLSConfiguration tlsConfiguration) |
Add a new local access point (server will listen to provided IP/port combination) More... | |
LIB61850_API void | IedServer_setLocalIpAddress (IedServer self, const char *localIpAddress) |
Set the local IP address to listen on. More... | |
LIB61850_API void | IedServer_setServerIdentity (IedServer self, const char *vendor, const char *model, const char *revision) |
Set the identify for the MMS identify service. More... | |
LIB61850_API void | IedServer_setFilestoreBasepath (IedServer self, const char *basepath) |
Set the virtual filestore basepath for the MMS file services. More... | |
LIB61850_API void | IedServer_setLogStorage (IedServer self, const char *logRef, LogStorage logStorage) |
Assign a LogStorage instance to a log reference. More... | |
LIB61850_API void | IedServer_start (IedServer self, int tcpPort) |
Start handling client connections. More... | |
LIB61850_API void | IedServer_stop (IedServer self) |
Stop handling client connections. More... | |
LIB61850_API void | IedServer_startThreadless (IedServer self, int tcpPort) |
Start handling client connection for non-threaded mode. More... | |
LIB61850_API int | IedServer_waitReady (IedServer self, unsigned int timeoutMs) |
Wait until a server connection is ready (with timeout) More... | |
LIB61850_API void | IedServer_processIncomingData (IedServer self) |
handle incoming TCP data in non-threaded mode More... | |
LIB61850_API void | IedServer_performPeriodicTasks (IedServer self) |
perform periodic background tasks in non-threaded mode More... | |
LIB61850_API void | IedServer_stopThreadless (IedServer self) |
Stop handling client connections for non-threaded mode. More... | |
LIB61850_API IedModel * | IedServer_getDataModel (IedServer self) |
Return the data model of the server. More... | |
LIB61850_API bool | IedServer_isRunning (IedServer self) |
Check if IedServer instance is listening for client connections. More... | |
LIB61850_API int | IedServer_getNumberOfOpenConnections (IedServer self) |
Get number of open MMS connections. More... | |
LIB61850_API MmsServer | IedServer_getMmsServer (IedServer self) |
Get access to the underlying MmsServer instance. More... | |
LIB61850_API void | IedServer_enableGoosePublishing (IedServer self) |
Enable all GOOSE control blocks. More... | |
LIB61850_API void | IedServer_disableGoosePublishing (IedServer self) |
Disable all GOOSE control blocks. More... | |
LIB61850_API void | IedServer_setGooseInterfaceId (IedServer self, const char *interfaceId) |
Set the Ethernet interface to be used by GOOSE publishing. More... | |
LIB61850_API void | IedServer_setGooseInterfaceIdEx (IedServer self, LogicalNode *ln, const char *gcbName, const char *interfaceId) |
Set the Ethernet interface to be used by GOOSE publishing. More... | |
LIB61850_API void | IedServer_useGooseVlanTag (IedServer self, LogicalNode *ln, const char *gcbName, bool useVlanTag) |
Enable/disable the use of VLAN tags in GOOSE messages. More... | |
LIB61850_API void | IedServer_setTimeQuality (IedServer self, bool leapSecondKnown, bool clockFailure, bool clockNotSynchronized, int subsecondPrecision) |
Set the time quality for all timestamps internally generated by this IedServer instance. More... | |
Functions to create, configure, and manage an IEC 61850 server instance.
typedef struct sClientConnection* ClientConnection |
An opaque handle for a client connection
typedef struct sIedServer* IedServer |
An opaque handle for an IED server instance
LIB61850_API bool IedServer_addAccessPoint | ( | IedServer | self, |
const char * | ipAddr, | ||
int | tcpPort, | ||
TLSConfiguration | tlsConfiguration | ||
) |
Add a new local access point (server will listen to provided IP/port combination)
self | the instance of IedServer to operate on. |
ipAddr | the local IP address to listen on |
tcpPort | the local TCP port to listen on or -1 to use the standard TCP port \oaram tlsConfiguration the TLS configuration or NULL when TLS is not used for this access point |
LIB61850_API IedServer IedServer_create | ( | IedModel * | dataModel | ) |
Create a new IedServer instance.
dataModel | reference to the IedModel data structure to be used as IEC 61850 data model of the device |
LIB61850_API IedServer IedServer_createWithConfig | ( | IedModel * | dataModel, |
TLSConfiguration | tlsConfiguration, | ||
IedServerConfig | serverConfiguration | ||
) |
Create new new IedServer with extended configurations parameters.
dataModel | reference to the IedModel data structure to be used as IEC 61850 data model of the device |
tlsConfiguration | TLS configuration object, or NULL to not use TLS |
serverConfiguration | IED server configuration object for advanced server configuration |
LIB61850_API IedServer IedServer_createWithTlsSupport | ( | IedModel * | dataModel, |
TLSConfiguration | tlsConfiguration | ||
) |
Create a new IedServer with TLS support.
dataModel | reference to the IedModel data structure to be used as IEC 61850 data model of the device |
tlsConfiguration | TLS configuration object, or NULL to not use TLS |
LIB61850_API void IedServer_destroy | ( | IedServer | self | ) |
Destroy an IedServer instance and release all resources (memory, TCP sockets)
self | the instance of IedServer to operate on. |
LIB61850_API void IedServer_disableGoosePublishing | ( | IedServer | self | ) |
Disable all GOOSE control blocks.
This will set the GoEna attribute of all configured GOOSE control blocks to false. This will stop GOOSE transmission.
self | the instance of IedServer to operate on. |
LIB61850_API void IedServer_enableGoosePublishing | ( | IedServer | self | ) |
Enable all GOOSE control blocks.
This will set the GoEna attribute of all configured GOOSE control blocks to true. If this method is not called at the startup or reset of the server then configured GOOSE control blocks keep inactive until a MMS client enables them by writing to the GOOSE control block.
self | the instance of IedServer to operate on. |
LIB61850_API IedModel* IedServer_getDataModel | ( | IedServer | self | ) |
Return the data model of the server.
self | the instance of IedServer to operate on. |
LIB61850_API MmsServer IedServer_getMmsServer | ( | IedServer | self | ) |
Get access to the underlying MmsServer instance.
This function should be handled with care. Since direct interaction with the MmsServer can interfere with the IedServer.
self | the instance of IedServer to operate on. |
LIB61850_API int IedServer_getNumberOfOpenConnections | ( | IedServer | self | ) |
Get number of open MMS connections.
self | the instance of IedServer to operate on |
LIB61850_API bool IedServer_isRunning | ( | IedServer | self | ) |
Check if IedServer instance is listening for client connections.
self | the instance of IedServer to operate on. |
LIB61850_API void IedServer_performPeriodicTasks | ( | IedServer | self | ) |
perform periodic background tasks in non-threaded mode
The function should be called periodically. If the function is called more often the more accurate are internal timeouts (e.g. for reports).
self | the instance of IedServer to operate on. |
LIB61850_API void IedServer_processIncomingData | ( | IedServer | self | ) |
handle incoming TCP data in non-threaded mode
The function should be called periodically. If the function is called more often the response time for incoming messages will be faster. As an alternative the function may only be called if new TCP data is available.
self | the instance of IedServer to operate on. |
LIB61850_API void IedServer_setFilestoreBasepath | ( | IedServer | self, |
const char * | basepath | ||
) |
Set the virtual filestore basepath for the MMS file services.
All external file service accesses will be mapped to paths relative to the base directory. NOTE: This function is only available when the CONFIG_SET_FILESTORE_BASEPATH_AT_RUNTIME option in stack_config.h is set.
self | the IedServer instance |
basepath | the new virtual filestore basepath |
LIB61850_API void IedServer_setGooseInterfaceId | ( | IedServer | self, |
const char * | interfaceId | ||
) |
Set the Ethernet interface to be used by GOOSE publishing.
This function can be used to set the GOOSE interface ID. If not used or set to NULL the default interface ID from stack_config.h is used.
self | the instance of IedServer to operate on. |
interfaceId | the ID of the ethernet interface to be used for GOOSE publishing |
LIB61850_API void IedServer_setGooseInterfaceIdEx | ( | IedServer | self, |
LogicalNode * | ln, | ||
const char * | gcbName, | ||
const char * | interfaceId | ||
) |
Set the Ethernet interface to be used by GOOSE publishing.
This function can be used to set the GOOSE interface ID forG all CBs (parameter ln = NULL) or for a specific GCB specified by the logical node instance and the GCB name.
self | the instance of IedServer to operate on. |
ln | the logical node that contains the GCB or NULL to set the ethernet interface ID for all GCBs |
gcbName | the name (not object reference!) of the GCB |
interfaceId | the ID of the ethernet interface to be used for GOOSE publishing |
LIB61850_API void IedServer_setLocalIpAddress | ( | IedServer | self, |
const char * | localIpAddress | ||
) |
Set the local IP address to listen on.
self | the IedServer instance |
localIpAddress | the local IP address as C string (an internal copy will be created) |
LIB61850_API void IedServer_setLogStorage | ( | IedServer | self, |
const char * | logRef, | ||
LogStorage | logStorage | ||
) |
Assign a LogStorage instance to a log reference.
self | the IedServer instance |
logRef | the log reference to assign the log storage to |
logStorage | the log storage instance to assign |
LIB61850_API void IedServer_setServerIdentity | ( | IedServer | self, |
const char * | vendor, | ||
const char * | model, | ||
const char * | revision | ||
) |
Set the identify for the MMS identify service.
CONFIG_IEC61850_SUPPORT_SERVER_IDENTITY required
self | the IedServer instance |
vendor | the IED vendor name |
model | the IED model name |
revision | the IED revision/version number |
LIB61850_API void IedServer_setTimeQuality | ( | IedServer | self, |
bool | leapSecondKnown, | ||
bool | clockFailure, | ||
bool | clockNotSynchronized, | ||
int | subsecondPrecision | ||
) |
Set the time quality for all timestamps internally generated by this IedServer instance.
You can call this function during the initialization of the server or whenever a time quality flag has to be updated (on clock failure or change of time synchronization state).
self | the instance of IedServer to operate on. |
leapSecondKnown | set/unset leap seconds known flag |
clockFailure | set/unset clock failure flag |
clockNotSynchronized | set/unset clock not synchronized flag |
subsecondPrecision | set the subsecond precision (number of significant bits of the fractionOfSecond part of the time stamp) |
LIB61850_API void IedServer_start | ( | IedServer | self, |
int | tcpPort | ||
) |
Start handling client connections.
self | the instance of IedServer to operate on. |
tcpPort | the TCP port the server is listening (-1 for using the default MMS or secure MMS port) |
LIB61850_API void IedServer_startThreadless | ( | IedServer | self, |
int | tcpPort | ||
) |
Start handling client connection for non-threaded mode.
This function will instruct the TCP(IP stack to listen for incoming connections. In order to accept new connection the function IedServer_processIncomingData has to be called periodically.
self | the instance of IedServer to operate on. |
tcpPort | the TCP port the server is listening (-1 for using the default MMS or secure MMS port) |
LIB61850_API void IedServer_stop | ( | IedServer | self | ) |
Stop handling client connections.
self | the instance of IedServer to operate on. |
LIB61850_API void IedServer_stopThreadless | ( | IedServer | self | ) |
Stop handling client connections for non-threaded mode.
self | the instance of IedServer to operate on. |
LIB61850_API void IedServer_useGooseVlanTag | ( | IedServer | self, |
LogicalNode * | ln, | ||
const char * | gcbName, | ||
bool | useVlanTag | ||
) |
Enable/disable the use of VLAN tags in GOOSE messages.
This function can be used to enable/disable VLAN tagging for all GCBs (parameter ln = NULL) or for a specific GCB specified by the logical node instance and the GCB name.
self | the instance of IedServer to operate on |
ln | the logical node that contains the GCB or NULL to enable/disable VLAN tagging for all GCBs |
gcbName | the name (not object reference!) of the GCB |
useVlanTag | true to enable VLAN tagging, false otherwise |
LIB61850_API int IedServer_waitReady | ( | IedServer | self, |
unsigned int | timeoutMs | ||
) |
Wait until a server connection is ready (with timeout)
The function will wait until a server connection is ready (data available) or the timeout elapsed. This function is intended for the non-threaded mode. Its use is optional. It is equivalent of using select on sockets on Linux. If the return value is != 0 the IedServer_processIncomingData function should be called.
self | the IedServer instance |
timeoutMs | the timeout to wait when no connection is ready |