87 typedef struct sLog Log;
126 #if (CONFIG_IEC61850_USE_COMPAT_TYPE_DECLARATIONS == 1)
141 OCTET_STRING_64 = 13,
144 VISIBLE_STRING_32 = 16,
145 VISIBLE_STRING_64 = 17,
146 VISIBLE_STRING_65 = 18,
147 VISIBLE_STRING_129 = 19,
148 VISIBLE_STRING_255 = 20,
149 UNICODE_STRING_255 = 21,
154 GENERIC_BITSTRING = 26,
237 typedef struct sDataSetEntry {
371 LIB61850_API ModelNode*
387 LIB61850_API ModelNode*
432 LIB61850_API
const char*
442 LIB61850_API ModelNode*
452 LIB61850_API LinkedList
479 LIB61850_API ModelNode*
482 LIB61850_API SVControlBlock*
497 LIB61850_API ModelNode*
511 LIB61850_API ModelNode*
522 LIB61850_API LogicalDevice*
533 LIB61850_API LogicalDevice*
545 LIB61850_API LogicalNode*
555 LIB61850_API SettingGroupControlBlock*
579 LIB61850_API LogicalDevice*
590 LIB61850_API DataSet*
601 LIB61850_API DataAttribute*
618 LIB61850_API ModelNode*
638 LIB61850_API DataSet*
LIB61850_API int ModelNode_getChildCount(ModelNode *self)
get the number of direct children of a model node
LIB61850_API LogicalDevice * IedModel_getDeviceByInst(IedModel *self, const char *ldInst)
Lookup logical device (LD) by device instance name (SCL attribute "inst")
LIB61850_API ModelNode * IedModel_getModelNodeByShortObjectReference(IedModel *self, const char *objectReference)
Lookup a model node by its short (normalized) reference.
ModelNodeType
Definition: iec61850_model.h:164
LIB61850_API const char * ModelNode_getName(ModelNode *self)
Get the name of the ModelNode.
LIB61850_API LogicalDevice * IedModel_getDeviceByIndex(IedModel *self, int index)
Lookup logical device (LD) instance by index.
LIB61850_API SVControlBlock * IedModel_getSVControlBlock(IedModel *self, LogicalNode *parentLN, const char *svcbName)
LIB61850_API ModelNode * ModelNode_getChildWithFc(ModelNode *self, const char *name, FunctionalConstraint fc)
return a child model node with a given functional constraint
LIB61850_API char * ModelNode_getObjectReference(ModelNode *self, char *objectReference)
Return the IEC 61850 object reference of a model node.
LIB61850_API SettingGroupControlBlock * LogicalDevice_getSettingGroupControlBlock(LogicalDevice *self)
Get the setting group control block (SGCB) of the logical device.
LIB61850_API LinkedList ModelNode_getChildren(ModelNode *self)
Get the list of direct child nodes.
LIB61850_API ModelNode * ModelNode_getParent(ModelNode *self)
Get the parent ModelNode of this ModelNode instance.
LIB61850_API char * ModelNode_getObjectReferenceEx(ModelNode *node, char *objectReference, bool withoutIedName)
Return the IEC 61850 object reference of a model node.
DataAttributeType
Definition: iec61850_model.h:89
LIB61850_API void IedModel_setIedName(IedModel *self, const char *iedName)
Set the name of the IED.
LIB61850_API ModelNode * IedModel_getModelNodeByObjectReference(IedModel *self, const char *objectReference)
Lookup a model node by its object reference.
LIB61850_API LogicalNode * LogicalDevice_getLogicalNode(LogicalDevice *self, const char *lnName)
Lookup a logical node by name that is part of the given logical device.
LIB61850_API ModelNode * IedModel_getModelNodeByShortAddress(IedModel *self, uint32_t shortAddress)
Lookup a model node by its short address.
LIB61850_API ModelNodeType ModelNode_getType(ModelNode *self)
Get the type of the ModelNode.
LIB61850_API ModelNode * ModelNode_getChild(ModelNode *self, const char *name)
return a child model node
@ DataAttributeModelType
Definition: iec61850_model.h:168
@ DataObjectModelType
Definition: iec61850_model.h:167
@ LogicalNodeModelType
Definition: iec61850_model.h:166
@ LogicalDeviceModelType
Definition: iec61850_model.h:165
@ IEC61850_VISIBLE_STRING_255
Definition: iec61850_model.h:111
@ IEC61850_OPTFLDS
Definition: iec61850_model.h:122
@ IEC61850_TIMESTAMP
Definition: iec61850_model.h:113
@ IEC61850_CURRENCY
Definition: iec61850_model.h:121
@ IEC61850_INT128
Definition: iec61850_model.h:96
@ IEC61850_UNICODE_STRING_255
Definition: iec61850_model.h:112
@ IEC61850_OCTET_STRING_8
Definition: iec61850_model.h:106
@ IEC61850_VISIBLE_STRING_129
Definition: iec61850_model.h:110
@ IEC61850_CHECK
Definition: iec61850_model.h:115
@ IEC61850_PHYCOMADDR
Definition: iec61850_model.h:120
@ IEC61850_INT8U
Definition: iec61850_model.h:97
@ IEC61850_CODEDENUM
Definition: iec61850_model.h:116
@ IEC61850_BOOLEAN
Definition: iec61850_model.h:91
@ IEC61850_OCTET_STRING_64
Definition: iec61850_model.h:104
@ IEC61850_GENERIC_BITSTRING
Definition: iec61850_model.h:117
@ IEC61850_INT16U
Definition: iec61850_model.h:98
@ IEC61850_VISIBLE_STRING_32
Definition: iec61850_model.h:107
@ IEC61850_ENTRY_TIME
Definition: iec61850_model.h:119
@ IEC61850_INT32
Definition: iec61850_model.h:94
@ IEC61850_INT24U
Definition: iec61850_model.h:99
@ IEC61850_UNKNOWN_TYPE
Definition: iec61850_model.h:90
@ IEC61850_INT16
Definition: iec61850_model.h:93
@ IEC61850_CONSTRUCTED
Definition: iec61850_model.h:118
@ IEC61850_FLOAT64
Definition: iec61850_model.h:102
@ IEC61850_TRGOPS
Definition: iec61850_model.h:123
@ IEC61850_QUALITY
Definition: iec61850_model.h:114
@ IEC61850_INT64
Definition: iec61850_model.h:95
@ IEC61850_VISIBLE_STRING_65
Definition: iec61850_model.h:109
@ IEC61850_FLOAT32
Definition: iec61850_model.h:101
@ IEC61850_INT32U
Definition: iec61850_model.h:100
@ IEC61850_ENUMERATED
Definition: iec61850_model.h:103
@ IEC61850_INT8
Definition: iec61850_model.h:92
@ IEC61850_OCTET_STRING_6
Definition: iec61850_model.h:105
@ IEC61850_VISIBLE_STRING_64
Definition: iec61850_model.h:108
FunctionalConstraint
Definition: iec61850_common.h:264
struct sMmsValue MmsValue
Definition: mms_value.h:68
LIB61850_API bool LogicalNode_hasUnbufferedReports(LogicalNode *self)
LIB61850_API bool DataObject_hasFCData(DataObject *self, FunctionalConstraint fc)
LIB61850_API LogicalDevice * IedModel_getDevice(IedModel *self, const char *ldName)
Lookup logical device (LD) by device name.
LIB61850_API void IedModel_setAttributeValuesToNull(IedModel *self)
unset all MmsValue references in the data model
LIB61850_API bool LogicalNode_hasBufferedReports(LogicalNode *self)
LIB61850_API bool LogicalNode_hasFCData(LogicalNode *self, FunctionalConstraint fc)
LIB61850_API ModelNode * LogicalDevice_getChildByMmsVariableName(LogicalDevice *self, const char *mmsVariableName)
LIB61850_API DataAttribute * IedModel_lookupDataAttributeByMmsValue(IedModel *self, MmsValue *value)
Lookup a DataAttribute instance with the corresponding MmsValue instance.
LIB61850_API DataSet * LogicalNode_getDataSet(LogicalNode *self, const char *dataSetName)
get a data set instance
LIB61850_API DataSet * IedModel_lookupDataSet(IedModel *self, const char *dataSetReference)
Lookup a data set in the IED model.
LIB61850_API int IedModel_getLogicalDeviceCount(IedModel *self)
Get the number of logical devices.
LIB61850_API int LogicalDevice_getLogicalNodeCount(LogicalDevice *self)
Definition: iec61850_model.h:237
bool isLDNameDynamicallyAllocated
Definition: iec61850_model.h:239
int index
Definition: iec61850_model.h:241
MmsValue * value
Definition: iec61850_model.h:243
char * logicalDeviceName
Definition: iec61850_model.h:238
char * variableName
Definition: iec61850_model.h:240
char * componentName
Definition: iec61850_model.h:242
struct sDataSetEntry * sibling
Definition: iec61850_model.h:244
Definition: iec61850_common.h:51
IEC 61850 data model element of type data attribute.
Definition: iec61850_model.h:218
ModelNode * parent
Definition: iec61850_model.h:221
uint8_t triggerOptions
Definition: iec61850_model.h:230
char * name
Definition: iec61850_model.h:220
ModelNode * sibling
Definition: iec61850_model.h:222
ModelNode * firstChild
Definition: iec61850_model.h:223
int elementCount
Definition: iec61850_model.h:225
ModelNodeType modelType
Definition: iec61850_model.h:219
FunctionalConstraint fc
Definition: iec61850_model.h:227
MmsValue * mmsValue
Definition: iec61850_model.h:232
uint32_t sAddr
Definition: iec61850_model.h:234
DataAttributeType type
Definition: iec61850_model.h:228
IEC 61850 data model element of type data object.
Definition: iec61850_model.h:208
ModelNode * firstChild
Definition: iec61850_model.h:213
char * name
Definition: iec61850_model.h:210
ModelNode * sibling
Definition: iec61850_model.h:212
ModelNodeType modelType
Definition: iec61850_model.h:209
ModelNode * parent
Definition: iec61850_model.h:211
int elementCount
Definition: iec61850_model.h:215
Definition: iec61850_model.h:247
char * name
Definition: iec61850_model.h:249
char * logicalDeviceName
Definition: iec61850_model.h:248
DataSetEntry * fcdas
Definition: iec61850_model.h:251
int elementCount
Definition: iec61850_model.h:250
DataSet * sibling
Definition: iec61850_model.h:252
Definition: iec61850_model.h:316
bool fixedOffs
Definition: iec61850_model.h:322
char * dataSetName
Definition: iec61850_model.h:320
char * appId
Definition: iec61850_model.h:319
int minTime
Definition: iec61850_model.h:324
int maxTime
Definition: iec61850_model.h:325
GSEControlBlock * sibling
Definition: iec61850_model.h:326
PhyComAddress * address
Definition: iec61850_model.h:323
uint32_t confRev
Definition: iec61850_model.h:321
LogicalNode * parent
Definition: iec61850_model.h:317
char * name
Definition: iec61850_model.h:318
Root node of the IEC 61850 data model. This is usually created by the model generator tool (genmodel....
Definition: iec61850_model.h:171
LogControlBlock * lcbs
Definition: iec61850_model.h:179
SVControlBlock * svCBs
Definition: iec61850_model.h:177
LogicalDevice * firstChild
Definition: iec61850_model.h:173
DataSet * dataSets
Definition: iec61850_model.h:174
SettingGroupControlBlock * sgcbs
Definition: iec61850_model.h:178
char * name
Definition: iec61850_model.h:172
GSEControlBlock * gseCBs
Definition: iec61850_model.h:176
Log * logs
Definition: iec61850_model.h:180
ReportControlBlock * rcbs
Definition: iec61850_model.h:175
void(* initializer)(void)
Definition: iec61850_model.h:181
Definition: iec61850_model.h:277
char * dataSetName
Definition: iec61850_model.h:282
uint32_t intPeriod
Definition: iec61850_model.h:286
char * name
Definition: iec61850_model.h:280
bool logEna
Definition: iec61850_model.h:288
LogControlBlock * sibling
Definition: iec61850_model.h:291
bool reasonCode
Definition: iec61850_model.h:289
uint8_t trgOps
Definition: iec61850_model.h:285
LogicalNode * parent
Definition: iec61850_model.h:278
char * logRef
Definition: iec61850_model.h:283
Definition: iec61850_model.h:294
LogicalNode * parent
Definition: iec61850_model.h:295
Log * sibling
Definition: iec61850_model.h:299
char * name
Definition: iec61850_model.h:297
IEC 61850 data model element of type logical device.
Definition: iec61850_model.h:184
ModelNode * firstChild
Definition: iec61850_model.h:189
ModelNodeType modelType
Definition: iec61850_model.h:185
ModelNode * parent
Definition: iec61850_model.h:187
ModelNode * sibling
Definition: iec61850_model.h:188
char * name
Definition: iec61850_model.h:186
IEC 61850 data model element of type logical node.
Definition: iec61850_model.h:200
ModelNodeType modelType
Definition: iec61850_model.h:201
ModelNode * firstChild
Definition: iec61850_model.h:205
ModelNode * sibling
Definition: iec61850_model.h:204
char * name
Definition: iec61850_model.h:202
ModelNode * parent
Definition: iec61850_model.h:203
abstract base type for IEC 61850 data model nodes
Definition: iec61850_model.h:192
ModelNode * sibling
Definition: iec61850_model.h:196
ModelNode * firstChild
Definition: iec61850_model.h:197
char * name
Definition: iec61850_model.h:194
ModelNode * parent
Definition: iec61850_model.h:195
ModelNodeType modelType
Definition: iec61850_model.h:193
Definition: iec61850_model.h:255
ReportControlBlock * sibling
Definition: iec61850_model.h:272
uint8_t options
Definition: iec61850_model.h:264
bool buffered
Definition: iec61850_model.h:259
uint8_t trgOps
Definition: iec61850_model.h:263
LogicalNode * parent
Definition: iec61850_model.h:256
uint32_t intPeriod
Definition: iec61850_model.h:266
uint32_t confRef
Definition: iec61850_model.h:262
uint32_t bufferTime
Definition: iec61850_model.h:265
char * rptId
Definition: iec61850_model.h:258
char * dataSetName
Definition: iec61850_model.h:260
char * name
Definition: iec61850_model.h:257
uint8_t clientReservation[17]
Definition: iec61850_model.h:270
Definition: iec61850_model.h:329
PhyComAddress * dstAddress
Definition: iec61850_model.h:343
char * svId
Definition: iec61850_model.h:333
uint8_t smpMod
Definition: iec61850_model.h:338
int noASDU
Definition: iec61850_model.h:347
SVControlBlock * sibling
Definition: iec61850_model.h:349
uint8_t optFlds
Definition: iec61850_model.h:336
char * name
Definition: iec61850_model.h:331
uint32_t confRev
Definition: iec61850_model.h:341
char * dataSetName
Definition: iec61850_model.h:334
bool isUnicast
Definition: iec61850_model.h:345
uint16_t smpRate
Definition: iec61850_model.h:339
LogicalNode * parent
Definition: iec61850_model.h:330
IEC 61850 data model of setting group control block (SGCB)
Definition: iec61850_model.h:302
uint64_t timestamp
Definition: iec61850_model.h:310
LogicalNode * parent
Definition: iec61850_model.h:303
uint8_t editSG
Definition: iec61850_model.h:308
SettingGroupControlBlock * sibling
Definition: iec61850_model.h:313
bool cnfEdit
Definition: iec61850_model.h:309
uint8_t actSG
Definition: iec61850_model.h:305
uint8_t numOfSGs
Definition: iec61850_model.h:306
uint16_t resvTms
Definition: iec61850_model.h:311