|
lib60870-C
2.3.2
C source code library for the IEC 60870-5-101/104 protocols
|

Typedefs | |
| typedef struct sCS104_Connection * | CS104_Connection |
| typedef void(* | CS104_ConnectionHandler) (void *parameter, CS104_Connection connection, CS104_ConnectionEvent event) |
| Handler that is called when the connection is established or closed. More... | |
Functions | |
| CS104_Connection | CS104_Connection_create (const char *hostname, int tcpPort) |
| Create a new connection object. More... | |
| CS104_Connection | CS104_Connection_createSecure (const char *hostname, int tcpPort, TLSConfiguration tlsConfig) |
| Create a new secure connection object (uses TLS) More... | |
| void | CS104_Connection_setLocalAddress (CS104_Connection self, const char *localIpAddress, int localPort) |
| Set the local IP address and port to be used by the client. More... | |
| void | CS104_Connection_setAPCIParameters (CS104_Connection self, const CS104_APCIParameters parameters) |
| Set the CS104 specific APCI parameters. More... | |
| CS104_APCIParameters | CS104_Connection_getAPCIParameters (CS104_Connection self) |
| Get the currently used CS104 specific APCI parameters. | |
| void | CS104_Connection_setAppLayerParameters (CS104_Connection self, const CS101_AppLayerParameters parameters) |
| Set the CS101 application layer parameters. More... | |
| CS101_AppLayerParameters | CS104_Connection_getAppLayerParameters (CS104_Connection self) |
| Return the currently used application layer parameter. More... | |
| void | CS104_Connection_setConnectTimeout (CS104_Connection self, int millies) |
| Sets the timeout for connecting to the server (in ms) More... | |
| void | CS104_Connection_connectAsync (CS104_Connection self) |
| non-blocking connect. More... | |
| bool | CS104_Connection_connect (CS104_Connection self) |
| blocking connect More... | |
| void | CS104_Connection_sendStartDT (CS104_Connection self) |
| start data transmission on this connection More... | |
| void | CS104_Connection_sendStopDT (CS104_Connection self) |
| stop data transmission on this connection | |
| bool | CS104_Connection_isTransmitBufferFull (CS104_Connection self) |
| Check if the transmit (send) buffer is full. If true the next send command will fail. More... | |
| bool | CS104_Connection_sendInterrogationCommand (CS104_Connection self, CS101_CauseOfTransmission cot, int ca, QualifierOfInterrogation qoi) |
| send an interrogation command More... | |
| bool | CS104_Connection_sendCounterInterrogationCommand (CS104_Connection self, CS101_CauseOfTransmission cot, int ca, uint8_t qcc) |
| send a counter interrogation command More... | |
| bool | CS104_Connection_sendReadCommand (CS104_Connection self, int ca, int ioa) |
| Sends a read command (C_RD_NA_1 typeID: 102) More... | |
| bool | CS104_Connection_sendClockSyncCommand (CS104_Connection self, int ca, CP56Time2a newTime) |
| Sends a clock synchronization command (C_CS_NA_1 typeID: 103) More... | |
| bool | CS104_Connection_sendTestCommand (CS104_Connection self, int ca) |
| Send a test command (C_TS_NA_1 typeID: 104) More... | |
| bool | CS104_Connection_sendTestCommandWithTimestamp (CS104_Connection self, int ca, uint16_t tsc, CP56Time2a timestamp) |
| Send a test command with timestamp (C_TS_TA_1 typeID: 107) More... | |
| bool | CS104_Connection_sendProcessCommand (CS104_Connection self, TypeID typeId, CS101_CauseOfTransmission cot, int ca, InformationObject command) |
| Send a process command to the controlled (or other) station. More... | |
| bool | CS104_Connection_sendProcessCommandEx (CS104_Connection self, CS101_CauseOfTransmission cot, int ca, InformationObject sc) |
| Send a process command to the controlled (or other) station. More... | |
| bool | CS104_Connection_sendASDU (CS104_Connection self, CS101_ASDU asdu) |
| Send a user specified ASDU. More... | |
| void | CS104_Connection_setASDUReceivedHandler (CS104_Connection self, CS101_ASDUReceivedHandler handler, void *parameter) |
| Register a callback handler for received ASDUs. More... | |
| void | CS104_Connection_setConnectionHandler (CS104_Connection self, CS104_ConnectionHandler handler, void *parameter) |
| Set the connection event handler. More... | |
| void | CS104_Connection_setRawMessageHandler (CS104_Connection self, IEC60870_RawMessageHandler handler, void *parameter) |
| Set the raw message callback (called when a message is sent or received) More... | |
| void | CS104_Connection_close (CS104_Connection self) |
| Close the connection. | |
| void | CS104_Connection_destroy (CS104_Connection self) |
| Close the connection and free all related resources. | |
| typedef void(* CS104_ConnectionHandler) (void *parameter, CS104_Connection connection, CS104_ConnectionEvent event) |
Handler that is called when the connection is established or closed.
| parameter | user provided parameter |
| connection | the connection object |
| event | event type |
| bool CS104_Connection_connect | ( | CS104_Connection | self | ) |
blocking connect
Establishes a connection to a server. This function is blocking and will return after the connection is established or the connect timeout elapsed.
| self | CS104_Connection instance |
| void CS104_Connection_connectAsync | ( | CS104_Connection | self | ) |
non-blocking connect.
Invokes a connection establishment to the server and returns immediately.
| self | CS104_Connection instance |
| CS104_Connection CS104_Connection_create | ( | const char * | hostname, |
| int | tcpPort | ||
| ) |
Create a new connection object.
| hostname | host name of IP address of the server to connect |
| tcpPort | tcp port of the server to connect. If set to -1 use default port (2404) |
| CS104_Connection CS104_Connection_createSecure | ( | const char * | hostname, |
| int | tcpPort, | ||
| TLSConfiguration | tlsConfig | ||
| ) |
Create a new secure connection object (uses TLS)
| hostname | host name of IP address of the server to connect |
| tcpPort | tcp port of the server to connect. If set to -1 use default port (19998) |
| tlcConfig | the TLS configuration (certificates, keys, and parameters) |
| CS101_AppLayerParameters CS104_Connection_getAppLayerParameters | ( | CS104_Connection | self | ) |
Return the currently used application layer parameter.
NOTE: The application layer parameters are required to create CS101_ASDU objects.
| self | CS104_Connection instance |
| bool CS104_Connection_isTransmitBufferFull | ( | CS104_Connection | self | ) |
Check if the transmit (send) buffer is full. If true the next send command will fail.
The transmit buffer is full when the slave/server didn't confirm the last k sent messages. In this case the next message can only be sent after the next confirmation (by I or S messages) that frees part of the sent messages buffer.
| bool CS104_Connection_sendASDU | ( | CS104_Connection | self, |
| CS101_ASDU | asdu | ||
| ) |
Send a user specified ASDU.
| asdu | the ASDU to send |
| bool CS104_Connection_sendClockSyncCommand | ( | CS104_Connection | self, |
| int | ca, | ||
| CP56Time2a | newTime | ||
| ) |
Sends a clock synchronization command (C_CS_NA_1 typeID: 103)
| ca | Common address of the slave/server |
| newTime | new system time for the slave/server |
| bool CS104_Connection_sendCounterInterrogationCommand | ( | CS104_Connection | self, |
| CS101_CauseOfTransmission | cot, | ||
| int | ca, | ||
| uint8_t | qcc | ||
| ) |
send a counter interrogation command
| cot | cause of transmission |
| ca | Common address of the slave/server |
| qcc |
| bool CS104_Connection_sendInterrogationCommand | ( | CS104_Connection | self, |
| CS101_CauseOfTransmission | cot, | ||
| int | ca, | ||
| QualifierOfInterrogation | qoi | ||
| ) |
send an interrogation command
| cot | cause of transmission |
| ca | Common address of the slave/server |
| qoi | qualifier of interrogation (20 for station interrogation) |
| bool CS104_Connection_sendProcessCommand | ( | CS104_Connection | self, |
| TypeID | typeId, | ||
| CS101_CauseOfTransmission | cot, | ||
| int | ca, | ||
| InformationObject | command | ||
| ) |
Send a process command to the controlled (or other) station.
| typeId | the type ID of the command message to send or 0 to use the type ID of the information object |
| cot | the cause of transmission (should be ACTIVATION to select/execute or ACT_TERM to cancel the command) |
| ca | the common address of the information object |
| command | the command information object (e.g. SingleCommand or DoubleCommand) |
| bool CS104_Connection_sendProcessCommandEx | ( | CS104_Connection | self, |
| CS101_CauseOfTransmission | cot, | ||
| int | ca, | ||
| InformationObject | sc | ||
| ) |
Send a process command to the controlled (or other) station.
| cot | the cause of transmission (should be ACTIVATION to select/execute or ACT_TERM to cancel the command) |
| ca | the common address of the information object |
| command | the command information object (e.g. SingleCommand or DoubleCommand) |
| bool CS104_Connection_sendReadCommand | ( | CS104_Connection | self, |
| int | ca, | ||
| int | ioa | ||
| ) |
Sends a read command (C_RD_NA_1 typeID: 102)
This will send a read command C_RC_NA_1 (102) to the slave/outstation. The COT is always REQUEST (5). It is used to implement the cyclical polling of data application function.
| ca | Common address of the slave/server |
| ioa | Information object address of the data point to read |
| void CS104_Connection_sendStartDT | ( | CS104_Connection | self | ) |
start data transmission on this connection
After issuing this command the client (master) will receive spontaneous (unsolicited) messages from the server (slave).
| bool CS104_Connection_sendTestCommand | ( | CS104_Connection | self, |
| int | ca | ||
| ) |
Send a test command (C_TS_NA_1 typeID: 104)
Note: This command is not supported by IEC 60870-5-104
| ca | Common address of the slave/server |
| bool CS104_Connection_sendTestCommandWithTimestamp | ( | CS104_Connection | self, |
| int | ca, | ||
| uint16_t | tsc, | ||
| CP56Time2a | timestamp | ||
| ) |
Send a test command with timestamp (C_TS_TA_1 typeID: 107)
| ca | Common address of the slave/server |
| tsc | test sequence counter |
| timestamp | CP56Time2a timestamp |
| void CS104_Connection_setAPCIParameters | ( | CS104_Connection | self, |
| const CS104_APCIParameters | parameters | ||
| ) |
Set the CS104 specific APCI parameters.
If not set the default parameters are used. This function must be called before the CS104_Connection_connect function is called! If the function is called after the connect the behavior is undefined.
| self | CS104_Connection instance |
| parameters | the APCI layer parameters |
| void CS104_Connection_setAppLayerParameters | ( | CS104_Connection | self, |
| const CS101_AppLayerParameters | parameters | ||
| ) |
Set the CS101 application layer parameters.
If not set the default parameters are used. This function must be called before the CS104_Connection_connect function is called! If the function is called after the connect the behavior is undefined.
| self | CS104_Connection instance |
| parameters | the application layer parameters |
| void CS104_Connection_setASDUReceivedHandler | ( | CS104_Connection | self, |
| CS101_ASDUReceivedHandler | handler, | ||
| void * | parameter | ||
| ) |
Register a callback handler for received ASDUs.
| handler | user provided callback handler function |
| parameter | user provided parameter that is passed to the callback handler |
| void CS104_Connection_setConnectionHandler | ( | CS104_Connection | self, |
| CS104_ConnectionHandler | handler, | ||
| void * | parameter | ||
| ) |
Set the connection event handler.
| handler | user provided callback handler function |
| parameter | user provided parameter that is passed to the callback handler |
| void CS104_Connection_setConnectTimeout | ( | CS104_Connection | self, |
| int | millies | ||
| ) |
Sets the timeout for connecting to the server (in ms)
| self | |
| millies | timeout value in ms |
| void CS104_Connection_setLocalAddress | ( | CS104_Connection | self, |
| const char * | localIpAddress, | ||
| int | localPort | ||
| ) |
Set the local IP address and port to be used by the client.
NOTE: This function is optional. When not used the OS decides what IP address and TCP port to use.
| self | CS104_Connection instance |
| localIpAddress | the local IP address or hostname as C string |
| localPort | the local TCP port to use. When < 1 the OS will chose the TCP port to use. |
| void CS104_Connection_setRawMessageHandler | ( | CS104_Connection | self, |
| IEC60870_RawMessageHandler | handler, | ||
| void * | parameter | ||
| ) |
Set the raw message callback (called when a message is sent or received)
| handler | user provided callback handler function |
| parameter | user provided parameter that is passed to the callback handler |