libiec61850
1.6.0
|
Typedefs | |
typedef struct sGooseSubscriber * | GooseSubscriber |
typedef void(* | GooseListener) (GooseSubscriber subscriber, void *parameter) |
user provided callback function that will be invoked when a GOOSE message is received. More... | |
typedef struct sGooseReceiver * | GooseReceiver |
Functions | |
LIB61850_API GooseSubscriber | GooseSubscriber_create (char *goCbRef, MmsValue *dataSetValues) |
create a new GOOSE subscriber instance. More... | |
LIB61850_API char * | GooseSubscriber_getGoId (GooseSubscriber self) |
Get the GoId value of the received GOOSE message. More... | |
LIB61850_API char * | GooseSubscriber_getGoCbRef (GooseSubscriber self) |
Get the GOOSE Control Block reference value of the received GOOSE message. More... | |
LIB61850_API char * | GooseSubscriber_getDataSet (GooseSubscriber self) |
Get the DatSet value of the received GOOSE message. More... | |
LIB61850_API void | GooseSubscriber_setDstMac (GooseSubscriber self, uint8_t dstMac[6]) |
set the destination mac address used by the subscriber to filter relevant messages. More... | |
LIB61850_API void | GooseSubscriber_setAppId (GooseSubscriber self, uint16_t appId) |
set the APPID used by the subscriber to filter relevant messages. More... | |
LIB61850_API bool | GooseSubscriber_isValid (GooseSubscriber self) |
Check if subscriber state is valid. More... | |
LIB61850_API GooseParseError | GooseSubscriber_getParseError (GooseSubscriber self) |
Get parse error in case of invalid subscriber state. More... | |
LIB61850_API void | GooseSubscriber_destroy (GooseSubscriber self) |
Destroy the GooseSubscriber instance. More... | |
LIB61850_API void | GooseSubscriber_setListener (GooseSubscriber self, GooseListener listener, void *parameter) |
set a callback function that will be invoked when a GOOSE message has been received. More... | |
LIB61850_API int32_t | GooseSubscriber_getAppId (GooseSubscriber self) |
Get the APPID value of the received GOOSE message. More... | |
LIB61850_API void | GooseSubscriber_getSrcMac (GooseSubscriber self, uint8_t *buffer) |
Get the source MAC address of the received GOOSE message. More... | |
LIB61850_API void | GooseSubscriber_getDstMac (GooseSubscriber self, uint8_t *buffer) |
Get the destination MAC address of the received GOOSE message. More... | |
LIB61850_API uint32_t | GooseSubscriber_getStNum (GooseSubscriber self) |
return the state number (stNum) of the last received GOOSE message. More... | |
LIB61850_API uint32_t | GooseSubscriber_getSqNum (GooseSubscriber self) |
return the sequence number (sqNum) of the last received GOOSE message. More... | |
LIB61850_API bool | GooseSubscriber_isTest (GooseSubscriber self) |
returns the test flag of the last received GOOSE message More... | |
LIB61850_API uint32_t | GooseSubscriber_getConfRev (GooseSubscriber self) |
returns the confRev value of the last received GOOSE message More... | |
LIB61850_API bool | GooseSubscriber_needsCommission (GooseSubscriber self) |
returns the value of the ndsCom (needs commission) flag of the last received GOOSE message. More... | |
LIB61850_API uint32_t | GooseSubscriber_getTimeAllowedToLive (GooseSubscriber self) |
Get the TimeAllowedToLive value of the last received message. More... | |
LIB61850_API uint64_t | GooseSubscriber_getTimestamp (GooseSubscriber self) |
Get the timestamp of the last received message. More... | |
LIB61850_API MmsValue * | GooseSubscriber_getDataSetValues (GooseSubscriber self) |
get the data set values received with the last report More... | |
LIB61850_API bool | GooseSubscriber_isVlanSet (GooseSubscriber self) |
LIB61850_API uint16_t | GooseSubscriber_getVlanId (GooseSubscriber self) |
LIB61850_API uint8_t | GooseSubscriber_getVlanPrio (GooseSubscriber self) |
LIB61850_API void | GooseSubscriber_setObserver (GooseSubscriber self) |
Configure the Subscriber to listen to any received GOOSE message. More... | |
LIB61850_API GooseReceiver | GooseReceiver_create (void) |
Create a new receiver instance. More... | |
LIB61850_API GooseReceiver | GooseReceiver_createEx (uint8_t *buffer) |
Create a new receiver instance using the provided buffer instead of allocating an own buffer. More... | |
LIB61850_API GooseReceiver | GooseReceiver_createRemote (RSession session) |
Create a new R-GOOSE receiver instance. More... | |
LIB61850_API void | GooseReceiver_setInterfaceId (GooseReceiver self, const char *interfaceId) |
sets the interface for the GOOSE receiver More... | |
LIB61850_API const char * | GooseReceiver_getInterfaceId (GooseReceiver self) |
return the interface ID used by the GOOSE receiver More... | |
LIB61850_API void | GooseReceiver_addSubscriber (GooseReceiver self, GooseSubscriber subscriber) |
Add a subscriber to this receiver instance. More... | |
LIB61850_API void | GooseReceiver_removeSubscriber (GooseReceiver self, GooseSubscriber subscriber) |
Remove a subscriber from this receiver instance. More... | |
LIB61850_API void | GooseReceiver_start (GooseReceiver self) |
start the GOOSE receiver in a separate thread More... | |
LIB61850_API void | GooseReceiver_stop (GooseReceiver self) |
stop the GOOSE receiver running in a separate thread More... | |
LIB61850_API bool | GooseReceiver_isRunning (GooseReceiver self) |
Check if GOOSE receiver is running. More... | |
LIB61850_API void | GooseReceiver_destroy (GooseReceiver self) |
Free all resource of the GooseReceiver and all installed GooseSubscribers. More... | |
LIB61850_API EthernetSocket | GooseReceiver_startThreadless (GooseReceiver self) |
LIB61850_API void | GooseReceiver_stopThreadless (GooseReceiver self) |
LIB61850_API bool | GooseReceiver_tick (GooseReceiver self) |
Parse GOOSE messages if they are available. More... | |
LIB61850_API void | GooseReceiver_handleMessage (GooseReceiver self, uint8_t *buffer, int size) |
Parse a GOOSE message. More... | |
typedef void(* GooseListener) (GooseSubscriber subscriber, void *parameter) |
user provided callback function that will be invoked when a GOOSE message is received.
subscriber | the subscriber object that invoked the callback function, |
parameter | a user provided parameter that will be passed to the callback function |
typedef struct sGooseReceiver* GooseReceiver |
typedef struct sGooseSubscriber* GooseSubscriber |
enum GooseParseError |
LIB61850_API void GooseReceiver_addSubscriber | ( | GooseReceiver | self, |
GooseSubscriber | subscriber | ||
) |
Add a subscriber to this receiver instance.
NOTE: Do not call this function while the receiver is running (after GooseReceiver_start has been called)!
self | the GooseReceiver instance |
subscriber | the GooseSubscriber instance to add |
LIB61850_API GooseReceiver GooseReceiver_create | ( | void | ) |
Create a new receiver instance.
A GooseReceiver instance is used to handle all GOOSE messages received on a specific network interface.
LIB61850_API GooseReceiver GooseReceiver_createEx | ( | uint8_t * | buffer | ) |
Create a new receiver instance using the provided buffer instead of allocating an own buffer.
A GooseReceiver instance is used to handle all GOOSE messages received on a specific network interface.
buffer | buffer to store Ethernet messages or NULL when using GooseReceiver_handleMessage |
LIB61850_API GooseReceiver GooseReceiver_createRemote | ( | RSession | session | ) |
Create a new R-GOOSE receiver instance.
session | the remote session protocol instance |
LIB61850_API void GooseReceiver_destroy | ( | GooseReceiver | self | ) |
Free all resource of the GooseReceiver and all installed GooseSubscribers.
self | the GooseReceiver instance |
LIB61850_API const char* GooseReceiver_getInterfaceId | ( | GooseReceiver | self | ) |
return the interface ID used by the GOOSE receiver
self | the GosseReceiver instance |
LIB61850_API void GooseReceiver_handleMessage | ( | GooseReceiver | self, |
uint8_t * | buffer, | ||
int | size | ||
) |
Parse a GOOSE message.
Call after reception of an Ethernet frame (can be used as an alternative to GooseReceiver_tick to avoid implementing the Ethernet HAL)
self | the receiver object |
buffer | a buffer containing the complete Ethernet message |
size | size of the Ethernet message |
LIB61850_API bool GooseReceiver_isRunning | ( | GooseReceiver | self | ) |
Check if GOOSE receiver is running.
Can be used to check if GooseReceiver_start has been successful.
self | the GooseReceiver instance |
LIB61850_API void GooseReceiver_removeSubscriber | ( | GooseReceiver | self, |
GooseSubscriber | subscriber | ||
) |
Remove a subscriber from this receiver instance.
NOTE: Do not call this function while the receiver is running (after GooseReceiver_start has been called)!
self | the GooseReceiver instance |
subscriber | the GooseSubscriber instance to remove |
LIB61850_API void GooseReceiver_setInterfaceId | ( | GooseReceiver | self, |
const char * | interfaceId | ||
) |
sets the interface for the GOOSE receiver
self | the GooseReceiver instance |
interfaceId |
LIB61850_API void GooseReceiver_start | ( | GooseReceiver | self | ) |
start the GOOSE receiver in a separate thread
self | the GooseReceiver instance |
LIB61850_API EthernetSocket GooseReceiver_startThreadless | ( | GooseReceiver | self | ) |
LIB61850_API void GooseReceiver_stop | ( | GooseReceiver | self | ) |
stop the GOOSE receiver running in a separate thread
This function is used to stop the receiver thread started with GooseReceiver_start
self | the GooseReceiver instance |
LIB61850_API void GooseReceiver_stopThreadless | ( | GooseReceiver | self | ) |
LIB61850_API bool GooseReceiver_tick | ( | GooseReceiver | self | ) |
Parse GOOSE messages if they are available.
Call after reception of an Ethernet frame or periodically
self | the receiver object |
LIB61850_API GooseSubscriber GooseSubscriber_create | ( | char * | goCbRef, |
MmsValue * | dataSetValues | ||
) |
create a new GOOSE subscriber instance.
A new GOOSE subscriber will be created and connected to a specific GOOSE control block reference.
The parameter goCbRef has to be given in MMS like notation (as it also will appear in the GOOSE message sent by the publisher). An example could be "simpleIOGenericIO/LLN0$GO$gcbEvents".
The data set values contained in a GOOSE message will be written to the optionally provided MmsValue instance. The MmsValue object has to be of type MMS_ARRAY. The array elements need to be of the same type as the data set elements. It is intended that the provided MmsValue instance has been created by the IedConnection_getDataSet() method before.
If NULL is given as dataSetValues it will be created the first time when a appropriate GOOSE message is received.
goCbRef | a string containing the object reference of the GOOSE Control Block (GoCB) in MMS notation the GOOSE publisher uses. |
dataSetValues | the MmsValue object where the data set values will be written or NULL. |
LIB61850_API void GooseSubscriber_destroy | ( | GooseSubscriber | self | ) |
Destroy the GooseSubscriber instance.
Do not call this function when the GooseSubscriber instance was added to a GooseReceiver. The GooseReceiver will call the destructor when GooseReceiver_destroy is called!
self | GooseSubscriber instance to operate on. |
LIB61850_API int32_t GooseSubscriber_getAppId | ( | GooseSubscriber | self | ) |
Get the APPID value of the received GOOSE message.
self | GooseSubscriber instance to operate on. |
LIB61850_API uint32_t GooseSubscriber_getConfRev | ( | GooseSubscriber | self | ) |
returns the confRev value of the last received GOOSE message
self | GooseSubscriber instance to operate on. |
LIB61850_API char* GooseSubscriber_getDataSet | ( | GooseSubscriber | self | ) |
Get the DatSet value of the received GOOSE message.
self | GooseSubscriber instance to operate on. |
LIB61850_API MmsValue* GooseSubscriber_getDataSetValues | ( | GooseSubscriber | self | ) |
get the data set values received with the last report
Note: To prevent data corruption. The MmsValue instance received should only be used inside of the callback function, when the GOOSE receiver is running in a separate thread.
self | GooseSubscriber instance to operate on. |
LIB61850_API void GooseSubscriber_getDstMac | ( | GooseSubscriber | self, |
uint8_t * | buffer | ||
) |
Get the destination MAC address of the received GOOSE message.
self | GooseSubscriber instance to operate on. |
buffer | buffer to store the MAC address (at least 6 byte) |
LIB61850_API char* GooseSubscriber_getGoCbRef | ( | GooseSubscriber | self | ) |
Get the GOOSE Control Block reference value of the received GOOSE message.
self | GooseSubscriber instance to operate on. |
LIB61850_API char* GooseSubscriber_getGoId | ( | GooseSubscriber | self | ) |
Get the GoId value of the received GOOSE message.
self | GooseSubscriber instance to operate on. |
LIB61850_API GooseParseError GooseSubscriber_getParseError | ( | GooseSubscriber | self | ) |
Get parse error in case of invalid subscriber state.
self | GooseSubscriber instance to operate on. |
LIB61850_API uint32_t GooseSubscriber_getSqNum | ( | GooseSubscriber | self | ) |
return the sequence number (sqNum) of the last received GOOSE message.
The sequence number is increased for every consecutive GOOSE message without state change. When a state change occurs (stNum is increased) then the sequence number (sqNum) will be reset.
self | GooseSubscriber instance to operate on. |
LIB61850_API void GooseSubscriber_getSrcMac | ( | GooseSubscriber | self, |
uint8_t * | buffer | ||
) |
Get the source MAC address of the received GOOSE message.
self | GooseSubscriber instance to operate on. |
buffer | buffer to store the MAC address (at least 6 byte) |
LIB61850_API uint32_t GooseSubscriber_getStNum | ( | GooseSubscriber | self | ) |
return the state number (stNum) of the last received GOOSE message.
The state number is increased if any of the values in the GOOSE data set changed due to a valid trigger condition
self | GooseSubscriber instance to operate on. |
LIB61850_API uint32_t GooseSubscriber_getTimeAllowedToLive | ( | GooseSubscriber | self | ) |
Get the TimeAllowedToLive value of the last received message.
self | GooseSubscriber instance to operate on. |
LIB61850_API uint64_t GooseSubscriber_getTimestamp | ( | GooseSubscriber | self | ) |
Get the timestamp of the last received message.
self | GooseSubscriber instance to operate on. |
LIB61850_API uint16_t GooseSubscriber_getVlanId | ( | GooseSubscriber | self | ) |
LIB61850_API uint8_t GooseSubscriber_getVlanPrio | ( | GooseSubscriber | self | ) |
LIB61850_API bool GooseSubscriber_isTest | ( | GooseSubscriber | self | ) |
returns the test flag of the last received GOOSE message
IMPORTANT: Goose messages with test=TRUE have to be ignored to be standard compliant!
self | GooseSubscriber instance to operate on. |
LIB61850_API bool GooseSubscriber_isValid | ( | GooseSubscriber | self | ) |
Check if subscriber state is valid.
A GOOSE subscriber is valid if TimeAllowedToLive timeout is not elapsed and GOOSE message were received with correct state and sequence ID.
LIB61850_API bool GooseSubscriber_isVlanSet | ( | GooseSubscriber | self | ) |
LIB61850_API bool GooseSubscriber_needsCommission | ( | GooseSubscriber | self | ) |
returns the value of the ndsCom (needs commission) flag of the last received GOOSE message.
IMPORTANT: Goose messages with ndsCom=TRUE have to be ignored to be standard compliant!
self | GooseSubscriber instance to operate on. |
LIB61850_API void GooseSubscriber_setAppId | ( | GooseSubscriber | self, |
uint16_t | appId | ||
) |
set the APPID used by the subscriber to filter relevant messages.
If APPID is set the subscriber will ignore all messages with other APPID values.
self | GooseSubscriber instance to operate on. |
appId | the APPID value the subscriber should use to filter messages |
LIB61850_API void GooseSubscriber_setDstMac | ( | GooseSubscriber | self, |
uint8_t | dstMac[6] | ||
) |
set the destination mac address used by the subscriber to filter relevant messages.
If dstMac is set the subscriber will ignore all messages with other dstMac values.
self | GooseSubscriber instance to operate on. |
dstMac | the destination mac address |
LIB61850_API void GooseSubscriber_setListener | ( | GooseSubscriber | self, |
GooseListener | listener, | ||
void * | parameter | ||
) |
set a callback function that will be invoked when a GOOSE message has been received.
self | GooseSubscriber instance to operate on. |
listener | user provided callback function |
parameter | a user provided parameter that will be passed to the callback function |
LIB61850_API void GooseSubscriber_setObserver | ( | GooseSubscriber | self | ) |
Configure the Subscriber to listen to any received GOOSE message.
NOTE: When the observer flag is set the subscriber also has access to the goCbRef, goId, and datSet values of the received GOOSE message