libIEC61850
0.8.4
Open-source IEC 61850 MMS/GOOSE server and client library
Main Page
Modules
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
iec61850
inc
iec61850_server.h
Go to the documentation of this file.
1
/*
2
* iec61850_server.h
3
*
4
* IEC 61850 server API for libiec61850.
5
*
6
* Copyright 2013, 2014 Michael Zillgith
7
*
8
* This file is part of libIEC61850.
9
*
10
* libIEC61850 is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* libIEC61850 is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
22
*
23
* See COPYING file for the complete license text.
24
*
25
*/
26
27
#ifndef IED_SERVER_API_H_
28
#define IED_SERVER_API_H_
29
30
#ifdef __cplusplus
31
extern
"C"
{
32
#endif
33
38
#include "
mms_server.h
"
39
#include "
iec61850_dynamic_model.h
"
40
#include "
iec61850_model.h
"
41
#include "
hal_filesystem.h
"
42
#include "
iec61850_config_file_parser.h
"
43
47
typedef
struct
sIedServer*
IedServer
;
48
52
typedef
struct
sClientConnection*
ClientConnection
;
53
68
IedServer
69
IedServer_create
(IedModel* iedModel);
70
76
void
77
IedServer_destroy
(IedServer
self
);
78
85
void
86
IedServer_start
(IedServer
self
,
int
tcpPort);
87
93
void
94
IedServer_stop
(IedServer
self
);
95
106
void
107
IedServer_startThreadless
(IedServer
self
,
int
tcpPort);
108
109
int
110
IedServer_waitReady
(IedServer
self
,
unsigned
int
timeoutMs);
111
121
void
122
IedServer_processIncomingData
(IedServer
self
);
123
132
void
133
IedServer_performPeriodicTasks
(IedServer
self
);
134
140
void
141
IedServer_stopThreadless
(IedServer
self
);
142
150
IedModel*
151
IedServer_getDataModel
(IedServer
self
);
152
160
bool
161
IedServer_isRunning
(IedServer
self
);
162
173
MmsServer
174
IedServer_getMmsServer
(IedServer
self
);
175
183
IsoServer
184
IedServer_getIsoServer
(IedServer
self
);
185
196
void
197
IedServer_enableGoosePublishing
(IedServer
self
);
198
207
void
208
IedServer_disableGoosePublishing
(IedServer
self
);
209
230
void
231
IedServer_setAuthenticator
(IedServer
self
,
AcseAuthenticator
authenticator,
void
* authenticatorParameter);
232
233
234
244
const
char
*
245
ClientConnection_getPeerAddress
(ClientConnection
self
);
246
257
void
*
258
ClientConnection_getSecurityToken
(ClientConnection
self
);
259
269
typedef
void (*
IedConnectionIndicationHandler
) (IedServer
self
, ClientConnection connection,
bool
connected,
void
* parameter);
270
278
void
279
IedServer_setConnectionIndicationHandler
(IedServer
self
,
IedConnectionIndicationHandler
handler,
void
* parameter);
280
281
302
void
303
IedServer_lockDataModel
(IedServer
self
);
304
313
void
314
IedServer_unlockDataModel
(IedServer
self
);
315
328
MmsValue
*
329
IedServer_getAttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
330
342
bool
343
IedServer_getBooleanAttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
344
356
int32_t
357
IedServer_getInt32AttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
358
370
int64_t
371
IedServer_getInt64AttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
372
384
uint32_t
385
IedServer_getUInt32AttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
386
398
float
399
IedServer_getFloatAttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
400
412
uint64_t
413
IedServer_getUTCTimeAttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
414
430
uint32_t
431
IedServer_getBitStringAttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
432
444
char
*
445
IedServer_getStringAttributeValue
(IedServer
self
,
const
DataAttribute* dataAttribute);
446
447
463
MmsValue
*
464
IedServer_getFunctionalConstrainedData
(IedServer
self
, DataObject* dataObject,
FunctionalConstraint
fc);
465
482
void
483
IedServer_updateAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
MmsValue
* value);
484
497
void
498
IedServer_updateFloatAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
float
value);
499
512
void
513
IedServer_updateInt32AttributeValue
(IedServer
self
, DataAttribute* dataAttribute, int32_t value);
514
527
void
528
IedServer_updateInt64AttributeValue
(IedServer
self
, DataAttribute* dataAttribute, int64_t value);
529
542
void
543
IedServer_updateUnsignedAttributeValue
(IedServer
self
, DataAttribute* dataAttribute, uint32_t value);
544
557
void
558
IedServer_updateBitStringAttributeValue
(IedServer
self
, DataAttribute* dataAttribute, uint32_t value);
559
572
void
573
IedServer_updateBooleanAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
bool
value);
574
587
void
588
IedServer_updateVisibleStringAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
char
*value);
589
602
void
603
IedServer_updateUTCTimeAttributeValue
(IedServer
self
, DataAttribute* dataAttribute, uint64_t value);
604
617
void
618
IedServer_updateTimestampAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
Timestamp
* timestamp);
619
634
void
635
IedServer_updateQuality
(IedServer
self
, DataAttribute* dataAttribute,
Quality
quality);
636
656
void
657
IedServer_changeActiveSettingGroup
(IedServer
self
, SettingGroupControlBlock* sgcb, uint8_t newActiveSg);
658
667
uint8_t
668
IedServer_getActiveSettingGroup
(IedServer
self
, SettingGroupControlBlock* sgcb);
669
685
typedef
bool (*
ActiveSettingGroupChangedHandler
) (
void
* parameter, SettingGroupControlBlock* sgcb,
686
uint8_t newActSg, ClientConnection connection);
687
696
void
697
IedServer_setActiveSettingGroupChangedHandler
(IedServer
self
, SettingGroupControlBlock* sgcb,
698
ActiveSettingGroupChangedHandler
handler,
void
* parameter);
699
717
typedef
bool (*
EditSettingGroupChangedHandler
) (
void
* parameter, SettingGroupControlBlock* sgcb,
718
uint8_t newEditSg, ClientConnection connection);
719
728
void
729
IedServer_setEditSettingGroupChangedHandler
(IedServer
self
, SettingGroupControlBlock* sgcb,
730
EditSettingGroupChangedHandler
handler,
void
* parameter);
731
741
typedef
void (*
EditSettingGroupConfirmationHandler
) (
void
* parameter, SettingGroupControlBlock* sgcb,
742
uint8_t editSg);
743
752
void
753
IedServer_setEditSettingGroupConfirmationHandler
(IedServer
self
, SettingGroupControlBlock* sgcb,
754
EditSettingGroupConfirmationHandler
handler,
void
* parameter);
755
767
typedef
enum
{
768
CONTROL_ACCEPTED
= -1,
769
CONTROL_HARDWARE_FAULT
= 1,
770
CONTROL_TEMPORARILY_UNAVAILABLE
= 2,
771
CONTROL_OBJECT_ACCESS_DENIED
= 3,
772
CONTROL_OBJECT_UNDEFINED
= 4
773
}
CheckHandlerResult
;
774
778
typedef
enum
{
779
CONTROL_RESULT_FAILED
= 0,
780
CONTROL_RESULT_OK
= 1,
781
CONTROL_RESULT_WAITING
= 2
782
}
ControlHandlerResult
;
783
800
typedef
CheckHandlerResult
(*
ControlPerformCheckHandler
) (
void
* parameter,
MmsValue
* ctlVal,
bool
test,
bool
interlockCheck,
801
ClientConnection connection);
802
822
typedef
ControlHandlerResult
(*
ControlWaitForExecutionHandler
) (
void
* parameter,
MmsValue
* ctlVal,
bool
test,
bool
synchroCheck);
823
841
typedef
ControlHandlerResult
(*
ControlHandler
) (
void
* parameter,
MmsValue
* ctlVal,
bool
test);
842
856
void
857
IedServer_setControlHandler
(IedServer
self
, DataObject* node,
ControlHandler
handler,
void
* parameter);
858
873
void
874
IedServer_setPerformCheckHandler
(IedServer
self
, DataObject* node,
ControlPerformCheckHandler
handler,
void
* parameter);
875
891
void
892
IedServer_setWaitForExecutionHandler
(IedServer
self
, DataObject* node,
ControlWaitForExecutionHandler
handler,
void
* parameter);
893
912
typedef
void (*
AttributeChangedHandler
) (DataAttribute* dataAttribute, ClientConnection connection);
913
928
void
929
IedServer_observeDataAttribute
(IedServer
self
, DataAttribute* dataAttribute,
930
AttributeChangedHandler
handler);
931
932
/***************************************************************************
933
* Access control
934
**************************************************************************/
935
953
typedef
bool (*
WriteAccessHandler
) (DataAttribute* dataAttribute,
MmsValue
* value, ClientConnection connection);
954
969
void
970
IedServer_handleWriteAccess
(IedServer
self
, DataAttribute* dataAttribute,
971
WriteAccessHandler
handler);
972
973
typedef
enum
{
974
ACCESS_POLICY_ALLOW
,
975
ACCESS_POLICY_DENY
976
}
AccessPolicy
;
977
986
void
987
IedServer_setWriteAccessPolicy
(IedServer
self
,
FunctionalConstraint
fc,
AccessPolicy
policy);
988
993
#ifdef __cplusplus
994
}
995
#endif
996
997
#endif
/* IED_SERVER_API_H_ */
Generated on Mon Feb 9 2015 11:48:53 for libIEC61850 by
1.8.4