libiec61850  1.2.0
Functions
General server setup and management functions

Functions

IedServer IedServer_create (IedModel *dataModel)
 Create a new IedServer instance. More...
 
IedServer IedServer_createWithTlsSupport (IedModel *dataModel, TLSConfiguration tlsConfiguration)
 Create a new IedServer with TLS support. More...
 
void IedServer_destroy (IedServer self)
 Destroy an IedServer instance and release all resources (memory, TCP sockets) More...
 
void IedServer_setLocalIpAddress (IedServer self, const char *localIpAddress)
 Set the local IP address to listen on. More...
 
void IedServer_setFilestoreBasepath (IedServer self, const char *basepath)
 Set the virtual filestore basepath for the MMS file services. More...
 
void IedServer_start (IedServer self, int tcpPort)
 Start handling client connections. More...
 
void IedServer_stop (IedServer self)
 Stop handling client connections. More...
 
void IedServer_startThreadless (IedServer self, int tcpPort)
 Start handling client connection for non-threaded mode. More...
 
int IedServer_waitReady (IedServer self, unsigned int timeoutMs)
 Wait until a server connection is ready (with timeout) More...
 
void IedServer_processIncomingData (IedServer self)
 handle incoming TCP data in non-threaded mode More...
 
void IedServer_performPeriodicTasks (IedServer self)
 perform periodic background tasks in non-threaded mode More...
 
void IedServer_stopThreadless (IedServer self)
 Stop handling client connections for non-threaded mode. More...
 
IedModel * IedServer_getDataModel (IedServer self)
 Return the data model of the server. More...
 
bool IedServer_isRunning (IedServer self)
 Check if IedServer instance is listening for client connections. More...
 
MmsServer IedServer_getMmsServer (IedServer self)
 Get access to the underlying MmsServer instance. More...
 
void IedServer_enableGoosePublishing (IedServer self)
 Enable all GOOSE control blocks. More...
 
void IedServer_disableGoosePublishing (IedServer self)
 Disable all GOOSE control blocks. More...
 
void IedServer_setGooseInterfaceId (IedServer self, const char *interfaceId)
 Set the Ethernet interface to be used by GOOSE publishing. More...
 

Detailed Description

Function Documentation

IedServer IedServer_create ( IedModel *  dataModel)

Create a new IedServer instance.

Parameters
dataModelreference to the IedModel data structure to be used as IEC 61850 data model of the device
Returns
the new IedServer instance
IedServer IedServer_createWithTlsSupport ( IedModel *  dataModel,
TLSConfiguration  tlsConfiguration 
)

Create a new IedServer with TLS support.

Parameters
dataModelreference to the IedModel data structure to be used as IEC 61850 data model of the device
tlsConfigurationTLS configuration object, or NULL to not use TLS
Returns
the new IedServer instance
void IedServer_destroy ( IedServer  self)

Destroy an IedServer instance and release all resources (memory, TCP sockets)

Parameters
selfthe instance of IedServer to operate on.
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.

Parameters
selfthe instance of IedServer to operate on.
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.

Parameters
selfthe instance of IedServer to operate on.
IedModel* IedServer_getDataModel ( IedServer  self)

Return the data model of the server.

Parameters
selfthe instance of IedServer to operate on.
Returns
the IedModel* instance of the server
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.

Parameters
selfthe instance of IedServer to operate on.
Returns
MmsServer instance that is used by the IedServer
bool IedServer_isRunning ( IedServer  self)

Check if IedServer instance is listening for client connections.

Parameters
selfthe instance of IedServer to operate on.
Returns
true if IedServer instance is listening for client connections
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).

Parameters
selfthe instance of IedServer to operate on.
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.

Parameters
selfthe instance of IedServer to operate on.
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.

Parameters
selfthe IedServer instance
basepaththe new virtual filestore basepath
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. Note the interface ID is operating system specific!

Parameters
selfthe instance of IedServer to operate on.
interfaceIdthe ID of the ethernet interface to be used for GOOSE publishing
void IedServer_setLocalIpAddress ( IedServer  self,
const char *  localIpAddress 
)

Set the local IP address to listen on.

Parameters
selfthe IedServer instance
localIpAddressthe local IP address as C string (an internal copy will be created)
void IedServer_start ( IedServer  self,
int  tcpPort 
)

Start handling client connections.

Parameters
selfthe instance of IedServer to operate on.
tcpPortthe TCP port the server is listening (-1 for using the default MMS or secure MMS port)
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.

Parameters
selfthe instance of IedServer to operate on.
tcpPortthe TCP port the server is listening (-1 for using the default MMS or secure MMS port)
void IedServer_stop ( IedServer  self)

Stop handling client connections.

Parameters
selfthe instance of IedServer to operate on.
void IedServer_stopThreadless ( IedServer  self)

Stop handling client connections for non-threaded mode.

Parameters
selfthe instance of IedServer to operate on.
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.

Parameters
selfthe IedServer instance
timeoutMsthe timeout to wait when no connection is ready
Returns
0 if no connection is ready; otherwise at least one connection is ready