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

📄 lcm_q921.h

📁 abstract rtos
💻 H
字号:
#ifdef __cplusplusextern "C"{#endif #ifndef __INC_LCM_Q921_H__#define __INC_LCM_Q921_H__#undef LCM_DEBUG#define MDL_ERROR_REPORT #define SAPI_0              0  #define SAPI_63             63 #define BROADCAST_TEI     127#define N200              3#define T200_LEN          1000 #define T203_LEN          10000#define DEFAULT_CCITT_K   7#define MOD_NUM           128#define MOD_MASK        (128-1)#define Q921_SID_UFRAME 0#define Q921_SID_SFRAME 1#define Q921_SID_IFRAME 2#define     NET_CMD           1#define     NET_ACK           0#define     USER_CMD          0#define     USER_ACK          1#define PEER_CMD NET_CMD#define OWN_CMD USER_CMD#define OWN_ACK USER_ACK#define ACK_PENDING               0x00#define LCM_EFFICIENT_TEST        0x10#define LCM_EFFICIENT_TEST_ACK    0x11#define TRANS_V5_MSG_TO_LE 0xA0#define TRANS_V5_MSG_TO_AN 0xA1#define Q921_ERR_A (1)       #define Q921_ERR_B (1<<1)    #define Q921_ERR_C (1<<2)    #define Q921_ERR_D (1<<3)    #define Q921_ERR_E (1<<4)    #define Q921_ERR_F (1<<5)    #define Q921_ERR_G (1<<6)    #define Q921_ERR_H (1<<7)    #define Q921_ERR_I (1<<8)    #define Q921_ERR_J (1<<9)    #define Q921_ERR_K (1<<10)   #define Q921_ERR_L (1<<11)   #define Q921_ERR_M (1<<12)   #define Q921_ERR_N (1<<13)   #define Q921_ERR_O (1<<14)   #define Q921_ERR_P (1<<15)   #define SET_L3_INITED(linkp) (linkp->own_l3_init = 1)#define CLEAR_L3_INITED(linkp) (linkp->own_l3_init = 0)#define SET_PEER_RCV_BUSY(linkp) ( linkp->peer_rcv_busy = 1 )#define CLEAR_PEER_RCV_BUSY(linkp) ( linkp->peer_rcv_busy = 0 )#define SET_ACK_PENDING(linkp) ( linkp->ack_pending = 1 )#define CLEAR_ACK_PENDING(linkp) ( linkp->ack_pending = 0 )#define SET_REJ_EXCEPTION(linkp) ( linkp->rej_exception = 1 )#define CLEAR_REJ_EXCEPTION(linkp) ( linkp->rej_exception = 0 )#define CLEAR_EXCEPTION_COND( linkp )\\do{\    linkp->peer_rcv_busy = 0;\    linkp->rej_exception = 0;\    linkp->own_rcv_busy  = 0;\    linkp->ack_pending   = 0;\}while(0)#define IS_NR_CORRECT(linkp, n_r ) \((linkp->v_a <= linkp->v_s)?\(linkp->v_a <= n_r && n_r <= linkp->v_s):\(linkp->v_a <= n_r) || (n_r <= linkp->v_s ) )#define SET_LINK_STATUS(linkp, s)\\do\{\	if(LCM_PRINT_L2_MSG(linkp))\	{\    aos_printf( MPE_LCM,"q921:link(phy=%s,portno=%d,dl=%s) status change from %s to %s",\                PHY_STRING(linkp->phy_type),\                linkp->phy_port_no,\                DL_STRING(linkp->link_type),\                STATUS_STRING(linkp->status),\                STATUS_STRING(s) );\	}\    linkp->status = s;\}while(0)#if( CONFIG_BOARD_GMPU == TRUE && AOS_INCLUDE_SERVICE_V5 == TRUE)#define LCM_TRACE_L3_MSG( pDlMsg, direction )\\do\{\    if( TRACE_V5_L3_EXIST() )\    {\        TRACE_V5L3_PARAMS_S trace_filter;\        U32                 l3_addr;\        U8                  phyC, v5no;\        if(v5_get_v5no_phyc_l3_by_msg(pDlMsg,&v5no,&phyC,&l3_addr) )\        {\            trace_filter.ulPhyCNo       = phyC;\            trace_filter.ulProtocolType = pDlMsg->ucV5DLType;\            trace_filter.ulV5No         = v5no;\            trace_filter.ulL3Addr       = l3_addr;\            trace_v5_l3( &trace_filter, direction, pDlMsg->ucInfo, \                         pDlMsg->usLength-ELEMENT_OFFSET(DL_MSG_S,ucInfo) );\        }\    }\}while(0)#define LCM_TRACE_L2_MSG( mb, commport, dircetion )\\do\{\    if( TRACE_V5_L2_EXIST() )\    {\        TRACE_V5L2_PARAMS_S trace_filter;\        Q921_FRAME_S       *framep;\        if( dev_mpu_card_is_master() )\        {\            framep = (Q921_FRAME_S*)mb->data;\            trace_filter.ulCommPort = commport;\            trace_filter.ulDLType   = get_link_type(framep->frm.u_frame.tei);\            trace_v5_l2_by_phyc_dltype( &trace_filter, dircetion, mb->data, mb->len );\        }\    }\}while(0)#else#define LCM_TRACE_L3_MSG( pDlMsg, direction )#define LCM_TRACE_L2_MSG( mb, commport, dircetion )#endif#define _I_COMMAND                  0    #define _RR                         0x01 #define _RNR                        0x05 #define _REJ                        0x09 #define _SABME                      0x6f #define _DM                         0x0f #define _UI                         0x03 #define _DISC                       0x43 #define _UA                         0x63 #define _FRMR                       0x87 #define _XID                        0xaf #define _ERR_CMD                     0x100#define _ERR_FRAME                   0x101#define _ERR_EA0                     0x102#define _ERR_EA1                     0x103#define _ERR_EF_ZERO                 0x104#define _ERR_FRAME_TOO_LONG          0x105#define _ERR_C_R                     0x106#define _ERR_UNKNOWN_FRAME           0x107#define P_0 0#define P_1 1#define F_0 0#define F_1 1#define     PSTN_EF_ADDR                    ((U16)8176)#define     CTRL_EF_ADDR                    ((U16)8177)#define     BCC_EF_ADDR                     ((U16)8178)#define     PROT_EF_ADDR                    ((U16)8179)#define     LCTRL_EF_ADDR                   ((U16)8180)#define     DEV_EF_ADDR                     ((U16)8181)#define     EFADDR_LO( word )       ( ( BYTE ) ( word & 0x007f ) )#define     EFADDR_HI( word )       ( ( BYTE ) ( ( word & 0x1f80 ) >> 7 ) )#define PSTN_TEI    112#define CTRL_TEI    113#define BCC_TEI     114#define PROT_TEI    115#define LCTRL_TEI   116#define DEV_TEI     117#define PRI_TEI     0 #define IS_I_FRAME( framep ) (!framep->frm.i_frame.zero)#define IS_U_FRAME( framep ) (framep->frm.u_frame.bit11==3)#define IS_S_FRAME( framep ) (framep->frm.s_frame.bit01==1)#define I_FRAME_LEN 6 #define U_FRAME_LEN 5 #define S_FRAME_LEN 6 #define FILL_EF_ADDR( to, ef_addr )\\do\{    \    EF_ADDR_S temp;\    temp.s.ef_hi = EF_ADDR_HIGH( ef_addr );\    temp.s.zero   = 0;\    temp.s.ea_0  = 0;\    temp.s.ef_lo = EF_ADDR_LOW( ef_addr );\    temp.s.ea_1  = 1;\    to = temp.ef;\}while(0)#define LINK_EF_ADDR(dl_type) \( V5DL_ID_PSTN==(dl_type)?PSTN_EF_ADDR:\  V5DL_ID_BCC==(dl_type)?BCC_EF_ADDR:\  V5DL_ID_CTRL==(dl_type)?CTRL_EF_ADDR:\  V5DL_ID_LINKC==(dl_type)?LCTRL_EF_ADDR:\  V5DL_ID_PROT1==(dl_type)?PROT_EF_ADDR:\  V5DL_ID_PROT2==(dl_type)?PROT_EF_ADDR:\  V5DL_ID_DEV_MNGT==(dl_type)?DEV_EF_ADDR:0 )  #define PHY_STRING(phy) ((phy)<LCM_DRV_BUTT?phy_string[phy]:"UnknownDrv")#define DL_STRING(l) ((l)< V5DL_ID_BUTT?dl_string[l]:"UnknownDL")#define PRIM_STRING(prim) ((prim)<LCM_PRIM_BUTT?prim_string[prim]:"UnknownPrim")#define STATUS_STRING(s) ((s)<LINK_STATUS_BUTT?status_string[s]:"UnknownStatus")#define LCM_MNGT_PRINT_FLAG  1#define LCM_L2_PRINT_FLAG    2#define LCM_L3_PRINT_FLAG    4#define LCM_ERROR_PRINT_FLAG 8#define LCM_PRINT_MNGT(linkp) ( LCM_MNGT_PRINT_FLAG & linkp->print_flag )#define LCM_PRINT_L2_MSG(linkp) ( LCM_L2_PRINT_FLAG & linkp->print_flag )#define LCM_PRINT_L3_MSG(linkp) ( LCM_L3_PRINT_FLAG & linkp->print_flag )#define LCM_PRINT_ERROR_IND(linkp) ( LCM_ERROR_PRINT_FLAG & linkp->print_flag )enum enLcmTimerName{  Q921_T200,  Q921_T203,  LCM_TIMER_BUTT};typedef enum link_status{    AWAITING_ESTABLISHMENT = 5,    AWAITING_RELEASE,    MULTIPLE_FRAME_ESTABLISHED,    TIMER_RECOVERY,    LINK_NOT_ESTABLISHED,    LINK_STATUS_BUTT}LINK_STATUS;#define EF_ADDR_HIGH( addr ) ( (U8)( ( (addr) & 0x1f80 ) >> 7 ) )#define EF_ADDR_LOW( addr )  ( (U8)( (addr) & 0x7f ) )#if( CONFIG_OS_WINDOWS == TRUE )#pragma pack(push,1)#elif( CONFIG_OS_VXWORKS == TRUE )#pragma pack(1)#endif#if( CONDIF_BIG_ENDIAN == TRUE )typedef union ef_addr_s{    U16 ef;    struct    {        U8 ef_hi:6;        U8 zero:1;        U8 ea_0:1;        U8 ef_lo:7;        U8 ea_1:1;    }s;}EF_ADDR_S;typedef struct u_frame_s{        U8    sapi:6;    U8    c_r:1;    U8    ea_0:1;    U8    tei:7;    U8    ea_1:1;                U8    mmm:3;    U8    p_f:1;    U8    mm:2;    U8    bit11:2;    U8    info[N201];}U_FRAME_S;typedef struct s_frame_s{        U8  sapi:6;    U8  c_r:1;    U8  ea_0:1;    U8  tei:7;    U8  ea_1:1;        U8  xxxx:4;    U8  ss:2;    U8  bit01:2;    U8  n_r:7;    U8  p_f:1;    U8  info[N201];}S_FRAME_S;typedef struct i_frame_s{        U8    sapi:6;    U8    c_r:1;    U8    ea_0:1;    U8    tei:7;    U8    ea_1:1;        U8    n_s:7;    U8    zero:1;    U8    n_r:7;    U8    p_f:1;    U8    info[N201];    }I_FRAME_S;#elsetypedef union ef_addr_s{    U16 ef;    struct    {        U8 ea_0:1;        U8 zero:1;        U8 ef_hi:6;                U8 ea_1:1;                U8 ef_lo:7;    }s;}EF_ADDR_S;typedef struct u_frame_s{        U8    ea_0:1;    U8    c_r:1;    U8    sapi:6;    U8    ea_1:1;    U8    tei:7;            U8    bit11:2;    U8    mm:2;        U8    p_f:1;    U8    mmm:3;    U8    info[N201];}U_FRAME_S;typedef struct s_frame_s{        U8  ea_0:1;    U8  c_r:1;    U8  sapi:6;    U8  ea_1:1;        U8  tei:7;        U8  bit01:2;    U8  ss:2;    U8  xxxx:4;    U8  p_f:1;        U8  n_r:7;    U8  info[N201];}S_FRAME_S;typedef struct i_frame_s{        U8  ea_0:1;    U8  c_r:1;    U8  sapi:6;    U8  ea_1:1;        U8  tei:7;        U8    zero:1;    U8    n_s:7;    U8    p_f:1;    U8    n_r:7;    U8    info[N201];    }I_FRAME_S;#endiftypedef struct q921_frame_s{        U16  ef_addr;        union    {        I_FRAME_S i_frame;        S_FRAME_S s_frame;        U_FRAME_S u_frame;        U8        info[N201+4];    }frm;}Q921_FRAME_S;#if( CONFIG_OS_WINDOWS == TRUE )#pragma pack(pop)#elif( CONFIG_OS_VXWORKS == TRUE )#pragma pack(4)#endiftypedef struct l2_link_s{    U16     status;    U8      link_type;    U8      phy_type;    U32     phy_port_no;    U32     error_code;        U8      k;            U8      n200;         U16     pad0;    U32     n201;         U32     t200_len;     U32     t203_len;     U8      sapi;         U8      tei;          U8      v_s;          U8      v_a;          U8      v_r;          U8      rc;           U8      peer_cmd;     U8      own_cmd;      U8      own_resp;     U8      peer_rcv_busy:1;     U8      own_rcv_busy:1;      U8      ack_pending:1;       U8      rej_exception:1;     U8      own_l3_init:1;       U8      is_for_dss1:1;       U8      is_for_siptrunk:1;       U8      pading2:1;           U16     ef_addr;             TMR     t200;               TMR     t203;               struct msg_blk_que i_frame_q;     U32     discard_pkt;    U32 print_flag;}L2_LINK_S;typedef struct lcm_ui_frame{        U32 srcProcessorId;    U32 srcMpe;    U32 dstProcessorId;    U32 dstMpe;    U32 ulSize;        U16 type;    U8  slot;    U8  hdlc_no;    U8  info[4];}LCM_UI_FRAME_S;typedef struct lcm_self_msg_s{    U16 prim;    U16 phy_type;    U32 phy_port_no;    U32 link_type;}LCM_SELF_MSG_S;typedef struct lcm_efficient_msg_s{    U16 prim;      U16 sub_prim;    U32 s_time;    U32 count; }LCM_EFFICIENT_MSG_S;typedef struct lcm_drv_s{    U32 is_use_mbuf;    union    {        VOID_FUNC_PTR send;        LCM_PHY_SND mb_send;        LCM_MBUF_SND mbuf_send;    }tx;    U32 mtu;    U32 n200;    U32 t200_len;    U32 t203_len;}LCM_DRV_S;typedef VOID (*Q921FSM)( L2_LINK_S *linkp, U32 code, struct msg_blk *mb );extern U32 processor_id_base;extern L2_LINK_S *m_links[];extern U32 phy_port_num[];extern U32 link_per_port[];extern S8 *phy_string[];extern S8 *dl_string[];extern S8 *prim_string[];extern S8 *status_string[];extern struct msg_blk_que lcm_phy_que;extern U32 lcm_rcv_task_id;extern LCM_DRV_S lcm_phy_drv[];extern U16 dev_dl_ef_addr;VOID lcm_debug_proc(DEBUG_MSG_S *pDebugMsg);VOID lcm_test_proc( LCM_EFFICIENT_MSG_S *selfp, U32 srcProcId );VOID q921_phy_data_ind( U32 phy_type, U32 port_no, struct msg_blk* mb );VOID q921_ui_frame_handle( L2_LINK_S *linkp, struct msg_blk *mb );VOID lme_msg_proc( L2_LINK_S*linkp, struct msg_blk*mb);VOID q921_i_frame_handle( L2_LINK_S *linkp, struct msg_blk *mb );VOID on_link_not_established( L2_LINK_S *linkp, U32 cmd, struct msg_blk *mb );VOID on_awaiting_estblishment( L2_LINK_S *linkp, U32 cmd, struct msg_blk *mb );VOID on_awaiting_release( L2_LINK_S *linkp, U32 cmd, struct msg_blk *mb );VOID on_multi_frame_estblished( L2_LINK_S *linkp, U32 cmd, struct msg_blk *mb );VOID on_timer_recovery( L2_LINK_S *linkp, U32 cmd, struct msg_blk *mb );VOID q921_mngt_handle( U32 srcMpe, DL_MSG_S*pL3L2Prim );VOID q921_timeout_handle( U32 name, L2_LINK_S *linkp );VOID q921_self_handle( MSG_S *msgp );VOID err_frame_handle( L2_LINK_S *linkp, U32 cmd );VOID q921_unit_data_request( L2_LINK_S *linkp, struct msg_blk *mb );VOID q921_data_request( L2_LINK_S *linkp, struct msg_blk *mb );VOID q921_establish_req( L2_LINK_S *linkp );VOID q921_release_req( L2_LINK_S *linkp );VOID establish_data_link( L2_LINK_S *linkp );AOS_INLINE VOID start_t200( L2_LINK_S *linkp );AOS_INLINE VOID start_t203( L2_LINK_S *linkp );AOS_INLINE VOID stop_t200( L2_LINK_S *linkp );AOS_INLINE VOID stop_t203( L2_LINK_S *linkp );AOS_INLINE U32 able_to_establish( L2_LINK_S *linkp );VOID transmit_enquiry( L2_LINK_S *linkp );VOID enquiry_response( L2_LINK_S *linkp );VOID n_r_error_recovery( L2_LINK_S *linkp );VOID invoke_retransmission( L2_LINK_S *linkp );U32 get_cmd( struct msg_blk *mb, L2_LINK_S *linkp );S8 *cmd_string( U32 cmd );AOS_INLINE U8 get_link_type( U32 tei );VOID mdl_error_indication( L2_LINK_S *linkp, U32 errCode );VOID error_string( U32 errCode, S8 *string );L2_LINK_S *lcm_get_link_cb( U32 drvtype, U32 dltype, U32 portno );#endif#ifdef __cplusplus}#endif 

⌨️ 快捷键说明

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