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

📄 lcm_dbg.c

📁 abstract rtos
💻 C
📖 第 1 页 / 共 2 页
字号:
#ifdef __cplusplusextern "C"{#endif #include "syscfg.h"#include "aos.h"#include "../ker/ssp_msg.h"#include "../ker/ssp_debug.h"#include "lcm_q921.h"#include "lcm_if.h"#define LCM_UI_FRAME_TEST 0#define LCM_I_FRAME_TEST 1extern U32 dbg_drvtype,dbg_dltype;U32 lcm_eff_test_finished = 1;VOID lcm_l2_msg_constructor( struct dbg_l2_msg_s *l2msgp ){    MSG_HEAD_S *msgp;    Q921_FRAME_S *framep;    struct msg_blk *newmb;    L2_LINK_S *linkp;    S8 *direct_string;    U8 slot,subc;	U32 recv_portno;    U8 l2cmd[]={_SABME,_DM,_DISC,_UA,_FRMR,_RR,_RNR,_REJ };    AOS_ASSERT( NULL != l2msgp );        if( l2msgp->primitive >= sizeof(l2cmd)/sizeof(U8) )    {        return;    }    if( l2msgp->c_r > DBG_USER_RESPONE )    {        return;    }    linkp = lcm_get_link_cb( l2msgp->drv_type, l2msgp->link_type, l2msgp->portno );    if( NULL == linkp )    {		aos_printf( MPE_DEBUG,"Debug:lcm_l2_msg_constructor fail,can't get linkp" );    	return;    }    direct_string = (0==l2msgp->send_or_recv)?"Tx":"Rv";    newmb = msg_alloc();    if( NULL == newmb )    {        return;    }    msgp = (MSG_HEAD_S*)aos_dmem_alloc( MPE_DEBUG, 2, sizeof( MSG_HEAD_S ) );    if( NULL == msgp )    {    	msg_free(newmb);        return;    }    newmb->head = (VOID*)msgp;    newmb->truelen  = sizeof( MSG_HEAD_S );    newmb->end  = newmb->head + newmb->truelen;        newmb->data = (VOID*)&msgp->EFAddr;    if( 0 == l2msgp->frame_type )    {                   newmb->len  = U_FRAME_LEN;    }    else    {                newmb->len  = S_FRAME_LEN;            }    newmb->tail = newmb->data+newmb->len;    framep = (Q921_FRAME_S*)newmb->data;        framep->ef_addr = linkp->ef_addr;        framep->frm.u_frame.sapi = linkp->sapi;    framep->frm.u_frame.c_r  = DBG_CONVERT_C_R(l2msgp->c_r);    framep->frm.u_frame.ea_0 = 0;    framep->frm.u_frame.tei  = linkp->tei;    framep->frm.u_frame.ea_1 = 1;        if( 0 == l2msgp->frame_type )    {                framep->frm.info[2] = l2cmd[l2msgp->primitive];        framep->frm.u_frame.p_f = l2msgp->p_f;        aos_printf( MPE_DEBUG,"Debug:Constructor to %s u frame,phy=%s,dl=%s,sapi=%d,tei=%d,cmd=%s,c/r=%d,p/f=%d",            direct_string,            PHY_STRING(linkp->phy_type),DL_STRING(linkp->link_type),framep->frm.u_frame.sapi,            framep->frm.u_frame.tei,            cmd_string(l2cmd[l2msgp->primitive]),            framep->frm.u_frame.c_r,framep->frm.u_frame.p_f );    }    else    {                framep->frm.info[2] = l2cmd[l2msgp->primitive];        framep->frm.s_frame.n_r = l2msgp->n_r;        framep->frm.s_frame.p_f = l2msgp->p_f;        aos_printf( MPE_DEBUG,"Debug:Constructor to %s s frame,phy=%s,dl=%s,sapi=%d,tei=%d,cmd=%s,c/r=%d,p/f=%d,n(r)=%d",            direct_string,            PHY_STRING(linkp->phy_type),DL_STRING(linkp->link_type),framep->frm.s_frame.sapi,            framep->frm.s_frame.tei,            cmd_string(l2cmd[l2msgp->primitive]),            framep->frm.s_frame.c_r,framep->frm.s_frame.p_f,framep->frm.s_frame.n_r );    }    if( 0 == l2msgp->send_or_recv )    {        LCM_CUT_EFADDR_AND_SEND(linkp,newmb);    }    else    {    	if( LCM_DRV_ETH == linkp->phy_type )    	{    		    		framep->ef_addr = AOS_HTONS((U16)newmb->len);	        dev_get_slot_subc_by_processorid( linkp->phy_port_no, &slot, &subc);			recv_portno = ((U16)subc<<8)|slot ;		}	    else 	    {			if( LCM_DRV_HDLC != linkp->phy_type )			{    	        	            msg_pull( newmb, sizeof(U16) );			}			recv_portno = linkp->phy_port_no;	    }        lcm_recv_phy_data( linkp->phy_type, recv_portno , newmb );    }    }VOID lcm_debug_proc(DEBUG_MSG_S *pDebugMsg){    U32       cmd, i;    L2_LINK_S *linkp;    S8        errString[33]={0,};        cmd    = pDebugMsg->ulCmd;        switch( cmd )    {    	        case 1:            {                U32 tmp_drvtype,tmp_dltype;                tmp_drvtype = pDebugMsg->ulPara1;                tmp_dltype  = pDebugMsg->ulPara2;                if( tmp_drvtype >= LCM_DRV_BUTT )                {                    aos_printf( MPE_LCM, "drvtype=%d,too large", tmp_drvtype );                    break;                }                if( NULL == m_links[tmp_drvtype] )                {                    aos_printf( MPE_LCM, "link is null" );                    break;                }                                    if( LCM_DRV_HDLC == tmp_drvtype )                {                    if( tmp_dltype >= V5DL_ID_ISDN )                    {                        aos_printf( MPE_LCM, "dltype=%d invalid", tmp_dltype );                        break;                    }                }                else if( V5DL_ID_DEV_MNGT != tmp_dltype )                {                    aos_printf( MPE_LCM, "dltype=%d invalid", tmp_dltype );                    break;                }                dbg_drvtype = tmp_drvtype;                dbg_dltype  = tmp_dltype;                aos_printf( MPE_LCM, "set dbg drvtype=%s,dltype=%s",                	PHY_STRING(dbg_drvtype),DL_STRING(dbg_dltype) );            }               break;    	        case 2:            {                linkp = lcm_get_link_cb( dbg_drvtype, dbg_dltype, pDebugMsg->ulPara1 );                if( NULL == linkp )                {                	aos_printf( MPE_LCM, "cant get linkp");                	break;                }                aos_printf( MPE_LCM, "link status:phy=%s,portno=%d,dl=%s status=%s,"                    "sapi=%d, tei=%d, v_s=%d, v_a=%d, v_r=%d, rc=%d,i_frm_que_len=%u",                    PHY_STRING(linkp->phy_type),linkp->phy_port_no,DL_STRING(linkp->link_type),                    STATUS_STRING(linkp->status),                    linkp->sapi,linkp->tei,linkp->v_s,linkp->v_a,linkp->v_r,linkp->rc,                    linkp->i_frame_q.qlen );                error_string( linkp->error_code, errString );                aos_printf( MPE_LCM, "own cmd=%d,own rsp=%d peer busy=%d own busy=%d ack pend=%d rej=%d,errcode=0x%x,errString=%s,prntflg=0x%x,discard=%u",                    linkp->own_cmd,linkp->own_resp,linkp->peer_rcv_busy,linkp->own_rcv_busy,                    linkp->ack_pending,linkp->rej_exception, linkp->error_code, errString,linkp->print_flag, linkp->discard_pkt );            }            break;    	        case 3:            linkp = lcm_get_link_cb( dbg_drvtype, dbg_dltype, pDebugMsg->ulPara1 );            if( NULL == linkp )            {            	aos_printf( MPE_LCM, "cant get linkp");            	break;            }            if( 0 == pDebugMsg->ulPara2 )            {            	linkp->print_flag = LCM_MNGT_PRINT_FLAG|LCM_L2_PRINT_FLAG|LCM_L3_PRINT_FLAG|LCM_ERROR_PRINT_FLAG;            }            else            {	            linkp->print_flag |= pDebugMsg->ulPara2;            }            aos_printf( MPE_LCM, "Set printf flag to 0X%X of drvtype=%s,dltype=%s,portno=%d",                 	linkp->print_flag, PHY_STRING(dbg_drvtype),                 	DL_STRING(dbg_dltype), pDebugMsg->ulPara1 );        	        	break;    	        case 4:            linkp = lcm_get_link_cb( dbg_drvtype, dbg_dltype, pDebugMsg->ulPara1 );            if( NULL == linkp )            {            	aos_printf( MPE_LCM, "cant get linkp");            	break;            }            if( 0 == pDebugMsg->ulPara2 )            {	            linkp->print_flag = 0;            }            else            {	            linkp->print_flag &= ~pDebugMsg->ulPara2;            }                        aos_printf( MPE_LCM, "Clear printf flag to 0X%X of drvtype=%s,dltype=%s,portno=%d",                 	linkp->print_flag, PHY_STRING(dbg_drvtype),                 	DL_STRING(dbg_dltype), pDebugMsg->ulPara1 );                    	break;        case 10:        case 11:            {                MSG_S msg;                LCM_EFFICIENT_MSG_S *pTestMsg;                U32 high;                aos_printf( MPE_LCM, "start lcm efficient test,between processor %d & %d,count=%d",                            pDebugMsg->ulPara1,pDebugMsg->ulPara2,pDebugMsg->ulPara3 );

⌨️ 快捷键说明

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