ied_connection.c ( File view )

  • By lizhaoping1@163.com 2014-09-03
  • View(s):161
  • Download(s):9
  • Point(s): 3
			/*
 *  ied_connection.c
 *
 *  Copyright 2013 Michael Zillgith
 *
 *  This file is part of libIEC61850.
 *
 *  libIEC61850 is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  libIEC61850 is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with libIEC61850.  If not, see <http://www.gnu.org/licenses/>.
 *
 *  See COPYING file for the complete license text.
 */

#include "libiec61850_platform_includes.h"

#include "iec61850_client.h"

#include "stack_config.h"

#include "mms_client_connection.h"
#include "mms_mapping.h"

#include "ied_connection_private.h"
#include "mms_value_internal.h"

typedef struct sICLogicalDevice
{

    char* name;
    LinkedList variables;
    LinkedList dataSets;

} ICLogicalDevice;

struct sClientDataSet
{

    char* dataSetReference; /* data set reference in MMS format */
    MmsValue* dataSetValues; /* MmsValue instance of type MMS_ARRAY */

};

struct sFileDirectoryEntry {

    char* fileName;
    uint32_t fileSize;
    uint64_t lastModified;

};

IedClientError
iedConnection_mapMmsErrorToIedError(MmsError mmsError)
{

    switch (mmsError) {

    case MMS_ERROR_NONE:
        return IED_ERROR_OK;

    case MMS_ERROR_CONNECTION_LOST:
        return IED_ERROR_CONNECTION_LOST;

    case MMS_ERROR_ACCESS_OBJECT_ACCESS_DENIED:
        return IED_ERROR_ACCESS_DENIED;

    case MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT:
        return IED_ERROR_OBJECT_DOES_NOT_EXIST;

    case MMS_ERROR_ACCESS_OBJECT_ACCESS_UNSUPPORTED:
        return IED_ERROR_OBJECT_ACCESS_UNSUPPORTED;

    case MMS_ERROR_DEFINITION_OBJECT_EXISTS:
        return IED_ERROR_OBJECT_EXISTS;

    case MMS_ERROR_SERVICE_TIMEOUT:
        return IED_ERROR_TIMEOUT;

    case MMS_ERROR_FILE_FILE_NON_EXISTENT:
        return IED_ERROR_OBJECT_DOES_NOT_EXIST;

    case MMS_ERROR_CONNECTION_REJECTED:
        return IED_ERROR_CONNECTION_REJECTED;

    default:
        return IED_ERROR_UNKNOWN;
    
}

}

IedClientError
iedConnection_mapDataAccessErrorToIedError(MmsDataAccessError mmsError)
{

    switch (mmsError) {

    case DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT:
        return IED_ERROR_OBJECT_DOES_NOT_EXIST;
    case DATA_ACCESS_ERROR_OBJECT_ACCESS_DENIED:
        return IED_ERROR_ACCESS_DENIED;
    case DATA_ACCESS_ERROR_OBJECT_ACCESS_UNSUPPORTED:
        return IED_ERROR_OBJECT_ACCESS_UNSUPPORTED;
    default:
        return IED_ERROR_UNKNOWN;
    
}

}


static ICLogicalDevice*
ICLogicalDevice_create(char* name)
{

    ICLogicalDevice* self = (ICLogicalDevice*) calloc(1, sizeof(struct sICLogicalDevice));

    self->name = copyString(name);

    return self;

}

static void
ICLogicalDevice_setVariableList(ICLogicalDevice* self, LinkedList variables)
{

    self->variables = variables;

}

static void
ICLogicalDevice_setDataSetList(ICLogicalDevice* self, LinkedList dataSets)
{

    self->dataSets = dataSets;

}

static void
ICLogicalDevice_destroy(ICLogicalDevice* self)
{

    free(self->name);

    if (self->variables != NULL)
        LinkedList_destroy(self->variables);

    if (self->dataSets != NULL)
        LinkedList_destroy(self->dataSets);

    free(self);

}

static ClientDataSet
ClientDataSet_create(char* dataSetReference)
{

    ClientDataSet self = (ClientDataSet) calloc(1, sizeof(struct sClientDataSet));

    self->dataSetReference = copyString(dataSetReference);
    StringUtils_replace(self->dataSetReference, '.', '$');

    self->dataSetValues = NULL;

    return self;

}

void
ClientDataSet_destroy(ClientDataSet self)
{

    if (self->dataSetValues != NULL)
        MmsValue_delete(self->dataSetValues);

    free(self->dataSetReference);

    free(self);

}

static void
ClientDataSet_setDataSetValues(ClientDataSet self, MmsValue* dataSetValues)
{

    self->dataSetValues = dataSetValues;

}

MmsValue*
ClientDataSet_getValues(ClientDataSet self)
{

    return self->dataSetValues;

}

char*
ClientDataSet_getReference(ClientDataSet self)
{

    return self->dataSetReference;

}

int
ClientDataSet_getDataSetSize(ClientDataSet self)
{

    if (self->dataSetValues != NULL) {

        return MmsValue_getArraySize(self->dataSetValues);
    
}
    else
        return 0;

}

static bool
doesControlObjectMatch(char* objRef, char* cntrlObj)
{

    int objRefLen = strlen(objRef);

    char* separator = strchr(cntrlObj, '$');

    if (separator == NULL)
        return false;

    int sepLen = separator - cntrlObj;

    if (sepLen >= objRefLen)
        return false;

    if (memcmp(objRef, cntrlObj, sepLen) != 0)
        return false;

    char* cntrlObjName = objRef + sepLen + 1;

    if (separator[1] != 'C')
        return false;
    if (separator[2] != 'O')
        return false;
    if (separator[3] != '$')
        return false;

    char* nextSeparator = strchr(separator + 4, '$');

    if (nextSeparator == NULL)
        return false;

    int cntrlObjNameLen = strlen(cntrlObjName);

    if (cntrlObjNameLen != nextSeparator - (separator + 4))
        return false;

    if (memcmp(cntrlObjName, separator + 4, cntrlObjNameLen) == 0)
        return true;

    return false;

}

static bool
doesReportMatchControlObject(char* domainName, char* itemName, char* objectRef)
{

    int i = 0;

    while (domainName[i] != 0) {

        if (domainName[i] != objectRef[i])
            return false;

        i++;
    
}

    if (objectRef[i] != '/')
        return false;

    // --> LD is equal

    i++;
    int j = 0;

    while (objectRef[i] != '.') {

        if (objectRef[i] != itemName[j])
            return false;
        j++;
        i++;
    
}

    if (itemName[j++] != '$')
        return false;

    // --> LN is equal

    if (itemName[j++] != 'C')
        return false;
    if (itemName[j++] != 'O')
        return false;
    if (itemName[j++] != '$')
        return false;

    // --> FC is ok

    i++;

    while (objectRef[i] != 0) {

        if (itemName[j] == 0)
            return false;

        if (objectRef[i] == '.') {

            if (itemName[j] != '$')
                return false;
        
}
        else {

            if (objectRef[i] != itemName[j])
                return false;
        
}

        i++;
        j++;
    
}

    if (itemName[j++] != '$')
        return false;

    // --> object name is equal

    if (itemName[j++] != 'O')
        return false;
    if (itemName[j++] != 'p')
        return false;
    if (itemName[j++] != 'e')
        return false;
    if (itemName[j++] != 'r')
        return false;
    if (itemName[j++] != 0)
        return false;

    return true;

}

void
handleLastApplErrorMessage(IedConnection self, MmsValue* value)
{

    if (DEBUG_IED_CLIENT)
        printf("DEBUG_IED_CLIENT: received LastApplError\n");

    MmsValue* lastApplError = value;
    MmsValue* cntrlObj = MmsValue_getElement(lastApplError, 0);
    MmsValue* error = MmsValue_getElement(lastApplError, 1);
    //MmsValue* origin = MmsValue_getElement(lastApplError, 2);
    MmsValue* ctlNum = MmsValue_getElement(lastApplError, 3);
    MmsValue* addCause = MmsValue_getElement(lastApplError, 4);
    if (DEBUG_IED_CLIENT)
        printf("DEBUG_IED_CLIENT:  CntrlObj: %s\n", MmsValue_toString(cntrlObj));

    if (DEBUG_IED_CLIENT)
        printf("DEBUG_IED_CLIENT:  ctlNum: %u\n", MmsValue_toUint32(ctlNum));

    if (DEBUG_IED_CLIENT)
        printf("DEBUG_IED_CLIENT:  addCause: %i\n", MmsValue_toInt32(addCause));

    if (DEBUG_IED_CLIENT)
        printf("DEBUG_IED_CLIENT:  error: %i\n", MmsValue_toInt32(error));

    self->lastApplError.ctlNum = MmsValue_toUint32(ctlNum);
    self->lastApplError.addCause = MmsValue_toInt32(addCause);
    self->lastApplError.error = MmsValue_toInt32(error);
    LinkedList control = LinkedList_getNext(self->clientControls);
    while (control != NULL) {

        ControlObjectClient object = (ControlObjectClient) control->data;

        char* objectRef = ControlObjectClient_getObjectReference(object);

        if (doesControlObjectMatch(objectRef, MmsValue_toString(cntrlObj)))
            ControlObjectClient_setLastApplError(object, self->lastApplError);

        control = LinkedList_getNext(control);
    
}

}

static void
informationReportHandler(void* parameter, char* domainName,
        char* variableListName, MmsValue* value, bool isVariableListName)
{

    IedConnection self = (IedConnection) parameter;

    if (DEBUG_IED_CLIENT)
        printf("DEBUG_IED_CLIENT: received information report for %s\n", variableListName);

    if (domainName == NULL) {


        if (isVariableListName) {


            private_IedConnection_handleReport(self, value);
        
}
        else {

            if (strcmp(variableListName, "LastApplError") == 0)
                handleLastApplErrorMessage(self, value);
            else {

                if (DEBUG_IED_CLIENT)
                    printf("IED_CLIENT: Received unknown variable list report for list: %s\n", variableListName);
            
}
        
}
    
}
    else {

        if (DEBUG_IED_CLIENT)
            printf("IED_CLIENT: RCVD CommandTermination for %s/%s\n", domainName, variableListName);

        LinkedList control = LinkedList_getNext(self->clientControls);

        while (control != NULL) {

           ControlObjectClient object = (ControlObjectClient) control->data;

           char* objectRef = ControlObjectClient_getObjectReference(object);

           if (doesReportMatchControlObject(domainName, variableListName, objectRef))
               private_ControlObjectClient_invokeCommandTerminationHandler(object);

           control = LinkedList_getNext(control);
        
}
    
}

    MmsValue_delete(value);

}

IedConnection
IedConnection_create()
{

    IedConnection self = (IedConnection) calloc(1, sizeof(struct sIedConnection));

    self->enabledReports = LinkedList_create();
    self->logicalDevices = NULL;
    self->clientControls = LinkedList_create();

    self->connection = MmsConnection_create();
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 3

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
01.97 kB
.gitattributes483.00 B2014-06-09 23:44
.gitignore2.58 kB2014-06-09 23:44
.travis.yml134.00 B2014-06-09 23:44
CHANGELOG12.04 kB2014-06-09 23:44
CMakeLists.txt3.87 kB2014-06-09 23:44
COPYING34.32 kB2014-06-09 23:44
Makefile5.55 kB2014-06-09 23:44
README.md4.33 kB2014-06-09 23:44
01.97 kB
stack_config.h4.45 kB2014-06-09 23:44
stack_config.h.cmake4.80 kB2014-06-09 23:44
01.97 kB
01.97 kB
CMakeLists.txt333.00 B2014-06-09 23:44
Makefile696.00 B2014-06-09 23:44
beagle_client.c3.00 kB2014-06-09 23:44
beagle_demo.c8.72 kB2014-06-09 23:44
beagle_demo.icd9.32 kB2014-06-09 23:44
beaglebone_leds.c1.02 kB2014-06-09 23:44
beaglebone_leds.h657.00 B2014-06-09 23:44
static_model.c46.48 kB2014-06-09 23:44
static_model.h19.73 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt927.00 B2014-06-09 23:44
Makefile1.06 kB2014-06-09 23:44
01.97 kB
Makefile478.00 B2014-06-09 23:44
goose_publisher_example.c966.00 B2014-06-09 23:44
01.97 kB
CMakeLists.txt549.00 B2014-06-09 23:44
Makefile480.00 B2014-06-09 23:44
goose_subscriber_example.c1.49 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example1.c3.04 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example2.c5.39 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example3.c2.50 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example4.c2.29 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example5.c2.30 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt378.00 B2014-06-09 23:44
Makefile472.00 B2014-06-09 23:44
client_example_files.c2.10 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt402.00 B2014-06-09 23:44
Makefile480.00 B2014-06-09 23:44
client_example_reporting.c4.35 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example1.c1.38 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example2.c1.50 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example3.c703.00 B2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example4.c3.38 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example5.c1.08 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt279.00 B2014-06-09 23:44
Makefile454.00 B2014-06-09 23:44
mms_utility.c2.58 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile498.00 B2014-06-09 23:44
sampleModel_with_dataset.icd7.18 kB2014-06-09 23:44
server_example1.c1.87 kB2014-06-09 23:44
static_model.c39.73 kB2014-06-09 23:44
static_model.h16.46 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile654.00 B2014-06-09 23:44
complexModel.icd13.31 kB2014-06-09 23:44
server_example2.c2.35 kB2014-06-09 23:44
static_model.c92.27 kB2014-06-09 23:44
static_model.h39.48 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile615.00 B2014-06-09 23:44
server_example3.c4.39 kB2014-06-09 23:44
simpleIO_direct_control.icd9.83 kB2014-06-09 23:44
simpleIO_sbo_control.icd11.14 kB2014-06-09 23:44
static_model.c47.26 kB2014-06-09 23:44
static_model.h19.74 kB2014-06-09 23:44
01.97 kB
<SYSTEM.BIN>0.00 B2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile498.00 B2014-06-09 23:44
server_example4.c5.52 kB2014-06-09 23:44
simpleIO_direct_control.icd8.88 kB2014-06-09 23:44
static_model.c45.95 kB2014-06-09 23:44
static_model.h19.61 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile498.00 B2014-06-09 23:44
server_example5.c2.50 kB2014-06-09 23:44
simpleIO_direct_control.icd8.88 kB2014-06-09 23:44
static_model.c45.95 kB2014-06-09 23:44
static_model.h19.61 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt397.00 B2014-06-09 23:44
Makefile514.00 B2014-06-09 23:44
server_example_61400_25.c2.70 kB2014-06-09 23:44
static_model.c108.79 kB2014-06-09 23:44
static_model.h49.56 kB2014-06-09 23:44
wtur.icd13.51 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt361.00 B2014-06-09 23:44
Makefile502.00 B2014-06-09 23:44
mhai_array.icd11.90 kB2014-06-09 23:44
server_example_ca.c3.37 kB2014-06-09 23:44
static_model.c14.83 kB2014-06-09 23:44
static_model.h6.62 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt397.00 B2014-06-09 23:44
Makefile486.00 B2014-06-09 23:44
server_example_config_file.c3.57 kB2014-06-09 23:44
simpleIO_direct_control_goose.icd10.30 kB2014-06-09 23:44
01.97 kB
model.cfg3.18 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt391.00 B2014-06-09 23:44
Makefile512.00 B2014-06-09 23:44
server_example_control.c3.46 kB2014-06-09 23:44
simpleIO_control_tests.icd12.14 kB2014-06-09 23:44
static_model.c95.05 kB2014-06-09 23:44
static_model.h42.74 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt373.00 B2014-06-09 23:44
Makefile478.00 B2014-06-09 23:44
server_example_dynamic.c2.71 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt381.00 B2014-06-09 23:44
Makefile508.00 B2014-06-09 23:44
server_example_goose.c2.46 kB2014-06-09 23:44
simpleIO_direct_control_goose.icd10.48 kB2014-06-09 23:44
static_model.c47.96 kB2014-06-09 23:44
static_model.h19.61 kB2014-06-09 23:44
01.97 kB
common_targets.mk136.00 B2014-06-09 23:44
stack_includes.mk1.03 kB2014-06-09 23:44
target_system.mk3.13 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt8.77 kB2014-06-09 23:44
01.97 kB
array_list.c980.00 B2014-06-09 23:44
array_list.h915.00 B2014-06-09 23:44
buffer_chain.c2.44 kB2014-06-09 23:44
buffer_chain.h1.37 kB2014-06-09 23:44
byte_buffer.c2.41 kB2014-06-09 23:44
byte_buffer.h1.54 kB2014-06-09 23:44
byte_stream.c2.74 kB2014-06-09 23:44
byte_stream.h1.18 kB2014-06-09 23:44
conversions.c5.74 kB2014-06-09 23:44
conversions.h1.25 kB2014-06-09 23:44
libiec61850_common_api.h432.00 B2014-06-09 23:44
libiec61850_platform_includes.h371.00 B2014-06-09 23:44
linked_list.c3.99 kB2014-06-09 23:44
linked_list.h4.28 kB2014-06-09 23:44
map.c3.51 kB2014-06-09 23:44
map.h1.44 kB2014-06-09 23:44
simple_allocator.c1.24 kB2014-06-09 23:44
simple_allocator.h1.13 kB2014-06-09 23:44
string_map.c990.00 B2014-06-09 23:44
string_map.h851.00 B2014-06-09 23:44
string_utilities.c4.21 kB2014-06-09 23:44
string_utilities.h1.80 kB2014-06-09 23:44
doxygen.config40.41 kB2014-06-09 23:44
01.97 kB
DoxygenLayout.xml5.71 kB2014-06-09 23:44
doxygen.css14.61 kB2014-06-09 23:44
doxygen.mod.css14.61 kB2014-06-09 23:44
footer.html717.00 B2014-06-09 23:44
header.html2.02 kB2014-06-09 23:44
libIEC61850_server.png29.26 kB2014-06-09 23:44
mainpage.doxygen4.99 kB2014-06-09 23:44
stylesheet.css19.97 kB2014-06-09 23:44
01.97 kB
goose_publisher.c9.50 kB2014-06-09 23:44
goose_publisher.h1.94 kB2014-06-09 23:44
goose_subscriber.c21.07 kB2014-06-09 23:44
goose_subscriber.h4.45 kB2014-06-09 23:44
iec61850_goose.asn1.58 kB2014-06-09 23:44
01.97 kB
01.97 kB
ethernet.h2.10 kB2014-06-09 23:44
01.97 kB
ethernet_linux.c4.18 kB2014-06-09 23:44
01.97 kB
ethernet_win32.c7.14 kB2014-06-09 23:44
01.97 kB
filesystem.h4.58 kB2014-06-09 23:44
01.97 kB
file_provider_linux.c4.89 kB2014-06-09 23:44
01.97 kB
file_provider_win32.c5.84 kB2014-06-09 23:44
hal.c1.62 kB2014-06-09 23:44
hal.h1.24 kB2014-06-09 23:44
platform_endian.h1.19 kB2014-06-09 23:44
01.97 kB
01.97 kB
socket_linux.c6.86 kB2014-06-09 23:44
socket.h2.12 kB2014-06-09 23:44
01.97 kB
socket_win32.c6.02 kB2014-06-09 23:44
01.97 kB
01.97 kB
thread_linux.c2.38 kB2014-06-09 23:44
thread.h2.47 kB2014-06-09 23:44
01.97 kB
thread_win32.c2.60 kB2014-06-09 23:44
01.97 kB
iec61850_client.h52.76 kB2014-06-09 23:44
01.97 kB
client_control.c15.13 kB2014-06-09 23:44
client_goose_control.c13.83 kB2014-06-09 23:44
client_report.c16.69 kB2014-06-09 23:44
client_report_control.c17.54 kB2014-06-09 23:44
ied_connection.c49.51 kB2014-06-09 23:44
ied_connection_private.h2.54 kB2014-06-09 23:44
01.97 kB
iec61850_common.c6.35 kB2014-06-09 23:44
iec61850_common.h6.58 kB2014-06-09 23:44
01.97 kB
iec61850_server.h23.26 kB2014-06-09 23:44
01.97 kB
client_connection.c2.71 kB2014-06-09 23:44
ied_server.c25.18 kB2014-06-09 23:44
ied_server_private.h2.03 kB2014-06-09 23:44
01.97 kB
control.c40.20 kB2014-06-09 23:44
control.h2.76 kB2014-06-09 23:44
mms_goose.c15.81 kB2014-06-09 23:44
mms_goose.h2.06 kB2014-06-09 23:44
mms_mapping.c59.09 kB2014-06-09 23:44
mms_mapping.h3.60 kB2014-06-09 23:44
mms_mapping_internal.h1.43 kB2014-06-09 23:44
reporting.c59.25 kB2014-06-09 23:44
reporting.h3.53 kB2014-06-09 23:44
01.97 kB
cdc.c37.87 kB2014-06-09 23:44
cdc.h15.62 kB2014-06-09 23:44
config_file_parser.c14.41 kB2014-06-09 23:44
config_file_parser.h1.13 kB2014-06-09 23:44
dynamic_model.c13.85 kB2014-06-09 23:44
dynamic_model.h7.54 kB2014-06-09 23:44
model.c9.45 kB2014-06-09 23:44
model.h8.68 kB2014-06-09 23:44
01.97 kB
01.97 kB
asn1_ber_primitive_value.c2.30 kB2014-06-09 23:44
asn1_ber_primitive_value.h1.46 kB2014-06-09 23:44
ber_decode.c2.89 kB2014-06-09 23:44
ber_decode.h1.34 kB2014-06-09 23:44
ber_encoder.c8.56 kB2014-06-09 23:44
ber_encoder.h2.66 kB2014-06-09 23:44
ber_integer.c5.05 kB2014-06-09 23:44
ber_integer.h2.06 kB2014-06-09 23:44
01.97 kB
acse.c18.09 kB2014-06-09 23:44
acse.h2.70 kB2014-06-09 23:44
01.97 kB
01.97 kB
iso_client_connection.c14.15 kB2014-06-09 23:44
iso_client_connection.h2.71 kB2014-06-09 23:44
01.97 kB
iso_connection_parameters.c2.85 kB2014-06-09 23:44
iso_connection_parameters.h6.42 kB2014-06-09 23:44
01.97 kB
cotp.c15.71 kB2014-06-09 23:44
cotp.h2.27 kB2014-06-09 23:44
01.97 kB
01.97 kB
AccessResult.c7.04 kB2014-06-09 23:44
AccessResult.h1.95 kB2014-06-09 23:44
Address.c2.26 kB2014-06-09 23:44
Address.h1.00 kB2014-06-09 23:44
AlternateAccess.c5.71 kB2014-06-09 23:44
AlternateAccess.h1.59 kB2014-06-09 23:44
AlternateAccessSelection.c14.86 kB2014-06-09 23:44
AlternateAccessSelection.h3.68 kB2014-06-09 23:44
BIT_STRING.c4.45 kB2014-06-09 23:44
BIT_STRING.h824.00 B2014-06-09 23:44
BOOLEAN.c6.17 kB2014-06-09 23:44
BOOLEAN.h891.00 B2014-06-09 23:44
ConcludeRequestPDU.c3.78 kB2014-06-09 23:44
ConcludeRequestPDU.h892.00 B2014-06-09 23:44
ConcludeResponsePDU.c3.81 kB2014-06-09 23:44
ConcludeResponsePDU.h905.00 B2014-06-09 23:44
ConfirmedErrorPDU.c2.25 kB2014-06-09 23:44
ConfirmedErrorPDU.h768.00 B2014-06-09 23:44
ConfirmedRequestPdu.c2.76 kB2014-06-09 23:44
ConfirmedRequestPdu.h815.00 B2014-06-09 23:44
ConfirmedResponsePdu.c2.78 kB2014-06-09 23:44
ConfirmedResponsePdu.h825.00 B2014-06-09 23:44
ConfirmedServiceRequest.c4.24 kB2014-06-09 23:44
ConfirmedServiceRequest.h1.85 kB2014-06-09 23:44
ConfirmedServiceResponse.c4.27 kB2014-06-09 23:44
ConfirmedServiceResponse.h1.88 kB2014-06-09 23:44
Data.c6.45 kB2014-06-09 23:44
Data.h1.74 kB2014-06-09 23:44
DataAccessError.c3.73 kB2014-06-09 23:44
DataAccessError.h1.39 kB2014-06-09 23:44
DataSequence.c1.44 kB2014-06-09 23:44
DataSequence.h783.00 B2014-06-09 23:44
DefineNamedVariableListRequest.c6.49 kB2014-06-09 23:44
DefineNamedVariableListRequest.h1.50 kB2014-06-09 23:44
DefineNamedVariableListResponse.c4.19 kB2014-06-09 23:44
DefineNamedVariableListResponse.h1.04 kB2014-06-09 23:44
DeleteNamedVariableListRequest.c4.95 kB2014-06-09 23:44
DeleteNamedVariableListRequest.h1.66 kB2014-06-09 23:44
DeleteNamedVariableListResponse.c2.55 kB2014-06-09 23:44
DeleteNamedVariableListResponse.h844.00 B2014-06-09 23:44
FloatingPoint.c3.73 kB2014-06-09 23:44
FloatingPoint.h843.00 B2014-06-09 23:44
GeneralizedTime.c14.41 kB2014-06-09 23:44
GeneralizedTime.h2.16 kB2014-06-09 23:44
GetNameListRequest.c4.91 kB2014-06-09 23:44
GetNameListRequest.h1.46 kB2014-06-09 23:44
GetNameListResponse.c3.76 kB2014-06-09 23:44
GetNameListResponse.h1,016.00 B2014-06-09 23:44
GetNamedVariableListAttributesRequest.c4.05 kB2014-06-09 23:44
GetNamedVariableListAttributesRequest.h1.12 kB2014-06-09 23:44
GetNamedVariableListAttributesResponse.c6.58 kB2014-06-09 23:44
GetNamedVariableListAttributesResponse.h1.63 kB2014-06-09 23:44
GetVariableAccessAttributesRequest.c2.23 kB2014-06-09 23:44
GetVariableAccessAttributesRequest.h1.23 kB2014-06-09 23:44
GetVariableAccessAttributesResponse.c3.02 kB2014-06-09 23:44
GetVariableAccessAttributesResponse.h1.02 kB2014-06-09 23:44
INTEGER.c19.92 kB2014-06-09 23:44
INTEGER.h1.97 kB2014-06-09 23:44
Identifier.c3.65 kB2014-06-09 23:44
Identifier.h806.00 B2014-06-09 23:44
IndexRangeSeq.c2.18 kB2014-06-09 23:44
IndexRangeSeq.h716.00 B2014-06-09 23:44
InformationReport.c3.84 kB2014-06-09 23:44
InformationReport.h1.10 kB2014-06-09 23:44
InitRequestDetail.c2.74 kB2014-06-09 23:44
InitRequestDetail.h896.00 B2014-06-09 23:44
InitResponseDetail.c2.77 kB2014-06-09 23:44
InitResponseDetail.h906.00 B2014-06-09 23:44
InitiateErrorPdu.c3.83 kB2014-06-09 23:44
InitiateErrorPdu.h882.00 B2014-06-09 23:44
InitiateRequestPdu.c3.62 kB2014-06-09 23:44
InitiateRequestPdu.h1,021.00 B2014-06-09 23:44
InitiateResponsePdu.c3.66 kB2014-06-09 23:44
InitiateResponsePdu.h1.01 kB2014-06-09 23:44
Integer16.c3.84 kB2014-06-09 23:44
Integer16.h782.00 B2014-06-09 23:44
Integer32.c3.85 kB2014-06-09 23:44
Integer32.h782.00 B2014-06-09 23:44
Integer8.c3.81 kB2014-06-09 23:44
Integer8.h769.00 B2014-06-09 23:44
ListOfVariableSeq.c2.58 kB2014-06-09 23:44
ListOfVariableSeq.h915.00 B2014-06-09 23:44
MMSString.c3.58 kB2014-06-09 23:44
MMSString.h787.00 B2014-06-09 23:44
MmsPdu.c4.98 kB2014-06-09 23:44
MmsPdu.h1.72 kB2014-06-09 23:44
NULL.c3.33 kB2014-06-09 23:44
NULL.h713.00 B2014-06-09 23:44
NativeEnumerated.c5.57 kB2014-06-09 23:44
NativeEnumerated.h897.00 B2014-06-09 23:44
NativeInteger.c5.56 kB2014-06-09 23:44
NativeInteger.h1.07 kB2014-06-09 23:44
OCTET_STRING.c39.24 kB2014-06-09 23:44
OCTET_STRING.h2.53 kB2014-06-09 23:44
ObjectClass.c1.55 kB2014-06-09 23:44
ObjectClass.h1.62 kB2014-06-09 23:44
ObjectName.c4.31 kB2014-06-09 23:44
ObjectName.h1.19 kB2014-06-09 23:44
ParameterSupportOptions.c4.03 kB2014-06-09 23:44
ParameterSupportOptions.h1.37 kB2014-06-09 23:44
ReadRequest.c2.23 kB2014-06-09 23:44
ReadRequest.h800.00 B2014-06-09 23:44
ReadResponse.c3.70 kB2014-06-09 23:44
ReadResponse.h1.16 kB2014-06-09 23:44
RejectPDU.c11.90 kB2014-06-09 23:44
RejectPDU.h4.96 kB2014-06-09 23:44
ScatteredAccessDescription.c4.13 kB2014-06-09 23:44
ScatteredAccessDescription.h1.31 kB2014-06-09 23:44
ServiceError.c8.47 kB2014-06-09 23:44
ServiceError.h6.74 kB2014-06-09 23:44
ServiceSupportOptions.c3.96 kB2014-06-09 23:44
ServiceSupportOptions.h4.88 kB2014-06-09 23:44
StructComponent.c2.23 kB2014-06-09 23:44
StructComponent.h875.00 B2014-06-09 23:44
TimeOfDay.c3.61 kB2014-06-09 23:44
TimeOfDay.h791.00 B2014-06-09 23:44
TypeSpecification.c14.98 kB2014-06-09 23:44
TypeSpecification.h3.05 kB2014-06-09 23:44
UTF8String.c4.63 kB2014-06-09 23:44
UTF8String.h1.27 kB2014-06-09 23:44
UnconfirmedPDU.c1.82 kB2014-06-09 23:44
UnconfirmedPDU.h716.00 B2014-06-09 23:44
UnconfirmedService.c1.67 kB2014-06-09 23:44
UnconfirmedService.h996.00 B2014-06-09 23:44
Unsigned16.c3.87 kB2014-06-09 23:44
Unsigned16.h795.00 B2014-06-09 23:44
Unsigned32.c3.97 kB2014-06-09 23:44
Unsigned32.h794.00 B2014-06-09 23:44
Unsigned8.c3.84 kB2014-06-09 23:44
Unsigned8.h782.00 B2014-06-09 23:44
UtcTime.c3.79 kB2014-06-09 23:44
UtcTime.h765.00 B2014-06-09 23:44
VariableAccessSpecification.c3.63 kB2014-06-09 23:44
VariableAccessSpecification.h1.55 kB2014-06-09 23:44
VariableSpecification.c6.73 kB2014-06-09 23:44
VariableSpecification.h1.76 kB2014-06-09 23:44
VisibleString.c1.95 kB2014-06-09 23:44
VisibleString.h511.00 B2014-06-09 23:44
WriteRequest.c3.57 kB2014-06-09 23:44
WriteRequest.h1.06 kB2014-06-09 23:44
WriteResponse.c3.21 kB2014-06-09 23:44
WriteResponse.h1.24 kB2014-06-09 23:44
asn_SEQUENCE_OF.c880.00 B2014-06-09 23:44
asn_SEQUENCE_OF.h1.47 kB2014-06-09 23:44
asn_SET_OF.c1.67 kB2014-06-09 23:44
asn_SET_OF.h1.65 kB2014-06-09 23:44
asn_application.h1.45 kB2014-06-09 23:44
asn_codecs.h3.35 kB2014-06-09 23:44
asn_codecs_prim.c6.65 kB2014-06-09 23:44
asn_codecs_prim.h1.59 kB2014-06-09 23:44
asn_internal.h3.21 kB2014-06-09 23:44
asn_system.h2.61 kB2014-06-09 23:44
ber_decoder.c7.49 kB2014-06-09 23:44
ber_decoder.h1.92 kB2014-06-09 23:44
ber_tlv_length.c3.70 kB2014-06-09 23:44
ber_tlv_length.h1.50 kB2014-06-09 23:44
ber_tlv_tag.c3.12 kB2014-06-09 23:44
ber_tlv_tag.h1.79 kB2014-06-09 23:44
constr_CHOICE.c27.66 kB2014-06-09 23:44
constr_CHOICE.h1.37 kB2014-06-09 23:44
constr_SEQUENCE.c31.06 kB2014-06-09 23:44
constr_SEQUENCE.h1.49 kB2014-06-09 23:44
constr_SEQUENCE_OF.c5.25 kB2014-06-09 23:44
constr_SEQUENCE_OF.h930.00 B2014-06-09 23:44
constr_SET_OF.c22.54 kB2014-06-09 23:44
constr_SET_OF.h1.04 kB2014-06-09 23:44
constr_TYPE.c1.72 kB2014-06-09 23:44
constr_TYPE.h6.54 kB2014-06-09 23:44
constraints.c2.19 kB2014-06-09 23:44
constraints.h1.92 kB2014-06-09 23:44
der_encoder.c4.91 kB2014-06-09 23:44
der_encoder.h1.82 kB2014-06-09 23:44
per_decoder.c1.49 kB2014-06-09 23:44
per_decoder.h1.16 kB2014-06-09 23:44
per_encoder.c2.17 kB2014-06-09 23:44
per_encoder.h1.26 kB2014-06-09 23:44
per_support.c7.06 kB2014-06-09 23:44
per_support.h3.19 kB2014-06-09 23:44
xer_decoder.c8.51 kB2014-06-09 23:44
xer_decoder.h3.26 kB2014-06-09 23:44
xer_encoder.c1.50 kB2014-06-09 23:44
xer_encoder.h1.66 kB2014-06-09 23:44
xer_support.c5.42 kB2014-06-09 23:44
xer_support.h1.77 kB2014-06-09 23:44
01.97 kB
mms_client_common.c1.57 kB2014-06-09 23:44
mms_client_connection.c53.58 kB2014-06-09 23:44
mms_client_connection.h24.85 kB2014-06-09 23:44
mms_client_files.c17.13 kB2014-06-09 23:44
mms_client_get_namelist.c7.40 kB2014-06-09 23:44
mms_client_get_var_access.c6.49 kB2014-06-09 23:44
mms_client_identify.c3.31 kB2014-06-09 23:44
mms_client_initiate.c5.01 kB2014-06-09 23:44
mms_client_internal.h7.44 kB2014-06-09 23:44
mms_client_named_variable_list.c15.23 kB2014-06-09 23:44
mms_client_read.c20.54 kB2014-06-09 23:44
mms_client_status.c3.38 kB2014-06-09 23:44
mms_client_write.c11.05 kB2014-06-09 23:44
01.97 kB
mms_common.h4.20 kB2014-06-09 23:44
mms_common_internal.h1.55 kB2014-06-09 23:44
mms_common_msg.c21.87 kB2014-06-09 23:44
mms_type_spec.c4.97 kB2014-06-09 23:44
mms_type_spec.h2.28 kB2014-06-09 23:44
mms_types.h2.22 kB2014-06-09 23:44
mms_value.c39.51 kB2014-06-09 23:44
mms_value.h22.04 kB2014-06-09 23:44
mms_value_internal.h1.78 kB2014-06-09 23:44
01.97 kB
mms_access_result.c6.72 kB2014-06-09 23:44
mms_access_result.h1.01 kB2014-06-09 23:44
mms_association_service.c7.98 kB2014-06-09 23:44
mms_device.c1.44 kB2014-06-09 23:44
mms_device_model.h4.19 kB2014-06-09 23:44
mms_domain.c5.16 kB2014-06-09 23:44
mms_file_service.c20.75 kB2014-06-09 23:44
mms_get_namelist_service.c12.09 kB2014-06-09 23:44
mms_get_var_access_service.c10.82 kB2014-06-09 23:44
mms_identify_service.c3.20 kB2014-06-09 23:44
mms_information_report.c9.53 kB2014-06-09 23:44
mms_named_variable_list.c2.82 kB2014-06-09 23:44
mms_named_variable_list.h1.91 kB2014-06-09 23:44
mms_named_variable_list_service.c15.43 kB2014-06-09 23:44
mms_read_service.c20.38 kB2014-06-09 23:44
mms_server.c6.44 kB2014-06-09 23:44
mms_server.h8.12 kB2014-06-09 23:44
mms_server_common.c6.65 kB2014-06-09 23:44
mms_server_connection.c12.13 kB2014-06-09 23:44
mms_server_connection.h3.24 kB2014-06-09 23:44
mms_server_internal.h6.17 kB2014-06-09 23:44
mms_status_service.c3.42 kB2014-06-09 23:44
mms_value_cache.c3.66 kB2014-06-09 23:44
mms_value_cache.h1.24 kB2014-06-09 23:44
mms_write_service.c8.21 kB2014-06-09 23:44
01.97 kB
iso_presentation.c20.85 kB2014-06-09 23:44
iso_presentation.h2.05 kB2014-06-09 23:44
01.97 kB
iso_connection.c17.74 kB2014-06-09 23:44
iso_server.c9.22 kB2014-06-09 23:44
iso_server.h2.95 kB2014-06-09 23:44
iso_server_private.h1.42 kB2014-06-09 23:44
01.97 kB
iso_session.c15.21 kB2014-06-09 23:44
iso_session.h2.10 kB2014-06-09 23:44
01.97 kB
sv.asn1744.00 B2014-06-09 23:44
sv_publisher.c9.39 kB2014-06-09 23:44
01.97 kB
libiec61850-wo-goose.def15.47 kB2014-06-09 23:44
libiec61850.def16.43 kB2014-06-09 23:44
stdbool.h46.00 B2014-06-09 23:44
01.97 kB
01.97 kB
build.sh196.00 B2014-06-09 23:44
build2.sh205.00 B2014-06-09 23:44
complexModel.icd13.00 kB2014-06-09 23:44
genconfig.jar68.45 kB2014-06-09 23:44
genericIO.icd5.19 kB2014-06-09 23:44
genmodel.jar68.37 kB2014-06-09 23:44
inverter3ph.icd6.88 kB2014-06-09 23:44
inverter_with_report.icd10.20 kB2014-06-09 23:44
manifest-dynamic.mf78.00 B2014-06-09 23:44
manifest.mf77.00 B2014-06-09 23:44
sampleModel.icd6.37 kB2014-06-09 23:44
sampleModel_errors.icd6.35 kB2014-06-09 23:44
sampleModel_with_dataset.icd8.12 kB2014-06-09 23:44
simpleIO_direct_control_goose.scd10.48 kB2014-06-09 23:44
01.97 kB
01.97 kB
01.97 kB
01.97 kB
DataAttributeDefinition.java3.52 kB2014-06-09 23:44
DataObjectDefinition.java1.67 kB2014-06-09 23:44
ParserUtils.java3.06 kB2014-06-09 23:44
SclParser.java9.80 kB2014-06-09 23:44
SclParserException.java1.65 kB2014-06-09 23:44
01.97 kB
Communication.java1.58 kB2014-06-09 23:44
ConnectedAP.java2.14 kB2014-06-09 23:44
GSE.java1.83 kB2014-06-09 23:44
GSEAddress.java3.14 kB2014-06-09 23:44
SubNetwork.java1.88 kB2014-06-09 23:44
01.97 kB
AccessPoint.java1.65 kB2014-06-09 23:44
AttributeType.java4.53 kB2014-06-09 23:44
Authentication.java1,002.00 B2014-06-09 23:44
DataAttribute.java5.39 kB2014-06-09 23:44
DataModelNode.java1.06 kB2014-06-09 23:44
DataModelValue.java3.42 kB2014-06-09 23:44
DataObject.java4.04 kB2014-06-09 23:44
DataSet.java1.79 kB2014-06-09 23:44
FunctionalConstraint.java1.58 kB2014-06-09 23:44
FunctionalConstraintData.java2.84 kB2014-06-09 23:44
GSEControl.java2.53 kB2014-06-09 23:44
IED.java2.02 kB2014-06-09 23:44
Log.java1.23 kB2014-06-09 23:44
LogControl.java3.28 kB2014-06-09 23:44
LogicalDevice.java2.25 kB2014-06-09 23:44
LogicalNode.java9.07 kB2014-06-09 23:44
OptionFields.java3.78 kB2014-06-09 23:44
ReportControlBlock.java3.96 kB2014-06-09 23:44
RptEnabled.java558.00 B2014-06-09 23:44
Server.java1.93 kB2014-06-09 23:44
SettingControl.java1.62 kB2014-06-09 23:44
TriggerOptions.java2.73 kB2014-06-09 23:44
01.97 kB
DataAttributeType.java1.69 kB2014-06-09 23:44
DataObjectType.java2.29 kB2014-06-09 23:44
EnumerationType.java3.28 kB2014-06-09 23:44
EnumerationValue.java1.53 kB2014-06-09 23:44
IllegalValueException.java963.00 B2014-06-09 23:44
LogicalNodeType.java1.92 kB2014-06-09 23:44
SclType.java1.45 kB2014-06-09 23:44
TypeDeclarations.java1.90 kB2014-06-09 23:44
01.97 kB
DynamicModelGenerator.java12.71 kB2014-06-09 23:44
StaticModelGenerator.java31.45 kB2014-06-09 23:44
...
Sponsored links

ied_connection.c (1,014.52 kB)

Need 3 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D