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

📄 bs_fsm.c

📁 wimax bs模拟器
💻 C
📖 第 1 页 / 共 2 页
字号:
{
    int i;
    int j;

    for (i=0; i<BS_FSM_NUM_STATES; i++)
    {
        printf("State %s\n", gp_str_bs_fsm_state[i]);
        for (j=0; j<BS_FSM_NUM_EVENTS; j++)
        {
            printf("\tEvent %s:\t\t%ld\n", gp_str_bs_fsm_event[j], ga_bs_fsm_stat[i][j]);
        }
    }
    return 0;
}

int bs_fsm_clear_stat()
{
    int i;
    int j;

    for (i=0; i<BS_FSM_NUM_STATES; i++)
    {
        for (j=0; j<BS_FSM_NUM_EVENTS; j++)
        {
            ga_bs_fsm_stat[i][j] = 0;
        }
    }
    return 0;
}

int bs_fsm_help()
{
    printf("bs_fsm_show_stat, show FSM stat.\n");
    printf("bs_fsm_clear_stat, clear FSM stat.\n");
    printf("bs_fsm_show_state_name, show FSM state name.\n");
    printf("bs_fsm_show_event_name, show FSM event name. \n");
    printf("bs_fsm_show_state_event_relation, show FSM state event relation.\n");
    return 0;
}

int bs_fsm_entry(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg, int i_state, int i_event)
{
    if ((i_state < 1) 
	    && (i_state > BS_FSM_NUM_STATES)
	    && (i_event < 1)
	    && (i_event > BS_FSM_NUM_EVENTS))
    {
        return ERROR;
    }

    ga_bs_fsm_stat[i_state-1][i_event-1]++;

    switch (ga_bs_fsm_matrix[(i_state-1) * BS_FSM_NUM_EVENTS + i_event -1].i_attribute)
    {
    case BS_FSM_NORMAL:
        printf("%s, %s, NORMAL\n", gp_str_bs_fsm_state[i_state - 1], gp_str_bs_fsm_event[i_event - 1]);
	BS_UeCtxtCheck(__FUNCTION__,__LINE__);
        ga_bs_fsm_matrix[(i_state-1) * BS_FSM_NUM_EVENTS + i_event -1].fsm_routine(pUeCtxt, pR64Msg);
	BS_UeCtxtCheck(__FUNCTION__,__LINE__);
        break;

    case BS_FSM_ABNORMAL:
        printf("%s, %s, ABNORMAL\n", gp_str_bs_fsm_state[i_state - 1], gp_str_bs_fsm_event[i_event - 1]);
	BS_UeCtxtCheck(__FUNCTION__,__LINE__);
        ga_bs_fsm_matrix[(i_state-1) * BS_FSM_NUM_EVENTS + i_event -1].fsm_routine(pUeCtxt, pR64Msg);
	BS_UeCtxtCheck(__FUNCTION__,__LINE__);
        break;

    case BS_FSM_ERROR:
        printf("%s, %s, ERROR\n", gp_str_bs_fsm_state[i_state - 1], gp_str_bs_fsm_event[i_event - 1]);
	BS_UeCtxtCheck(__FUNCTION__,__LINE__);
        break;

    }
    return SUCCESS;
}

/*****************************************************************************/
/******************** State BSFS_NULL Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_NULL_event_BSFE_INIT_CALL(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return InitNbcProcedure(pUeCtxt);
}

/*****************************************************************************/
/******************** State BSFS_SBC_NEGOTIATING Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_SBC_NEGOTIATING_event_BSFE_SBC_ENTRY_STATE_CHANGE_RESP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handleGwNwEntryStateChangeRsp(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_SBC_NEGOTIATING_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_SBC_NEGOTIATING_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    reSendNWEntryStateChange(pUeCtxt);
    return SUCCESS;
}

/*****************************************************************************/
/******************** State BSFS_EAP_INITIATE Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_EAP_INITIATE_event_BSFE_EAP_IDENTITY_REQ(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handleGwEapReq(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_INITIATE_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_INITIATE_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handle_bs_err (pUeCtxt);
}

/*****************************************************************************/
/******************** State BSFS_EAP_START Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_EAP_START_event_BSFE_EAP_IDENTITY_REQ(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handleGwEapReq(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_START_event_BSFE_EAP_MESSAGE(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handleGwEapMsg(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_START_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_START_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    reSendEapRsp(pUeCtxt);
    return SUCCESS;
}

/*****************************************************************************/
/******************** State BSFS_EAP_PENDING Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_EAP_PENDING_event_BSFE_EAP_MESSAGE(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handleGwEapMsg(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_PENDING_event_BSFE_EAP_CTXT_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handleGwEapCtxtRep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_PENDING_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_PENDING_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    reSendEapMsgRsp(pUeCtxt);
    return SUCCESS;
}

/*****************************************************************************/
/******************** State BSFS_EAP_COMPLETE Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_EAP_COMPLETE_event_BSFE_REG_ENTRY_STATE_CHANGE_RESP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handle_reg_entry_state_change_resp (pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_COMPLETE_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_EAP_COMPLETE_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    send_reg_entry_state_change_req(pUeCtxt);
    return SUCCESS;
}

/*****************************************************************************/
/******************** State BSFS_MS_REG_PENDING Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_MS_REG_PENDING_event_BSFE_DP_REG_REQ(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handle_dp_reg_req (pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_MS_REG_PENDING_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_MS_REG_PENDING_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handle_bs_err (pUeCtxt);
}

/*****************************************************************************/
/******************** State BSFS_DP_EST_PENDING Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_DP_EST_PENDING_event_BSFE_DP_REG_REQ(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handle_dp_reg_req (pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_DP_EST_PENDING_event_BSFE_DP_REG_ACK(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handle_dp_reg_ack (pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_DP_EST_PENDING_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_DP_EST_PENDING_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    send_dp_reg_resp (pUeCtxt);
    return SUCCESS;
}

/*****************************************************************************/
/******************** State BSFS_DATA_TRANSFER Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_DATA_TRANSFER_event_BSFE_INIT_DEREG(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return init_ms_dereg (pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_DATA_TRANSFER_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

/*****************************************************************************/
/******************** State BSFS_DP_DEREG_START Process Function *********************/
/*****************************************************************************/
int bs_fsm_state_BSFS_DP_DEREG_START_event_BSFE_DP_DEREG_RESP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{

    return handle_dp_dereg_resp (pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_DP_DEREG_START_event_BSFE_ERR_REP(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    return handle_err_ctxt_rep(pUeCtxt, pR64Msg);
}

int bs_fsm_state_BSFS_DP_DEREG_START_event_BSFE_TIME_OUT(St_BsUeCtxt *pUeCtxt, R64_MSG_S * pR64Msg)
{
    send_dp_dereg_req (pUeCtxt);
    return SUCCESS;
}

⌨️ 快捷键说明

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