89 typedef struct sLog Log;
204 typedef struct sDataSetEntry {
338 LIB61850_API ModelNode*
349 LIB61850_API ModelNode*
365 LIB61850_API ModelNode*
410 LIB61850_API
const char*
420 LIB61850_API ModelNode*
430 LIB61850_API LinkedList
459 LIB61850_API ModelNode*
462 LIB61850_API SVControlBlock*
479 LIB61850_API ModelNode*
493 LIB61850_API ModelNode*
504 LIB61850_API LogicalDevice*
515 LIB61850_API LogicalDevice*
527 LIB61850_API LogicalNode*
537 LIB61850_API SettingGroupControlBlock*
561 LIB61850_API LogicalDevice*
572 LIB61850_API DataSet*
583 LIB61850_API DataAttribute*
600 LIB61850_API ModelNode*
620 LIB61850_API DataSet*
LIB61850_API ModelNode * ModelNode_getChildWithIdx(ModelNode *self, int idx)
return the child node of an array or other structure
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:128
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:91
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:132
@ DataObjectModelType
Definition: iec61850_model.h:131
@ LogicalNodeModelType
Definition: iec61850_model.h:130
@ LogicalDeviceModelType
Definition: iec61850_model.h:129
@ IEC61850_VISIBLE_STRING_255
Definition: iec61850_model.h:113
@ IEC61850_OPTFLDS
Definition: iec61850_model.h:124
@ IEC61850_TIMESTAMP
Definition: iec61850_model.h:115
@ IEC61850_CURRENCY
Definition: iec61850_model.h:123
@ IEC61850_INT128
Definition: iec61850_model.h:98
@ IEC61850_UNICODE_STRING_255
Definition: iec61850_model.h:114
@ IEC61850_OCTET_STRING_8
Definition: iec61850_model.h:108
@ IEC61850_VISIBLE_STRING_129
Definition: iec61850_model.h:112
@ IEC61850_CHECK
Definition: iec61850_model.h:117
@ IEC61850_PHYCOMADDR
Definition: iec61850_model.h:122
@ IEC61850_INT8U
Definition: iec61850_model.h:99
@ IEC61850_CODEDENUM
Definition: iec61850_model.h:118
@ IEC61850_BOOLEAN
Definition: iec61850_model.h:93
@ IEC61850_OCTET_STRING_64
Definition: iec61850_model.h:106
@ IEC61850_GENERIC_BITSTRING
Definition: iec61850_model.h:119
@ IEC61850_INT16U
Definition: iec61850_model.h:100
@ IEC61850_VISIBLE_STRING_32
Definition: iec61850_model.h:109
@ IEC61850_ENTRY_TIME
Definition: iec61850_model.h:121
@ IEC61850_INT32
Definition: iec61850_model.h:96
@ IEC61850_INT24U
Definition: iec61850_model.h:101
@ IEC61850_UNKNOWN_TYPE
Definition: iec61850_model.h:92
@ IEC61850_INT16
Definition: iec61850_model.h:95
@ IEC61850_CONSTRUCTED
Definition: iec61850_model.h:120
@ IEC61850_FLOAT64
Definition: iec61850_model.h:104
@ IEC61850_TRGOPS
Definition: iec61850_model.h:125
@ IEC61850_QUALITY
Definition: iec61850_model.h:116
@ IEC61850_INT64
Definition: iec61850_model.h:97
@ IEC61850_VISIBLE_STRING_65
Definition: iec61850_model.h:111
@ IEC61850_FLOAT32
Definition: iec61850_model.h:103
@ IEC61850_INT32U
Definition: iec61850_model.h:102
@ IEC61850_ENUMERATED
Definition: iec61850_model.h:105
@ IEC61850_INT8
Definition: iec61850_model.h:94
@ IEC61850_OCTET_STRING_6
Definition: iec61850_model.h:107
@ IEC61850_VISIBLE_STRING_64
Definition: iec61850_model.h:110
FunctionalConstraint
Definition: iec61850_common.h:260
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:204
bool isLDNameDynamicallyAllocated
Definition: iec61850_model.h:206
int index
Definition: iec61850_model.h:208
MmsValue * value
Definition: iec61850_model.h:210
char * logicalDeviceName
Definition: iec61850_model.h:205
char * variableName
Definition: iec61850_model.h:207
char * componentName
Definition: iec61850_model.h:209
struct sDataSetEntry * sibling
Definition: iec61850_model.h:211
Definition: iec61850_common.h:51
IEC 61850 data model element of type data attribute.
Definition: iec61850_model.h:184
ModelNode * parent
Definition: iec61850_model.h:187
uint8_t triggerOptions
Definition: iec61850_model.h:197
char * name
Definition: iec61850_model.h:186
int arrayIndex
Definition: iec61850_model.h:192
ModelNode * sibling
Definition: iec61850_model.h:188
ModelNode * firstChild
Definition: iec61850_model.h:189
int elementCount
Definition: iec61850_model.h:191
ModelNodeType modelType
Definition: iec61850_model.h:185
FunctionalConstraint fc
Definition: iec61850_model.h:194
MmsValue * mmsValue
Definition: iec61850_model.h:199
uint32_t sAddr
Definition: iec61850_model.h:201
DataAttributeType type
Definition: iec61850_model.h:195
IEC 61850 data model element of type data object.
Definition: iec61850_model.h:173
ModelNode * firstChild
Definition: iec61850_model.h:178
int arrayIndex
Definition: iec61850_model.h:181
char * name
Definition: iec61850_model.h:175
ModelNode * sibling
Definition: iec61850_model.h:177
ModelNodeType modelType
Definition: iec61850_model.h:174
ModelNode * parent
Definition: iec61850_model.h:176
int elementCount
Definition: iec61850_model.h:180
Definition: iec61850_model.h:214
char * name
Definition: iec61850_model.h:216
char * logicalDeviceName
Definition: iec61850_model.h:215
DataSetEntry * fcdas
Definition: iec61850_model.h:218
int elementCount
Definition: iec61850_model.h:217
DataSet * sibling
Definition: iec61850_model.h:219
Definition: iec61850_model.h:283
bool fixedOffs
Definition: iec61850_model.h:289
char * dataSetName
Definition: iec61850_model.h:287
char * appId
Definition: iec61850_model.h:286
int minTime
Definition: iec61850_model.h:291
int maxTime
Definition: iec61850_model.h:292
GSEControlBlock * sibling
Definition: iec61850_model.h:293
PhyComAddress * address
Definition: iec61850_model.h:290
uint32_t confRev
Definition: iec61850_model.h:288
LogicalNode * parent
Definition: iec61850_model.h:284
char * name
Definition: iec61850_model.h:285
Root node of the IEC 61850 data model. This is usually created by the model generator tool (genmodel....
Definition: iec61850_model.h:135
LogControlBlock * lcbs
Definition: iec61850_model.h:143
SVControlBlock * svCBs
Definition: iec61850_model.h:141
LogicalDevice * firstChild
Definition: iec61850_model.h:137
DataSet * dataSets
Definition: iec61850_model.h:138
SettingGroupControlBlock * sgcbs
Definition: iec61850_model.h:142
char * name
Definition: iec61850_model.h:136
GSEControlBlock * gseCBs
Definition: iec61850_model.h:140
Log * logs
Definition: iec61850_model.h:144
ReportControlBlock * rcbs
Definition: iec61850_model.h:139
void(* initializer)(void)
Definition: iec61850_model.h:145
Definition: iec61850_model.h:244
char * dataSetName
Definition: iec61850_model.h:249
uint32_t intPeriod
Definition: iec61850_model.h:253
char * name
Definition: iec61850_model.h:247
bool logEna
Definition: iec61850_model.h:255
LogControlBlock * sibling
Definition: iec61850_model.h:258
bool reasonCode
Definition: iec61850_model.h:256
uint8_t trgOps
Definition: iec61850_model.h:252
LogicalNode * parent
Definition: iec61850_model.h:245
char * logRef
Definition: iec61850_model.h:250
Definition: iec61850_model.h:261
LogicalNode * parent
Definition: iec61850_model.h:262
Log * sibling
Definition: iec61850_model.h:266
char * name
Definition: iec61850_model.h:264
IEC 61850 data model element of type logical device.
Definition: iec61850_model.h:148
ModelNode * firstChild
Definition: iec61850_model.h:153
ModelNodeType modelType
Definition: iec61850_model.h:149
char * ldName
Definition: iec61850_model.h:154
ModelNode * parent
Definition: iec61850_model.h:151
ModelNode * sibling
Definition: iec61850_model.h:152
char * name
Definition: iec61850_model.h:150
IEC 61850 data model element of type logical node.
Definition: iec61850_model.h:165
ModelNodeType modelType
Definition: iec61850_model.h:166
ModelNode * firstChild
Definition: iec61850_model.h:170
ModelNode * sibling
Definition: iec61850_model.h:169
char * name
Definition: iec61850_model.h:167
ModelNode * parent
Definition: iec61850_model.h:168
abstract base type for IEC 61850 data model nodes
Definition: iec61850_model.h:157
ModelNode * sibling
Definition: iec61850_model.h:161
ModelNode * firstChild
Definition: iec61850_model.h:162
char * name
Definition: iec61850_model.h:159
ModelNode * parent
Definition: iec61850_model.h:160
ModelNodeType modelType
Definition: iec61850_model.h:158
Definition: iec61850_model.h:222
ReportControlBlock * sibling
Definition: iec61850_model.h:239
uint8_t options
Definition: iec61850_model.h:231
bool buffered
Definition: iec61850_model.h:226
uint8_t trgOps
Definition: iec61850_model.h:230
LogicalNode * parent
Definition: iec61850_model.h:223
uint32_t intPeriod
Definition: iec61850_model.h:233
uint32_t confRef
Definition: iec61850_model.h:229
uint32_t bufferTime
Definition: iec61850_model.h:232
char * rptId
Definition: iec61850_model.h:225
char * dataSetName
Definition: iec61850_model.h:227
char * name
Definition: iec61850_model.h:224
uint8_t clientReservation[17]
Definition: iec61850_model.h:237
Definition: iec61850_model.h:296
PhyComAddress * dstAddress
Definition: iec61850_model.h:310
char * svId
Definition: iec61850_model.h:300
uint8_t smpMod
Definition: iec61850_model.h:305
int noASDU
Definition: iec61850_model.h:314
SVControlBlock * sibling
Definition: iec61850_model.h:316
uint8_t optFlds
Definition: iec61850_model.h:303
char * name
Definition: iec61850_model.h:298
uint32_t confRev
Definition: iec61850_model.h:308
char * dataSetName
Definition: iec61850_model.h:301
bool isUnicast
Definition: iec61850_model.h:312
uint16_t smpRate
Definition: iec61850_model.h:306
LogicalNode * parent
Definition: iec61850_model.h:297
IEC 61850 data model of setting group control block (SGCB)
Definition: iec61850_model.h:269
uint64_t timestamp
Definition: iec61850_model.h:277
LogicalNode * parent
Definition: iec61850_model.h:270
uint8_t editSG
Definition: iec61850_model.h:275
SettingGroupControlBlock * sibling
Definition: iec61850_model.h:280
bool cnfEdit
Definition: iec61850_model.h:276
uint8_t actSG
Definition: iec61850_model.h:272
uint8_t numOfSGs
Definition: iec61850_model.h:273
uint16_t resvTms
Definition: iec61850_model.h:278