📄 gpr_route_layer_queue.pr.c
字号:
/*---------------------------------------------------------*/
/** 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 + -