亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zl5011xdebugfuncs.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/******************************************************************************
*
*  File name:              zl5011xDebugFuncs.c
*
*  Version:                16
*
*  Author:                 MRC
*
*  Date created:           27/08/2003
*
*  Module Description:
*
*  This file contains various functions that can be used interactively to
*  help with debugging a running system
*
*  Revision History:
*
*  Rev:  Date:       Author:  Comments:
*  1     27/08/2003  MRC      Creation
*  2     09/09/2003  MRC      Added RTP statistics function
*  3     10/02/2004  APL      Corrected a comment
*  4     23/03/2004  APL      Corrected file version history
*  5     21/05/2004  MRC      Added tick delay before measurements
*  6     21/07/2004  MRC      Added Wan Tx clock source function
*  7     29/07/2004  MRC      Fixed some compiler warnings
*  8     04/08/2004  MRC      Added packet sniff'ing function for a context
*  9     25/08/2004  MRC      Added PW function
*  10    17/09/2004  MRC      Added TDM queue function
*  11    02/12/2004  APL      Made use of zl5011xTfqFormatAvgLength function
*  12    07/12/2004  APL      Fixed error introduced in previous version
*  13    18/03/2005  APL      Updated file header
*  14    07/07/2005  APL      Added more debug/status functions
*  15    08/07/2005  APL      Added debug function zl5011xDebugDisplayClockInfo
*  16    21/07/2005  MRC      Added DPLL status, PKC config and Packet Tx header fns
*
******************************************************************************/

/*****************   INCLUDE FILES                ****************************/

#include "zl5011xApi.h"
#include "zl5011xPkcMap.h"
#include "zl5011xPkiMap.h"
#include "zl5011xTfqMap.h"
#include "zl5011xTmMap.h"
#include "zl5011xTdm.h"
#include "zl5011xLan.h"
#include "zl5011xCet.h"
#include "zl5011xPrintError.h"

/*****************   DEFINES  *************************************************/
#define _ZL5011X_DEBUG_AVG_PRECISION 3   /* Display average queue length to 3 DPs */

#define _ZL5011X_PKI_STATS_RESERVED   28 /* Register 28 in the PKI stats is unused so
                                          we don't display it */

/*****************   DATA STRUCTURES   ****************************************/

typedef struct
{
   Uint32T early[128];
   Uint32T late[128];
   Uint32T underrun[128];
   Uint32T readPointer[128];
} zl5011xDebugTfqInfoS;

static char *stateStr[] =
{
   "not in use  ",
   "initialised ",
   "taken       ",
   "updating    ",
   "active      ",
   "tearing down"
};

static char *zl5011xDebugClockModeStr[] =
{
   "Loop timing - TDM_CLKo from TDM_CLKi (DCO Bypass)",
   "Master timing - TDM_CLKo from DCO"
};

static char *zl5011xDebugCetModeStr[] =
{
   "ZL5011X_CET_DISABLED",
   "ZL5011X_CET_DIFFERENTIAL_RX",
   "ZL5011X_CET_DIFFERENTIAL_TX",
   "ZL5011X_CET_DIFFERENTIAL_IN_BAND",
   "ZL5011X_CET_ADAPTIVE",
   "ZL5011X_CET_ADAPTIVE_ENHANCED",
   "ZL5011X_CET_DIFFERENTIAL_RX_TX",
};

static char *zl5011xDebugCetStatusStr[] =
{
   "FREERUN",
   "HOLDOVER",
   "ACQUIRING",
   "ACQUIRED"
};

static char *pkiStatsStr[ZL5011X_PKI_MAC_STATS_SIZE] =
{
   "BYTES TX      ",
   "UNICAST TX    ",
   "FRM TX FAIL   ",
   "FLOW CTRL TX  ",
   "NON UCAST TX  ",
   "BYTES RX      ",
   "FRM RX        ",
   "BYTES RX GOOD ",
   "FRAMES RX GOOD",
   "FLOW CTRL RX  ",
   "MULTICAST RX  ",
   "BROADCAST RX  ",
   "64            ",
   "JABBER        ",
   "65 TO 127     ",
   "OVERSIZE      ",
   "128 TO 255    ",
   "256 TO 511    ",
   "512 TO 1023   ",
   "1023 TO 1518  ",
   "FRAGMENT      ",
   "ALIGNERR      ",
   "UNDERSIZE     ",
   "CRC           ",
   "SHORT EVENT   ",
   "COLLISION     ",
   "DROP EVENT    ",
   "FILTER        ",
   "RESERVED      ",    /* Unused */
   "LATE COLLISION",
   0,                   /* Unused */
   0                    /* Unused */
};

/*****************   EXPORTED FUNCTION DEFINTIONS   ***************************/
/******************************************************************************/
/* the following functions provided information for the TDM contexts */
/******************************************************************************/

/*******************************************************************************

 Function:
    zl5011xDebugContextRx

 Description:
    This function provides information on the state of the Wan Rx context.

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance
   start             first context to display (or -1 to display all)
   end               last context to display. Note this parameter can be omitted
                     (set to zero) if only one context is of interest.

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugContextRx(zl5011xParamsS *zl5011xParams, Uint32T start, Uint32T end)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T context;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   if (start == (Uint32T)-1)
   {
      start = 0;

      if (zl5011xParams->wanIf.wanConnectionMode == ZL5011X_WAN_CONNECTION_UNFRAMED)
      {
         end = zl5011xParams->wanIf.wanNumStreams - 1;
      }
      else
      {
         end = zl5011xParams->devLimits.numContexts - 1;
      }
   }

   context = start;
   do
   {
      if (zl5011xParams->wanIf.plaCurrent.context[context].state == ZL5011X_STATE_TEARING_DOWN)
      {
         status = zl5011xPlaCheckContextTeardown(zl5011xParams, context);
      }

      if (zl5011xParams->wanIf.plaCurrent.context[context].state == ZL5011X_STATE_UPDATING)
      {
         status = zl5011xPlaCheckContextUpdate(zl5011xParams, context);
      }

      printf("Context %3ld, Status = %s\n",
            context, stateStr[zl5011xParams->wanIf.plaCurrent.context[context].state]);

      context++;
   } while (context <= end);

   zl5011xPrintErr(status);
   return(status);
}

/*******************************************************************************

 Function:
    zl5011xDebugContextRxChans

 Description:
    This function provides information on the channels attached to a Wan Rx
    context. Primarily intended for structured (framed) operation, and shows
    whether a context has been added / removed since the last update was
    completed.

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance
   context           set to context number

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugContextRxChans(zl5011xParamsS *zl5011xParams, Uint32T context)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T loop;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   for (loop = 0; loop < ZL5011X_MAX_NUMBER_CHANNELS; loop++)
   {
      if ((zl5011xParams->wanIf.plaCurrent.channel[loop].context == context) &&
         (zl5011xParams->wanIf.plaActive.channel[loop].context == context))
      {
         printf("Ch     %4ld\n", loop);
      }
      else
      {
         if ((zl5011xParams->wanIf.plaCurrent.channel[loop].context == context) &&
            (zl5011xParams->wanIf.plaActive.channel[loop].context != context))
         {
            printf("Ch new %4ld\n", loop);
         }
         else
         {
            if ((zl5011xParams->wanIf.plaCurrent.channel[loop].context != context) &&
               (zl5011xParams->wanIf.plaActive.channel[loop].context == context))
            {
               printf("Ch old %4ld\n", loop);
            }
         }
      }
   }

   zl5011xPrintErr(status);
   return(status);
}

/*******************************************************************************

 Function:
    zl5011xDebugContextTx

 Description:
    This function provides information on the state of the Wan Tx context.
    Active contexts will also display information on the queue state (this
    information varies for FIFO and resequencing queues)

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance
   start             first context to display (or -1 to display all)
   end               last context to display. Note this parameter can be omitted
                     (set to zero) if only one context is of interest.

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugContextTx(zl5011xParamsS *zl5011xParams, Uint32T start, Uint32T end)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T readValue;
   Uint32T context;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   if (start == (Uint32T)-1)
   {
      start = 0;

      if (zl5011xParams->wanIf.wanConnectionMode == ZL5011X_WAN_CONNECTION_UNFRAMED)
      {
         end = zl5011xParams->wanIf.wanNumStreams - 1;
      }
      else
      {
         end = zl5011xParams->devLimits.numContexts - 1;
      }
   }

   context = start;
   do
   {
      if (zl5011xParams->wanIf.tfmCurrent.context[context].state == ZL5011X_STATE_TEARING_DOWN)
      {
         status = zl5011xTfmCheckContextTeardown(zl5011xParams, context);
      }

      if (zl5011xParams->wanIf.tfmCurrent.context[context].state == ZL5011X_STATE_UPDATING)
      {
         status = zl5011xTfmCheckContextUpdate(zl5011xParams, context);
      }

      printf("Context %3ld, Status = %s",
            context, stateStr[zl5011xParams->wanIf.tfmCurrent.context[context].state]);

      if ((zl5011xParams->wanIf.tfmCurrent.context[context].state == ZL5011X_STATE_TAKEN) ||
         (zl5011xParams->wanIf.tfmCurrent.context[context].state == ZL5011X_STATE_UPDATING) ||
         (zl5011xParams->wanIf.tfmCurrent.context[context].state == ZL5011X_STATE_ACTIVE))
      {
         Uint32T avgHi,avgLo;

         status = zl5011xTfqGetAvgLength(zl5011xParams, context, &readValue);
         zl5011xTfqFormatAvgLength(readValue, _ZL5011X_DEBUG_AVG_PRECISION, &avgHi, &avgLo);

         printf(": Avg len = %4ld.%0*ld, ", avgHi, _ZL5011X_DEBUG_AVG_PRECISION, avgLo); /* Note:
                     '*' format allows _ZL5011X_DEBUG_AVG_PRECISION to specify the width of the field */

         if (zl5011xParams->wanIf.txQueue[context].queueMode == ZL5011X_WAN_TX_QUEUE_FIFO)
         {
            /* for FIFO queues, the early count is actually a count of the packets
               rejected because the queue is full */
            status = zl5011xTfqGetEarlyPackets(zl5011xParams, context, &readValue);
            printf("Full = %8ld\n", readValue);
         }
         else
         {
            status = zl5011xTfqGetUnderrunCount(zl5011xParams, context, &readValue);
            printf("Underruns = %8ld, ", readValue);

            status = zl5011xTfqGetLatePackets(zl5011xParams, context, &readValue);
            printf("Late = %8ld, ", readValue);

            status = zl5011xTfqGetEarlyPackets(zl5011xParams, context, &readValue);
            printf("Early = %8ld\n", readValue);
         }
      }
      else
      {
         printf("\n");
      }

      context++;
   } while (context <= end);

   zl5011xPrintErr(status);
   return(status);
}

/*******************************************************************************

 Function:
    zl5011xDebugContextTxChans

 Description:
    This function provides information on the channels attached to a Wan Tx
    context. Primarily intended for structured (framed) operation, and shows
    whether a context has been added / removed since the last update was
    completed.

 Inputs:
   zl5011xParams      Pointer to the structure for this device instance
   context           set to context number

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

*******************************************************************************/

zlStatusE zl5011xDebugContextTxChans(zl5011xParamsS *zl5011xParams, Uint32T context)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T loop;

   if (zl5011xParams == NULL)
   {
      status = ZL5011X_INVALID_POINTER;

      zl5011xPrintErr(status);
      return(status);
   }

   for (loop = 0; loop < ZL5011X_MAX_NUMBER_CHANNELS; loop++)
   {
      if ((zl5011xParams->wanIf.tfmCurrent.channel[loop].context == context) &&
         (zl5011xParams->wanIf.tfmActive.channel[loop].context == context))
      {
         printf("Ch     %4ld\n", loop);
      }
      else
      {
         if ((zl5011xParams->wanIf.tfmCurrent.channel[loop].context == context) &&
            (zl5011xParams->wanIf.tfmActive.channel[loop].context != context))
         {
            printf("Ch new %4ld\n", loop);
         }
         else
         {
            if ((zl5011xParams->wanIf.tfmCurrent.channel[loop].context != context) &&
               (zl5011xParams->wanIf.tfmActive.channel[loop].context == context))
            {
               printf("Ch old %4ld\n", loop);
            }
         }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
懂色av一区二区三区免费观看 | 国产精品国产精品国产专区不蜜| 亚洲欧美视频在线观看| 美日韩一级片在线观看| 91同城在线观看| 久久女同性恋中文字幕| 日本不卡123| 欧美日本在线一区| 亚洲美女淫视频| 成人高清在线视频| wwww国产精品欧美| 久草精品在线观看| 日韩一级欧美一级| 日日摸夜夜添夜夜添精品视频| 91首页免费视频| 亚洲视频免费在线| av不卡在线播放| 国产精品久久看| 波多野结衣欧美| 中文字幕亚洲成人| av一区二区三区| 国产精品伦一区| 成人午夜视频在线| 国产精品女主播在线观看| 国产91精品精华液一区二区三区| 亚洲18影院在线观看| 日本丶国产丶欧美色综合| 国产精品乱码久久久久久| 国产99精品国产| 国产精品激情偷乱一区二区∴| 国产91在线观看丝袜| 中文字幕精品—区二区四季| 成人性色生活片| 亚洲色大成网站www久久九九| 91色porny在线视频| 亚洲精品成a人| 欧美日韩国产成人在线免费| 日韩中文欧美在线| 精品日韩一区二区三区 | 不卡一区二区在线| 综合中文字幕亚洲| 欧美日韩一区二区在线观看视频| 性久久久久久久久| 欧美一区二区三区四区视频| 久久国产成人午夜av影院| 久久久精品免费免费| 91香蕉视频污| 日韩高清在线观看| 久久久久97国产精华液好用吗| 成人av电影在线| 亚洲午夜电影在线| 精品福利在线导航| 不卡在线视频中文字幕| 亚洲一区免费在线观看| 日韩欧美一区二区不卡| 成人性生交大片免费看中文| 亚洲线精品一区二区三区| 精品少妇一区二区| 91小视频免费看| 美女一区二区三区| 自拍偷拍国产精品| 欧美一区二区播放| 北条麻妃国产九九精品视频| 亚洲高清免费观看| 欧美激情一区在线观看| 欧美亚洲综合久久| 国产一区二区三区香蕉| 亚洲综合免费观看高清完整版 | 亚洲小少妇裸体bbw| 欧美精品一区二区三区蜜臀| 色屁屁一区二区| 国产一区二区精品久久91| 亚洲资源在线观看| 中文字幕精品一区| 日韩午夜电影在线观看| 在线亚洲人成电影网站色www| 麻豆91在线看| 亚洲一区二区欧美| 国产精品久久久久久久久久久免费看 | 色婷婷综合五月| 国产精品资源站在线| 视频一区二区中文字幕| 中文字幕精品综合| 欧美va亚洲va在线观看蝴蝶网| 欧美亚洲愉拍一区二区| 波多野结衣亚洲一区| 国产精品一区2区| 日本不卡不码高清免费观看| 伊人夜夜躁av伊人久久| 欧美激情综合在线| 日韩你懂的电影在线观看| 欧美三级中文字幕| 91免费国产在线| 国产盗摄一区二区三区| 精彩视频一区二区| 麻豆视频观看网址久久| 亚洲成a人v欧美综合天堂 | 97精品电影院| 丁香亚洲综合激情啪啪综合| 国产一区二区三区四区在线观看 | 不卡区在线中文字幕| 国产呦萝稀缺另类资源| 精品在线视频一区| 美女被吸乳得到大胸91| 日本免费新一区视频| 亚洲高清免费视频| 亚洲国产成人av| 亚洲成人1区2区| 午夜欧美2019年伦理| 亚洲成人免费av| 日韩国产高清在线| 青青草成人在线观看| 日本欧美一区二区在线观看| 青青草成人在线观看| 六月婷婷色综合| 国产真实乱子伦精品视频| 久久av资源网| 春色校园综合激情亚洲| av福利精品导航| 在线观看亚洲精品视频| 欧美日本一道本在线视频| 91麻豆精品国产自产在线观看一区 | 亚洲国产精品黑人久久久| 国产精品女同互慰在线看| 亚洲欧洲成人自拍| 一区二区三区资源| 天天综合网 天天综合色| 日本不卡一区二区三区高清视频| 免费成人在线视频观看| 国产精品一区一区| 91小视频免费观看| 欧美精品自拍偷拍| 精品国产乱码久久久久久老虎| 精品国产污网站| 国产精品视频一二三| 亚洲在线视频一区| 久久成人免费网站| 99re6这里只有精品视频在线观看| 91色综合久久久久婷婷| 欧美一区二区三区在线观看视频 | 91在线免费看| 91精品国产综合久久久久久漫画 | 欧美日本一道本在线视频| 精品国产乱码久久久久久久久| 欧美国产日韩亚洲一区| 亚洲国产精品一区二区久久| 麻豆精品一二三| 色综合久久久久久久久久久| 91精品国产综合久久精品图片| 久久久国产精华| 午夜精品福利一区二区三区av| 国产一区二区女| 欧美日韩日本视频| 国产日韩精品一区二区浪潮av| 亚洲精品中文在线| 国产乱码字幕精品高清av | 日本乱码高清不卡字幕| 欧美成人精品福利| 一区二区不卡在线视频 午夜欧美不卡在| 天堂蜜桃一区二区三区| 成人av免费在线观看| 日韩欧美国产高清| 一区二区三区.www| 成人一级黄色片| 欧美精品一区二区不卡| 亚洲成人tv网| 色狠狠av一区二区三区| 久久久久国产精品人| 日本一区中文字幕| 欧洲一区二区三区免费视频| 国产日韩欧美在线一区| 日韩av一区二区三区四区| 在线观看日韩国产| 中文字幕日韩av资源站| 国产电影一区二区三区| 欧美成va人片在线观看| 亚洲成人激情自拍| 日本大香伊一区二区三区| 日本一区二区三区国色天香| 韩国成人福利片在线播放| 91精品国模一区二区三区| 亚洲成人福利片| 欧美在线短视频| 亚洲精品第一国产综合野| 99国产精品久久久久久久久久| 国产欧美一区二区在线| 国产麻豆成人精品| 久久久久亚洲综合| 国产麻豆视频一区| 久久毛片高清国产| 国产一区二区精品久久99| 久久久蜜桃精品| 国产成人久久精品77777最新版本| 精品99一区二区| 激情成人午夜视频| 26uuu久久综合| 国产精品456| 亚洲国产精品成人综合 | 亚洲va中文字幕| 91精品蜜臀在线一区尤物|