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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? zl5011xtm.c

?? Zalink50114----TDMoIP芯片驅(qū)動(dòng)源碼
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):

      status = zl5011xReadModWrite(zl5011xParams, address, bits, bitMask);
   }

   return(status);
}

/*******************************************************************************
 Function:
    zl5011xTmEnableTrace

 Description:
   There are 4 options for which data to collect in the trace buffer. Full
   capture requires 4 entries per message, partial is only 2 and
   source / timer are 1 entry each. The trace buffer is initialised (cleared)
   and then enabled.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   defaultTimer   set to ZL5011X_TRUE to use the default (slow) timer.
   mode           data collection mode - full, partial, source or timer

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
    None

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

zlStatusE zl5011xTmConfigureTrace(zl5011xParamsS *zl5011xParams,
      zl5011xTmTraceModeE mode, zl5011xBooleanE defaultTimer)
{
   zlStatusE status = ZL5011X_OK;
   Uint32T loop;
   Uint32T bits, bitMask;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmConfigureTrace: trace mode %d, timer %d",
         mode, defaultTimer, 0, 0, 0, 0);

   /* Check parameters */
   status = ZL5011X_CHECK_BOOLEAN(defaultTimer);

   if(status == ZL5011X_OK)
   {
      status = ZL5011X_CHECK_TM_TRACE_MODE(mode);
   }

   /* Disable the trace buffer, to allow the buffer to be zero'd out */
   if(status == ZL5011X_OK)
   {
      status = zl5011xReadModWrite(zl5011xParams, ZL5011X_TM_CONTROL,
            ZL5011X_1BIT_MASK << ZL5011X_TM_TRACE_ENABLE_BIT,
            ZL5011X_1BIT_MASK << ZL5011X_TM_TRACE_ENABLE_BIT);
   }

   for (loop = 0; loop < ZL5011X_TM_TRACE_BUFFER_SIZE; loop++)
   {
      if(status != ZL5011X_OK)
      {
         break;
      }

      /* zero out the TM trace memory */
      status = zl5011xWrite(zl5011xParams,
            ZL5011X_TM_TRACE_BUFFER + (loop * sizeof(Uint32T)),
            0);
   }

   /* Enable trace buffer */
   if(status == ZL5011X_OK)
   {
      bits = (Uint32T)mode << ZL5011X_TM_TRACE_MODE_BITS;
      bitMask = (ZL5011X_TM_TRACE_MODE_MASK << ZL5011X_TM_TRACE_MODE_BITS) |
            (ZL5011X_1BIT_MASK << ZL5011X_TM_TRACE_ENABLE_BIT) |
            (ZL5011X_1BIT_MASK << ZL5011X_TM_TRACE_TIMER_BIT);

      if (defaultTimer == ZL5011X_FALSE)
      {
         /* set the timer bit if using the fast clock */
         bits |= (ZL5011X_1BIT_MASK << ZL5011X_TM_TRACE_TIMER_BIT);
      }

      status = zl5011xReadModWrite(zl5011xParams, ZL5011X_TM_CONTROL,
               bits, bitMask);

      /* store the settings in the device structure */
      zl5011xParams->taskManager.tmTraceMode = mode;
      zl5011xParams->taskManager.tmDefaultTimer = defaultTimer;

      switch (mode)
      {
         case ZL5011X_TM_TRACE_FULL :
            zl5011xParams->taskManager.tmBufferSize = 4;
            break;

         case ZL5011X_TM_TRACE_PARTIAL :
            zl5011xParams->taskManager.tmBufferSize = 2;
            break;

         case ZL5011X_TM_TRACE_SHORT_TIME :    /* intentional fall-through */
         case ZL5011X_TM_TRACE_SHORT_SOURCE :  /* intentional fall-through */
         default :
            zl5011xParams->taskManager.tmBufferSize = 1;
            break;
      }

      zl5011xParams->taskManager.tmNumBuffers = ZL5011X_TM_TRACE_BUFFER_SIZE / zl5011xParams->taskManager.tmBufferSize;
   }

   return(status);
}


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

 Function:
    zl5011xTmDisableTrace

 Description:
   Used to allow the host to access the trace buffer.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance

 Outputs:
    None

 Returns:
   zlStatusE

 Remarks:
   It is possible to read from the trace buffer without disabling it, but there
   is a risk of reading incorrect data,  since the device will continue to
   write to the buffer.

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

zlStatusE zl5011xTmDisableTrace(zl5011xParamsS *zl5011xParams)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmDisableTrace:", 0, 0, 0, 0, 0, 0);

   status = zl5011xReadModWrite(zl5011xParams, ZL5011X_TM_CONTROL,
         ZL5011X_1BIT_MASK << ZL5011X_TM_TRACE_ENABLE_BIT,
         ZL5011X_1BIT_MASK << ZL5011X_TM_TRACE_ENABLE_BIT);

   return(status);
}

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

 Function:
    zl5011xTmGetTracePointer

 Description:
   Returns the index for the head of the trace buffer.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance

 Outputs:
    tracePointer  index for the trace buffer head

 Returns:
   zlStatusE

 Remarks:
    None

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

zlStatusE zl5011xTmGetTracePointer(zl5011xParamsS *zl5011xParams,
         Uint32T *tracePointer)
{
   Uint32T readValue;
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmGetTracePointer:", 0, 0, 0, 0, 0, 0);

   status = zl5011xRead(zl5011xParams, ZL5011X_TM_TRACE_POINTER, &readValue);

   /* shift and mask the read value to get the trace pointer */
   readValue = (readValue >> ZL5011X_TM_TRACE_POINTER_BITS) & ZL5011X_TM_TRACE_POINTER_MASK;

   /* the pointer currently points at an empty position, so subtract off one
      buffer location, and handle wrapping */
   readValue = (readValue - zl5011xParams->taskManager.tmBufferSize) % ZL5011X_TM_TRACE_BUFFER_SIZE;

   /* divide by the size of each buffer, to give an index */
   *tracePointer = readValue / zl5011xParams->taskManager.tmBufferSize;

   return(status);
}

/*******************************************************************************
 Function:
   zl5011xTmDecodeTraceFull

 Description:
   Populates the trace message structure using the four 32 bit words
   passed in.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   buffer         raw data from the trace buffer

 Outputs:
    msg           structure populated with the trace message. Unused fields are
                  set to all 1's

 Returns:
   zlStatusE

 Remarks:
   Using magic numbers for the bit positions in the TM buffer, since the bit
   positions are unique to this function.

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

zlStatusE zl5011xTmDecodeTraceFull(zl5011xParamsS *zl5011xParams,
      Uint32T *buffer, zl5011xTmTraceMessageS *msg)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmDecodeTraceFull:", 0, 0, 0, 0, 0, 0);

   /* decode the first 32 bit word of the message */
   msg->mpid = (Uint16T)((buffer[0] >> 0) & 0xffff);
   msg->pktLen = (Uint16T)((buffer[0] >> 16) & 0x7ff);
   msg->flowType = (zl5011xFlowTypeE)((buffer[0] >> 27) & 0x1f);

   /* decode the second 32 bit word of the message */
   msg->headGranule = (buffer[1] >> 0) & 0x3ffff;
   msg->headerOffset = (Uint8T)((buffer[1] >> 18) & 0x7f);
   msg->sourceBlock = (Uint8T)((buffer[1] >> 27) & 0x1f);

   /* decode the third 32 bit word of the message */
   msg->tailGranule = (buffer[2] >> 0) & 0x3ffff;
   msg->granuleNum = (Uint8T)((buffer[2] >> 18) & 0x1f);
   msg->miscField1 = (Uint16T)((buffer[2] >> 23) & 0x1ff);

   /* the fourth 32 bit word takes on different meaning, depending on the
      source block of the message, so just return to the calling function
      unchanged. */
   msg->miscField2 = buffer[3];

   /* any fields not populated are set to invalid */
   msg->timestamp = (Uint16T)ZL5011X_INVALID;

   return(status);
}

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

 Function:
   zl5011xTmDecodeTracePartial

 Description:
   Populates the trace message structure using the two 32 bit words
   passed in.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   buffer         raw data from the trace buffer

 Outputs:
    msg           structure populated with the trace message. Unused fields are
                  set to all 1's

 Returns:
   zlStatusE

 Remarks:
   Using magic numbers for the bit positions in the TM buffer, since the bit
   positions are unique to this function.

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

zlStatusE zl5011xTmDecodeTracePartial(zl5011xParamsS *zl5011xParams,
      Uint32T *buffer, zl5011xTmTraceMessageS *msg)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmDecodeTracePartial:", 0, 0, 0, 0, 0, 0);

   /* decode the first 32 bit word of the message */
   msg->timestamp = (Uint16T)((buffer[0] >> 0) & 0xfff);
   msg->pktLen = (Uint16T)((buffer[0] >> 16) & 0x7ff);
   msg->flowType = (zl5011xFlowTypeE)((buffer[0] >> 27) & 0x1f);

   /* decode the second 32 bit word of the message */
   msg->headGranule = (buffer[1] >> 0) & 0x3ffff;
   msg->headerOffset = (Uint8T)((buffer[1] >> 18) & 0x7f);
   msg->sourceBlock = (Uint8T)((buffer[1] >> 27) & 0x1f);

   /* any fields not populated are set to invalid */
   msg->mpid = (Uint16T)ZL5011X_INVALID;
   msg->tailGranule = (Uint32T)ZL5011X_INVALID;
   msg->granuleNum = (Uint8T)ZL5011X_INVALID;
   msg->miscField1 = (Uint16T)ZL5011X_INVALID;
   msg->miscField2 = (Uint32T)ZL5011X_INVALID;

   return(status);
}

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

 Function:
   zl5011xTmDecodeTraceTime

 Description:
   Populates the trace message structure using the 32 bit word passed in.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   buffer         raw data from the trace buffer

 Outputs:
    msg           structure populated with the trace message. Unused fields are
                  set to all 1's

 Returns:
   zlStatusE

 Remarks:
   Using magic numbers for the bit positions in the TM buffer, since the bit
   positions are unique to this function.

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

zlStatusE zl5011xTmDecodeTraceTime(zl5011xParamsS *zl5011xParams,
      Uint32T *buffer, zl5011xTmTraceMessageS *msg)
{
   zlStatusE status = ZL5011X_OK;

   ZL5011X_TRACE(ZL5011X_TM_FN_ID, "zl5011xTmDecodeTraceTime:", 0, 0, 0, 0, 0, 0);

   /* decode the first 32 bit word of the message */
   msg->headGranule = (buffer[0] >> 0) & 0x3ffff;
   msg->timestamp = (Uint16T)((buffer[0] >> 18) & 0x1ff);
   msg->flowType = (zl5011xFlowTypeE)((buffer[0] >> 27) & 0x1f);

   /* any fields not populated are set to invalid */
   msg->headerOffset = (Uint8T)ZL5011X_INVALID;
   msg->sourceBlock = (Uint8T)ZL5011X_INVALID;
   msg->mpid = (Uint16T)ZL5011X_INVALID;
   msg->pktLen = (Uint16T)ZL5011X_INVALID;
   msg->tailGranule = (Uint32T)ZL5011X_INVALID;
   msg->granuleNum = (Uint8T)ZL5011X_INVALID;
   msg->miscField1 = (Uint16T)ZL5011X_INVALID;
   msg->miscField2 = (Uint32T)ZL5011X_INVALID;

   return(status);
}

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

 Function:
   zl5011xTmDecodeTraceSource

 Description:
   Populates the trace message structure using the 32 bit word passed in.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   buffer         raw data from the trace buffer

 Outputs:
    msg           structure populated with the trace message. Unused fields are
                  set to all 1's

 Returns:

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区四区视频| 成人看片黄a免费看在线| 中文字幕av资源一区| 国内成人精品2018免费看| 中文字幕一区免费在线观看 | 亚洲国产一区二区视频| 久久综合网色—综合色88| 欧美色精品在线视频| 粉嫩高潮美女一区二区三区| 天堂在线一区二区| 自拍偷拍亚洲欧美日韩| 精品1区2区在线观看| 欧美高清精品3d| 色综合一区二区| 高清国产午夜精品久久久久久| 亚洲综合一区二区| 精品99久久久久久| 欧美一级片免费看| 777xxx欧美| 欧美三级日韩三级国产三级| 一本一本大道香蕉久在线精品| 亚洲成av人片一区二区梦乃| 国产精品电影一区二区| 国产日韩欧美一区二区三区综合| 99久久精品费精品国产一区二区| 亚洲成人免费在线观看| 亚洲欧美激情视频在线观看一区二区三区| 在线亚洲欧美专区二区| 成人精品免费看| 亚洲国产日韩综合久久精品| 伊人一区二区三区| 日韩免费成人网| 日韩欧美的一区二区| 51精品久久久久久久蜜臀| 欧美色爱综合网| 欧美三级在线播放| 欧美日韩一区二区三区不卡| 欧美亚洲一区二区在线| 欧美性极品少妇| 国产69精品久久久久毛片| 国产剧情一区二区三区| 激情欧美一区二区| 亚洲一区二区三区小说| 2022国产精品视频| 欧美吞精做爰啪啪高潮| 欧美丝袜自拍制服另类| 3751色影院一区二区三区| 成人国产一区二区三区精品| 99热这里都是精品| 91福利区一区二区三区| 欧美久久一二三四区| 91精品国产综合久久精品| 成人av网站免费| 99久久免费视频.com| 黄页视频在线91| 国产福利91精品| 波多野洁衣一区| 欧美亚洲综合网| 日韩亚洲欧美综合| 久久久91精品国产一区二区三区| 欧美日韩一区二区三区不卡| 99re在线视频这里只有精品| 色噜噜狠狠成人网p站| 在线观看日韩精品| 日韩精品一区二区三区在线观看| 欧美午夜精品久久久久久超碰| av高清不卡在线| 欧美日韩国产三级| 精品福利av导航| 欧美日韩一本到| 亚洲精品一区二区在线观看| 中文字幕第一区| 一区二区三区国产精华| 蜜臀91精品一区二区三区| 亚洲精选视频免费看| 日韩va亚洲va欧美va久久| 国产精品一级片| 欧美这里有精品| www精品美女久久久tv| 亚洲女同一区二区| 亚洲丝袜精品丝袜在线| 国产精品网站在线| 午夜激情综合网| 亚洲午夜在线视频| 亚洲一线二线三线视频| 精品一区免费av| 色8久久精品久久久久久蜜| 欧美成人精品1314www| 亚洲欧美综合网| 久久99久久久久| 国产一区二区三区美女| 日本道精品一区二区三区| 日韩女同互慰一区二区| 亚洲男女一区二区三区| 亚洲乱码国产乱码精品精可以看 | 国产一区不卡在线| 色域天天综合网| 色呦呦一区二区三区| 精品成人一区二区| 亚洲一区二区偷拍精品| eeuss鲁一区二区三区| 日韩精品一区二区三区在线观看| 日韩亚洲欧美综合| 亚洲一区二区欧美日韩| 日韩国产欧美在线观看| 色综合天天综合网国产成人综合天| 91影视在线播放| 在线免费观看日韩欧美| 国产欧美精品区一区二区三区 | 亚洲女同一区二区| 国产成人免费视频网站高清观看视频 | 亚洲欧洲av另类| 国产乱子轮精品视频| 91麻豆精品国产91久久久更新时间| 日韩欧美国产综合| 午夜一区二区三区在线观看| 日本特黄久久久高潮| 欧美伊人久久久久久久久影院| 日韩欧美精品三级| 三级久久三级久久久| 91国偷自产一区二区三区成为亚洲经典| 91国偷自产一区二区开放时间 | 久久久五月婷婷| 国产精品久久午夜| 亚洲最大的成人av| 波多野结衣中文字幕一区二区三区| 色狠狠一区二区| 亚洲免费视频中文字幕| caoporm超碰国产精品| 欧美极品xxx| 国产成人精品一区二区三区网站观看| 欧美无砖专区一中文字| 久久久噜噜噜久久中文字幕色伊伊| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 8v天堂国产在线一区二区| 亚洲专区一二三| 欧美性猛交xxxx乱大交退制版| 久久久亚洲高清| 国产精品一区免费视频| 国产日韩欧美不卡| 成人污视频在线观看| 国产精品成人一区二区三区夜夜夜 | 欧美日本一道本在线视频| 亚洲午夜三级在线| 在线播放国产精品二区一二区四区| 久久久高清一区二区三区| 国产99久久久国产精品| 中文乱码免费一区二区| 91视频com| 一区二区免费看| 欧美日韩国产片| 精品一区二区三区在线观看国产 | 日本美女视频一区二区| 欧美成人猛片aaaaaaa| 亚洲影院久久精品| 欧美美女一区二区三区| 日本v片在线高清不卡在线观看| 色呦呦国产精品| 午夜成人免费视频| 欧美成人精品二区三区99精品| 午夜精品123| 91久久精品一区二区二区| 国产婷婷色一区二区三区四区| 日本女人一区二区三区| 久久精品亚洲一区二区三区浴池 | 亚洲视频网在线直播| 在线欧美一区二区| 蜜芽一区二区三区| 国产日韩精品久久久| 91福利在线免费观看| 美女任你摸久久| 国产精品国产三级国产aⅴ原创| 国产一区二区在线免费观看| 亚洲视频一区二区在线观看| 69av一区二区三区| jvid福利写真一区二区三区| 国产日韩v精品一区二区| 欧洲精品视频在线观看| 蜜桃久久久久久| 亚洲天堂福利av| 91热门视频在线观看| 婷婷激情综合网| 中文av字幕一区| 7777精品伊人久久久大香线蕉经典版下载 | 粉嫩高潮美女一区二区三区 | 亚洲v中文字幕| 欧美日韩国产综合久久 | 日本一区二区三区国色天香| 色婷婷狠狠综合| 国产老肥熟一区二区三区| 亚洲成av人片在www色猫咪| 欧美极品少妇xxxxⅹ高跟鞋 | 五月婷婷另类国产| 中文字幕二三区不卡| 日韩一区二区三区精品视频| 91美女蜜桃在线| 国产最新精品免费| 视频一区免费在线观看| 亚洲女与黑人做爰| 国产精品色噜噜|