📄 core.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 [22];
/* array for all objects in model */
EmaT_Object_Id obj [55];
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_TRANS);
obj [24] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [25] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [26] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [27] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [28] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [29] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [30] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [31] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [32] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [33] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [34] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [35] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [36] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [37] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [38] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [39] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [40] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [41] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [42] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [43] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [44] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [45] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [46] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [47] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [48] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [49] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [50] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [51] = Ema_Object_Create (model_id, OBJ_PR_TRANS);
obj [52] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [53] = Ema_Object_Create (model_id, OBJ_PR_POS);
obj [54] = 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 ();
prg_list_strings_append (prg_lptr [0],
"Objid \\self_objid;",
"",
"Objid \\node_objid;",
"",
"Objid \\subnet_objid;",
"",
"int \\userid;",
"",
"ROUTING_TABLE * \\routing_table;",
"",
"NODE \\node_for_schedule;",
"",
"int \\link_num;",
"",
"int \\channel_count;",
"",
"int \\pk_type;",
"",
"Packet * \\pkptr_state;",
"",
"int \\node_num;",
"",
"int \\node_count;",
"",
"Topology* \\topo_objid;",
"",
"int \\temp_strm_num;",
"",
"List * \\s_metrix_list;",
"",
PRGC_NIL);
/* create and init prg list 'prg_lptr [1]' */
prg_lptr [1] = (Prg_List *)prg_list_create ();
prg_list_strings_append (prg_lptr [1],
"int total_node_num = 0;",
"//int node_num = 0;",
"//int link_num = 0;",
"char node_name[20];",
"int i,j,k;",
"Objid node_objid_ptr, link_objid,tx_objid;",
"Route* min_route;",
"int subnet_id_ptr, node_id_ptr;",
"int strm_num, channel_count1, link_count;",
"double pk_size;",
"Objid temp_tx_objid;",
"int cur_port, difference_time, reservation_flag, cur_channel;",
"double d_time, temp_difference_time; ",
"CHANNEL_INFOR * temp_channel_infor;",
"int temp_outstrm_num,cur_por,temp_occupy_count;",
"int output_strm;",
"int pkptr_type;",
"Objid temp_src_objid, temp_dest_objid;",
"Route_Set* temp_routeset;",
"Route* temp_min_route;",
"int temp_userid, temp_flag_tx;",
"double next_stime;",
"Ici* temp_ici;",
"S_METRIX *temp_s_metrix;",
"int intrupt_strum,temp_flag_success,temp_flag_loop;",
"Packet* s_metrix_pkptr;",
"",
"",
"",
"",
"",
"",
"",
"Packet* pkptr_burst;",
"Packet* pkptr;",
"",
"int source_address;",
"int destination_address;",
"",
"",
"",
"Route* pk_rptr;",
"double start_time;",
"double dtime_time;",
"double cur_time;",
"int subnet_ids[10];",
"int node_ids[20];",
"int num_nodes;",
"",
"",
"double EXTRA_TIME;",
"Objid strm_objid;",
"int jj;",
"int channel_num;",
"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 CONTORL_ACCESS 0",
"#define SUBQ_INDEX_0 0",
"#define SUBQ_INDEX_1 1",
"#define SUBQ_INDEX_2 2",
"#define SUBQ_INDEX_3 3",
"#define SUBQ_INDEX_4 4",
"#define SUBQ_INDEX_5 5",
"",
"",
"#define END_SIM (op_intrpt_type () == OPC_INTRPT_ENDSIM)",
"#define BEG_SIM (op_intrpt_type () == OPC_INTRPT_BEGSIM)",
"#define DATA_RECIEVE (op_intrpt_type() == OPC_INTRPT_STRM && op_intrpt_strm() != 0) ",
"#define S_M_INIT (op_intrpt_type() == OPC_INTRPT_SELF && op_intrpt_code()== 0)",
"//#define S_M_UPDATE (op_intrpt_type() == OPC_INTRPT_STAT)",
"#define S_M_UPDATE (op_intrpt_type() == OPC_INTRPT_STRM && op_intrpt_strm() == 0)",
"",
"//start of sturct for routing table",
"typedef struct {",
"int source;",
"int destination;",
"int hop_count;",
"Objid output_link;",
"int strm_control;",
"//int strm_data;",
"} ROUTING_TABLE;",
"//end of sturct for routing table",
"",
"typedef struct {",
"double s_time;",
"double d_time;",
"int input_strum;",
"int output_strum;",
"} S_METRIX;",
"",
"",
"",
"typedef struct {",
" double start_time; //offset time",
" double duration_time; // duration time of burst",
" int source;",
" int destination;",
" int outstrm_num;",
" int instrm_num;",
"} CHANNEL_INFOR;",
"",
"typedef struct ",
"{",
" double horizon;",
" List * gab_list;",
" List * occupy_list;",
"} CHANNEL;",
"",
"typedef struct ",
"{",
" CHANNEL * channel;",
" int next_nodeid;",
" Objid tx_objid;",
"} PORT;",
"",
"typedef struct ",
"{",
" PORT * port;",
"} NODE;",
"",
"",
"//int node_num = 0;",
"//int node_count = 0; ",
"",
"//double PDTime_CC = 0.001;",
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],
" //start of conform the node id",
"self_objid = op_id_self ();",
"node_objid = op_topo_parent (self_objid);",
"subnet_objid = op_topo_parent (node_objid);",
"topo_objid = op_rte_topo_from_objids();",
"",
"",
"//op_ima_obj_attr_set (node_objid, \"user id\", h_node_count++); ",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -