亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品三级视频| 久久网站最新地址| 国产精品一卡二卡在线观看| 中文字幕第一区| 日韩视频在线观看一区二区| 91视频在线观看免费| 麻豆国产一区二区| 亚洲成在人线在线播放| 中文一区二区在线观看| 欧美成人伊人久久综合网| 色婷婷综合激情| 成人国产精品免费观看视频| 欧美在线观看一区二区| 蜜桃久久久久久| 欧美一区二区三区在线观看| 9久草视频在线视频精品| 久久激情综合网| 一区二区久久久| 国产精品免费人成网站| 久久精品夜色噜噜亚洲a∨| 欧美美女直播网站| 精品福利av导航| 欧美日韩精品一二三区| 欧美中文字幕一区| 99久久精品免费观看| 粉嫩av一区二区三区| 九九九久久久精品| 美女在线一区二区| 午夜久久久影院| 亚洲成国产人片在线观看| 亚洲欧洲日产国码二区| 国产精品久久久久一区二区三区共| 欧美xxxxxxxx| 精品少妇一区二区三区| 欧美哺乳videos| 精品美女在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 欧美一区日本一区韩国一区| 91.com在线观看| 欧美丰满一区二区免费视频| 欧美日韩一区三区四区| 欧美中文字幕一二三区视频| 欧美色区777第一页| 欧美午夜片在线观看| 欧美日韩在线播放三区四区| 欧美日本在线观看| 欧美高清视频一二三区 | 日本精品裸体写真集在线观看| av电影在线观看不卡| 91丨porny丨中文| 欧美无乱码久久久免费午夜一区| 色婷婷激情一区二区三区| 色婷婷精品久久二区二区蜜臂av | 亚洲综合久久久久| 夜夜嗨av一区二区三区中文字幕| 一区二区在线观看视频| 亚洲韩国精品一区| 日韩制服丝袜av| 国产一区三区三区| 99久久久国产精品免费蜜臀| 在线免费精品视频| 欧美一区午夜精品| 久久精品亚洲麻豆av一区二区 | 99久精品国产| 欧美在线观看一区| 欧美一区二区三区免费| 久久精品夜夜夜夜久久| 中文字幕亚洲精品在线观看| 亚洲自拍偷拍九九九| 奇米影视一区二区三区| 国产999精品久久久久久| 色综合久久久久综合体桃花网| 欧美日韩另类一区| 久久视频一区二区| 一区二区三区中文在线观看| 丝袜诱惑亚洲看片| 福利一区二区在线观看| 欧美三级在线播放| 久久亚区不卡日本| 高清不卡在线观看| 色一区在线观看| 欧美不卡在线视频| 亚洲精品水蜜桃| 久久福利视频一区二区| 99精品久久99久久久久| 欧美一区二区三区白人| 国产精品素人一区二区| 亚洲va欧美va人人爽| 国产福利视频一区二区三区| 欧美三级欧美一级| 国产亚洲精品aa午夜观看| 亚洲国产日韩在线一区模特| 国产主播一区二区| 欧美日韩一区在线观看| 国产精品久久久久久久久久免费看| 午夜精彩视频在线观看不卡| 春色校园综合激情亚洲| 日韩视频在线你懂得| 亚洲日本在线看| 国产一区二区三区精品欧美日韩一区二区三区| bt欧美亚洲午夜电影天堂| 欧美va亚洲va在线观看蝴蝶网| 亚洲图片欧美激情| 国产a久久麻豆| 日韩欧美高清在线| 亚洲午夜激情网站| 成人国产精品免费观看| 精品美女一区二区三区| 亚洲第一会所有码转帖| 99在线热播精品免费| 久久免费的精品国产v∧| 亚洲成精国产精品女| 91麻豆产精品久久久久久| 久久久777精品电影网影网| 免费高清在线一区| 欧美三电影在线| 一区二区三区免费看视频| 国产69精品久久久久777| 欧美刺激脚交jootjob| 天堂成人免费av电影一区| 欧美中文字幕一区二区三区| 最新中文字幕一区二区三区 | 一区二区三区产品免费精品久久75| 国产精品亚洲成人| 精品久久久久久久久久久久久久久久久 | 美女看a上一区| 欧美老肥妇做.爰bbww视频| 一区二区在线观看视频| 91丨porny丨户外露出| 一区在线观看免费| 成人毛片视频在线观看| 中文字幕第一区二区| 成人一区二区三区视频 | 1024成人网| av在线不卡电影| 国产精品久久免费看| 国产风韵犹存在线视精品| 国产亚洲婷婷免费| 韩国成人精品a∨在线观看| 精品国产一区二区亚洲人成毛片| 秋霞影院一区二区| 精品剧情v国产在线观看在线| 久久精品久久久精品美女| 日韩午夜在线影院| 国产又粗又猛又爽又黄91精品| 精品99久久久久久| 国产精品18久久久久久久网站| 精品国产乱码久久| 欧洲精品中文字幕| 爽好久久久欧美精品| 91精品一区二区三区久久久久久| 日韩av成人高清| 精品福利在线导航| 成人av在线影院| 一区二区三区欧美视频| 欧美一区二区高清| 国内精品久久久久影院色| 国产精品免费视频一区| 色94色欧美sute亚洲13| 视频在线观看一区| 精品日韩欧美在线| 高清不卡在线观看| 亚洲国产精品久久不卡毛片 | 3751色影院一区二区三区| 久久99久久久欧美国产| 国产精品日日摸夜夜摸av| 在线影院国内精品| 久久精品国产99国产| 国产欧美视频一区二区| 91麻豆精品视频| 麻豆精品一区二区| 欧美国产日韩a欧美在线观看| 色综合久久中文综合久久牛| 五月天激情小说综合| 亚洲精品在线三区| 99久久精品久久久久久清纯| 日韩影院精彩在线| 中文在线免费一区三区高中清不卡| 欧美综合色免费| 韩国精品在线观看| 亚洲国产精品精华液网站| 久久视频一区二区| 欧美日韩精品欧美日韩精品一| 激情五月激情综合网| 一区二区三区精品在线观看| 日韩欧美国产三级电影视频| 99热精品国产| 美女视频第一区二区三区免费观看网站 | 在线综合亚洲欧美在线视频| 高清shemale亚洲人妖| 日本va欧美va欧美va精品| 中文字幕乱码亚洲精品一区| 日韩欧美在线综合网| 一本大道久久a久久综合婷婷| 国产揄拍国内精品对白| 亚洲成人av电影在线| 国产精品私房写真福利视频| 日韩免费一区二区| 欧美专区在线观看一区| 成人av资源在线|