📄 ier.em.c
字号:
#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 [28];
/* array for all objects in model */
EmaT_Object_Id obj [61];
int
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_PROCESS);
/* create all objects */
obj [0] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [1] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [2] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [3] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [4] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [5] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [6] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [7] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [8] = Ema_Object_Create (model_id, OBJ_ATTR_COMP_VALUE);
obj [9] = Ema_Object_Create (model_id, OBJ_ATTR_COMP_OBJ);
obj [10] = Ema_Object_Create (model_id, OBJ_PR_ATTR_ASSGN);
obj [11] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [12] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [13] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [14] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [15] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [16] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [17] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [18] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [19] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [20] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [21] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [22] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [23] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [24] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [25] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [26] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [27] = Ema_Object_Create (model_id, OBJ_PR_STATE);
obj [28] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [29] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [30] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [31] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [32] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [33] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [34] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [35] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [36] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [37] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [38] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [39] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [40] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [41] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [42] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [43] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [44] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [45] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [46] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [47] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [48] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [49] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [50] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [51] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [52] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [53] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [54] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [55] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [56] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [57] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [58] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [59] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [60] = Ema_Object_Create (model_id, OBJ_PR_POS);
/* set the model level attributes */
/* create and init prg list 'prg_lptr [0]' */
prg_lptr [0] = (Prg_List *)prg_list_create ();
/* create and init prg list 'prg_lptr [1]' */
prg_lptr [1] = (Prg_List *)prg_list_create ();
prg_list_strings_append (prg_lptr [1],
"Packet* pkptr_burst;",
"Packet* pkptr;",
"",
"int sequence_number_ack;",
"int sequence_number_rcv;",
"int source_address;",
"int destination_address;",
"",
"",
"int i,j,k;",
"Route* pk_rptr;",
"Route* p_min_rptr_copy;",
"double start_time;",
"double dtime_time;",
"double cur_time;",
"int subnet_ids[10];",
"int node_ids[20];",
"int num_nodes;",
"int userid;",
"",
"double EXTRA_TIME;",
"int ok_flag;",
"int wavelength_number;",
"int u_id;",
"Objid strm_objid;",
"int jj;",
"int channel_num;",
"double temp_time;",
"double temp_size;",
"int temp_flag_suc;",
"int id_number_temp;",
"int temp_code;",
"",
"",
"",
PRGC_NIL);
/* create and init prg list 'prg_lptr [2]' */
prg_lptr [2] = (Prg_List *)prg_list_create ();
prg_list_strings_append (prg_lptr [2],
"#include <string.h>",
"#include <stdlib.h>",
"#include <header.h>",
"",
"",
"",
"",
"#define PK_IN_STRM 0",
"#define PK_IN_STRM_RETURN 1",
"#define PK_OUT_STRM 1",
"#define PK_OUT_STRM_STORE 0",
"#define MAX_NODES 15",
"",
"",
"#define END_SIM (op_intrpt_type () == OPC_INTRPT_ENDSIM)",
"#define BEG_SIM (op_intrpt_type () == OPC_INTRPT_BEGSIM)",
"#define BURST_ARRIVAL (op_intrpt_type () == OPC_INTRPT_STRM && op_intrpt_strm () == PK_IN_STRM)",
"#define BCP_ARRIVAL (op_intrpt_type () == OPC_INTRPT_STRM && op_intrpt_strm () == PK_IN_STRM_RETURN)",
"#define INTRPT_SELF (op_intrpt_type() == OPC_INTRPT_SELF) ",
"#define INTRPT_REMOTE (op_intrpt_type() == OPC_INTRPT_REMOTE)",
"",
"",
"",
"typedef struct {",
"int source;",
"int destination;",
"int hop_count;",
"int output_link;",
"} ROUTING_TABLE;",
"",
"",
"",
"",
"",
"",
"int node_count = 0; ",
"",
"double pk_size_total_send = 0;",
"int pk_count_total_send = 0;",
"double pk_avg_total_size_send = 0;",
"int subq_count = 6;",
"int gen_count_total_send = 0;",
PRGC_NIL);
/* create and init prg list 'prg_lptr [3]' */
prg_lptr [3] = (Prg_List *)prg_list_create ();
/* create and init prg list 'prg_lptr [4]' */
prg_lptr [4] = (Prg_List *)prg_list_create ();
/* create and init prg list 'prg_lptr [5]' */
prg_lptr [5] = (Prg_List *)prg_list_create ();
/* create and init prg list 'prg_lptr [6]' */
prg_lptr [6] = (Prg_List *)prg_list_create ();
/* create and init prg list 'prg_lptr [7]' */
prg_lptr [7] = (Prg_List *)prg_list_create ();
/* create and init prg list 'prg_lptr [8]' */
prg_lptr [8] = (Prg_List *)prg_list_create ();
/* create and init prg list 'prg_lptr [9]' */
prg_lptr [9] = (Prg_List *)prg_list_create ();
Ema_Model_Attr_Set (model_id,
"state vars", COMP_CONTENTS, prg_lptr [0],
"temp vars", COMP_CONTENTS, prg_lptr [1],
"header block", COMP_CONTENTS, prg_lptr [2],
"function block", COMP_CONTENTS, prg_lptr [3],
"diag block", COMP_CONTENTS, prg_lptr [4],
"termination block", COMP_CONTENTS, prg_lptr [5],
"global stat descs", COMP_INTENDED, EMAC_DISABLED,
"local stat descs", COMP_INTENDED, EMAC_DISABLED,
"child processes", COMP_CONTENTS, prg_lptr [6],
"model comments", COMP_CONTENTS, prg_lptr [7],
"ext fileset", COMP_CONTENTS, prg_lptr [8],
"packet formats", COMP_CONTENTS, prg_lptr [9],
"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],
EMAC_EOL);
Ema_Model_Attr_Set (model_id,
"attribute assignments",COMP_ARRAY_CONTENTS (3), obj [3],
"attribute assignments",COMP_ARRAY_CONTENTS (4), obj [4],
"attribute assignments",COMP_ARRAY_CONTENTS (5), obj [5],
"attribute assignments",COMP_ARRAY_CONTENTS (6), obj [6],
"attribute assignments",COMP_ARRAY_CONTENTS (7), obj [7],
"attribute assignments",COMP_ARRAY_CONTENTS (8), obj [10],
"simulation attributes",COMP_INTENDED, EMAC_DISABLED,
EMAC_EOL);
/* assign attrs for object 'obj [8]' */
Ema_Object_Attr_Set (model_id, obj [8],
"count", COMP_CONTENTS, 1,
"list", COMP_ARRAY_CONTENTS (0), obj [9],
EMAC_EOL);
/* assign attrs for object 'obj [9]' */
/* assign attrs for object 'obj [11]' */
/* create and init prg list 'prg_lptr [10]' */
prg_lptr [10] = (Prg_List *)prg_list_create ();
prg_list_strings_append (prg_lptr [10],
"//扼快泼阑 困茄 霖厚累诀",
"",
"",
"//",
"",
"",
"",
"",
"///////////////////////////////////////////////////////////////////////////////////////",
"///////////////////////////胶纳临傅阑 困茄 霖厚累诀/////////////////////////////",
"///////////////////////////////////////////////////////////////////////////////////////",
"",
"link_num = 0;",
"channel_count1 = 0;",
"for(i = 1; i <= NODE_NUM; i++)",
"{",
" if(i != userid)",
" {",
" // printf(\"userid = %d, i = %d, connect_count = %d\\n\",userid,i,op_topo_connect_count (userid, i,OPC_OBJMTYPE_LINK));",
" if(op_topo_connect_count (userid, i,OPC_OBJMTYPE_LINK)==1)",
" {",
" link_num++;",
" op_ima_obj_attr_get (op_topo_connect (userid, i, OPC_OBJTYPE_LKDUP, 0), \"channel count\", &channel_count1);",
"// printf(\"userid = %d, i = %d, channel_count = %d\\n\",userid,i,channel_count1);",
" }",
" }",
"}",
"",
"//printf(\"%d\\n\",link_num);",
"",
"node_for_schedule.port = (PORT *)malloc(sizeof(PORT )*link_num);",
"",
"for(i = 0; i < link_num; i++)",
"{",
"// printf(\"userid=%d, i=%d, link_num=%d, channel_count=%d\\n\",userid,i,link_num,channel_count1);",
" node_for_schedule.port[i].channel = (CHANNEL *)malloc(sizeof(CHANNEL )*channel_count1);",
" for(j = 0; j < channel_count1; j++)",
" {",
" // printf(\"userid=%d, i=%d, j=%d, link_num=%d, channel_count=%d\\n\",userid,i,j,link_num,channel_count1);",
" node_for_schedule.port[i].channel[j].horizon = 0;",
" node_for_schedule.port[i].channel[j].gab_list = (List *)op_prg_mem_alloc(sizeof(List));",
" node_for_schedule.port[i].channel[j].occupy_list = (List *)op_prg_mem_alloc(sizeof(List));",
" op_prg_list_init(node_for_schedule.port[i].channel[j].gab_list);",
" op_prg_list_init(node_for_schedule.port[i].channel[j].occupy_list);",
" }",
"}",
"",
"",
"j=0;",
"for(i = 1; i <= NODE_NUM; i++)",
"{",
" if(i != userid)",
" {",
" if(op_topo_connect_count (userid, i,OPC_OBJMTYPE_LINK)==1)",
" {",
" node_for_schedule.port[j].next_nodeid = i;",
" j++; ",
" }",
" }",
"}",
"link_count = j;",
"//printf(\"init_rte\\n\");",
"///////////////////////////////////////////////////////////////////////////////////////",
"///////////////////////////胶纳临傅阑 困茄 霖厚累诀 场 /////////////////////////////",
"//////////////////////////////////////////////////////////////////////////////////////",
"",
"//routing table 檬扁拳",
"",
"",
"",
"",
"",
"self_objid = op_id_self();",
"node_objid = op_topo_parent (self_objid);",
"op_ima_obj_attr_get(node_objid, \"user id\", &userid);",
"",
"subnet_objid = op_topo_parent (node_objid);",
"topo_ptr = op_rte_topo_from_objids ();",
"",
"/* create 6 lists for enabled, disabled, links, and nodes */",
"link_enabled_lptr = op_prg_list_create (); ",
"link_disabled_lptr = op_prg_list_create (); ",
"link_non_mesh_lptr = op_prg_list_create (); ",
"call_router_lptr = op_prg_list_create (); ",
"mesh_nd_enabled_lptr = op_prg_list_create (); ",
"mesh_nd_disabled_lptr = op_prg_list_create (); ",
"",
"/* get total number of fixed nodes */",
"num_fixed_nodes = op_topo_object_count (OPC_OBJTYPE_NDFIX);",
"",
"printf(\"num_nodes = %d\\n\",num_fixed_nodes);",
"getchar();",
"/* insert node objid's to different lists */",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -