Skip to content

Commit

Permalink
- updated documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
mzillgith committed Mar 11, 2022
1 parent 398b14e commit cb78c0e
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 38 deletions.
1 change: 1 addition & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ New features and improvements:
- .NET API: GooseSubscriber - added GetGoId, GetGoCbRef, GetFataSet methods
- IED server: add support for SMV control blocks ("SMVC") in config file parser
- .NET API: added support for server integrated GOOSE publisher
- MacOS thread layer: replaced semaphore by mutex

Fixed bugs and vulnerabilities:

Expand Down
22 changes: 0 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,9 @@ Content:
* [Experimental Python bindings](#experimental-python-bindings)
* [Licensing](#commercial-licenses-and-support)
* [Contributing](#contributing)
* [Third-party contributions](#third-party-contributions)


## Overview


libiec61850 is an open-source (GPLv3) implementation of an IEC 61850 client and server library implementing the protocols MMS, GOOSE and SV. It is implemented in C (according to the C99 standard) to provide maximum portability. It can be used to implement IEC 61850 compliant client and server applications on embedded systems and PCs running Linux, Windows, and MacOS. Included is a set of simple example applications that can be used as a starting point to implement own IEC 61850 compliant devices or to communicate with IEC 61850 devices. The library has been successfully used in many commercial software products and devices.

For commercial projects licenses and support is provided by MZ Automation GmbH. Please contact info@mz-automation.de for more details on licensing options.
Expand Down Expand Up @@ -181,18 +178,6 @@ To enable the bindings you have to select the phyton configuration option with c

We don't provide any support for the Python bindings!

## Known limitations

### MacOS hal_thread.h implementation

The MacOS implementation of the Semaphore types uses POSIX named semaphores. The number of these semaphores depends on the limit of open file descriptors which is 256 by default.

There can be problems to create new Semaphore instances when this limit is reached. Depending on your application it can be required to increase this limit.

E.g. to increase the limit to 1000 you can use the command

ulimit -n 1000

## Commercial licenses and support

Support and commercial license options are provided by MZ Automation GmbH. Please contact info@mz-automation.de for more details.
Expand All @@ -202,10 +187,3 @@ Support and commercial license options are provided by MZ Automation GmbH. Pleas
If you want to contribute to the improvement and development of the library please send me comments, feature requests, bug reports, or patches. For more than trivial contributions I require you to sign a Contributor License Agreement. Please contact info@libiec61850.com.

Please don't send pull requests before signing the Contributor License Agreement! Such pull requests may be silently ignored.

## Third-party contributions

- The Mac OS X socket and ethernet layer has been kindly contributed by Michael Clausen, HES-SO Valais-Wallis, http://www.hevs.ch



74 changes: 59 additions & 15 deletions src/doxygen/mainpage.doxygen
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,45 @@
* \section intro_sec Introduction
*
* This is the reference manual of libIEC61850.
* libIEC61850 is an open-source (GPLv3) implementation of an IEC 61850 client and server library. It is implemented
* in C to provide maximum portability. It can be used to implement IEC 61850
* compatible client and server applications on embedded systems and PCs running Linux and Windows. Included
* is a set of simple example applications that can be used as a starting point to implement your own IEC 61850
* compatible devices or to communicate with IEC 61850 devices.
* There is also an open-source implementation of IEC 61850 in Java (see http://openmuc.org).
*
* libiec61850 is an open-source (GPLv3) implementation of an IEC 61850 client and server library implementing
* the protocols MMS, GOOSE and SV. It is implemented in C (according to the C99 standard)
* to be portable to a large number of platforms. It can be used to implement IEC 61850 compliant client and server applications on embedded systems and PCs running Linux, Windows, and MacOS.
* Included is a set of simple example applications that can be used as a starting point to implement own IEC 61850 compliant devices or to communicate with IEC 61850 devices.
* The library has been successfully used in many commercial software products and devices. Various of these devices have been successfully certified for standard compliance.
*
* The library implements the most important parts of IEC 61850 on top of the MMS mapping. It provides the MMS protocol stack
* on top of TCP/IP as well as GOOSE for real-time data transfer inside of substations.
* on top of TCP/IP as well as GOOSE and sampled measured values (SMV) for real-time data transfer inside of substations.
*
* The API of libIEC61850 can be divided into a client and a server part. Both parts also
* share common elements. For both client and server there exist two different APIs. There is a
* "low-level" MMS API and the more high-level IEC 61850 API.
* \section features Library features
*
* The library support the following IEC 61850 protocol features:
*
* - MMS client/server, GOOSE publisher/subscriber(IEC 61850-8-1)
* - Sampled Values publisher/subscriber (SV - IEC 61850-9-2)
* - Support for buffered and unbuffered reports
* - Online report control block configuration
* - Data access service (get data, set data)
* - online data model discovery and browsing
* - all data set services (get values, set values, browse)
* - dynamic data set services (create and delete)
* - log service
* - flexible API to connect custom data bases
* - comes with ready-to-use sqlite implementation
* - MMS file services (browse, get file, set file, delete/rename file)
* - required to download COMTRADE files
* - Setting group handling
* - Support for service tracking
* - GOOSE and SV control block handling
* - TLS support
* - C and C#/.NET API
*
* \section api API for application programming
*
* The API of libIEC61850 can be divided into a client, server, publisher, and subscriber parts.
* These parts also share common elements. For client and server there exist two different APIs. There is a
* "low-level" MMS API and the more high-level IEC 61850 API. It is always recommended to use the IEC 61850 API
* to be compliant with the standard. In some cases in can also be beneficial to use the lower-level MMS API.
*
* \section iec_client_api IEC 61850 client API
*
Expand Down Expand Up @@ -49,13 +75,31 @@
* \section hal Hardware/OS abstraction layer
*
* libIEC61850 provides a hardware/OS abstraction layer (HAL) to hide the dependencies to the
* underlying platform. Currently this layer consists of thread, socket and time abstractions. If
* underlying platform. Currently this layer consists of thread, socket, filesystem, Ethernet and time abstractions. If
* you want to port the library to a new platform you need to implement the functions defined
* by this API. At the moment implementations for POSIX(Linux, Mac OS X ...) and Win32 exists. This API
* consists of the three files <code>hal/hal.h</code>, <code>hal/socket/socket.h</code> and
* <code>hal/thread/thread.h</code>.
* by this API. At the moment implementations for Linux, BSD, Windows and MacOS exists. This API
* consists of header files starting with <code>hal_</code> in the <code>hal/inc</code> folder.
*
* \section tls TLS support
*
* The library can also be compiled with TLS support. The library is using an abstraction layer for
* TLS libraries. Currently the only supported implementation of this abstraction layer is for mbedtls.
*
* \section building Building the library and examples with cmake
*
* With the help of the cmake build script it is possible to create platform independent project descriptions and let cmake create specific project or build files for other tools like Make or Visual Studio.
*
* If you have cmake installed fire up a command line (cmd.exe) and create a new subdirectory in the libiec61850 folder. Change to this subdirectory. Then you can invoke cmake. As an command line argument you have to supply a "generator" that is used by cmake to create the project file for the actual build tool (in our case Visual Studio 2015).
*
* For Visual Studio 2017:
*
* <code>cmake -G "Visual Studio 15 2017 Win64" ..</code>
*
* For Visual Studio 2019 (new way to specify the x64 platform):
*
* <code>cmake -G "Visual Studio 16 2019" .. -A x64</code>
*
* \section examples Building the library and the examples
* \section examples Building the library and examples with gcc/make
*
* To build the library you can simply execute <code>make</code> in the main folder of the
* source distribution. It is assumed that a GCC toolchain and the Make tool is installed.
Expand Down
2 changes: 1 addition & 1 deletion src/doxygen/mainpage_net.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# API Documentation

Copyright 2018 Michael Zillgith
Copyright 2022 Michael Zillgith

This is the documentation for IEC61850.NET a .NET wrapper for the libiec61850 IEC 61850 protocol library.

Expand Down

0 comments on commit cb78c0e

Please sign in to comment.