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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sndssio.c

?? 4510b的vxworks的BSP
?? C
?? 第 1 頁 / 共 2 頁
字號:
			}

		}
	else
		{
		SNDS_REG_READ(pChan, SNDS_UCON, temp);
		temp &=UCON_RX_TX_RESET;	/**Reset RX and TX mode bits*/
    	temp |= (UCON_RX|UCON_TX);
    	SNDS_REG_WRITE(pChan,SNDS_UCON, temp);
		if (pChan == &sndsChan[0])
			{
        	intDisable (INT_LVL_UARTTX0);
        	intDisable (INT_LVL_UARTRX0);
			}
    	else if (pChan == &sndsChan[1])
			{
        	intDisable (INT_LVL_UARTTX1);
        	intDisable (INT_LVL_UARTRX1);
			}
		}
	
    return (OK);
    }


/*******************************************************************************
*
* sndsHup - hang up the modem control lines 
*
* Resets the RTS and DTR signals.
*
* RETURNS: OK
*/

LOCAL STATUS sndsHup
    (
    SNDS_CHAN * pChan 	/* pointer to channel */
    )
    {
    FAST int     oldlevel;	/* current interrupt level mask */

    oldlevel = intLock ();

    /* set RTS and DTR low */

/*    SNDS_REG_WRITE(pChan, SNDS_USTAT, USTAT_DTR_LOW);	    	*/
    intUnlock (oldlevel);

    return (OK);

    }    

/*******************************************************************************
*
* sndsOpen - Set the modem control lines 
*
* Set the modem control lines(RTS, DTR) TRUE if not already set.  
*
* RETURNS: OK
*/

LOCAL STATUS sndsOpen
    (
    SNDS_CHAN * pChan 	/* pointer to channel */
    )
    {
    FAST int     oldlevel;	/* current interrupt level mask */

    oldlevel = intLock ();

    /* set RTS and DTR active */

/*    SNDS_REG_WRITE(pChan, SNDS_USTAT, USTAT_DTR_HIGH);	*/
    intUnlock (oldlevel);

    return (OK);
    }

/******************************************************************************
*
* sndsOptSet - set hardware options
*
* This routine sets up the hardware according to the specified option
* argument.  If the hardware cannot support a particular option value, then
* it should ignore that portion of the request.
*
* RETURNS: OK upon success, or EIO for invalid arguments.
*/

LOCAL int sndsOptSet
    (
    SNDS_CHAN * pChan,		/* channel */
    uint_t	newOpts          	/* new options */
    )
    {
    	
    UINT8 dataBits = 0x03;
    UINT8 stopBits = 0x00;
    BOOL hdweFlowCtrl=TRUE;
    BOOL rcvrEnable = TRUE;
    int  lvl;
    UINT8 temp=PARITY_NONE;
    UINT32 result;	

    if (pChan == NULL || newOpts & 0xffffff00)
	return EIO;

    /* do nothing if options already set */

    if (pChan->options == newOpts)
	return OK;

    /* ignore requests for unsupported options */

    /* decode individual request elements */

    switch (newOpts & CSIZE)
	{
	case CS5:
	    dataBits = 0x00; break;
	case CS6:
	    dataBits = 0x01; break;
	case CS7:
	    dataBits = 0x02; break;
	default:
	case CS8:
	    dataBits = 0x03; break;
	}

    if (newOpts & STOPB)
		stopBits = 0x04;
    else
		stopBits = 0x00;

    switch (newOpts & (PARENB|PARODD))
	{
	case PARENB|PARODD:
	    /* enable odd parity */
    	    temp=PARITY_ODD;
	    break;

	case PARENB:
	    /* enable even parity */
	    temp=PARITY_EVEN; 
	    break;

	case PARODD:
	    /* invalid mode, not normally used. */
	    break;

	default:
	case 0:
	    temp=PARITY_NONE ;/* no parity */
	    break;
	}

	if (newOpts & CLOCAL)
	{
		/* clocal disables hardware flow control */
		hdweFlowCtrl = FALSE;
	}

    if ((newOpts & CREAD) == 0)
		rcvrEnable = FALSE;


    lvl = intLock ();

    /*
     * Reset the device according to dataBits, stopBits, hdweFlowCtrl,
     * rcvrEnable, and parity selections.
     */
	
    SNDS_REG_READ(pChan, SNDS_ULCON, result);	
    SNDS_REG_WRITE(pChan,SNDS_ULCON,(result|dataBits|temp|stopBits));
    
    intUnlock (lvl);

    pChan->options = newOpts;

    return (OK);
    }

/*******************************************************************************
*
* sndsIoctl - special device control
*
* This routine handles the IOCTL messages from the user. It supports commands 
* to get/set baud rate, mode(INT,POLL), hardware options(parity, number of 
* data bits) and modem control(RTS/CTS and DTR/DSR handshakes).
* The ioctl commands SIO_HUP and SIO_OPEN are used to implement the HUPCL(hang
* up on last close) function.
*
* As on a UNIX system, requesting a baud rate of zero is translated into
* a hangup request.  The DTR and RTS lines are dropped.  This should cause
* a connected modem to drop the connection.  The SIO_HUP command will only
* hangup if the HUPCL option is active.  The SIO_OPEN function will raise
* DTR and RTS lines whenever it is called. Use the BAUD_RATE=0 function
* to hangup when HUPCL is not active.
*
* The CLOCAL option will disable hardware flow control.  When selected,
* hardware flow control is not used.  When not selected hardware flow control
* is based on the RTS/CTS signals.  CTS is the clear to send input
* from the other end.  It must be true for this end to begin sending new
* characters.  In most drivers, the RTS signal will be assumed to be connected
* to the opposite end's CTS signal and can be used to control output from
* the other end.  Raising RTS asserts CTS at the other end and the other end
* can send data.  Lowering RTS de-asserts CTS and the other end will stop
* sending data. (This is non-EIA defined use of RTS).
*
* RETURNS: OK on success, ENOSYS on unsupported request, EIO on failed
* request.
*/

LOCAL int sndsIoctl
    (
    SIO_CHAN *	pSioChan,		/* device to control */
    int		request,		/* request code */
    void *	someArg			/* some argument */
    )
{
    SNDS_CHAN *pChan = (SNDS_CHAN *) pSioChan;
    int     oldlevel;		/* current interrupt level mask */
    int     arg = (int)someArg;
    
    switch (request)
	{
	case SIO_BAUD_SET:

	    /*
	     * like unix, a baud request for 0 is really a request to
	     * hangup.
	     */

	    if (arg == 0)
		return sndsHup (pChan);

	    /*
	     * Set the baud rate. Return EIO for an invalid baud rate, or
	     * OK on success.
	     */

	    if (arg < SNDS_BAUD_MIN || arg > SNDS_BAUD_MAX)
	        {
		return (EIO);
	        }

	    /* Calculate the baud rate constant for the new baud rate */
	  switch(arg)
	     {
	      case 1200:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_1200|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 2400:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_2400|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 4800:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_4800|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 9600:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_9600|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 19200:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_19200|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 38400:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_38400|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 57600:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_57600|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 115200:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_115200|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 230400:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_230400|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);

	      case 460800:
		    /* disable interrupts during chip access */
		    	oldlevel = intLock ();
			SNDS_REG_WRITE(pChan,SNDS_UBRDIV,SNDS_CNT0_460800|SNDS_CNT1_VAL);
	  		intUnlock (oldlevel);
	    		return (OK);
	      
	      default:
			return(OK);

	     }	
		pChan->baudRate=arg;
		break;

	case SIO_BAUD_GET:

	/* Get the baud rate and return OK */
		*(int *)arg = pChan->baudRate;	
		break;

	case SIO_MODE_SET:

	    /*
	     * Set the mode (e.g., to interrupt or polled). Return OK
	     * or EIO for an unknown or unsupported mode.
	     */

	    return (sndsModeSet (pChan, arg));

	case SIO_MODE_GET:

	    /* Get the current mode and return OK.  */

	    *(int *)arg = pChan->mode;
	    return (OK);

	case SIO_AVAIL_MODES_GET:

	    /* Get the available modes and return OK.  */

	    *(int *)arg = SIO_MODE_INT | SIO_MODE_POLL; 
	    return (OK);

	case SIO_HW_OPTS_SET:

	    /*
	     * Optional command to set the hardware options (as defined
	     * in sioLib.h).
	     * Return OK, or ENOSYS if this command is not implemented.
	     * Note: several hardware options are specified at once.
	     * This routine should set as many as it can and then return
	     * OK. The SIO_HW_OPTS_GET is used to find out which options
	     * were actually set.
	     */

	    return (sndsOptSet (pChan, arg));

	case SIO_HW_OPTS_GET:

	    /*
	     * Optional command to get the hardware options (as defined
	     * in sioLib.h). Return OK or ENOSYS if this command is not
	     * implemented.  Note: if this command is unimplemented, it
	     * will be assumed that the driver options are CREAD | CS8
	     * (e.g., eight data bits, one stop bit, no parity, ints enabled).
	     */

	    *(int *)arg = pChan->options;
	    return (OK);

	case SIO_HUP:

            /* check if hupcl option is enabled */

		if (pChan->options & HUPCL) 
			return (sndsHup (pChan));
		return (OK);

	case SIO_OPEN:
		return (sndsOpen (pChan)); /* always open */

	default:
	    return (ENOSYS);
	}
    return (ENOSYS);
}

/*******************************************************************************
*
* dummyCallback - dummy callback routine
*
* RETURNS: ERROR.
*/

LOCAL STATUS dummyCallback (void)
    {
    return (ERROR);
    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产专区综合网| 国产传媒日韩欧美成人| 蜜臀av一级做a爰片久久| 国产精品一区二区视频| 91黄色免费看| 久久久噜噜噜久噜久久综合| 一区二区三区精品视频在线| 蜜桃视频在线一区| 欧美综合久久久| 国产精品国产三级国产aⅴ入口| 亚洲国产成人tv| 成人a级免费电影| 精品嫩草影院久久| 亚洲第一福利视频在线| 不卡av在线免费观看| 精品国产凹凸成av人网站| 亚洲不卡一区二区三区| 色综合久久综合网| 亚洲区小说区图片区qvod| 国产激情视频一区二区在线观看| 欧美猛男gaygay网站| 一区二区高清免费观看影视大全 | 亚洲视频每日更新| 国产激情一区二区三区四区| 日韩美一区二区三区| 亚洲成人在线观看视频| 91美女片黄在线观看91美女| 中日韩av电影| 国产高清成人在线| 亚洲国产精品t66y| 国产ts人妖一区二区| 精品国产乱码久久久久久蜜臀| 婷婷开心激情综合| 欧美少妇xxx| 亚洲一区二区三区影院| 日本道免费精品一区二区三区| 国产精品国产三级国产普通话蜜臀 | 国产精品自拍网站| 亚洲精品一区二区三区四区高清| 奇米综合一区二区三区精品视频| 精品婷婷伊人一区三区三| 亚洲激情综合网| 色婷婷精品大视频在线蜜桃视频| 亚洲视频一区在线| 一本色道a无线码一区v| 亚洲激情中文1区| 欧美日韩国产综合一区二区三区| 亚洲国产精品久久一线不卡| 欧美美女视频在线观看| 男人操女人的视频在线观看欧美| 91精品国产免费| 黄色精品一二区| 国产欧美视频一区二区| 99re成人在线| 亚洲图片有声小说| 日韩一区二区视频| 国产一区二区三区四区五区入口| 国产亚洲美州欧州综合国| 成人白浆超碰人人人人| 亚洲一级电影视频| 日韩一区二区三区电影在线观看 | 美女一区二区三区| 久久综合久久综合久久综合| 国产在线乱码一区二区三区| 国产精品午夜久久| 欧美日韩一区不卡| 激情五月婷婷综合| 亚洲另类在线制服丝袜| 日韩精品在线网站| 色综合久久久久综合体桃花网| 丝袜亚洲另类欧美综合| 久久久国际精品| 欧美视频一区二区| 国产一区二区0| 亚洲一区二区3| 久久日一线二线三线suv| 99精品久久久久久| 看电视剧不卡顿的网站| 亚洲欧洲国产日本综合| 91精品国产乱| 在线亚洲精品福利网址导航| 极品少妇xxxx精品少妇| 一区二区三区久久久| 久久人人爽人人爽| 欧美另类z0zxhd电影| av在线不卡观看免费观看| 日韩和欧美一区二区三区| 国产精品青草综合久久久久99| 欧美一区午夜视频在线观看| av一本久道久久综合久久鬼色| 免费高清在线一区| 亚洲尤物在线视频观看| 国产精品你懂的在线欣赏| 欧美一区二区国产| 欧美午夜影院一区| eeuss国产一区二区三区| 国产米奇在线777精品观看| 亚洲成人先锋电影| 一区二区三区欧美久久| 国产精品蜜臀在线观看| 精品99一区二区| 欧美一二三四在线| 欧美日韩视频在线观看一区二区三区| 国产精品中文字幕日韩精品| 日韩在线卡一卡二| 婷婷激情综合网| 亚洲自拍偷拍综合| 亚洲精品大片www| 亚洲日本成人在线观看| 欧美高清在线视频| 国产日韩欧美精品综合| 久久品道一品道久久精品| 欧美成人伊人久久综合网| 欧美男人的天堂一二区| 欧美日韩在线不卡| 精品视频全国免费看| 在线观看91视频| 精品视频一区二区不卡| 欧美午夜精品一区二区蜜桃| 91久久奴性调教| 在线视频中文字幕一区二区| 色综合天天综合狠狠| 色一情一伦一子一伦一区| 在线亚洲欧美专区二区| 欧美丝袜丝交足nylons| 欧美日韩国产高清一区二区 | 欧美精品久久久久久久多人混战 | 欧美日韩高清影院| 欧美偷拍一区二区| 69av一区二区三区| 日韩一级片在线播放| 精品国产区一区| 久久久久国色av免费看影院| 国产三级三级三级精品8ⅰ区| 久久久久久久久久电影| 久久久三级国产网站| 1区2区3区欧美| 亚洲另类在线视频| 青青草精品视频| 国产伦理精品不卡| 972aa.com艺术欧美| 欧美丝袜丝交足nylons| 欧美v日韩v国产v| 中文字幕精品三区| 亚洲在线视频网站| 看国产成人h片视频| 国产不卡在线播放| 在线观看欧美精品| 久久亚洲二区三区| 亚洲人午夜精品天堂一二香蕉| 午夜电影一区二区| 国产福利一区二区三区在线视频| 91美女福利视频| 日韩欧美亚洲国产精品字幕久久久| 国产日韩在线不卡| 午夜精品国产更新| 国产69精品久久久久777| 色素色在线综合| 日韩亚洲欧美在线| 一区二区在线观看视频| 蜜桃91丨九色丨蝌蚪91桃色| 成人精品亚洲人成在线| 91精品国产色综合久久不卡电影| 久久久久久久久久美女| 亚洲v中文字幕| 成人91在线观看| 欧美一区二区在线观看| 国产精品久久久久久亚洲毛片| 天天综合色天天综合色h| 国产乱一区二区| 亚洲视频图片小说| 国产麻豆91精品| 91精品欧美综合在线观看最新 | 国产成人av影院| 欧美日韩高清不卡| 自拍av一区二区三区| 韩国一区二区三区| 在线电影一区二区三区| 亚洲欧美一区二区三区极速播放| 久久国产精品免费| 欧美三级韩国三级日本一级| 欧美高清在线视频| 国产乱码精品1区2区3区| 91精品在线观看入口| 亚洲男人天堂av网| 国产精品一区在线观看你懂的| 欧美日韩专区在线| 亚洲激情网站免费观看| 成人免费观看av| 国产情人综合久久777777| 精品一区二区三区在线播放视频| 欧美视频一区二区在线观看| √…a在线天堂一区| 国产91丝袜在线18| 国产日韩欧美在线一区| 国产一区二区三区av电影| 欧美成人伊人久久综合网| 久久电影网站中文字幕| 欧美一级日韩不卡播放免费| 视频一区中文字幕|