constr_SEQUENCE.c ( File view )

  • By lizhaoping1@163.com 2014-09-03
  • View(s):161
  • Download(s):9
  • Point(s): 3
			/*-
 * Copyright (c) 2003, 2004, 2005, 2006 Lev Walkin <vlm@lionet.info>.
 * All rights reserved.
 * Redistribution and modifications are permitted subject to BSD license.
 */
#include <asn_internal.h>
#include <constr_SEQUENCE.h>

/*
 * Number of bytes left for this structure.
 * (ctx->left) indicates the number of bytes _transferred_ for the structure.
 * (size) contains the number of bytes in the buffer passed.
 */
#define	LEFT	((size<(size_t)ctx->left)?size:(size_t)ctx->left)

/*
 * If the subprocessor function returns with an indication that it wants
 * more data, it may well be a fatal decoding problem, because the
 * size is constrained by the <TLV>'s L, even if the buffer size allows
 * reading more data.
 * For example, consider the buffer containing the following TLVs:
 * <T:5><L:1><V> <T:6>...
 * The TLV length clearly indicates that one byte is expected in V, but
 * if the V processor returns with "want more data" even if the buffer
 * contains way more data than the V processor have seen.
 */
#define	SIZE_VIOLATION	(ctx->left >= 0 && (size_t)ctx->left <= size)

/*
 * This macro "eats" the part of the buffer which is definitely "consumed",
 * i.e. was correctly converted into local representation or rightfully skipped.
 */
#undef	ADVANCE
#define	ADVANCE(num_bytes)	do {
		\
		size_t num = num_bytes;		\
		ptr = ((const char *)ptr) + num;\
		size -= num;			\
		if(ctx->left >= 0)		\
			ctx->left -= num;	\
		consumed_myself += num;		\
	
} while(0)

/*
 * Switch to the next phase of parsing.
 */
#undef	NEXT_PHASE
#undef	PHASE_OUT
#define	NEXT_PHASE(ctx)	do {
			\
		ctx->phase++;			\
		ctx->step = 0;			\
	
} while(0)
#define	PHASE_OUT(ctx)	do {
 ctx->phase = 10; 
} while(0)

/*
 * Return a standardized complex structure.
 */
#undef	RETURN
#define	RETURN(_code)	do {
			\
		rval.code = _code;		\
		rval.consumed = consumed_myself;\
		return rval;			\
	
} while(0)

/*
 * Check whether we are inside the extensions group.
 */
#define	IN_EXTENSION_GROUP(specs, memb_idx)	\
	( ((memb_idx) > (specs)->ext_after)	\
	&&((memb_idx) < (specs)->ext_before))


/*
 * Tags are canonically sorted in the tag2element map.
 */
static int
_t2e_cmp(const void *ap, const void *bp) {

	const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap;
	const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp;

	int a_class = BER_TAG_CLASS(a->el_tag);
	int b_class = BER_TAG_CLASS(b->el_tag);

	if(a_class == b_class) {

		ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag);
		ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag);

		if(a_value == b_value) {

			if(a->el_no > b->el_no)
				return 1;
			/*
			 * Important: we do not check
			 * for a->el_no <= b->el_no!
			 */
			return 0;
		
} else if(a_value < b_value)
			return -1;
		else
			return 1;
	
} else if(a_class < b_class) {

		return -1;
	
} else {

		return 1;
	
}

}


/*
 * The decoder of the SEQUENCE type.
 */
asn_dec_rval_t
SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {

	/*
	 * Bring closer parts of structure description.
	 */
	asn_SEQUENCE_specifics_t *specs = (asn_SEQUENCE_specifics_t *)td->specifics;
	asn_TYPE_member_t *elements = td->elements;

	/*
	 * Parts of the structure being constructed.
	 */
	void *st = *struct_ptr;	/* Target structure. */
	asn_struct_ctx_t *ctx;	/* Decoder context */

	ber_tlv_tag_t tlv_tag;	/* T from TLV */
	asn_dec_rval_t rval;	/* Return code from subparsers */

	ssize_t consumed_myself = 0;	/* Consumed bytes from ptr */
	int edx;			/* SEQUENCE element's index */

	ASN_DEBUG("Decoding %s as SEQUENCE", td->name);
	
	/*
	 * Create the target structure if it is not present already.
	 */
	if(st == 0) {

		st = *struct_ptr = CALLOC(1, specs->struct_size);
		if(st == 0) {

			RETURN(RC_FAIL);
		
}
	
}

	/*
	 * Restore parsing context.
	 */
	ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset);
	
	/*
	 * Start to parse where left previously
	 */
	switch(ctx->phase) {

	case 0:
		/*
		 * PHASE 0.
		 * Check that the set of tags associated with given structure
		 * perfectly fits our expectations.
		 */

		rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size,
			tag_mode, 1, &ctx->left, 0);
		if(rval.code != RC_OK) {

			ASN_DEBUG("%s tagging check failed: %d",
				td->name, rval.code);
			return rval;
		
}

		if(ctx->left >= 0)
			ctx->left += rval.consumed; /* ?Substracted below! */
		ADVANCE(rval.consumed);

		NEXT_PHASE(ctx);

		ASN_DEBUG("Structure consumes %ld bytes, buffer %ld",
			(long)ctx->left, (long)size);

		/* Fall through */
	case 1:
		/*
		 * PHASE 1.
		 * From the place where we've left it previously,
		 * try to decode the next member from the list of
		 * this structure's elements.
		 * (ctx->step) stores the member being processed
		 * between invocations and the microphase {
0,1
} of parsing
		 * that member:
		 * 	step = (<member_number> * 2 + <microphase>).
		 */
	  for(edx = (ctx->step >> 1); edx < td->elements_count;
			edx++, ctx->step = (ctx->step & ~1) + 2) {

		void *memb_ptr;		/* Pointer to the member */
		void **memb_ptr2;	/* Pointer to that pointer */
		ssize_t tag_len;	/* Length of TLV's T */
		int opt_edx_end;	/* Next non-optional element */
		int use_bsearch;
		int n;

		if(ctx->step & 1)
			goto microphase2;

		/*
		 * MICROPHASE 1: Synchronize decoding.
		 */
		ASN_DEBUG("In %s SEQUENCE left %d, edx=%d flags=%d"
				" opt=%d ec=%d",
			td->name, (int)ctx->left, edx,
			elements[edx].flags, elements[edx].optional,
			td->elements_count);

		if(ctx->left == 0	/* No more stuff is expected */
		&& (
			/* Explicit OPTIONAL specification reaches the end */
			(edx + elements[edx].optional
					== td->elements_count)
			||
			/* All extensions are optional */
			(IN_EXTENSION_GROUP(specs, edx)
				&& specs->ext_before > td->elements_count)
		   )
		) {

			ASN_DEBUG("End of SEQUENCE %s", td->name);
			/*
			 * Found the legitimate end of the structure.
			 */
			PHASE_OUT(ctx);
			RETURN(RC_OK);
		
}

		/*
		 * Fetch the T from TLV.
		 */
		tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag);
		ASN_DEBUG("Current tag in %s SEQUENCE for element %d "
			"(%s) is %s encoded in %d bytes, of frame %ld",
			td->name, edx, elements[edx].name,
			ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT);
		switch(tag_len) {

		case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
			/* Fall through */
		case -1: RETURN(RC_FAIL);
		
}

		if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {

			if(LEFT < 2) {

				if(SIZE_VIOLATION)
					RETURN(RC_FAIL);
				else
					RETURN(RC_WMORE);
			
} else if(((const uint8_t *)ptr)[1] == 0) {

			ASN_DEBUG("edx = %d, opt = %d, ec=%d",
				edx, elements[edx].optional,
				td->elements_count);
				if((edx + elements[edx].optional
					== td->elements_count)
				|| (IN_EXTENSION_GROUP(specs, edx)
					&& specs->ext_before
						> td->elements_count)) {

					/*
					 * Yeah, baby! Found the terminator
					 * of the indefinite length structure.
					 */
					/*
					 * Proceed to the canonical
					 * finalization function.
					 * No advancing is necessary.
					 */
					goto phase3;
				
}
			
}
		
}

		/*
		 * Find the next available type with this tag.
		 */
		use_bsearch = 0;
		opt_edx_end = edx + elements[edx].optional + 1;
		if(opt_edx_end > td->elements_count)
			opt_edx_end = td->elements_count;	/* Cap */
		else if(opt_edx_end - edx > 8) {

			/* Limit the scope of linear search... */
			opt_edx_end = edx + 8;
			use_bsearch = 1;
			/* ... and resort to bsearch() */
		
}
		for(n = edx; n < opt_edx_end; n++) {

			if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) {

				/*
				 * Found element corresponding to the tag
				 * being looked at.
				 * Reposition over the right element.
				 */
				edx = n;
				ctx->step = 1 + 2 * edx;	/* Remember! */
				goto microphase2;
			
} else if(elements[n].flags & ATF_OPEN_TYPE) {

				/*
				 * This is the ANY type, which may bear
				 * any flag whatsoever.
				 */
				edx = n;
				ctx->step = 1 + 2 * edx;	/* Remember! */
				goto microphase2;
			
} else if(elements[n].tag == (ber_tlv_tag_t)-1) {

				use_bsearch = 1;
				break;
			
}
		
}
		if(use_bsearch) {

			/*
			 * Resort to a binary search over
			 * sorted array of tags.
			 */
			asn_TYPE_tag2member_t *t2m;
			asn_TYPE_tag2member_t key;
			key.el_tag = tlv_tag;
			key.el_no = edx;
			t2m = (asn_TYPE_tag2member_t *)bsearch(&key,
				specs->tag2el, specs->tag2el_count,
				sizeof(specs->tag2el[0]), _t2e_cmp);
			if(t2m) {

				asn_TYPE_tag2member_t *best = 0;
				asn_TYPE_tag2member_t *t2m_f, *t2m_l;
				int edx_max = edx + elements[edx].optional;
				/*
				 * Rewind to the first element with that tag,
				 * `cause bsearch() does not guarantee order.
				 */
				t2m_f = t2m + t2m->toff_first;
				t2m_l = t2m + t2m->toff_last;
				for(t2m = t2m_f; t2m <= t2m_l; t2m++) {

					if(t2m->el_no > edx_max) break;
					if(t2m->el_no < edx) continue;
					best = t2m;
				
}
				if(best) {

					edx = best->el_no;
					ctx->step = 1 + 2 * edx;
					goto microphase2;
				
}
			
}
			n = opt_edx_end;
		
}
		if(n == opt_edx_end) {

			/*
			 * If tag is unknown, it may be either
			 * an unknown (thus, incorrect) tag,
			 * or an extension (...),
			 * or an end of the indefinite-length structure.
			 */
			if(!IN_EXTENSION_GROUP(specs, edx)) {

				ASN_DEBUG("Unexpected tag %s (at %d)",
					ber_tlv_tag_string(tlv_tag), edx);
				ASN_DEBUG("Expected tag %s (%s)%s",
					ber_tlv_tag_string(elements[edx].tag),
					elements[edx].name,
					elements[edx].optional
						?" or alternatives":"");
				RETURN(RC_FAIL);
			
} else {

				/* Skip this tag */
				ssize_t skip;

				skip = ber_skip_length(opt_codec_ctx,
					BER_TLV_CONSTRUCTED(ptr),
					(const char *)ptr + tag_len,
					LEFT - tag_len);
				ASN_DEBUG("Skip length %d in %s",
					(int)skip, td->name);
				switch(skip) {

				case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
					/* Fall through */
				case -1: RETURN(RC_FAIL);
				
}

				ADVANCE(skip + tag_len);
				ctx->step -= 2;
				edx--;
				continue;  /* Try again with the next tag */
			
}
		
}

		/*
		 * MICROPHASE 2: Invoke the member-specific decoder.
		 */
		ctx->step |= 1;		/* Confirm entering next microphase */
	microphase2:
		ASN_DEBUG("Inside SEQUENCE %s MF2", td->name);
		
		/*
		 * Comp
...
...
(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

constr_SEQUENCE.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