libtase2  2.4.0
TASE.2/ICCP Protocol Source Code Library for C/C++
Loading...
Searching...
No Matches
tase2_server.h
Go to the documentation of this file.
1/*
2 * tase2_server.h
3 *
4 * This file is part of libtase2
5 *
6 * Copyright 2017-2023 MZ Automation GmbH
7 *
8 * All rights reserved.
9 */
10
11#ifndef TASE2_SERVER_H_
12#define TASE2_SERVER_H_
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#include "tase2_common.h"
19#include "tase2_model.h"
20#include "tase2_endpoint.h"
21#include "tls_config.h"
22
48
52typedef struct {
53 union {
54 int16_t commandValue;
55 int16_t discreteValue;
56 float realValue;
57 };
59
60typedef struct sTase2_SentPointValue* Tase2_SentPointValue;
61
62TASE2_API Tase2_DataPoint
64
65TASE2_API Tase2_PointValue
67
78typedef void (*Tase2_ClientConnectionHandler) (void* parameter, const char* clientAddress, Tase2_BilateralTable clientBlt, bool connect);
79
88typedef Tase2_HandlerResult (*Tase2_SelectHandler) (void* parameter, Tase2_ControlPoint controlPoint);
89
99typedef Tase2_HandlerResult (*Tase2_OperateHandler) (void* parameter, Tase2_ControlPoint controlPoint, Tase2_OperateValue value);
100
101typedef Tase2_HandlerResult (*Tase2_OperateHandlerEx) (void* parameter, Tase2_ControlPoint controlPoint, int16_t cmdDiscreteValue, float realValue);
102
113typedef Tase2_HandlerResult (*Tase2_SetTagHandler) (void* parameter, Tase2_ControlPoint controlPoint, Tase2_TagValue value, const char* reason);
114
125typedef Tase2_HandlerResult (*Tase2_WriteDataHandler) (void* parameter, Tase2_Domain domain, Tase2_DataPoint dataPoint, Tase2_PointValue value);
126
135typedef void (*Tase2_TSCriticalNotConfirmedHandler) (void* parameter, Tase2_TransferSet transferSet, uint64_t timeSent, bool nack);
136
144typedef void (*Tase2_DSTransferSetStateChangedHandler) (void* parameter, Tase2_DSTransferSet transferSet, bool enabled);
145
155typedef void (*Tase2_DSTransferSetUpdateHandler) (void* parameter, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, Tase2_DSTransferSet transferSet, bool isEnabled);
156
168typedef void (*Tase2_DataSetEventHandler) (void* parameter, bool create, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, Tase2_Domain dataSetDomain, char* dataSetName, LinkedList dataPoints);
169
178typedef void (*Tase2_IMTransferSetEventHandler) (void* parameter, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, bool enabled);
179
190typedef void (*Tase2_DSTransferSetReportSentHandler) (void* parameter, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, Tase2_DSTransferSet transferSet, LinkedList sentDataPoints, Tase2_ReportReason reason);
191
202TASE2_API Tase2_Server
203Tase2_Server_create(Tase2_DataModel dataModel, TLSConfiguration tlsConfiguration);
204
213TASE2_API Tase2_Server
214Tase2_Server_createEx(Tase2_DataModel dataModel, Tase2_Endpoint endpoint);
215
221TASE2_API Tase2_Endpoint
223
232TASE2_API void
233Tase2_Server_setLocalIpAddress(Tase2_Server self, const char* localIpAddress);
234
243TASE2_API void
245
254TASE2_API void
255Tase2_Server_setLocalApTitle(Tase2_Server self, const char* apTitle, int aeQualifier);
256
268TASE2_API void
270
271TASE2_API IsoApplicationAddress
273
280TASE2_API void
282
283
290TASE2_API void
292
301TASE2_API void
303
310TASE2_API void
312
322TASE2_API void
323Tase2_Server_setIdentity(Tase2_Server self, char* vendor, char* model, char* revision);
324
333TASE2_API void
335
343TASE2_API void
345
353TASE2_API void
355
363TASE2_API void
365
366
370TASE2_API void
372
380TASE2_API void
382
392TASE2_API void
394
402TASE2_API void
404
412TASE2_API void
414
422TASE2_API void
424
432TASE2_API void
434
442TASE2_API void
444
452TASE2_API void
454
471TASE2_API bool
473
487TASE2_API int
488Tase2_Server_sendInformationMessage(Tase2_Server self, Tase2_Domain domain, int32_t infoRef, int32_t localRef, int32_t msgId, int32_t size, uint8_t* buffer);
489
497TASE2_API void
499
507TASE2_API void
509
515TASE2_API Tase2_Statistics
517
527TASE2_API bool
529
541TASE2_API void
543
553TASE2_API void
555
569TASE2_API void
571
580TASE2_API void
582
583/*************************************************************************
584 * Functions for bilateral table (BLT) management
585 *************************************************************************/
586
605TASE2_API Tase2_BilateralTable
606Tase2_BilateralTable_create(const char* bltId, Tase2_Domain domain, const char* apTitle, int aeQualifier);
607
621TASE2_API void
623
632TASE2_API void
633Tase2_BilateralTable_addDataPoint(Tase2_BilateralTable self, Tase2_DataPoint dataPoint, bool allowRead, bool allowWrite);
634
646TASE2_API void
647Tase2_BilateralTable_addControlPoint(Tase2_BilateralTable self, Tase2_ControlPoint controlPoint, int16_t checkBackId, bool allowSetTag, bool allowGetTag, bool allowOperate, bool allowRead);
648
657TASE2_API void
658Tase2_BilateralTable_addInformationMessage(Tase2_BilateralTable self, int32_t infoRef, int32_t localRef, bool vccScope);
659
665TASE2_API bool
667
675TASE2_API const char*
677
682#ifdef __cplusplus
683}
684#endif
685
686
687#endif /* TASE2_SERVER_H_ */
struct sTLSConfiguration * TLSConfiguration
Definition tls_config.h:38
Tase2_TagValue
Definition tase2_common.h:293
struct sTase2_Endpoint_Connection * Tase2_Endpoint_Connection
Represents a connection to another connected TASE.2 endpoint.
Definition tase2_endpoint.h:37
struct sTase2_BilateralTable * Tase2_BilateralTable
Definition tase2_endpoint.h:27
struct sTase2_Endpoint * Tase2_Endpoint
A TASE.2 endpoint that can be configured as passive (TCP server) or active (TCP client)
Definition tase2_endpoint.h:32
Tase2_ReportReason
Definition tase2_common.h:308
struct sTase2_Server * Tase2_Server
Handle for a Tase2_Server instance (representing a TASE.2/MMS server)
Definition tase2_endpoint.h:93
struct sTase2_TransferSet * Tase2_TransferSet
Definition tase2_model.h:95
struct sTase2_ControlPoint * Tase2_ControlPoint
Definition tase2_model.h:138
struct sTase2_DSTransferSet * Tase2_DSTransferSet
Represents a data set transfer set (DSTS) in the server.
Definition tase2_model.h:56
struct sTase2_DataPoint * Tase2_DataPoint
Abstract type representing data points in the server data model.
Definition tase2_model.h:41
struct sTase2_PointValue * Tase2_PointValue
A TASE.2 point value with type information.
Definition tase2_common.h:388
TASE2_API void Tase2_BilateralTable_addControlPoint(Tase2_BilateralTable self, Tase2_ControlPoint controlPoint, int16_t checkBackId, bool allowSetTag, bool allowGetTag, bool allowOperate, bool allowRead)
Add a control point object to the BLT.
TASE2_API Tase2_BilateralTable Tase2_BilateralTable_create(const char *bltId, Tase2_Domain domain, const char *apTitle, int aeQualifier)
Create a new bilateral table (Tase2_BilateralTable) instance.
TASE2_API void Tase2_BilateralTable_addDataPoint(Tase2_BilateralTable self, Tase2_DataPoint dataPoint, bool allowRead, bool allowWrite)
Add an indication point or protection equipment object to the BLT.
TASE2_API const char * Tase2_BilateralTable_getID(Tase2_BilateralTable self)
Get the BLT ID.
TASE2_API void Tase2_BilateralTable_setIsoParameters(Tase2_BilateralTable self, Tase2_PSelector pSelector, Tase2_SSelector sSelector, Tase2_TSelector tSelector)
Set the ISO protocol layer addresses to associate the endpoint to this BLT.
TASE2_API void Tase2_BilateralTable_addInformationMessage(Tase2_BilateralTable self, int32_t infoRef, int32_t localRef, bool vccScope)
Add an information message object to the BLT.
TASE2_API bool Tase2_BilateralTable_addPeerCertificat(Tase2_BilateralTable self, Crypto_X509Certificate cert)
Associate a peer X509 certificate with the BLT.
void(* Tase2_ClientConnectionHandler)(void *parameter, const char *clientAddress, Tase2_BilateralTable clientBlt, bool connect)
Callback handler for accepted client connections.
Definition tase2_server.h:78
TASE2_API IsoApplicationAddress Tase2_Server_getLocalAddresses(Tase2_Server self)
TASE2_API void Tase2_Server_setIdentity(Tase2_Server self, char *vendor, char *model, char *revision)
Set own identity for the identity service.
TASE2_API void Tase2_Server_setDSTransferSetUpdateHandler(Tase2_Server self, Tase2_DSTransferSetUpdateHandler handler, void *parameter)
Install a callback handler that is called whenever the DS transfer set is updated (enabled/disabled)
TASE2_API void Tase2_Server_setCriticalReportTimeout(Tase2_Server self, int timeoutInMs)
Set the timeout for critical report confirmations.
void(* Tase2_IMTransferSetEventHandler)(void *parameter, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, bool enabled)
Callback handler for IM transfer set events (enabled/disabled)
Definition tase2_server.h:178
TASE2_API void Tase2_Server_setLocalAddresses(Tase2_Server self, Tase2_PSelector pSelector, Tase2_SSelector sSelector, Tase2_TSelector tSelector)
set local addresses for the lower layers
TASE2_API void Tase2_Server_setWriteDataHandler(Tase2_Server self, Tase2_WriteDataHandler handler, void *parameter)
Set the Tase2_WriteDataHandler callback handler that is called when a data point is written.
TASE2_API Tase2_Server Tase2_Server_createEx(Tase2_DataModel dataModel, Tase2_Endpoint endpoint)
Create a new TASE.2 server instance using an existing endpoint instance.
TASE2_API void Tase2_Server_setSelectTimeout(Tase2_Server self, int timeoutInMs)
Set the timeout for select operations (device model)
void(* Tase2_DSTransferSetReportSentHandler)(void *parameter, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, Tase2_DSTransferSet transferSet, LinkedList sentDataPoints, Tase2_ReportReason reason)
Callback handler for sent DSTS reports.
Definition tase2_server.h:190
TASE2_API void Tase2_Server_setTSCriticalNotConfirmedHandler(Tase2_Server self, Tase2_TSCriticalNotConfirmedHandler handler, void *parameter)
Install a callback handler that is called when a transfer set report (marked as critical) is not conf...
Tase2_HandlerResult
Type for the result of callback handlers for operations.
Definition tase2_server.h:32
struct sTase2_SentPointValue * Tase2_SentPointValue
Definition tase2_server.h:60
void(* Tase2_DSTransferSetUpdateHandler)(void *parameter, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, Tase2_DSTransferSet transferSet, bool isEnabled)
Callback handler for DSTS updates (enabled/disabled)
Definition tase2_server.h:155
void(* Tase2_TSCriticalNotConfirmedHandler)(void *parameter, Tase2_TransferSet transferSet, uint64_t timeSent, bool nack)
Callback handler for critical report timeout or negative acknowledge.
Definition tase2_server.h:135
TASE2_API void Tase2_Server_setMaxDSTSEventQueueSize(Tase2_Server self, int maxSize)
Set the maximum event queue size for DS transfer sets.
void(* Tase2_DataSetEventHandler)(void *parameter, bool create, Tase2_Endpoint_Connection peer, Tase2_BilateralTable clientBlt, Tase2_Domain dataSetDomain, char *dataSetName, LinkedList dataPoints)
Callback handler that is called when a data set is created or deleted.
Definition tase2_server.h:168
TASE2_API void Tase2_Server_setTcpPort(Tase2_Server self, int tcpPort)
Set the local TCP port.
Tase2_HandlerResult(* Tase2_OperateHandlerEx)(void *parameter, Tase2_ControlPoint controlPoint, int16_t cmdDiscreteValue, float realValue)
Definition tase2_server.h:101
TASE2_API void Tase2_Server_updateByOnlineValue(Tase2_Server self, Tase2_DataPoint dataPoint)
Update the local value by the online available value of the data point.
TASE2_API void Tase2_Server_setSetTagHandler(Tase2_Server self, Tase2_SetTagHandler handler, void *parameter)
Set the set tag operation callback handler and parameter.
TASE2_API void Tase2_Server_setDSTransferSetReportSentHandler(Tase2_Server self, Tase2_DSTransferSetReportSentHandler handler, void *parameter)
Install a callback handler that is called whenever a transfer set report is sent.
TASE2_API void Tase2_Server_start(Tase2_Server self)
Starts the server (will start a background thread handling incoming connections)
TASE2_API void Tase2_Server_setDataSetEventHandler(Tase2_Server self, Tase2_DataSetEventHandler handler, void *parameter)
Install a callback handler that is called whenever a dynamic data set is created or deleted by a clie...
TASE2_API Tase2_PointValue Tase2_SentPointValue_getPointValue(Tase2_SentPointValue self)
TASE2_API void Tase2_Server_setDSTransferSetStateChangedHandler(Tase2_Server self, Tase2_DSTransferSetStateChangedHandler handler, void *parameter)
Install a callback handler that is called whenever the state of a DS transfer set changes.
TASE2_API bool Tase2_Server_isRunning(Tase2_Server self)
Checks if the server is running.
TASE2_API void Tase2_Server_setSelectHandler(Tase2_Server self, Tase2_SelectHandler handler, void *parameter)
Set the select operation callback handler and parameter.
TASE2_API void Tase2_Server_setLocalApTitle(Tase2_Server self, const char *apTitle, int aeQualifier)
Set application endpoint identifier of the local endpoint.
TASE2_API void Tase2_Server_setClientConnectionHandler(Tase2_Server self, Tase2_ClientConnectionHandler handler, void *parameter)
Set the client connection handler that is called when a client connects or disconnects.
Tase2_HandlerResult(* Tase2_SetTagHandler)(void *parameter, Tase2_ControlPoint controlPoint, Tase2_TagValue value, const char *reason)
Callback handler for the set tag operation.
Definition tase2_server.h:113
TASE2_API void Tase2_Server_stop(Tase2_Server self)
Stops the server.
void(* Tase2_DSTransferSetStateChangedHandler)(void *parameter, Tase2_DSTransferSet transferSet, bool enabled)
Callback handler for DSTS state changes (enabled/disabled)
Definition tase2_server.h:144
TASE2_API void Tase2_Server_updateOnlineValue(Tase2_Server self, Tase2_DataPoint dataPoint)
Update the online available value with the local value of the data point.
Tase2_HandlerResult(* Tase2_SelectHandler)(void *parameter, Tase2_ControlPoint controlPoint)
Callback handler for the select operation.
Definition tase2_server.h:88
TASE2_API void Tase2_Server_addBilateralTable(Tase2_Server self, Tase2_BilateralTable blt)
Load bilateral table (BLT) into the server (part of the server configuration phase)
TASE2_API Tase2_Server Tase2_Server_create(Tase2_DataModel dataModel, TLSConfiguration tlsConfiguration)
Create a new TASE.2 server instance.
TASE2_API void Tase2_Server_setOperateHandler(Tase2_Server self, Tase2_OperateHandler handler, void *parameter)
Set the operate operation callback handler and parameter.
TASE2_API Tase2_Statistics Tase2_Server_getStatistics(Tase2_Server self)
Get some communication statistics.
TASE2_API Tase2_Endpoint Tase2_Server_getEndpoint(Tase2_Server self)
Get the endpoint instance used by the server.
TASE2_API void Tase2_Server_destroy(Tase2_Server self)
Destroy the server instance (release all allocated resources)
TASE2_API void Tase2_Server_setSupportedFeatures(Tase2_Server self, int value)
Change the default value of the "Supported_Features" variable.
TASE2_API void Tase2_Server_setIMTransferSetEventHandler(Tase2_Server self, Tase2_IMTransferSetEventHandler handler, void *parameter)
Install a callback handler that is called whenever the IM Transfer set is enabled or disabled.
TASE2_API void Tase2_Server_setOperateHandlerEx(Tase2_Server self, Tase2_OperateHandlerEx handler, void *parameter)
Set the alternative operate handler (used to simplify programming language bindings)
TASE2_API void Tase2_Server_updateOnlineValueNoTrigger(Tase2_Server self, Tase2_DataPoint dataPoint)
Update the online available value with the local value of the data point (don't trigger transfer sets...
Tase2_HandlerResult(* Tase2_WriteDataHandler)(void *parameter, Tase2_Domain domain, Tase2_DataPoint dataPoint, Tase2_PointValue value)
Callback handler for write operations to indication points (and protection event data points)
Definition tase2_server.h:125
TASE2_API Tase2_DataPoint Tase2_SentPointValue_getDataPoint(Tase2_SentPointValue self)
Tase2_HandlerResult(* Tase2_OperateHandler)(void *parameter, Tase2_ControlPoint controlPoint, Tase2_OperateValue value)
Callback handler for the operate operation.
Definition tase2_server.h:99
TASE2_API bool Tase2_Server_requestReport(Tase2_Server self, Tase2_DSTransferSet transferSet, Tase2_ReportReason reason, int16_t eventCode)
Manually trigger a DSTS report transmission of the given transfer set.
TASE2_API int Tase2_Server_sendInformationMessage(Tase2_Server self, Tase2_Domain domain, int32_t infoRef, int32_t localRef, int32_t msgId, int32_t size, uint8_t *buffer)
Send information message to all clients that have the IM transfer set enabled and BLT matches the inf...
TASE2_API void Tase2_Server_setLocalIpAddress(Tase2_Server self, const char *localIpAddress)
Set the local IP address.
@ TASE2_RESULT_OBJECT_VALUE_INVALID
Definition tase2_server.h:46
@ TASE2_RESULT_SUCCESS
Definition tase2_server.h:34
@ TASE2_RESULT_OBJECT_ACCESS_DENIED
Definition tase2_server.h:43
@ TASE2_RESULT_TEMPORARILY_UNAVAILABLE
Definition tase2_server.h:40
@ TASE2_RESULT_HARDWARE_FAULT
Definition tase2_server.h:37
Value for the operate action (supports the different types for command and set points)
Definition tase2_server.h:52
int16_t commandValue
Definition tase2_server.h:54
int16_t discreteValue
Definition tase2_server.h:55
float realValue
Definition tase2_server.h:56
P selector (ISO presentation layer address)
Definition tase2_endpoint.h:123
S selector (ISO session layer address)
Definition tase2_endpoint.h:112
Some stack statistics.
Definition tase2_common.h:131
T selector (ISO transport layer address)
Definition tase2_endpoint.h:101
TLS API functions.