void CDC_Engine(void) { //uint16 u8RecData; /* control Stage */ switch(u8CDCState) { case WAITING_FOR_ENUMERATION: /* 等待 USB 枚举 */ while(gu8USB_State != uENUMERATED) { (void)u8CDCState; }; u8CDCState = 0; break; case SET_LINE_CODING: if(FLAG_CHK(EP0, gu8USB_Flags)) { FLAG_CLR(EP0, gu8USB_Flags); (void)EP_OUT_Transfer(EP0, (uint8 *)&com_cfg); EP_IN_Transfer(EP0, 0, 0); } break; case SET_CONTROL_LINE_STATE: EP_IN_Transfer(EP0, 0, 0); break; } }
void CDC_Engine(void) { //UINT16 u8RecData; /* control Stage */ switch(u8CDCState) { case WAITING_FOR_ENUMERATION: /* Wait for USB Enumeration */ //while(gu8USB_State!=uENUMERATED) { (void)u8CDCState; //__RESET_WATCHDOG(); //USB_FLAGS=USB_ISTAT; //USB_ERROR_FLAGS=USB_ERRSTAT; }; //u8CDCState=0; break; case SET_LINE_CODING: if(FLAG_CHK(EP0,gu8USB_Flags)) { FLAG_CLR(EP0,gu8USB_Flags); (void)EP_OUT_Transfer(EP0,(UINT8*)&LineCoding); EP_IN_Transfer(EP0,0,0); //vfnSCI1Init(); } break; case SET_CONTROL_LINE_STATE: EP_IN_Transfer(EP0,0,0); break; } /* Data stage */ /* if(FLAG_CHK(EP_OUT,gu8USB_Flags)) { u8RecData=USB_EP_OUT_SizeCheck(EP_OUT); // Check how many bytes from the PC usbEP_Reset(EP_OUT); usbSIE_CONTROL(EP_OUT); FLAG_CLR(EP_OUT,gu8USB_Flags); EP_IN_Transfer(EP2,CDC_OUTPointer,2); u8RecData=0; } */ }
void CDC_Engine(void) { //uint16 u8RecData; /** re-init CDC class if a VBUS HIGH event was detected */ if (FLAG_CHK(VBUS_HIGH_EVENT,gu8ISR_Flags)) { FLAG_SET(USB_CTL_USBENSOFEN_MASK,USB0_CTL); u8CDCState = WAITING_FOR_ENUMERATION; enum_msg = TRUE; CDC_Init(); FLAG_CLR(VBUS_HIGH_EVENT,gu8ISR_Flags); } /* control Stage */ switch(u8CDCState) { case WAITING_FOR_ENUMERATION: /* Wait for USB Enumeration */ while(gu8USB_State!=uENUMERATED) { (void)u8CDCState; }; if (enum_msg) { printf ("\nUSB Enumerated, check your COM ports "); enum_msg = FALSE; } u8CDCState=0; break; case SET_LINE_CODING: if(FLAG_CHK(EP0,gu8USB_Flags)) { FLAG_CLR(EP0,gu8USB_Flags); (void)EP_OUT_Transfer(EP0,(uint8*)&LineCoding); EP_IN_Transfer(EP0,0,0); //vfnSCI1Init(); } break; case SET_CONTROL_LINE_STATE: EP_IN_Transfer(EP0,0,0); break; } /* Data stage */ /* if(FLAG_CHK(EP_OUT,gu8USB_Flags)) { u8RecData=USB_EP_OUT_SizeCheck(EP_OUT); // Check how many bytes from the PC usbEP_Reset(EP_OUT); usbSIE_CONTROL(EP_OUT); FLAG_CLR(EP_OUT,gu8USB_Flags); EP_IN_Transfer(EP2,CDC_OUTPointer,2); u8RecData=0; } */ }