#include <opnet.h>
#include <ema.h>
#include <opnet_emadefs.h>
#include <opnet_constants.h>



/* array for all textlist attributes in model */
Prg_List*		prg_lptr [2];

/* array for all objects in model */
EmaT_Object_Id		obj [5];



main (int argc, char* argv [])
	{
	EmaT_Model_Id			model_id;
	int					i;

	/* initialize EMA package */
	Ema_Init (EMAC_MODE_ERR_PRINT, argc, argv);

	/* create an empty model */
	model_id = Ema_Model_Create (MOD_NODE);



	/* create all objects */
	obj [0] = Ema_Object_Create (model_id, OBJ_ND_ATTR_ASSGN);
	obj [1] = Ema_Object_Create (model_id, OBJ_ND_ATTR_ASSGN);
	obj [2] = Ema_Object_Create (model_id, OBJ_ND_ATTR_ASSGN);
	obj [3] = Ema_Object_Create (model_id, OBJ_ND_ATTR_ASSGN);
	obj [4] = Ema_Object_Create (model_id, OBJ_ND_ATTR_ASSGN);




	/* set the model level attributes */
	/* create and init prg list 'prg_lptr [0]' */
	prg_lptr [0] = prg_list_create ();
	/* create and init prg list 'prg_lptr [1]' */
	prg_lptr [1] = prg_list_create ();
	Ema_Model_Attr_Set (model_id,
		"stat intf descs",      COMP_INTENDED, EMAC_DISABLED,
		"interface descriptions",COMP_INTENDED, EMAC_DISABLED,
		"attribute assignments",COMP_ARRAY_CONTENTS (0), obj [0],
		"attribute assignments",COMP_ARRAY_CONTENTS (1), obj [1],
		"attribute assignments",COMP_ARRAY_CONTENTS (2), obj [2],
		"attribute assignments",COMP_ARRAY_CONTENTS (3), obj [3],
		"attribute assignments",COMP_ARRAY_CONTENTS (4), obj [4],
		"model comments",       COMP_CONTENTS, prg_lptr [0],
		"keywords",             COMP_CONTENTS, prg_lptr [1],
		"fixed icon",           COMP_CONTENTS, "fixed_comm",
		"mobile icon",          COMP_CONTENTS, "mobile_comm",
		"satellite icon",       COMP_CONTENTS, "sat_comm",
		EMAC_EOL);



	/* assign attrs for object 'obj [0]' */
	Ema_Object_Attr_Set (model_id, obj [0], 
		"name",                 COMP_CONTENTS, "altitude",
		"operation",            COMP_CONTENTS, 2,
		"value",                COMP_CONTENTS_TYPE, EMAC_DOUBLE,
		"value",                COMP_CONTENTS, (double) 0,
		"value",                COMP_INTENDED, EMAC_DISABLED,
		"type",                 COMP_CONTENTS, 1,
		EMAC_EOL);


	/* assign attrs for object 'obj [1]' */
	Ema_Object_Attr_Set (model_id, obj [1], 
		"name",                 COMP_CONTENTS, "condition",
		"operation",            COMP_CONTENTS, 2,
		"value",                COMP_CONTENTS_TYPE, EMAC_TOGGLE,
		"value",                COMP_TOGGLE,   EMAC_ENABLED,
		"value",                COMP_INTENDED, EMAC_DISABLED,
		"type",                 COMP_CONTENTS, 2,
		EMAC_EOL);


	/* assign attrs for object 'obj [2]' */
	Ema_Object_Attr_Set (model_id, obj [2], 
		"name",                 COMP_CONTENTS, "phase",
		"operation",            COMP_CONTENTS, 2,
		"value",                COMP_CONTENTS_TYPE, EMAC_DOUBLE,
		"value",                COMP_CONTENTS, (double) 0,
		"value",                COMP_INTENDED, EMAC_DISABLED,
		"type",                 COMP_CONTENTS, 1,
		EMAC_EOL);


	/* assign attrs for object 'obj [3]' */
	Ema_Object_Attr_Set (model_id, obj [3], 
		"name",                 COMP_CONTENTS, "priority",
		"operation",            COMP_CONTENTS, 2,
		"value",                COMP_CONTENTS_TYPE, EMAC_INTEGER,
		"value",                COMP_CONTENTS, 0,
		"value",                COMP_INTENDED, EMAC_DISABLED,
		"type",                 COMP_CONTENTS, 0,
		EMAC_EOL);


	/* assign attrs for object 'obj [4]' */
	Ema_Object_Attr_Set (model_id, obj [4], 
		"name",                 COMP_CONTENTS, "user id",
		"operation",            COMP_CONTENTS, 2,
		"value",                COMP_CONTENTS_TYPE, EMAC_INTEGER,
		"value",                COMP_CONTENTS, 0,
		"value",                COMP_INTENDED, EMAC_DISABLED,
		"type",                 COMP_CONTENTS, 0,
		EMAC_EOL);








	/* write the model to application-readable form */
	Ema_Model_Write (model_id, "unnamed");

	}

