libIEC61850
0.8.2
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
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
331
bool
332
IedServer_getBooleanAttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
333
334
int32_t
335
IedServer_getInt32AttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
336
337
int64_t
338
IedServer_getInt64AttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
339
340
uint32_t
341
IedServer_getUInt32AttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
342
343
float
344
IedServer_getFloatAttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
345
346
uint64_t
347
IedServer_getUTCTimeAttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
348
349
uint32_t
350
IedServer_getBitStringAttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
351
352
char
*
353
IedServer_getStringAttributeValue
(IedServer
self
, DataAttribute* dataAttribute);
354
355
371
MmsValue
*
372
IedServer_getFunctionalConstrainedData
(IedServer
self
, DataObject* dataObject,
FunctionalConstraint
fc);
373
390
void
391
IedServer_updateAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
MmsValue
* value);
392
405
void
406
IedServer_updateFloatAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
float
value);
407
420
void
421
IedServer_updateInt32AttributeValue
(IedServer
self
, DataAttribute* dataAttribute, int32_t value);
422
435
void
436
IedServer_updateInt64AttributeValue
(IedServer
self
, DataAttribute* dataAttribute, int64_t value);
437
450
void
451
IedServer_updateUnsignedAttributeValue
(IedServer
self
, DataAttribute* dataAttribute, uint32_t value);
452
465
void
466
IedServer_updateBitStringAttributeValue
(IedServer
self
, DataAttribute* dataAttribute, uint32_t value);
467
480
void
481
IedServer_updateBooleanAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
bool
value);
482
495
void
496
IedServer_updateVisibleStringAttributeValue
(IedServer
self
, DataAttribute* dataAttribute,
char
*value);
497
510
void
511
IedServer_updateUTCTimeAttributeValue
(IedServer
self
, DataAttribute* dataAttribute, uint64_t value);
512
527
void
528
IedServer_updateQuality
(IedServer
self
, DataAttribute* dataAttribute,
Quality
quality);
529
549
void
550
IedServer_changeActiveSettingGroup
(IedServer
self
, SettingGroupControlBlock* sgcb, uint8_t newActiveSg);
551
560
uint8_t
561
IedServer_getActiveSettingGroup
(IedServer
self
, SettingGroupControlBlock* sgcb);
562
578
typedef
bool (*
ActiveSettingGroupChangedHandler
) (
void
* parameter, SettingGroupControlBlock* sgcb,
579
uint8_t newActSg, ClientConnection connection);
580
589
void
590
IedServer_setActiveSettingGroupChangedHandler
(IedServer
self
, SettingGroupControlBlock* sgcb,
591
ActiveSettingGroupChangedHandler
handler,
void
* parameter);
592
610
typedef
bool (*
EditSettingGroupChangedHandler
) (
void
* parameter, SettingGroupControlBlock* sgcb,
611
uint8_t newEditSg, ClientConnection connection);
612
621
void
622
IedServer_setEditSettingGroupChangedHandler
(IedServer
self
, SettingGroupControlBlock* sgcb,
623
EditSettingGroupChangedHandler
handler,
void
* parameter);
624
634
typedef
void (*
EditSettingGroupConfirmationHandler
) (
void
* parameter, SettingGroupControlBlock* sgcb,
635
uint8_t editSg);
636
645
void
646
IedServer_setEditSettingGroupConfirmationHandler
(IedServer
self
, SettingGroupControlBlock* sgcb,
647
EditSettingGroupConfirmationHandler
handler,
void
* parameter);
648
660
typedef
enum
{
661
CONTROL_ACCEPTED
= -1,
662
CONTROL_HARDWARE_FAULT
= 1,
663
CONTROL_TEMPORARILY_UNAVAILABLE
= 2,
664
CONTROL_OBJECT_ACCESS_DENIED
= 3,
665
CONTROL_OBJECT_UNDEFINED
= 4
666
}
CheckHandlerResult
;
667
671
typedef
enum
{
672
CONTROL_RESULT_FAILED
= 0,
673
CONTROL_RESULT_OK
= 1,
674
CONTROL_RESULT_WAITING
= 2
675
}
ControlHandlerResult
;
676
693
typedef
CheckHandlerResult
(*
ControlPerformCheckHandler
) (
void
* parameter,
MmsValue
* ctlVal,
bool
test,
bool
interlockCheck,
694
ClientConnection connection);
695
715
typedef
ControlHandlerResult
(*
ControlWaitForExecutionHandler
) (
void
* parameter,
MmsValue
* ctlVal,
bool
test,
bool
synchroCheck);
716
734
typedef
ControlHandlerResult
(*
ControlHandler
) (
void
* parameter,
MmsValue
* ctlVal,
bool
test);
735
749
void
750
IedServer_setControlHandler
(IedServer
self
, DataObject* node,
ControlHandler
handler,
void
* parameter);
751
766
void
767
IedServer_setPerformCheckHandler
(IedServer
self
, DataObject* node,
ControlPerformCheckHandler
handler,
void
* parameter);
768
784
void
785
IedServer_setWaitForExecutionHandler
(IedServer
self
, DataObject* node,
ControlWaitForExecutionHandler
handler,
void
* parameter);
786
805
typedef
void (*
AttributeChangedHandler
) (DataAttribute* dataAttribute, ClientConnection connection);
806
821
void
822
IedServer_observeDataAttribute
(IedServer
self
, DataAttribute* dataAttribute,
823
AttributeChangedHandler
handler);
824
825
/***************************************************************************
826
* Access control
827
**************************************************************************/
828
846
typedef
bool (*
WriteAccessHandler
) (DataAttribute* dataAttribute,
MmsValue
* value, ClientConnection connection);
847
862
void
863
IedServer_handleWriteAccess
(IedServer
self
, DataAttribute* dataAttribute,
864
WriteAccessHandler
handler);
865
866
typedef
enum
{
867
ACCESS_POLICY_ALLOW
,
868
ACCESS_POLICY_DENY
869
}
AccessPolicy
;
870
879
void
880
IedServer_setWriteAccessPolicy
(IedServer
self
,
FunctionalConstraint
fc,
AccessPolicy
policy);
881
886
#ifdef __cplusplus
887
}
888
#endif
889
890
#endif
/* IED_SERVER_API_H_ */
Generated on Tue Nov 25 2014 15:20:11 for libIEC61850 by
1.8.4