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

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

?? usrusbtool.c

?? SL811 USB接口芯片用于VxWorks系統的驅動源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    {
    UINT8 bfr [USB_MAX_DESCR_LEN];
    pUSB_STRING_DESCR pString = (pUSB_STRING_DESCR) bfr;
    UINT16 actLen;
    UINT16 i;
    char c;
    UINT16 languageId=0;
    UINT16 id;
    int    lang_len;
    int    lang_count;
    UINT8 *lang_ptr;

    /* Read device descriptor to get string Ids for mfg/model */

    /* Find out about language id */
    if (usbdDescriptorGet (clientHandle, nodeId,
	USB_RT_STANDARD | USB_RT_DEVICE, USB_DESCR_STRING, 0, 0,
	sizeof (bfr), (pUINT8) &bfr, &actLen) != OK)
	{
	fprintf (fout, "<<can't read string>>");
	return;
	}

    lang_len   = pString->length - sizeof(pString->length) - sizeof(pString->descriptorType);
    lang_count = lang_len/sizeof(languageId);
    lang_ptr   = pString->string;

    for ( i=0; i<lang_len && lang_ptr ; i++,lang_ptr+=2 )
    {
      if ( lang_ptr[0]==0x09 && lang_ptr[1]==0x04 )
      {
        /* Select US English if it's available */
        languageId = (lang_ptr[1]<<8) | lang_ptr[0];
        break;
      } /* end of if () */
    } /* end of for () */

    if ( languageId==0 && lang_len>0 && pString->string )
    {
      /* Try any first choice */
      languageId = (pString->string[1]<<8) | pString->string[0];
    } /* end of if () */

    if (usbdDescriptorGet (clientHandle, nodeId,
	USB_RT_STANDARD | USB_RT_DEVICE, USB_DESCR_STRING, stringId, languageId,
	sizeof (bfr), (pUINT8) &bfr, &actLen) != OK)
	{
	fprintf (fout, "<<can't read string>>");
	return;
	}

    for (i = 0; i + 2 < actLen && i < maxLen * 2; i += 2)
	{
	c = pString->string [i];
	fprintf (fout, "%c", (isprint ((int) c)) ? c : '_');
	}

    if (i + 2 < actLen)
	fprintf (fout, "...");
    }


/***************************************************************************
*
* showMfgModel - Display mfg/model strings for a USB device
*
* RETURNS: N/A
*/

LOCAL VOID showMfgModel
    (
    USBD_CLIENT_HANDLE clientHandle,
    USBD_NODE_ID nodeId,
    FILE *fout
    )

    {
    USB_DEVICE_DESCR devDescr;
    UINT16 actLen;

    /* Read device descriptor to get string Ids for mfg/model */

    if (usbdDescriptorGet (clientHandle, nodeId,
	USB_RT_STANDARD | USB_RT_DEVICE, USB_DESCR_DEVICE, 0, 0,
	sizeof (devDescr), (pUINT8) &devDescr, &actLen) != OK ||
	actLen < sizeof (devDescr))
	return;

    if (devDescr.manufacturerIndex != 0 || devDescr.productIndex != 0)
	fprintf (fout, " = ");

    if (devDescr.manufacturerIndex != 0)
	{
	showUsbString (clientHandle, nodeId, fout, devDescr.manufacturerIndex,
	    MAX_MFG_STR_LEN);
	fprintf (fout, "/");
	}

    if (devDescr.productIndex != 0)
	{
	showUsbString (clientHandle, nodeId, fout, devDescr.productIndex,
	    MAX_PROD_STR_LEN);
	}
    }


/***************************************************************************
*
* HubEnumerate - Enumerate all ports on the specified hub
* 
* This routine enumerates all devices from the specified HubId down.
* <clientHandle> must be a valid USBD_CLIENT_HANDLE.  <hubId> specifies
* the Node Id of the first USB hub to be enumerated.
*
* RETURNS: OK, or ERROR if USBD returns an error.
*/

LOCAL UINT16 HubEnumerate
    (
    USBD_CLIENT_HANDLE clientHandle,	/* Caller抯 USBD client handle */
    USBD_NODE_ID hubId, 		/* Node Id for hub to enumerate */
    FILE *fout,
    UINT16 indent
    )

    {
    UINT16 portCount;			/* Number of ports on this hub */
    UINT16 portIndex;			/* current port index */
    UINT16 nodeType;			/* type of node being enumerated */
    USBD_NODE_ID nodeId;		/* id of node being enumerated */
    UINT16 s;

    /* Retrieve the number of ports for this hub. */

    fprintf (fout, "%*shub 0x%x", indent, "", (UINT32) hubId);
    showMfgModel (clientHandle, hubId, fout);
    fprintf (fout, "\n");

    if ((s = usbdHubPortCountGet (clientHandle, hubId, &portCount)) 
	!= OK)
	{
	fprintf (fout, "usbdHubPortCountGet() returned %d\n", s);
	return ERROR;
	}

    fprintf (fout, "%*sport count = %d\n", indent+INDENT, "", portCount);

    /* See if a device is attached to each of the hub抯 ports. */

    for (portIndex = 0; portIndex < portCount; portIndex++) 
	{
	if ((s = usbdNodeIdGet (clientHandle, hubId, portIndex, &nodeType, 
	    &nodeId)) != OK)
	    {
	    fprintf (fout, "%*susbdNodeIdGet() returned %d\n", indent+INDENT, "", 
		s);
	    return ERROR;
	    }

	switch (nodeType)
	    {
	    case USB_NODETYPE_NONE:	/* No device attached. */

		fprintf (fout, "%*sport %d not connected\n", indent+INDENT, "", 
		    portIndex);
		break;

	    case USB_NODETYPE_HUB:	/* Another hub found. */

		fprintf (fout, "%*sport %d is hub 0x%x\n", indent+INDENT, "",
		    portIndex, (UINT32) nodeId);

		if (HubEnumerate (clientHandle, nodeId, fout, indent+INDENT) 
		    != OK)
		    return ERROR;

		break;

	    case USB_NODETYPE_DEVICE:	/* Device attached to port. */

		fprintf (fout, "%*sport %d is device 0x%x", indent+INDENT, "",
		    portIndex, (UINT32) nodeId);

		showMfgModel (clientHandle, nodeId, fout);
		fprintf (fout, "\n");

		break;

	    default:			/* Unknown node type code */

		fprintf (fout, "%*snode type not recognized for node 0x%x\n",
		    indent+INDENT, "", (UINT32) nodeId);
		break;
	    }
	}

    return OK;
    }


/***************************************************************************
*
* USBEnumerate - Enumerate all USB host controllers in the system.
* 
* This routine enumerates all USB host controllers, hubs, and devices
* currently connected to the system.  The caller must register with the
* USBD prior to calling this function and supply its USBD_CLIENT_HANDLE
* in <clientHandle>.
*
* RETURNS: OK, or ERROR if USBD returns an error.
*/

LOCAL UINT16 USBEnumerate
    (
    USBD_CLIENT_HANDLE clientHandle,	/* Caller抯 USBD client handle */
    FILE *fout
    )

    {
    UINT16 busCount;			/* Number of USB host controllers */
    UINT16 busIndex;			/* current bus index */
    USBD_NODE_ID rootId;		/* Root hub id for current bus */
    UINT16 s;


    /* Retrieve the number of USB host controllers in the system. */

    if ((s = usbdBusCountGet (clientHandle, &busCount)) != OK)
	{
	fprintf (fout, "usbdBusCountGet() returned %d\n", s);
	return ERROR;
	}

    fprintf (fout, "bus count = %d\n", busCount);

    /* Retrieve the root hub id for each host controller and enumerate it. */

    for (busIndex = 0; busIndex < busCount; busIndex++) 
	{
	if ((s = usbdRootNodeIdGet (clientHandle, busIndex, &rootId))
	    != OK)
	    {
	    fprintf (fout, "usbdRootNodeIdGet() returned %d\n", s);
	    return ERROR;
	    }

	fprintf (fout, "enumerating bus %d\n", busIndex);
	
	if (HubEnumerate (clientHandle, rootId, fout, INDENT) != OK)
	    return ERROR;
	}

    return OK;
    }


/*************************************************************************
*
* cmdUsbEnum - Enumerate USBs attached to system
*
* RETURNS:  RET_CONTINUE;
*/

LOCAL UINT16 cmdUsbEnum
    (
    pVOID Param,		/* Generic parameter passed down */
    char **ppCmd,		/* Ptr to remainder of cmd line */
    FILE *fin,			/* stream for input (if any) */
    FILE *fout			/* stream for output (if any) */
    )

    {
    USBEnumerate (usbdClientHandle, fout);

    return RET_CONTINUE;
    }


/*************************************************************************
*
* cmdUsbStats - Show bus statistics
*
* RETURNS:  RET_CONTINUE;
*/

LOCAL UINT16 cmdUsbStats
    (
    pVOID Param,		/* Generic parameter passed down */
    char **ppCmd,		/* Ptr to remainder of cmd line */
    FILE *fin,			/* stream for input (if any) */
    FILE *fout			/* stream for output (if any) */
    )

    {
    long nodeId;
    USBD_STATS stats;
    UINT16 s;

    /* Extract parameters. */

    *ppCmd = GetHexToken (*ppCmd, &nodeId, -1);


    /* Validate parameters */

    if (nodeId == -1)
	{
	fprintf (fout, "Must specify a node id.\n");
	return RET_CONTINUE;
	}


    /* Execute function. */

    if ((s = usbdStatisticsGet (usbdClientHandle, (GENERIC_HANDLE) nodeId, &stats, sizeof (stats)))
	!= OK)
	fprintf (fout, "usbdStatisticsGet() returned %d\n", s);
    else
	{
	fprintf (fout, "totalTransfersIn    = %ld\n", (long) stats.totalTransfersIn);
	fprintf (fout, "totalTransfersout   = %ld\n", (long) stats.totalTransfersOut);
	fprintf (fout, "totalReceiveErrors  = %ld\n", (long) stats.totalReceiveErrors);
	fprintf (fout, "totalTransmitErrors = %ld\n", (long) stats.totalTransmitErrors);
	}

    return RET_CONTINUE;
    }


/*************************************************************************
*
* cmdGetConfig - get current configuration value for a device
*
* RETURNS:  RET_CONTINUE;
*/

LOCAL UINT16 cmdGetConfig
    (
    pVOID Param,		/* Generic parameter passed down */
    char **ppCmd,		/* Ptr to remainder of cmd line */
    FILE *fin,			/* stream for input (if any) */
    FILE *fout			/* stream for output (if any) */
    )

    {
    long nodeId;
    UINT16 configuration;
    UINT16 s;

    /* Extract parameters. */

    *ppCmd = GetHexToken (*ppCmd, &nodeId, -1);


    /* Validate parameters */

    if (nodeId == -1)
	{
	fprintf (fout, "Must specify a node id.\n");
	return RET_CONTINUE;
	}


    /* Execute function. */

    if ((s = usbdConfigurationGet (usbdClientHandle, (GENERIC_HANDLE) nodeId, &configuration))
	!= OK)
	fprintf (fout, "usbdConfigurationGet() returned %d\n", s);
    else
	fprintf (fout, "current configuration = 0x%x\n", configuration);


    return RET_CONTINUE;
    }


/*************************************************************************
*
* cmdSetConfig - set current configuration value for a device
*
* RETURNS:  RET_CONTINUE;
*/

LOCAL UINT16 cmdSetConfig
    (
    pVOID Param,		/* Generic parameter passed down */
    char **ppCmd,		/* Ptr to remainder of cmd line */
    FILE *fin,			/* stream for input (if any) */
    FILE *fout			/* stream for output (if any) */
    )

    {
    long nodeId;
    long configuration;
    UINT16 s;

    /* Extract parameters. */

    *ppCmd = GetHexToken (*ppCmd, &nodeId, -1);
    *ppCmd = GetHexToken (*ppCmd, &configuration, -1);


    /* Validate parameters */

    if (nodeId == -1 || configuration == -1)
	{
	fprintf (fout, "Must specify a node id and configuration value.\n");
	return RET_CONTINUE;
	}


    /* Execute function. */

    s = usbdConfigurationSet (usbdClientHandle, (GENERIC_HANDLE) nodeId, (UINT16) configuration, 0);
    fprintf (fout, "usbdConfigurationSet() returned %d\n", s);

    return RET_CONTINUE;
    }


/*************************************************************************
*
* cmdGetInterface - get alt. setting for an interface
*
* RETURNS:  RET_CONTINUE;
*/

LOCAL UINT16 cmdGetInterface
    (
    pVOID Param,		/* Generic parameter passed down */
    char **ppCmd,		/* Ptr to remainder of cmd line */
    FILE *fin,			/* stream for input (if any) */
    FILE *fout			/* stream for output (if any) */
    )

    {
    long nodeId;
    long index;
    UINT16 altSetting;
    UINT16 s;

    /* Extract parameters. */

    *ppCmd = GetHexToken (*ppCmd, &nodeId, -1);
    *ppCmd = GetHexToken (*ppCmd, &index, -1);


    /* Validate parameters */

    if (nodeId == -1 || index == -1)
	{
	fprintf (fout, "Must specify a node id and interface number.\n");
	return RET_CONTINUE;
	}


    /* Execute function. */

    if ((s = usbdInterfaceGet (usbdClientHandle, (GENERIC_HANDLE) nodeId, index, &altSetting))
	!= OK)
	fprintf (fout, "usbdInterfaceGet() returned %d\n", s);
    else
	fprintf (fout, "alternate setting = 0x%x\n", altSetting);


    return RET_CONTINUE;
    }


/*************************************************************************
*
* cmdSetInterface - set alt. setting for an interface
*
* RETURNS:  RET_CONTINUE;
*/

LOCAL UINT16 cmdSetInterface
    (
    pVOID Param,		/* Generic parameter passed down */
    char **ppCmd,		/* Ptr to remainder of cmd line */
    FILE *fin,			/* stream for input (if any) */
    FILE *fout			/* stream for output (if any) */
    )

    {
    long nodeId;
    long index;
    long altSetting;
    UINT16 s;

    /* Extract parameters. */

    *ppCmd = GetHexToken (*ppCmd, &nodeId, -1);
    *ppCmd = GetHexToken (*ppCmd, &index, -1);
    *ppCmd = GetHexToken (*ppCmd, &altSetting, -1);


    /* Validate parameters */

    if (nodeId == -1 || index == -1 || altSetting == -1)
	{
	fprintf (fout, "Must specify a node id, interface number, and alt. setting.\n");
	return RET_CONTINUE;
	}


    /* Execute function. */

    s = usbdInterfaceSet (usbdClientHandle, (GENERIC_HANDLE) nodeId, index, altSetting);
    fprintf (fout, "usbdInterfaceSet() returned %d\n", s);

    return RET_CONTINUE;
    }
#endif	/* INCLUDE_USB from way above*/


/*************************************************************************
*
* displayMem - dumps memory to display
*
* RETURNS:  N/A
*/

LOCAL VOID displayMem
    (
    UINT16 bfrLen,
    pUINT8 pBfr,
    FILE *fout
    )

    {
    int i,j;

    for (i = 0; i < bfrLen; i += 16)
	{
	for (j = i; j < bfrLen && j < i+16; j++)
	    {
	    fprintf (fout, "%2.2x ", pBfr [j]);
	    if (j % 16 == 7)
		fprintf (fout, " ");
	    }
	fprintf (fout, " ");
	for (j = i; j < bfrLen && j < i+16; j++)
	    {
	    fprintf (fout, "%c", (pBfr [j] >= 32 && pBfr [j] <= 127) ? 
		pBfr [j] : '.');
	    }
	fprintf (fout, "\n");
	}
    }

#ifdef INCLUDE_USB

/*************************************************************************
*
* cmdGetStatus - get status for a device/interface/endpoint
*
* RETURNS:  RET_CONTINUE;
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人开心网精品视频| 在线影视一区二区三区| 久久久亚洲精品一区二区三区| 国产自产视频一区二区三区| 欧美极品aⅴ影院| 欧美精品乱人伦久久久久久| 色婷婷久久99综合精品jk白丝| 国产精品538一区二区在线| 99久久婷婷国产综合精品电影 | 色综合久久久久综合体桃花网| 91精品国模一区二区三区| 粉嫩av一区二区三区粉嫩| 久久超碰97中文字幕| 亚洲国产成人tv| 亚洲免费看黄网站| 色综合久久综合网97色综合| 日日欢夜夜爽一区| 成人av网站在线观看| 久久综合一区二区| 丝袜亚洲另类丝袜在线| 国产99精品国产| 日韩欧美一二三四区| 日本亚洲最大的色成网站www| 26uuu欧美| 日韩vs国产vs欧美| 欧美成人aa大片| 免费观看久久久4p| 日韩精品一区二区三区swag | 亚洲精品你懂的| 国产老妇另类xxxxx| 欧美国产在线观看| 春色校园综合激情亚洲| 国产精品国模大尺度视频| 欧美一区二区大片| 欧美综合亚洲图片综合区| 色综合视频一区二区三区高清| 久久99热99| 麻豆精品视频在线观看视频| 性感美女极品91精品| 亚洲激情av在线| 国产婷婷色一区二区三区四区| 日韩一二在线观看| www久久久久| 亚洲一区二区美女| 精品欧美久久久| 99久久精品国产一区二区三区| 国产一区二区电影| 在线观看亚洲精品| 26uuu国产一区二区三区| 亚洲乱码精品一二三四区日韩在线| 亚洲精品视频一区| 日本高清视频一区二区| 狠狠色狠狠色综合系列| 麻豆国产欧美一区二区三区| 久久精品国产亚洲aⅴ| 黄页视频在线91| 福利电影一区二区三区| 精品国产乱码久久久久久久久| 欧美日韩在线综合| www.66久久| 国产成人精品亚洲777人妖 | 国产在线不卡视频| 五月婷婷综合网| 自拍偷自拍亚洲精品播放| 中文字幕日韩精品一区| 亚洲国产日产av| 国产成人综合亚洲网站| 91成人网在线| 亚洲欧美在线aaa| 久久精品国产77777蜜臀| 欧美亚洲免费在线一区| 国产目拍亚洲精品99久久精品 | 欧美性感一类影片在线播放| 欧美精品一区二区三区蜜桃视频| 亚洲精品视频在线看| 国产精品一区二区三区网站| 欧美午夜电影网| 欧美日韩国产三级| 成人激情av网| 丝瓜av网站精品一区二区| 亚洲高清在线视频| 亚洲女人小视频在线观看| 亚洲成人免费看| 午夜精品一区二区三区免费视频| 精品一区二区三区免费| 91精品国产综合久久小美女| 亚洲女人的天堂| 91日韩在线专区| 欧美一区二区在线看| 国产欧美日韩综合精品一区二区 | 天堂在线亚洲视频| 国产成人精品免费一区二区| 国产乱淫av一区二区三区| 91福利资源站| 三级成人在线视频| 日韩免费视频一区二区| 国产美女久久久久| 国产精品福利电影一区二区三区四区| 久久99精品久久久久| 国产亚洲短视频| 欧美综合在线视频| 美国三级日本三级久久99| 日韩美女视频在线| 99久久伊人久久99| 婷婷综合另类小说色区| 欧美va亚洲va在线观看蝴蝶网| 国产精品1区2区3区在线观看| 久久综合九色综合欧美就去吻 | 亚洲精品中文在线| 日韩欧美国产一区在线观看| av在线不卡观看免费观看| 奇米在线7777在线精品| 亚洲精品大片www| 久久久久九九视频| 8x8x8国产精品| 成人美女视频在线观看18| 亚洲国产你懂的| 日韩欧美国产不卡| 成人午夜精品一区二区三区| 午夜精品久久久久| 国产精品久久久久久久久晋中 | 2020国产精品自拍| 欧美成人vr18sexvr| 制服丝袜国产精品| 欧美日韩国产天堂| 欧美在线观看一区| 成人h精品动漫一区二区三区| 精品一区二区国语对白| 另类中文字幕网| 国产一区二区三区四区五区入口 | 91最新地址在线播放| 成人深夜视频在线观看| 丰满放荡岳乱妇91ww| 成人免费视频免费观看| 成人av先锋影音| 成人免费视频app| 欧美激情综合五月色丁香| 91香蕉视频在线| 欧美日韩国产高清一区二区 | 日韩激情中文字幕| 青椒成人免费视频| 国产精品一区二区三区四区 | 亚洲一区av在线| 全国精品久久少妇| 成人在线综合网| 色婷婷久久久综合中文字幕| 欧美精品在线观看一区二区| 91精品国产综合久久精品图片| 99精品国产热久久91蜜凸| 一本久久a久久免费精品不卡| 欧美成人官网二区| 亚洲精品国产视频| 精彩视频一区二区三区| 色婷婷久久一区二区三区麻豆| 日韩午夜小视频| 亚洲精品成人在线| 国产成人精品亚洲午夜麻豆| 欧美日韩国产片| 国产精品伦理在线| 国产高清精品网站| 日韩精品一区二区三区在线观看| 中文字幕亚洲欧美在线不卡| 精品亚洲aⅴ乱码一区二区三区| 色婷婷国产精品综合在线观看| 久久亚洲一区二区三区四区| 亚洲综合图片区| 91麻豆文化传媒在线观看| 久久久久免费观看| 国产精品一区在线| 精品国产污污免费网站入口| 日韩av一级电影| 欧美丰满高潮xxxx喷水动漫| 亚洲国产精品嫩草影院| 欧美视频在线不卡| 三级久久三级久久久| 欧美视频一二三区| 国产精品无人区| 欧洲av在线精品| 午夜电影一区二区三区| 色狠狠一区二区| 亚洲欧洲国产日韩| av资源网一区| 一区二区三区四区高清精品免费观看| 国产在线视频精品一区| 欧美日韩一区二区在线观看| 日本伊人色综合网| 精品999在线播放| 成人毛片在线观看| 亚洲综合一区二区三区| 日韩精品一区二区三区视频 | 日韩三级精品电影久久久| 亚洲综合一二区| 69堂国产成人免费视频| 韩国理伦片一区二区三区在线播放| 欧美日韩高清一区| 成人av在线一区二区| 午夜精品福利久久久| 亚洲精选一二三| 久久久久久综合| 日韩一区二区在线免费观看|