void SendData(short n1,short n2)
{
  BYTE data[5];
  //根据相关信息修改
  data[0] = 0x01;
  data[1] = LBYTE(n1);
  data[2] = HBYTE(n1);
  data[3] = LBYTE(n2);
  data[4] = HBYTE(n2);

  SendDataBuf(UART4,data,5); 
  
}
Beispiel #2
0
int
winwstr(WINDOW *win, wchar_t *wstr)
{
	int	counter = 0;
	int	cy = win->_cury;
	chtype	*ptr = &(win->_y[cy][win->_curx]),
		*pmax = &(win->_y[cy][win->_maxx]);
	chtype	*p1st = &(win->_y[cy][0]);
	wchar_t	wc;
	int	sw, s;
	char	*cp, cbuf[CSMAX+1];

	while (ISCBIT(*ptr) && (p1st < ptr))
		ptr--;

	while (ptr < pmax) {
		wc = RBYTE(*ptr);
		sw = mbscrw((int)wc);
		(void) mbeucw((int)wc);

		cp = cbuf;
		for (s = 0; s < sw; s++, ptr++) {
			if ((wc = RBYTE(*ptr)) == MBIT)
				continue;
			/* LINTED */
			*cp++ = (char) wc;
			if ((wc = LBYTE(*ptr) | MBIT) == MBIT)
				continue;
			/* LINTED */
			*cp++ = (char) wc;
		}
		*cp = '\0';

		if (_curs_mbtowc(&wc, cbuf, CSMAX) <= 0)
			break;

		*wstr++ = wc;
	}

	*wstr = (wchar_t)0;

	return (counter);
}
Beispiel #3
0
int
wbkgd(WINDOW *win, chtype nbkgd)
{
	short	maxx;
	int	x, y;
	chtype	*wcp, obkgda, obkgdc, nbkgda,
		nbkgdc, acolor, c;
	short	*begch, *endch;

	/* if 'nbkgd' contains color information, but this is not a color   */
	/* terminal, erase that information.				*/

	if ((nbkgd & A_COLOR) && (cur_term->_pairs_tbl == NULL))
		nbkgd &= ~A_COLOR;

	if (nbkgd == win->_bkgd)
		return (OK);

	obkgdc = _CHAR(win->_bkgd);
	obkgda = _ATTR(win->_bkgd);

	nbkgdc = _CHAR(nbkgd);
	nbkgda = _ATTR(nbkgd);

	/* switch byte order if necessary */
	if (ISCBIT(nbkgdc))
		nbkgdc = _CHAR((RBYTE(nbkgdc) << 8) | (LBYTE(nbkgdc)|MBIT)) |
		    CBIT;
	c = RBYTE(nbkgdc);
	if ((nbkgdc < ' ' || nbkgdc == _CTRL('?')) ||
	    _curs_scrwidth[TYPE(c)] > 1)
		nbkgdc = obkgdc;
	nbkgd = (nbkgdc & ~CBIT) | nbkgda;

	win->_bkgd = nbkgd;

	/* delete the old background from the attribute field and replace    */
	/* it with the new background.  Note: if the same attribute was	*/
	/* first set by wbkgd() and then by wattron(), or vice versa, it */
	/* will be deleted, so the effect of wattron() will be lost.	 */
	/* This applies to both video and color attributes.		 */

	if ((acolor = (win->_attrs & A_COLOR)) != 0) {
		if (acolor == (obkgda & A_COLOR)) {
			win->_attrs = _ATTR((win->_attrs & ~obkgda) | nbkgda);
		} else {
			win->_attrs = _ATTR((win->_attrs &
			    (~obkgda | A_COLOR)) | (nbkgda & ~A_COLOR));
		}
	} else
		win->_attrs = _ATTR((win->_attrs & ~obkgda) | nbkgda);

	maxx = win->_maxx - 1;
	begch = win->_firstch;
	endch = win->_lastch;
	for (y = win->_maxy-1; y >= 0; --y, ++begch, ++endch) {
		for (x = maxx, wcp = win->_y[y]; x-- >= 0; ++wcp) {
			if ((c = _CHAR(*wcp)) == obkgdc)
				c = nbkgdc;
			if ((acolor = (*wcp & A_COLOR)) != 0) {
				if (acolor == (obkgda & A_COLOR))
					*wcp = c | _ATTR((*wcp & ~obkgda) |
					    nbkgda);
				else
					*wcp = c | _ATTR((*wcp & (~obkgda |
					    A_COLOR)) | (nbkgda & ~A_COLOR));
			} else
				*wcp = c | _ATTR((*wcp & ~obkgda) | nbkgda);
		}
		*begch = 0;
		*endch = maxx;
	}

	win->_flags |= _WINCHANGED;
	if (win->_sync)
		wsyncup(win);

	return (win->_immed ? wrefresh(win) : OK);
}
Beispiel #4
0
//------------------------------------------------------------------------------
//      Exported functions
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//! \ingroup usb_std_req_hlr
//! \brief   Handles standard SETUP requests
//! \param   pClass Pointer to a class driver instance
//------------------------------------------------------------------------------
void STD_RequestHandler(S_std_class *pClass)
{
    S_usb_request *pSetup = USB_GetSetup(pClass->pUsb);

    TRACE_DEBUG_M("Std ");

    // Handle incoming request
    switch (pSetup->bRequest) {
    //----------------------
    case USB_GET_DESCRIPTOR:
    //----------------------
        TRACE_DEBUG_M("gDesc ");

        // The HBYTE macro returns the upper byte of a word
        switch (HBYTE(pSetup->wValue)) {
        //-------------------------
        case USB_DEVICE_DESCRIPTOR:
        //-------------------------
            TRACE_DEBUG_M("Dev ");
            STD_GetDeviceDescriptor(pClass, pSetup->wLength);
            break;

        //--------------------------------
        case USB_CONFIGURATION_DESCRIPTOR:
        //--------------------------------
            TRACE_DEBUG_M("Cfg ");
            STD_GetConfigurationDescriptor(pClass, pSetup->wLength);
            break;

#if defined(HIGHSPEED)
        //-----------------------------------
        case USB_DEVICE_QUALIFIER_DESCRIPTOR:
        //-----------------------------------
            TRACE_DEBUG_M("Qua ");
            STD_GetQualifierDescriptor(pClass, pSetup->wLength);
            break;

        //--------------------------------------------
        case USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR:
        //--------------------------------------------
            TRACE_DEBUG_M("OSC ");
            STD_GetOSCDescriptor(pClass, pSetup->wLength);
            break;
#endif
        //-------------------------
        case USB_STRING_DESCRIPTOR:
        //-------------------------
            TRACE_DEBUG_M("Str%d ", LBYTE(pSetup->wValue));
            STD_GetStringDescriptor(pClass,
                                    pSetup->wLength,
                                    LBYTE(pSetup->wValue));
            break;

        //------
        default:
        //------
            TRACE_WARNING(
                "W: STD_RequestHandler: Unknown GetDescriptor = 0x%02X\n\r",
                pSetup->bRequest
            );
            USB_Stall(pClass->pUsb, 0);

        }
        break;

    //-------------------
    case USB_SET_ADDRESS:
    //-------------------
        TRACE_DEBUG_M("sAddr ");
        USB_SendZLP0(pClass->pUsb,
                     (Callback_f) USB_SetAddress,
                     (void *) pClass->pUsb);
        break;

    //-------------------------
    case USB_SET_CONFIGURATION:
    //-------------------------
        TRACE_DEBUG_M("sCfg ");
        STD_SetConfiguration(pClass, (char) pSetup->wValue);
        break;

    //-------------------------
    case USB_GET_CONFIGURATION:
    //-------------------------
        TRACE_DEBUG_M("gCfg ");
        STD_GetConfiguration(pClass);
        break;

    //---------------------
    case USB_CLEAR_FEATURE:
    //---------------------
        TRACE_DEBUG_M("cFeat ");

        switch (pSetup->wValue) {
            //---------------------
            case USB_ENDPOINT_HALT:
            //---------------------
                TRACE_DEBUG_M("Hlt ");
                USB_Halt(pClass->pUsb, LBYTE(pSetup->wIndex), USB_CLEAR_FEATURE);
                USB_SendZLP0(pClass->pUsb, 0, 0);
                break;

            //----------------------------
            case USB_DEVICE_REMOTE_WAKEUP:
            //----------------------------
                TRACE_DEBUG_M("RmWak ");
                pClass->wDeviceStatus &= ~REMOTE_WAKEUP; // Remote wakeup disabled
                USB_SendZLP0(pClass->pUsb, 0, 0);
                break;

            //------
            default:
            //------
                TRACE_DEBUG_H("Sta ");
                USB_Stall(pClass->pUsb, 0);

        }
        break;

    //------------------
    case USB_GET_STATUS:
    //------------------
        TRACE_DEBUG_H("gSta ");

        switch (USB_REQUEST_RECIPIENT(pSetup)) {
        //-------------------------
        case USB_RECIPIENT_DEVICE:
        //-------------------------
            TRACE_DEBUG_M("Dev ");
            STD_GetDeviceStatus(pClass);
            break;

        //---------------------------
        case USB_RECIPIENT_ENDPOINT:
        //---------------------------
            TRACE_DEBUG_M("Ept ");
            STD_GetEndpointStatus(pClass,
                                  LBYTE(pSetup->wIndex));
            break;

        //------
        default:
        //------
            TRACE_WARNING(
                "W: STD_RequestHandler: Unsupported GetStatus = 0x%02X\n\r",
                pSetup->bmRequestType
            );
            USB_Stall(pClass->pUsb, 0);

        }
        break;

    //-------------------
    case USB_SET_FEATURE:
    //-------------------
        TRACE_DEBUG_H("sFeat ");

        switch (pSetup->wValue) {
        //---------------------
        case USB_ENDPOINT_HALT:
        //---------------------
            USB_Halt(pClass->pUsb, LBYTE(pSetup->wIndex), USB_SET_FEATURE);
            USB_SendZLP0(pClass->pUsb, 0, 0);
            break;

        //----------------------------
        case USB_DEVICE_REMOTE_WAKEUP:
        //----------------------------
            pClass->wDeviceStatus |= REMOTE_WAKEUP; // Remote wakeup enabled
            USB_SendZLP0(pClass->pUsb, 0, 0);
            break;

        //------
        default:
        //------
            TRACE_WARNING(
                "W: STD_RequestHandler: Unsupported SetFeature=0x%04X\n\r",
                pSetup->wValue
            );
            USB_Stall(pClass->pUsb, 0);

        }
        break;

    //------
    default:
    //------
        TRACE_WARNING(
            "W: STD_RequestHandler: Unsupported request: 0x%02X\n\r",
            pSetup->bRequest
        );
        USB_Stall(pClass->pUsb, 0);
    }
}