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

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

?? usrusbtool.c

?? SL811 USB接口芯片用于VxWorks系統的驅動源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:

	    txBfrCount = fread (txBfr, sizeof (char), sizeof (txBfr), txFile);
	    txBfrIndex = 0;
	    }

	if (txCharCount == 0 || txBfrCount == 0)
	    {
	    closeTxFile ();
	    txCharCount = 0;
	    }

	if (txBfrCount == 0)
	    return ERROR;

	*txChar = txBfr [txBfrIndex++];
	--txBfrCount;
	}

    return OK;
    }


/*************************************************************************
*
* prnAttachCallback - receives attach callbacks from printer SIO driver
*
* RETURNS: N/A
*/

LOCAL SIO_CHAN *pPrnSioChan;

LOCAL VOID prnAttachCallback
    (
    pVOID arg,			    /* caller-defined argument */
    SIO_CHAN *pChan,		    /* pointer to affected SIO_CHAN */
    UINT16 attachCode		    /* defined as USB_KBD_xxxx */
    )

    {
    FILE *fout = (FILE *) arg;

    fprintf (fout, "pChan = %p, attach code = %s\n", pChan,
	(attachCode == USB_PRN_ATTACH) ? "USB_PRN_ATTACH" : "USB_PRN_REMOVE");

    if (attachCode == USB_PRN_ATTACH)
	{
	if (pPrnSioChan == NULL)
	    {
	    if (usbPrinterSioChanLock (pChan) != OK)
		fprintf (fout, "usbPrinterSioChanLock() returned ERROR\n");
	    else
		{
		pPrnSioChan = pChan;

		if ((*pPrnSioChan->pDrvFuncs->callbackInstall) (pPrnSioChan, 
		    SIO_CALLBACK_GET_TX_CHAR, prnTxCallback, NULL) != OK)
		    {
		    fprintf (fout, "callbackInstall() returned ERROR.\n");
		    }
		}
	    }
	else
	    {
	    fprintf (fout, "Another channel already in use, ignored.\n");
	    }
	}
    else
	{
	if (pChan == pPrnSioChan)
	    {
	    if (usbPrinterSioChanUnlock (pChan) != OK)
		fprintf (fout, "usbPrinterSioChanUnlock() returned ERROR\n");

	    pPrnSioChan = NULL;
	    }
	}
    }


/*************************************************************************
*
* cmdPrnInit - initializes USB printer SIO driver
*
* RETURNS: RET_CONTINUE
*/

LOCAL BOOL prnInitialized = FALSE;

LOCAL UINT16 cmdPrnInit
    (
    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) */
    )

    {
    if (prnInitialized)
	{
	fprintf (fout, "USB printer SIO driver already initialized.\n");
	return RET_CONTINUE;
	}

    if (usbPrinterDevInit () == OK)
	{
	fprintf (fout, "usbPrinterDevInit() returned OK\n");
	prnInitialized = TRUE;

	/* Register for attach notification */

	if (usbPrinterDynamicAttachRegister (prnAttachCallback, (pVOID) fout) != OK)
	    {
	    fprintf (fout, "usbPrinterDynamicAttachRegister() returned ERROR\n");
	    return RET_CONTINUE;
	    }
	}
    else
	fprintf (fout, "usbPrinterDevInit() returned ERROR\n");

    return RET_CONTINUE;
    }


/*************************************************************************
*
* cmdPrnDown - shuts down USB printer SIO driver
*
* RETURNS: RET_CONTINUE
*/

LOCAL UINT16 cmdPrnDown
    (
    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) */
    )

    {
    if (!prnInitialized)
	{
	fprintf (fout, "USB printer SIO driver not initialized.\n");
	return RET_CONTINUE;
	}

    prnInitialized = FALSE;
    pPrnSioChan = NULL;

    /* unregister */

    if (usbPrinterDynamicAttachUnRegister (prnAttachCallback, (pVOID) fout) != OK)
	fprintf (fout, "usbPrinterDynamicAttachUnRegister() returned ERROR\n");

    if (usbPrinterDevShutdown () == OK)
	fprintf (fout, "usbPrinterDevShutdown() returned OK\n");
    else
	fprintf (fout, "usbPrinterDevShutdown() returned ERROR\n");

    return RET_CONTINUE;
    }


/*************************************************************************
*
* waitForPrinter - waits for a printer to be connected
*
* RETURNS: OK if printer connected, else ERROR
*/

LOCAL STATUS waitForPrinter 
    (
    FILE *fout
    )

    {
    THREAD_HANDLE thread;
    UINT8 bfr [USB_PRN_MAX_DEVICE_ID_LEN];
    pUSB_PRINTER_CAPABILITIES pCaps = (pUSB_PRINTER_CAPABILITIES) bfr;
    UINT16 idLen;
    UINT8 protocol;
    UINT16 i;


    /* Create thread to watch for keypress */

    enterPressed = FALSE;

    if (OSS_THREAD_CREATE (enterThread, (pVOID) fout, OSS_PRIORITY_INHERIT, "tEnter",
	&thread) != OK)
	{
	fprintf (fout, "Error creating thread.\n");
	return ERROR;
	}


    /* Wait for a printer to be attached. */

    if (pPrnSioChan == NULL)
	{
	fprintf (fout, "Waiting for printer to be attached...\n");
	while (!enterPressed && pPrnSioChan == NULL)
	    OSS_THREAD_SLEEP (1);
	}


    /* kill keypress thread */

    OSS_THREAD_DESTROY (thread);

    if (enterPressed)
	return ERROR;


    /* Display the printer characteristics. */

    if ((*pPrnSioChan->pDrvFuncs->ioctl) (pPrnSioChan, SIO_USB_PRN_DEVICE_ID_GET, 
	(void *) &bfr) != OK)
	fprintf (fout, "ioctl (SIO_USB_PRN_DEVICE_ID_GET) returned ERROR.\n");
    else
	{
	idLen = FROM_BIGW (pCaps->length);
	fprintf (fout, "Device ID length = %d\n", idLen);
	fprintf (fout, "Device ID = ");
	for (i = 0; i < idLen - 2; i++)
	    fprintf (fout, "%c", pCaps->caps [i]);
	fprintf (fout, "\n");
	}

    if ((*pPrnSioChan->pDrvFuncs->ioctl) (pPrnSioChan, SIO_USB_PRN_PROTOCOL_GET,
	(void *) &protocol) != OK)
	fprintf (fout, "ioctl (SIO_USB_PRN_PROTOCOL_GET) returned ERROR.\n");
    else
	{
	fprintf (fout, "protocol = 0x%x ", protocol);
	switch (protocol)
	    {
	    case USB_PROTOCOL_PRINTER_UNIDIR:
		fprintf (fout, "(USB_PROTOCOL_PRINTER_UNIDIR)\n");
		break;

	    case USB_PROTOCOL_PRINTER_BIDIR:
		fprintf (fout, "(USB_PROTOCOL_PRINTER_BIDIR)\n");
		break;

	    default:
		fprintf (fout, "(unknown)\n");
		break;
	    }
	}

    return OK;
    }


/*************************************************************************
*
* cmdPrint - performs printer test
*
* RETURNS: RET_CONTINUE
*/

LOCAL UINT16 cmdPrint
    (
    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 blocks;


    /* Get parameters */

    *ppCmd = GetHexToken (*ppCmd, &blocks, 1);


    /* Wait for a printer to be connected */

    if (waitForPrinter (fout) == OK)
	{
	/* trigger a transmission. */

	patternTest = TRUE;
	nextCharVal = 0;
	txCharCount = blocks * 4096;

	fprintf (fout, "sending %d 4k blocks to printer...\n", (UINT16) blocks);

	if ((*pPrnSioChan->pDrvFuncs->txStartup) (pPrnSioChan) != OK)
	    fprintf (fout, "txStartup() returned ERROR.\n");
	}

    return RET_CONTINUE;
    }


/*************************************************************************
*
* cmdPrintFnm - sends file to printer
*
* RETURNS: RET_CONTINUE
*/

LOCAL UINT16 cmdPrintFnm
    (
    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) */
    )

    {
    char fnm [MAX_CMD_LEN];
    FILE *f;
    long fsize;


    /* Get filename parameter */

    *ppCmd = GetNextToken (*ppCmd, fnm, sizeof (fnm));


    /* Terminate any current dump test */

    closeTxFile ();


    /* Attempt to open file */

    if ((f = fopen (fnm, "rb")) == NULL)
	{
	fprintf (fout, "Unable to open '%s'.\n", fnm);
	return RET_CONTINUE;
	}


    /* Determine file size */

    fseek (f, 0, SEEK_END);
    fsize = ftell (f);

    fprintf (fout, "file '%s' is %ld bytes.\n", fnm, fsize);

    fseek (f, 0, SEEK_SET);


    /* Wait for printer */

    if (waitForPrinter (fout) == OK)
	{
	/* Initiate transmission */

	patternTest = FALSE;
	txFile = f;
	txBfrCount = 0;
	txCharCount = fsize;

	fprintf (fout, "sending %ld bytes to printer...\n", fsize);

	if ((*pPrnSioChan->pDrvFuncs->txStartup) (pPrnSioChan) != OK)
	    {
	    fprintf (fout, "txStartup() returned ERROR.\n");
	    closeTxFile ();
	    }

	/* NOTE: If this path is successful, the file will be closed by
	 * the prnTxCallback().
	 */

	}
    else
	{

	/* Close input file */

	fclose (f);
	}
    
    return RET_CONTINUE;
    }
#endif	/*INCLUDE_USB_PRINTER*/


#ifdef INCLUDE_USB_SPEAKER
/*************************************************************************
*
* spkrAttachCallback - receives attach callbacks from speaker SEQ_DEV driver
*
* RETURNS: N/A
*/

LOCAL SEQ_DEV *pSpkrSeqDev = NULL;

LOCAL VOID spkrAttachCallback
    (
    pVOID arg,			    /* caller-defined argument */
    SEQ_DEV *pSeqDev,		    /* pointer to affected SEQ_DEV */
    UINT16 attachCode		    /* defined as USB_KBD_xxxx */
    )

    {
    FILE *fout = (FILE *) arg;

    fprintf (fout, "pSeqDev = %p, attach code = %s\n", pSeqDev,
	(attachCode == USB_SPKR_ATTACH) ? "USB_SPKR_ATTACH" : "USB_SPKR_REMOVE");

    if (attachCode == USB_SPKR_ATTACH)
	{
	if (pSpkrSeqDev == NULL)
	    {
	    if (usbSpeakerSeqDevLock (pSeqDev) != OK)
		fprintf (fout, "usbSpeakerSeqDevLock() returned ERROR\n");
	    else
		{
		pSpkrSeqDev = pSeqDev;
		}
	    }
	else
	    {
	    fprintf (fout, "Another channel already in use, ignored.\n");
	    }
	}
    else
	{
	if (pSeqDev == pSpkrSeqDev)
	    {
	    if (usbSpeakerSeqDevUnlock (pSeqDev) != OK)
		fprintf (fout, "usbSpeakerSeqDevUnlock() returned ERROR\n");

	    pSpkrSeqDev = NULL;
	    }
	}
    }


/***************************************************************************
*
* audioThread - Dumps audio data to usbSpeakerLib
*
* By convention, <param> is the file handle for the file to be played and 
* the global "wavDataLength" should be the length of the data chunk.  The
* file position should be set to the beginning of the data in the data chunk.
*
* This thread closes the file after reading all data.
*
* RETURNS: N/A
*/

LOCAL BOOL audioThreadBusy = FALSE;
LOCAL UINT32 wavDataLen;

LOCAL VOID audioThread
    (
    pVOID param
    )

    {
    FILE *wavFile = (FILE *) param;
    pUINT8 pBfr;
    UINT32 remDataLen = wavDataLen;
    UINT32 actLen;


    /* Create a buffer for audio data */

    if ((pBfr = OSS_MALLOC (AUDIO_BFR_SIZE)) == NULL)
	{
	printf ("Out of memory creating audio buffer.\n");
	}
    else
	{
	/* open the audio stream. */

	if ((*pSpkrSeqDev->sd_ioctl) (pSpkrSeqDev, 
	    USB_SPKR_IOCTL_OPEN_AUDIO_STREAM, 0) != OK)
	    {
	    printf ("IOCTL OPEN_AUDIO_STREAM returned ERROR.\n");
	    }
	else
	    {
	    /* Read audio data and pass it to usbSpeakerLib. */

	    while (remDataLen > 0 &&
		(actLen = fread (pBfr, 1, min (remDataLen, AUDIO_BFR_SIZE), 
		    wavFile)) > 0)
		{
		if ((*pSpkrSeqDev->sd_seqWrt) (pSpkrSeqDev, actLen,
		    pBfr, FALSE) != OK)
		    {
		    printf ("sd_seqWrt() returned ERROR.\n");
		    break;
		    }
		else
		    {
		    remDataLen -= actLen;
		    }
		}

	    /* Mark the end of the audio stream. */

	    if ((*pSpkrSeqDev->sd_ioctl) (pSpkrSeqDev, 
		USB_SPKR_IOCTL_CLOSE_AUDIO_STREAM, 0) != OK)
		{
		printf ("IOCTL CLOSE_AUDIO_STREAM returned ERROR.\n");
		}
	    }

	OSS_FREE (pBfr);
	}


    /* Close the input file. */

    fclose (wavFile);

    audioThreadBusy = FALSE;
    }


/*************************************************************************
*
* cmdSpkrInit - initializes USB speaker SEQ_DEV driver
*
* RETURNS: RET_CONTINUE
*/

LOCAL BOOL spkrInitialized = FALSE;

LOCAL UINT16 cmdSpkrInit
    (
    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) */
    )

    {
    if (spkrInitialized)
	{
	fprintf (fout, "USB speaker SEQ_DEV driver already initialized.\n");
	return RET_CONTINUE;
	}

    if (usbSpeakerDevInit () == OK)
	{
	fprintf (fout, "usbSpeakerDevInit() returned OK\n");
	spkrInitialized = TRUE;

	/* Register for attach notification */

	if (usbSpeakerDynamicAttachRegister (spkrAttachCallback, (pVOID) fout) != OK)
	    {
	    fprintf (fout, "usbSpeakerDynamicAttachRegister() returned ERROR\n");
	    return RET_CONTINUE;
	    }
	}
    el

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费小视频| 日本成人中文字幕在线视频| 国产91精品免费| 精品国内二区三区| 麻豆免费精品视频| 欧美国产精品一区二区| 99re热视频精品| 亚洲第一狼人社区| 欧美tk—视频vk| 成人免费视频播放| 亚洲一区二区美女| 欧美电视剧免费全集观看| 国产91丝袜在线观看| 一区在线观看免费| 宅男在线国产精品| 国产精品88888| 亚洲精品美腿丝袜| 91精品在线观看入口| 国产一区二区三区在线观看精品 | 国产精品一区在线观看你懂的| 国产日韩综合av| 91蜜桃视频在线| 久久国产剧场电影| 国产精品久久99| 91精品国产综合久久蜜臀| 国产ts人妖一区二区| 亚洲一级二级在线| 久久精品日产第一区二区三区高清版| 91蜜桃在线免费视频| 久久精品免费看| 一区二区三区精密机械公司| 精品国产凹凸成av人网站| 色欲综合视频天天天| 久久aⅴ国产欧美74aaa| 最新国产精品久久精品| 日韩欧美激情在线| 在线观看亚洲a| 成人免费观看av| 麻豆精品一区二区三区| 亚洲免费观看高清完整版在线| 日韩视频永久免费| 91福利在线看| 国产成人鲁色资源国产91色综| 午夜欧美一区二区三区在线播放| 国产精品乱码妇女bbbb| 精品少妇一区二区三区免费观看| 日本久久一区二区三区| 国产电影精品久久禁18| 美女脱光内衣内裤视频久久网站| 亚洲精品国久久99热| 国产女人水真多18毛片18精品视频| 欧美猛男男办公室激情| 91麻豆免费看片| 国产91露脸合集magnet| 久久99国内精品| 裸体歌舞表演一区二区| 亚洲一区二区免费视频| 亚洲激情六月丁香| 亚洲人成网站在线| 亚洲欧洲精品天堂一级| 中文字幕国产一区| 国产亚洲精品bt天堂精选| 日韩一二三四区| 欧美一区二区三区日韩视频| 欧美私人免费视频| 91国偷自产一区二区使用方法| 成人黄色777网| 懂色av一区二区夜夜嗨| 国产盗摄一区二区三区| 国产在线麻豆精品观看| 久久精品二区亚洲w码| 老司机精品视频导航| 精品一区二区三区在线播放视频| 日韩精品电影在线| 日本三级韩国三级欧美三级| 亚洲成人av电影在线| 丝袜a∨在线一区二区三区不卡| 亚洲自拍与偷拍| 亚洲国产日韩综合久久精品| 亚洲午夜久久久久中文字幕久| 亚洲女与黑人做爰| 亚洲地区一二三色| 蜜臀精品久久久久久蜜臀 | 91福利视频久久久久| 99久久伊人网影院| 色综合色狠狠天天综合色| 91天堂素人约啪| 在线免费一区三区| 在线电影国产精品| 欧美成va人片在线观看| 国产午夜精品美女毛片视频| 国产亚洲一区字幕| 亚洲人成网站色在线观看| 一区二区三区成人| 日日欢夜夜爽一区| 久久国产精品免费| 国产成人在线电影| 91色视频在线| 欧美丰满美乳xxx高潮www| 欧美一级xxx| 国产视频一区在线观看| 亚洲天天做日日做天天谢日日欢| 亚洲福利视频一区二区| 精品亚洲成a人| a级精品国产片在线观看| 欧美日韩一区二区电影| 久久综合九色综合欧美98| 国产精品久久久久久亚洲毛片| 亚洲美女一区二区三区| 麻豆精品在线看| 96av麻豆蜜桃一区二区| 911精品产国品一二三产区 | 国产拍揄自揄精品视频麻豆| 亚洲欧洲综合另类在线| 免费人成精品欧美精品| 成人久久18免费网站麻豆 | 婷婷综合另类小说色区| 国内精品伊人久久久久av一坑| 国产精品中文欧美| 欧美性色欧美a在线播放| 精品裸体舞一区二区三区| 1区2区3区国产精品| 日本免费新一区视频| www.欧美色图| 欧美va亚洲va香蕉在线| 亚洲精品写真福利| 国产精品自在欧美一区| 欧美午夜一区二区| 欧美激情在线免费观看| 亚洲va在线va天堂| 成人在线一区二区三区| 91精品视频网| 亚洲一区中文日韩| 成人白浆超碰人人人人| 精品剧情v国产在线观看在线| 亚洲欧美日韩国产中文在线| 国产一区二区中文字幕| 欧美日韩国产经典色站一区二区三区 | 大胆亚洲人体视频| 日韩午夜在线影院| 亚洲午夜在线电影| 99久久99久久久精品齐齐| 久久久久国产成人精品亚洲午夜| 亚洲动漫第一页| 色综合久久天天| 国产精品第四页| 国产a级毛片一区| 精品国产1区二区| 蜜臀av亚洲一区中文字幕| 欧美日韩亚洲高清一区二区| 亚洲三级在线观看| 不卡的电影网站| 欧美国产日本视频| 丁香另类激情小说| 国产亚洲欧美色| 国产综合久久久久久鬼色| 日韩限制级电影在线观看| 日韩高清一区在线| 欧美另类z0zxhd电影| 亚洲亚洲人成综合网络| 91福利视频久久久久| 亚洲欧美日韩一区二区| 成人激情文学综合网| 国产精品女人毛片| 成人精品电影在线观看| 国产精品午夜在线观看| 成人手机在线视频| 中文字幕精品一区二区精品绿巨人 | 精品少妇一区二区三区日产乱码 | 久久精品国产久精国产| 日韩一级免费观看| 奇米色777欧美一区二区| 欧美一区二区三区四区五区| 日韩黄色免费网站| 欧美一卡二卡三卡| 精品在线亚洲视频| 26uuu色噜噜精品一区二区| 激情成人综合网| 国产午夜精品一区二区| 99精品久久99久久久久| 1000部国产精品成人观看| 色94色欧美sute亚洲线路二| 一区二区三区精品久久久| 欧美精选午夜久久久乱码6080| 日本伊人色综合网| 久久久久久免费网| 91一区二区在线观看| 亚洲综合精品自拍| 欧美一级国产精品| 国产精品99精品久久免费| 亚洲欧洲99久久| 欧美精品色一区二区三区| 久久国产尿小便嘘嘘| 国产精品白丝在线| 7777精品伊人久久久大香线蕉的 | 欧美综合一区二区| 久久福利资源站| 中文字幕一区二区三区乱码在线 | 精品无人区卡一卡二卡三乱码免费卡| 久久理论电影网|