⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpr_route_layer_queue.pr.c

📁 opnetadhoc自组网络源码
💻 C
📖 第 1 页 / 共 2 页
字号:
				/*---------------------------------------------------------*/



			/** state (idle) enter executives **/
			FSM_STATE_ENTER_UNFORCED (2, "idle", state2_enter_exec, "gpr_route_layer_queue [idle enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [idle enter execs], state2_enter_exec)
				{
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [idle enter execs], state2_enter_exec)

			/** blocking after enter executives of unforced state. **/
			FSM_EXIT (5,"gpr_route_layer_queue")


			/** state (idle) exit executives **/
			FSM_STATE_EXIT_UNFORCED (2, "idle", "gpr_route_layer_queue [idle exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [idle exit execs], state2_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [idle exit execs], state2_exit_exec)


			/** state (idle) transition processing **/
			FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [idle trans conditions], state2_trans_conds)
			FSM_INIT_COND (UPPER_LAYER_ARRIVAL)
			FSM_TEST_COND (MAC_LAYER_ARRIVAL)
			FSM_TEST_COND (NA_RCV)
			FSM_TEST_COND (ROUTE_UPDATE)
			FSM_TEST_COND (NA_TIMER)
			FSM_TEST_COND (CNSB_TIMER)
			FSM_TEST_COND (PROBE_TIMER)
			FSM_TEST_COND (NS_TIMER)
			FSM_DFLT_COND
			FSM_TEST_LOGIC ("idle")
			FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [idle trans conditions], state2_trans_conds)

			FSM_TRANSIT_SWITCH
				{
				FSM_CASE_TRANSIT (0, 3, state3_enter_exec, ;, "UPPER_LAYER_ARRIVAL", "", "idle", "Up_Arrv")
				FSM_CASE_TRANSIT (1, 4, state4_enter_exec, ;, "MAC_LAYER_ARRIVAL", "", "idle", "MAC_Arrv")
				FSM_CASE_TRANSIT (2, 5, state5_enter_exec, ;, "NA_RCV", "", "idle", "NA_Arrv")
				FSM_CASE_TRANSIT (3, 6, state6_enter_exec, ;, "ROUTE_UPDATE", "", "idle", "FWD")
				FSM_CASE_TRANSIT (4, 7, state7_enter_exec, ;, "NA_TIMER", "", "idle", "Send_NA")
				FSM_CASE_TRANSIT (5, 8, state8_enter_exec, ;, "CNSB_TIMER", "", "idle", "Send_Cnrb")
				FSM_CASE_TRANSIT (6, 9, state9_enter_exec, ;, "PROBE_TIMER", "", "idle", "Probe")
				FSM_CASE_TRANSIT (7, 10, state10_enter_exec, ;, "NS_TIMER", "", "idle", "NS")
				FSM_CASE_TRANSIT (8, 2, state2_enter_exec, ;, "default", "", "idle", "idle")
				}
				/*---------------------------------------------------------*/



			/** state (Up_Arrv) enter executives **/
			FSM_STATE_ENTER_FORCED (3, "Up_Arrv", state3_enter_exec, "gpr_route_layer_queue [Up_Arrv enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Up_Arrv enter execs], state3_enter_exec)
				{
				///////////////////////////////////////////////////////////////
				// UPPER_LAYER_ARRIVAL
				//
				// Processed when some data from the upper layer are received 
				///////////////////////////////////////////////////////////////
				
				Ici* ici_dest_address;
				
				
				int destination_gpr_address;
				// extract the packet from the stream coming from the upper layer
				pk_ptr = op_pk_get(FROM_UPPER_LAYER_STRM);
				
				// extract the dsr address of the packet destination from the ici associated strm intrpt
				ici_dest_address = op_intrpt_ici();
				op_ici_attr_get(ici_dest_address,"GPR_Destination",&destination_gpr_address);
				
				
				// breakpoint for debugging purpose
				if (1)
					{
					op_prg_odb_bkpt("ztl_down");
					}
				
				// call the transmit data function
				//
				upper_layer_data_arrival(pk_ptr, destination_gpr_address);
				
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Up_Arrv enter execs], state3_enter_exec)

			/** state (Up_Arrv) exit executives **/
			FSM_STATE_EXIT_FORCED (3, "Up_Arrv", "gpr_route_layer_queue [Up_Arrv exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Up_Arrv exit execs], state3_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Up_Arrv exit execs], state3_exit_exec)


			/** state (Up_Arrv) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "Up_Arrv", "idle")
				/*---------------------------------------------------------*/



			/** state (MAC_Arrv) enter executives **/
			FSM_STATE_ENTER_FORCED (4, "MAC_Arrv", state4_enter_exec, "gpr_route_layer_queue [MAC_Arrv enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [MAC_Arrv enter execs], state4_enter_exec)
				{
				///////////////////////////////////////////////////////////////
				// MAC_LAYER_ARRIVAL
				//
				// Processed when a packet from the MAC layer is received
				///////////////////////////////////////////////////////////////
				
				// extract the packet from the stream coming from the mac layer
				pk_ptr=op_pk_get(FROM_MAC_LAYER_STRM);
				
				// if the received packet is within transmission range
				
					// it is processing depending of its type
				
					op_pk_nfd_get(pk_ptr,"Type",&packet_type);
					switch(packet_type)
						{
						case DATA_PACKET_TYPE:
							GPR_message("I have just received a data packet\n"); 
							// call the dsr_handle_data function for data packet
							mac_data_arrival(pk_ptr);
							break;
						
						}
				
					
				
					  	// breakpoint for debugging purpose
						if (1)
						{
							op_prg_odb_bkpt("ztl_up");
						}
				
				// if the packet is outside the transmission range
				else 
					{
					// it is not processed and destroyed
					op_pk_destroy(pk_ptr);
					}
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [MAC_Arrv enter execs], state4_enter_exec)

			/** state (MAC_Arrv) exit executives **/
			FSM_STATE_EXIT_FORCED (4, "MAC_Arrv", "gpr_route_layer_queue [MAC_Arrv exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [MAC_Arrv exit execs], state4_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [MAC_Arrv exit execs], state4_exit_exec)


			/** state (MAC_Arrv) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "MAC_Arrv", "idle")
				/*---------------------------------------------------------*/



			/** state (NA_Arrv) enter executives **/
			FSM_STATE_ENTER_FORCED (5, "NA_Arrv", state5_enter_exec, "gpr_route_layer_queue [NA_Arrv enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [NA_Arrv enter execs], state5_enter_exec)
				{
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [NA_Arrv enter execs], state5_enter_exec)

			/** state (NA_Arrv) exit executives **/
			FSM_STATE_EXIT_FORCED (5, "NA_Arrv", "gpr_route_layer_queue [NA_Arrv exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [NA_Arrv exit execs], state5_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [NA_Arrv exit execs], state5_exit_exec)


			/** state (NA_Arrv) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "NA_Arrv", "idle")
				/*---------------------------------------------------------*/



			/** state (FWD) enter executives **/
			FSM_STATE_ENTER_FORCED (6, "FWD", state6_enter_exec, "gpr_route_layer_queue [FWD enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [FWD enter execs], state6_enter_exec)
				{
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [FWD enter execs], state6_enter_exec)

			/** state (FWD) exit executives **/
			FSM_STATE_EXIT_FORCED (6, "FWD", "gpr_route_layer_queue [FWD exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [FWD exit execs], state6_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [FWD exit execs], state6_exit_exec)


			/** state (FWD) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "FWD", "idle")
				/*---------------------------------------------------------*/



			/** state (Send_NA) enter executives **/
			FSM_STATE_ENTER_FORCED (7, "Send_NA", state7_enter_exec, "gpr_route_layer_queue [Send_NA enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Send_NA enter execs], state7_enter_exec)
				{
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Send_NA enter execs], state7_enter_exec)

			/** state (Send_NA) exit executives **/
			FSM_STATE_EXIT_FORCED (7, "Send_NA", "gpr_route_layer_queue [Send_NA exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Send_NA exit execs], state7_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Send_NA exit execs], state7_exit_exec)


			/** state (Send_NA) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "Send_NA", "idle")
				/*---------------------------------------------------------*/



			/** state (Send_Cnrb) enter executives **/
			FSM_STATE_ENTER_FORCED (8, "Send_Cnrb", state8_enter_exec, "gpr_route_layer_queue [Send_Cnrb enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Send_Cnrb enter execs], state8_enter_exec)
				{
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Send_Cnrb enter execs], state8_enter_exec)

			/** state (Send_Cnrb) exit executives **/
			FSM_STATE_EXIT_FORCED (8, "Send_Cnrb", "gpr_route_layer_queue [Send_Cnrb exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Send_Cnrb exit execs], state8_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Send_Cnrb exit execs], state8_exit_exec)


			/** state (Send_Cnrb) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "Send_Cnrb", "idle")
				/*---------------------------------------------------------*/



			/** state (Probe) enter executives **/
			FSM_STATE_ENTER_FORCED (9, "Probe", state9_enter_exec, "gpr_route_layer_queue [Probe enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Probe enter execs], state9_enter_exec)
				{
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Probe enter execs], state9_enter_exec)

			/** state (Probe) exit executives **/
			FSM_STATE_EXIT_FORCED (9, "Probe", "gpr_route_layer_queue [Probe exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [Probe exit execs], state9_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [Probe exit execs], state9_exit_exec)


			/** state (Probe) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "Probe", "idle")
				/*---------------------------------------------------------*/



			/** state (NS) enter executives **/
			FSM_STATE_ENTER_FORCED (10, "NS", state10_enter_exec, "gpr_route_layer_queue [NS enter execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [NS enter execs], state10_enter_exec)
				{
				}

				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [NS enter execs], state10_enter_exec)

			/** state (NS) exit executives **/
			FSM_STATE_EXIT_FORCED (10, "NS", "gpr_route_layer_queue [NS exit execs]")
				FSM_PROFILE_SECTION_IN (gpr_route_layer_queue [NS exit execs], state10_exit_exec)
				{
				}
				FSM_PROFILE_SECTION_OUT (gpr_route_layer_queue [NS exit execs], state10_exit_exec)


			/** state (NS) transition processing **/
			FSM_TRANSIT_FORCE (2, state2_enter_exec, ;, "default", "", "NS", "idle")
				/*---------------------------------------------------------*/



			}


		FSM_EXIT (0,"gpr_route_layer_queue")
		}
	}




void
gpr_route_layer_queue_diag (OP_SIM_CONTEXT_ARG_OPT)
	{
	/* No Diagnostic Block */
	}




void
gpr_route_layer_queue_terminate (OP_SIM_CONTEXT_ARG_OPT)
	{

#if !defined (VOSD_NO_FIN)
	int _op_block_origin = __LINE__;
#endif

	FIN_MT (gpr_route_layer_queue_terminate ())

	Vos_Poolmem_Dealloc_MT (OP_SIM_CONTEXT_THREAD_INDEX_COMMA pr_state_ptr);

	FOUT
	}


/* Undefine shortcuts to state variables to avoid */
/* syntax error in direct access to fields of */
/* local variable prs_ptr in gpr_route_layer_queue_svar function. */
#undef my_module_id
#undef my_node_id
#undef my_mac_address
#undef my_gpr_address
#undef my_group_id
#undef GP_route_cache
#undef my_name

#undef FIN_PREAMBLE_DEC
#undef FIN_PREAMBLE_CODE

#define FIN_PREAMBLE_DEC
#define FIN_PREAMBLE_CODE

VosT_Obtype
gpr_route_layer_queue_init (int * init_block_ptr)
	{

#if !defined (VOSD_NO_FIN)
	int _op_block_origin = 0;
#endif
	VosT_Obtype obtype = OPC_NIL;
	FIN_MT (gpr_route_layer_queue_init (init_block_ptr))

	Vos_Define_Object (&obtype, "proc state vars (gpr_route_layer_queue)",
		sizeof (gpr_route_layer_queue_state), 0, 20);
	*init_block_ptr = 0;

	FRET (obtype)
	}

VosT_Address
gpr_route_layer_queue_alloc (VOS_THREAD_INDEX_ARG_COMMA VosT_Obtype obtype, int init_block)
	{

#if !defined (VOSD_NO_FIN)
	int _op_block_origin = 0;
#endif
	gpr_route_layer_queue_state * ptr;
	FIN_MT (gpr_route_layer_queue_alloc (obtype))

	ptr = (gpr_route_layer_queue_state *)Vos_Alloc_Object_MT (VOS_THREAD_INDEX_COMMA obtype);
	if (ptr != OPC_NIL)
		ptr->_op_current_block = init_block;
	FRET ((VosT_Address)ptr)
	}



void
gpr_route_layer_queue_svar (void * gen_ptr, const char * var_name, void ** var_p_ptr)
	{
	gpr_route_layer_queue_state		*prs_ptr;

	FIN_MT (gpr_route_layer_queue_svar (gen_ptr, var_name, var_p_ptr))

	if (var_name == OPC_NIL)
		{
		*var_p_ptr = (void *)OPC_NIL;
		FOUT
		}
	prs_ptr = (gpr_route_layer_queue_state *)gen_ptr;

	if (strcmp ("my_module_id" , var_name) == 0)
		{
		*var_p_ptr = (void *) (&prs_ptr->my_module_id);
		FOUT
		}
	if (strcmp ("my_node_id" , var_name) == 0)
		{
		*var_p_ptr = (void *) (&prs_ptr->my_node_id);
		FOUT
		}
	if (strcmp ("my_mac_address" , var_name) == 0)
		{
		*var_p_ptr = (void *) (&prs_ptr->my_mac_address);
		FOUT
		}
	if (strcmp ("my_gpr_address" , var_name) == 0)
		{
		*var_p_ptr = (void *) (&prs_ptr->my_gpr_address);
		FOUT
		}
	if (strcmp ("my_group_id" , var_name) == 0)
		{
		*var_p_ptr = (void *) (&prs_ptr->my_group_id);
		FOUT
		}
	if (strcmp ("GP_route_cache" , var_name) == 0)
		{
		*var_p_ptr = (void *) (&prs_ptr->GP_route_cache);
		FOUT
		}
	if (strcmp ("my_name" , var_name) == 0)
		{
		*var_p_ptr = (void *) (&prs_ptr->my_name);
		FOUT
		}
	*var_p_ptr = (void *)OPC_NIL;

	FOUT
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -