libIEC61850  0.8.2
Open-source IEC 61850 MMS/GOOSE server and client library
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
iec61850_dynamic_model.h
Go to the documentation of this file.
1 /*
2  * dynamic_model.h
3  *
4  * Copyright 2014 Michael Zillgith
5  *
6  * This file is part of libIEC61850.
7  *
8  * libIEC61850 is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * libIEC61850 is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with libIEC61850. If not, see <http://www.gnu.org/licenses/>.
20  *
21  * See COPYING file for the complete license text.
22  */
23 
24 #ifndef DYNAMIC_MODEL_H_
25 #define DYNAMIC_MODEL_H_
26 
27 #include "iec61850_model.h"
28 #include "iec61850_cdc.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
34 
55 IedModel*
56 IedModel_create(const char* name/*, MemoryAllocator allocator*/);
57 
67 void
68 IedModel_destroy(IedModel* model);
69 
78 LogicalDevice*
79 LogicalDevice_create(const char* name, IedModel* parent);
80 
81 
90 LogicalNode*
91 LogicalNode_create(const char* name, LogicalDevice* parent);
92 
104 DataObject*
105 DataObject_create(const char* name, ModelNode* parent, int arrayElements);
106 
122 DataAttribute*
123 DataAttribute_create(const char* name, ModelNode* parent, DataAttributeType type, FunctionalConstraint fc,
124  uint8_t triggerOptions, int arrayElements, uint32_t sAddr);
125 
145 ReportControlBlock*
146 ReportControlBlock_create(const char* name, LogicalNode* parent, char* rptId, bool isBuffered, char*
147  dataSetName, uint32_t confRef, uint8_t trgOps, uint8_t options, uint32_t bufTm, uint32_t intgPd);
148 
160 SettingGroupControlBlock*
161 SettingGroupControlBlock_create(LogicalNode* parent, uint8_t actSG, uint8_t numOfSGs);
162 
177 GSEControlBlock*
178 GSEControlBlock_create(const char* name, LogicalNode* parent, char* appId, char* dataSet, uint32_t confRef, bool fixedOffs);
179 
194 PhyComAddress_create(GSEControlBlock* parent, uint8_t vlanPriority, uint16_t vlanId, uint16_t appId, uint8_t dstAddress[]);
195 
204 DataSet*
205 DataSet_create(const char* name, LogicalNode* parent);
206 
214 int
215 DataSet_getSize(DataSet* self);
216 
218 DataSet_getFirstEntry(DataSet* self);
219 
222 
241 DataSetEntry_create(DataSet* dataSet, char* variable, int index, char* component);
242 
247 #ifdef __cplusplus
248 }
249 #endif
250 
251 #endif /* DYNAMIC_MODEL_H_ */