예제 #1
0
char*
ModelNode_getObjectReference(ModelNode* node, char* objectReference)
{
    if (objectReference == NULL)
        objectReference = (char*) malloc(130);

    int bufPos = createObjectReference(node, objectReference);

    objectReference[bufPos] = 0;

    return objectReference;
}
예제 #2
0
static int
createObjectReference(ModelNode* node, char* objectReference)
{
    ModelNodeType type;

    int bufPos;

    if (node->modelType != LogicalNodeModelType) {
        bufPos = createObjectReference(node->parent, objectReference);

        objectReference[bufPos++] = '.';
    }
    else {
        LogicalNode* lNode = (LogicalNode*) node;

        LogicalDevice* lDevice = lNode->parent;

        bufPos = 0;

        int nameLength = strlen(lDevice->name);

        int i;
        for (i = 0; i < nameLength; i++) {
            objectReference[bufPos++] = lDevice->name[i];
        }

        objectReference[bufPos++] = '/';
    }

    /* append own name */
    int nameLength = strlen(node->name);

    int i;
    for (i = 0; i < nameLength; i++) {
        objectReference[bufPos++] = node->name[i];
    }

    return bufPos;
}
예제 #3
0
파일: model.c 프로젝트: sagok/SmI_IEC104
static int
createObjectReference(ModelNode* node, char* objectReference)
{
    int bufPos;

    if (node->modelType != LogicalNodeModelType) {
        bufPos = createObjectReference(node->parent, objectReference);

        objectReference[bufPos++] = '.';
    }
    else {
        LogicalNode* lNode = (LogicalNode*) node;

        LogicalDevice* lDevice = (LogicalDevice*) lNode->parent;

        IedModel* iedModel = (IedModel*) lDevice->parent;

        bufPos = 0;

        int nameLength = strlen (iedModel->name) + strlen(lDevice->name);

        strncpy(objectReference, iedModel->name, 64);
        strncat(objectReference, lDevice->name, 64);

        bufPos += nameLength;

        objectReference[bufPos++] = '/';
    }

    /* append own name */
    int nameLength = strlen(node->name);

    int i;
    for (i = 0; i < nameLength; i++) {
        objectReference[bufPos++] = node->name[i];
    }

    return bufPos;
}