📄 lcm_dbg.c
字号:
#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 + -