- some code format updates

- added clang-formatter configuration
pull/535/head
Michael Zillgith 10 months ago
parent 243c988526
commit b131193694

@ -0,0 +1,192 @@
---
Language: Cpp
# BasedOnStyle: Microsoft
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortEnumsOnASingleLine: false
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: All
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: false
AfterExternBlock: true
BeforeCatch: true
BeforeElse: true
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: false
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentExternBlock: NoIndent
IndentRequires: false
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 1000
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: Latest
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...

@ -1952,8 +1952,8 @@ createDataSets(MmsDevice* mmsDevice, IedModel* iedModel)
{
LogicalDevice* ld = IedModel_getDeviceByInst(iedModel, dataset->logicalDeviceName);
if (ld) {
if (ld)
{
if (ld->ldName) {
StringUtils_copyStringMax(domainName, 65, ld->ldName);
}
@ -1963,8 +1963,8 @@ createDataSets(MmsDevice* mmsDevice, IedModel* iedModel)
MmsDomain* dataSetDomain = MmsDevice_getDomain(mmsDevice, domainName);
if (dataSetDomain == NULL) {
if (dataSetDomain == NULL)
{
if (DEBUG_IED_SERVER)
printf("IED_SERVER: MMS domain for dataset does not exist!\n");
@ -1978,8 +1978,8 @@ createDataSets(MmsDevice* mmsDevice, IedModel* iedModel)
DataSetEntry* dataSetEntry = dataset->fcdas;
while (dataSetEntry != NULL) {
while (dataSetEntry != NULL)
{
MmsAccessSpecifier accessSpecifier;
if (ld->ldName) {
@ -2004,7 +2004,8 @@ createDataSets(MmsDevice* mmsDevice, IedModel* iedModel)
MmsDomain_addNamedVariableList(dataSetDomain, varList);
}
else {
else
{
if (DEBUG_IED_SERVER)
printf("IED_SERVER: LD for dataset does not exist!\n");
}

@ -2679,8 +2679,10 @@ exit_function_only_tracking:
static void
Reporting_disableReportControlInstance(MmsMapping* self, ReportControl* rc)
{
if (rc->enabled) {
if (self->rcbEventHandler) {
if (rc->enabled)
{
if (self->rcbEventHandler)
{
ClientConnection clientConnection = private_IedServer_getClientConnectionByHandle(self->iedServer, rc->clientConnection);
self->rcbEventHandler(self->rcbEventHandlerParameter, rc->rcb, clientConnection, RCB_EVENT_DISABLE, NULL, DATA_ACCESS_ERROR_SUCCESS);
@ -2701,19 +2703,22 @@ Reporting_disableReportControlInstance(MmsMapping* self, ReportControl* rc)
Semaphore_post(rc->rcbValuesLock);
#endif
if (rc->reserved) {
if (rc->reserved)
{
rc->reserved = false;
if (self->rcbEventHandler) {
if (self->rcbEventHandler)
{
ClientConnection clientConnection = private_IedServer_getClientConnectionByHandle(self->iedServer, rc->clientConnection);
self->rcbEventHandler(self->rcbEventHandlerParameter, rc->rcb, clientConnection, RCB_EVENT_UNRESERVED, NULL, DATA_ACCESS_ERROR_SUCCESS);
}
}
if (rc->buffered == false) {
if (rc->resvTms != -1) {
if (rc->buffered == false)
{
if (rc->resvTms != -1)
{
#if (CONFIG_MMS_THREADLESS_STACK != 1)
Semaphore_wait(rc->rcbValuesLock);
#endif
@ -2732,7 +2737,8 @@ Reporting_disableReportControlInstance(MmsMapping* self, ReportControl* rc)
/* delete buffer content */
purgeBuf(rc);
}
else {
else
{
if (rc->resvTms == 0)
updateOwner(rc, NULL);
else if (rc->resvTms > 0) {
@ -2751,7 +2757,8 @@ Reporting_deactivateAllReports(MmsMapping* self)
{
LinkedList rcElem = LinkedList_getNext(self->reportControls);
while (rcElem) {
while (rcElem)
{
ReportControl* rc = (ReportControl*)LinkedList_getData(rcElem);
Reporting_disableReportControlInstance(self, rc);
@ -2765,7 +2772,8 @@ Reporting_deactivateReportsForConnection(MmsMapping* self, MmsServerConnection c
{
LinkedList rcElem = LinkedList_getNext(self->reportControls);
while (rcElem) {
while (rcElem)
{
ReportControl* rc = (ReportControl*)LinkedList_getData(rcElem);
if (rc->clientConnection == connection) {
@ -2835,13 +2843,16 @@ removeAllGIReportsFromReportBuffer(ReportBuffer* reportBuffer)
ReportBufferEntry* currentReport = reportBuffer->oldestReport;
ReportBufferEntry* lastReport = NULL;
while (currentReport != NULL) {
if (currentReport->flags & 2) {
if (currentReport == reportBuffer->oldestReport) {
while (currentReport != NULL)
{
if (currentReport->flags & 2)
{
if (currentReport == reportBuffer->oldestReport)
{
reportBuffer->oldestReport = currentReport->next;
}
else {
else
{
if (lastReport != NULL)
lastReport->next = currentReport->next;
else
@ -2859,7 +2870,8 @@ removeAllGIReportsFromReportBuffer(ReportBuffer* reportBuffer)
if (reportBuffer->nextToTransmit == currentReport)
reportBuffer->nextToTransmit = currentReport->next;
if (reportBuffer->lastEnqueuedReport == currentReport) {
if (reportBuffer->lastEnqueuedReport == currentReport)
{
if (lastReport != NULL)
reportBuffer->lastEnqueuedReport = lastReport;
else
@ -2924,7 +2936,8 @@ enqueueReport(ReportControl* reportControl, bool isIntegrity, bool isGI, uint64_
int encodedSize;
if (dataSetEntry->value) {
if (dataSetEntry->value)
{
encodedSize = MmsValue_encodeMmsData(dataSetEntry->value, NULL, 0, false);
}
else
@ -2972,14 +2985,16 @@ enqueueReport(ReportControl* reportControl, bool isIntegrity, bool isGI, uint64_
if (DEBUG_IED_SERVER)
printf("IED_SERVER: enqueueReport: bufferEntrySize: %i\n", bufferEntrySize);
if (bufferEntrySize > buffer->memoryBlockSize) {
if (bufferEntrySize > buffer->memoryBlockSize)
{
if (DEBUG_IED_SERVER)
printf("IED_SERVER: enqueueReport: report buffer too small for report entry! Skip event!\n");
goto exit_function;
}
if (isBuffered) {
if (isBuffered)
{
/* remove old buffered GI reports */
if (isGI) removeAllGIReportsFromReportBuffer(buffer);
}
@ -3002,7 +3017,8 @@ enqueueReport(ReportControl* reportControl, bool isIntegrity, bool isGI, uint64_
assert(buffer->lastEnqueuedReport != NULL);
assert(buffer->oldestReport != NULL);
if (DEBUG_IED_SERVER) {
if (DEBUG_IED_SERVER)
{
printf("IED_SERVER: buffer->lastEnqueuedReport: %p\n", buffer->lastEnqueuedReport);
printf("IED_SERVER: buffer->oldestReport: %p\n", buffer->oldestReport);
printf("IED_SERVER: buffer->nextToTransmit: %p\n", buffer->nextToTransmit);
@ -3383,7 +3399,8 @@ sendNextReportEntrySegment(ReportControl* self)
MmsValue* confRev = ReportControl_getRCBValue(self, "ConfRev");
if (isBuffered) {
if (isBuffered)
{
MmsValue* entryIdValue = MmsValue_getElement(self->rcbValues, 11);
MmsValue_setOctetString(entryIdValue, (uint8_t*) report->entryId, 8);
}
@ -3399,7 +3416,8 @@ sendNextReportEntrySegment(ReportControl* self)
const char* rptIdStr = MmsValue_toString(rptIdFromRcb);
if (rptIdStr[0] == 0) {
if (rptIdStr[0] == 0)
{
/* use default rptId when RptID is empty in RCB */
updateWithDefaultRptId(self, &rptId);
}
@ -3409,7 +3427,8 @@ sendNextReportEntrySegment(ReportControl* self)
MmsValue* optFlds = ReportControl_getRCBValue(self, "OptFlds");
if (isBuffered == false) {
if (isBuffered == false)
{
/* delete option fields for unrelated options (not present in unbuffered report) */
MmsValue_setBitStringBit(optFlds, 6, false); /* bufOvfl */
MmsValue_setBitStringBit(optFlds, 7, false); /* entryID */
@ -3424,8 +3443,8 @@ sendNextReportEntrySegment(ReportControl* self)
MmsValue* inclusionField = NULL;
if (report->flags == 0) {
if (report->flags == 0)
{
inclusionField = &_inclusionField;
_inclusionField.type = MMS_BIT_STRING;
@ -3457,7 +3476,8 @@ sendNextReportEntrySegment(ReportControl* self)
MmsValue _timeOfEntry;
MmsValue* timeOfEntry = NULL;
if (MmsValue_getBitStringBit(optFlds, 2)) { /* report time stamp */
if (MmsValue_getBitStringBit(optFlds, 2)) /* report time stamp */
{
hasReportTimestamp = true;
_timeOfEntry.type = MMS_BINARY_TIME;
_timeOfEntry.value.binaryTime.size = 6;
@ -3470,7 +3490,8 @@ sendNextReportEntrySegment(ReportControl* self)
MmsValue* datSet = ReportControl_getRCBValue(self, "DatSet");
if (MmsValue_getBitStringBit(optFlds, 4)) {/* data set reference */
if (MmsValue_getBitStringBit(optFlds, 4)) /* data set reference */
{
hasDataSetReference = true;
accessResultSize += MmsValue_encodeMmsData(datSet, NULL, 0, false);
}
@ -3478,8 +3499,10 @@ sendNextReportEntrySegment(ReportControl* self)
MmsValue _bufOvfl;
MmsValue* bufOvfl = NULL;
if (isBuffered) {
if (MmsValue_getBitStringBit(optFlds, 6)) { /* bufOvfl */
if (isBuffered)
{
if (MmsValue_getBitStringBit(optFlds, 6)) /* bufOvfl */
{
hasBufOvfl = true;
bufOvfl = &_bufOvfl;
@ -3494,8 +3517,10 @@ sendNextReportEntrySegment(ReportControl* self)
MmsValue _entryId;
MmsValue* entryId = NULL;
if (isBuffered) {
if (MmsValue_getBitStringBit(optFlds, 7)) { /* entryID */
if (isBuffered)
{
if (MmsValue_getBitStringBit(optFlds, 7)) /* entryID */
{
hasEntryId = true;
entryId = &_entryId;
@ -3508,7 +3533,8 @@ sendNextReportEntrySegment(ReportControl* self)
}
}
if (MmsValue_getBitStringBit(optFlds, 8)) {
if (MmsValue_getBitStringBit(optFlds, 8))
{
hasConfRev = true;
accessResultSize += MmsValue_encodeMmsData(confRev, NULL, 0, false);
}
@ -3544,16 +3570,16 @@ sendNextReportEntrySegment(ReportControl* self)
int numberOfAddedElements = 0;
for (i = 0; i < self->dataSet->elementCount; i++) {
if ((report->flags > 0) || MmsValue_getBitStringBit(inclusionField, i)) {
if (i >= startElementIndex) {
for (i = 0; i < self->dataSet->elementCount; i++)
{
if ((report->flags > 0) || MmsValue_getBitStringBit(inclusionField, i))
{
if (i >= startElementIndex)
{
int elementSize = 0;
if (withDataReference) {
if (withDataReference)
{
DataSetEntry* dataSetEntry = getDataSetEntryWithIndex(self->dataSet->fcdas, i);
char dataReference[130];
@ -3593,7 +3619,8 @@ sendNextReportEntrySegment(ReportControl* self)
int lenSize = BerDecoder_decodeLength(currentReportBufferPos + 1, &length, 0, report->entryLength);
if (lenSize < 0) {
if (lenSize < 0)
{
if (DEBUG_IED_SERVER)
printf("IED_SERVER: internal error in report buffer\n");
@ -3606,13 +3633,12 @@ sendNextReportEntrySegment(ReportControl* self)
currentReportBufferPos += dataElementSize;
}
if (withReasonCode) {
elementSize += 4; /* reason code size is always 4 byte */
}
if ((estimatedSegmentSize + elementSize) > maxMmsPduSize) {
if ((estimatedSegmentSize + elementSize) > maxMmsPduSize)
{
segmented = true;
moreFollows = true;
_moreFollows.value.boolean = true;
@ -3630,13 +3656,15 @@ sendNextReportEntrySegment(ReportControl* self)
accessResultSize += elementSize;
estimatedSegmentSize += elementSize;
}
else {
else
{
/* move element pointer in report buffer to skip elements that were already sent in former segments */
int length;
int lenSize = BerDecoder_decodeLength(currentReportBufferPos + 1, &length, 0, report->entryLength);
if (lenSize < 0) {
if (lenSize < 0)
{
if (DEBUG_IED_SERVER)
printf("IED_SERVER: internal error in report buffer\n");
@ -3656,7 +3684,8 @@ sendNextReportEntrySegment(ReportControl* self)
/* now calculate the exact information report segment size */
if (segmented) {
if (segmented)
{
int segmentedSize = MmsValue_encodeMmsData(&_moreFollows, NULL, 0, false) + MmsValue_encodeMmsData(subSeqNum, NULL, 0, false);
accessResultSize += segmentedSize;
}
@ -3667,7 +3696,8 @@ sendNextReportEntrySegment(ReportControl* self)
uint32_t informationReportSize = 1 + informationReportContentSize + BerEncoder_determineLengthSize(informationReportContentSize);
uint32_t completeMessageSize = 1 + informationReportSize + BerEncoder_determineLengthSize(informationReportSize);
if (((int) completeMessageSize > maxMmsPduSize) || (numberOfAddedElements == 0)) {
if (((int) completeMessageSize > maxMmsPduSize) || (numberOfAddedElements == 0))
{
if (DEBUG_IED_SERVER)
printf("IED_SERVER: MMS PDU size too small to encode report data (max PDU size = %i) -> skip message!\n", maxMmsPduSize);
@ -3730,10 +3760,12 @@ sendNextReportEntrySegment(ReportControl* self)
bufPos = MmsValue_encodeMmsData(self->inclusionField, buffer, bufPos, true);
/* encode data references if selected */
if (MmsValue_getBitStringBit(optFlds, 5)) { /* data-reference */
if (MmsValue_getBitStringBit(optFlds, 5)) /* data-reference */
{
DataSetEntry* dataSetEntry = getDataSetEntryWithIndex(self->dataSet->fcdas, startElementIndex);
for (i = startElementIndex; i < maxIndex; i++) {
for (i = startElementIndex; i < maxIndex; i++)
{
bool addReferenceForEntry = false;
if (report->flags > 0)
@ -3741,8 +3773,8 @@ sendNextReportEntrySegment(ReportControl* self)
else if (MmsValue_getBitStringBit(self->inclusionField, i))
addReferenceForEntry = true;
if (addReferenceForEntry) {
if (addReferenceForEntry)
{
char dataReference[130];
int currentPos = 0;
@ -3753,7 +3785,8 @@ sendNextReportEntrySegment(ReportControl* self)
}
int ldNameLength = (int) strlen(dataSetEntry->logicalDeviceName);
for (j = 0; j < ldNameLength; j++) {
for (j = 0; j < ldNameLength; j++)
{
dataReference[currentPos] = dataSetEntry->logicalDeviceName[j];
currentPos++;
}

@ -1,7 +1,7 @@
/*
* model.c
*
* Copyright 2013-2022 Michael Zillgith
* Copyright 2013-2024 Michael Zillgith
*
* This file is part of libIEC61850.
*
@ -23,13 +23,14 @@
#include "iec61850_model.h"
#include "stack_config.h"
#include "libiec61850_platform_includes.h"
#include "stack_config.h"
static void
setAttributeValuesToNull(ModelNode* node)
{
if (node->modelType == DataAttributeModelType) {
if (node->modelType == DataAttributeModelType)
{
DataAttribute* da = (DataAttribute*)node;
da->mmsValue = NULL;
@ -37,7 +38,8 @@ setAttributeValuesToNull(ModelNode* node)
ModelNode* child = node->firstChild;
while (child != NULL) {
while (child != NULL)
{
setAttributeValuesToNull(child);
child = child->sibling;
}
@ -54,14 +56,17 @@ IedModel_setAttributeValuesToNull(IedModel* iedModel)
{
LogicalDevice* ld = iedModel->firstChild;
while (ld != NULL) {
while (ld != NULL)
{
LogicalNode* ln = (LogicalNode*)ld->firstChild;
while (ln != NULL) {
while (ln != NULL)
{
ModelNode* node = ln->firstChild;
while (node != NULL) {
while (node != NULL)
{
setAttributeValuesToNull(node);
node = node->sibling;
}
@ -83,7 +88,8 @@ IedModel_getLogicalDeviceCount(IedModel* self)
int ldCount = 1;
while (logicalDevice->sibling != NULL) {
while (logicalDevice->sibling != NULL)
{
logicalDevice = (LogicalDevice*)logicalDevice->sibling;
ldCount++;
}
@ -112,31 +118,37 @@ IedModel_lookupDataSet(IedModel* self, const char* dataSetReference /* e.g. ied
memcpy(domainName, self->name, modelNameLen);
while (dataSet != NULL) {
while (dataSet != NULL)
{
LogicalDevice* ld = IedModel_getDeviceByInst(self, dataSet->logicalDeviceName);
if (ld) {
if (ld->ldName == NULL) {
if (ld)
{
if (ld->ldName == NULL)
{
/* LD name = IEDName + ldInst */
domainName[modelNameLen] = 0;
StringUtils_appendString(domainName, 65, dataSet->logicalDeviceName);
if (strncmp(domainName, dataSetReference, ldNameLen) == 0) {
if (strcmp(dataSet->name, separator + 1) == 0) {
if (strncmp(domainName, dataSetReference, ldNameLen) == 0)
{
if (strcmp(dataSet->name, separator + 1) == 0)
{
return dataSet;
}
}
}
else {
else
{
/* functional naming */
if (strncmp(ld->ldName, dataSetReference, ldNameLen) == 0) {
if (strcmp(dataSet->name, separator + 1) == 0) {
if (strncmp(ld->ldName, dataSetReference, ldNameLen) == 0)
{
if (strcmp(dataSet->name, separator + 1) == 0)
{
return dataSet;
}
}
}
}
dataSet = dataSet->sibling;
@ -150,14 +162,16 @@ IedModel_getDevice(IedModel* self, const char* deviceName)
{
LogicalDevice* device = self->firstChild;
while (device) {
if (device->ldName) {
while (device)
{
if (device->ldName)
{
/* functional naming */
if (strcmp(device->ldName, deviceName) == 0)
return device;
}
else {
else
{
/* LD name = IEDName + ldInst */
char domainName[65];
@ -196,8 +210,8 @@ IedModel_getDeviceByIndex(IedModel* self, int index)
int currentIndex = 0;
while (logicalDevice) {
while (logicalDevice)
{
if (currentIndex == index)
return logicalDevice;
@ -214,8 +228,10 @@ ModelNode_getDataAttributeByMmsValue(ModelNode* self, MmsValue* value)
{
ModelNode* node = self->firstChild;
while (node != NULL) {
if (node->modelType == DataAttributeModelType) {
while (node != NULL)
{
if (node->modelType == DataAttributeModelType)
{
DataAttribute* da = (DataAttribute*)node;
if (da->mmsValue == value)
@ -238,15 +254,13 @@ IedModel_lookupDataAttributeByMmsValue(IedModel* model, MmsValue* value)
{
LogicalDevice* ld = model->firstChild;
while (ld != NULL) {
DataAttribute* da =
ModelNode_getDataAttributeByMmsValue((ModelNode*) ld, value);
while (ld != NULL)
{
DataAttribute* da = ModelNode_getDataAttributeByMmsValue((ModelNode*)ld, value);
if (da != NULL)
return da;
ld = (LogicalDevice*)ld->sibling;
}
@ -260,8 +274,10 @@ getChildWithShortAddress(ModelNode* node, uint32_t sAddr)
child = node->firstChild;
while (child != NULL) {
if (child->modelType == DataAttributeModelType) {
while (child != NULL)
{
if (child->modelType == DataAttributeModelType)
{
DataAttribute* da = (DataAttribute*)child;
if (da->sAddr == sAddr)
@ -286,15 +302,16 @@ IedModel_getModelNodeByShortAddress(IedModel* model, uint32_t sAddr)
LogicalDevice* ld = (LogicalDevice*)model->firstChild;
while (ld != NULL) {
while (ld != NULL)
{
LogicalNode* ln = (LogicalNode*)ld->firstChild;
while (ln != NULL) {
while (ln != NULL)
{
ModelNode* doNode = ln->firstChild;
while (doNode != NULL) {
while (doNode != NULL)
{
ModelNode* matchingNode = getChildWithShortAddress(doNode, sAddr);
if (matchingNode != NULL)
@ -328,7 +345,8 @@ IedModel_getModelNodeByObjectReference(IedModel* model, const char* objectRefere
LogicalDevice* ld = IedModel_getDevice(model, objRef);
if (ld == NULL) return NULL;
if (ld == NULL)
return NULL;
if ((separator == NULL) || (*(separator + 1) == 0))
return (ModelNode*)ld;
@ -345,13 +363,14 @@ IedModel_getSVControlBlock(IedModel* self, LogicalNode* parentLN, const char* sv
SVControlBlock* svCb = self->svCBs;
while (svCb != NULL) {
if ((svCb->parent == parentLN) && (strcmp(svCb->name, svcbName) == 0)) {
while (svCb != NULL)
{
if ((svCb->parent == parentLN) && (strcmp(svCb->name, svcbName) == 0))
{
retVal = svCb;
break;
}
svCb = svCb->sibling;
}
@ -379,8 +398,10 @@ IedModel_getModelNodeByShortObjectReference(IedModel* model, const char* objectR
LogicalDevice* ld = IedModel_getDeviceByInst(model, ldInst);
if (ld == NULL) {
if (DEBUG_IED_SERVER) {
if (ld == NULL)
{
if (DEBUG_IED_SERVER)
{
printf("IED_SERVER: LD (%s) not found\n", ldInst);
}
@ -398,16 +419,17 @@ DataObject_hasFCData(DataObject* dataObject, FunctionalConstraint fc)
{
ModelNode* modelNode = dataObject->firstChild;
while (modelNode != NULL) {
if (modelNode->modelType == DataAttributeModelType) {
while (modelNode != NULL)
{
if (modelNode->modelType == DataAttributeModelType)
{
DataAttribute* dataAttribute = (DataAttribute*)modelNode;
if (dataAttribute->fc == fc)
return true;
}
else if (modelNode->modelType == DataObjectModelType) {
else if (modelNode->modelType == DataObjectModelType)
{
if (DataObject_hasFCData((DataObject*)modelNode, fc))
return true;
}
@ -423,7 +445,8 @@ LogicalNode_hasFCData(LogicalNode* node, FunctionalConstraint fc)
{
DataObject* dataObject = (DataObject*)node->firstChild;
while (dataObject != NULL) {
while (dataObject != NULL)
{
if (DataObject_hasFCData(dataObject, fc))
return true;
@ -443,9 +466,10 @@ LogicalNode_getDataSet(LogicalNode* self, const char* dataSetName)
LogicalDevice* ld = (LogicalDevice*)self->parent;
if (strlen(dataSetName) > 32) {
if (DEBUG_IED_SERVER) {
if (strlen(dataSetName) > 32)
{
if (DEBUG_IED_SERVER)
{
printf("IED_SERVER: LogicalNode_getDataSet - data set name %s too long!\n", dataSetName);
}
@ -458,9 +482,12 @@ LogicalNode_getDataSet(LogicalNode* self, const char* dataSetName)
DataSet* ds = iedModel->dataSets;
while (ds != NULL) {
if (strcmp(ds->logicalDeviceName, ld->name) == 0) {
if (strcmp(ds->name, dsName) == 0) {
while (ds != NULL)
{
if (strcmp(ds->logicalDeviceName, ld->name) == 0)
{
if (strcmp(ds->name, dsName) == 0)
{
return ds;
}
}
@ -468,7 +495,6 @@ LogicalNode_getDataSet(LogicalNode* self, const char* dataSetName)
ds = ds->sibling;
}
exit_error:
return NULL;
}
@ -480,7 +506,8 @@ LogicalDevice_getLogicalNodeCount(LogicalDevice* logicalDevice)
LogicalNode* logicalNode = (LogicalNode*)logicalDevice->firstChild;
while (logicalNode != NULL) {
while (logicalNode != NULL)
{
logicalNode = (LogicalNode*)logicalNode->sibling;
lnCount++;
}
@ -496,7 +523,8 @@ LogicalDevice_getChildByMmsVariableName(LogicalDevice* logicalDevice, const char
if (separator == NULL)
return NULL;
if (strlen(separator) > 4) {
if (strlen(separator) > 4)
{
char fcString[3];
char nameRef[65];
@ -508,7 +536,8 @@ LogicalDevice_getChildByMmsVariableName(LogicalDevice* logicalDevice, const char
int targetPos = 0;
while (strpos < separator) {
while (strpos < separator)
{
nameRef[targetPos++] = strpos[0];
strpos++;
}
@ -517,7 +546,8 @@ LogicalDevice_getChildByMmsVariableName(LogicalDevice* logicalDevice, const char
strpos = separator + 4;
while (strpos[0] != 0) {
while (strpos[0] != 0)
{
nameRef[targetPos++] = strpos[0];
strpos++;
}
@ -581,10 +611,12 @@ createObjectReference(ModelNode* node, char* objectReference, int bufSize, bool
}
else
{
if (lDevice->ldName) {
if (lDevice->ldName)
{
StringUtils_copyStringMax(objectReference, bufSize, lDevice->ldName);
}
else {
else
{
StringUtils_concatString(objectReference, bufSize, iedModel->name, lDevice->name);
}
}
@ -605,13 +637,15 @@ createObjectReference(ModelNode* node, char* objectReference, int bufSize, bool
if (bufPos + nameLength < bufSize)
{
int i;
for (i = 0; i < nameLength; i++) {
for (i = 0; i < nameLength; i++)
{
objectReference[bufPos++] = node->name[i];
}
return bufPos;
}
else {
else
{
return -1;
}
}
@ -630,7 +664,8 @@ createObjectReference(ModelNode* node, char* objectReference, int bufSize, bool
objectReference[bufPos++] = '(';
for (i = 0; i < arrayIndexStrLength; i++) {
for (i = 0; i < arrayIndexStrLength; i++)
{
objectReference[bufPos++] = arrayIndexStr[i];
}
objectReference[bufPos++] = ')';
@ -681,12 +716,14 @@ ModelNode_getObjectReferenceEx(ModelNode* node, char* objectReference, bool with
}
int
ModelNode_getChildCount(ModelNode* modelNode) {
ModelNode_getChildCount(ModelNode* modelNode)
{
int childCount = 0;
ModelNode* child = modelNode->firstChild;
while (child != NULL) {
while (child != NULL)
{
childCount++;
child = child->sibling;
}
@ -740,7 +777,8 @@ ModelNode_getChild(ModelNode* self, const char* name)
ModelNode* childNode = ModelNode_getChild(self, nameCopy);
if (childNode) {
if (childNode)
{
arrayNode = ModelNode_getChildWithIdx(childNode, idx);
}
else
@ -764,11 +802,11 @@ ModelNode_getChild(ModelNode* self, const char* name)
else
return NULL;
}
else {
else
{
/* invalid name */
return NULL;
}
}
int nameElementLength = 0;
@ -784,7 +822,8 @@ ModelNode_getChild(ModelNode* self, const char* name)
while (nextNode)
{
if (nextNode->name == NULL) {
if (nextNode->name == NULL)
{
break; /* is an array element */
}
@ -802,7 +841,8 @@ ModelNode_getChild(ModelNode* self, const char* name)
nextNode = nextNode->sibling;
}
if ((separator != NULL) && (matchingNode != NULL)) {
if ((separator != NULL) && (matchingNode != NULL))
{
return ModelNode_getChild(matchingNode, separator + 1);
}
else
@ -868,7 +908,8 @@ ModelNode_getChildWithFc(ModelNode* self, const char* name, FunctionalConstraint
{
DataAttribute* da = (DataAttribute*)nextNode;
if (da->fc == fc) {
if (da->fc == fc)
{
matchingNode = nextNode;
break;
}
@ -886,7 +927,8 @@ ModelNode_getChildWithFc(ModelNode* self, const char* name, FunctionalConstraint
break;
}
}
else {
else
{
matchingNode = nextNode;
break;
}
@ -897,7 +939,8 @@ ModelNode_getChildWithFc(ModelNode* self, const char* name, FunctionalConstraint
nextNode = nextNode->sibling;
}
if ((separator != NULL) && (matchingNode != NULL)) {
if ((separator != NULL) && (matchingNode != NULL))
{
return ModelNode_getChildWithFc(matchingNode, separator + 1, fc);
}
else
@ -932,7 +975,8 @@ ModelNode_getChildren(ModelNode* self)
ModelNode* childNode = self->firstChild;
while (childNode) {
while (childNode)
{
LinkedList_add(childNodes, childNode);
childNode = childNode->sibling;
@ -957,7 +1001,8 @@ LogicalDevice_getSettingGroupControlBlock(LogicalDevice* self)
LogicalNode* ln = LogicalDevice_getLogicalNode(self, "LLN0");
if (ln == NULL) {
if (ln == NULL)
{
if (DEBUG_IED_SERVER)
printf("IED_SERVER: logical node LLN0 not found!\n");
@ -966,7 +1011,8 @@ LogicalDevice_getSettingGroupControlBlock(LogicalDevice* self)
SettingGroupControlBlock* sgcb = model->sgcbs;
while (sgcb != NULL) {
while (sgcb != NULL)
{
if (sgcb->parent == ln)
return sgcb;

Loading…
Cancel
Save