You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
#definebMaxPacketSize 0x40 /* 64B, maximum for usb FS devices */
//#define wTransferSize FLASH_PAGE_SIZE /* This is important, because transfers have to match with the flash page size, otherwise it erases a page before its finished copying to that page */
#definedummyTransferSize 0x800
intwTransferSize;
#defineNUM_ENDPTS 0x01
/* do we gracefully implement usb suspend? */
#defineF_SUSPEND_ENABLED 1
/* defines which interrupts are handled */
#defineISR_MSK (CNTR_CTRM | \
CNTR_WKUPM | \
CNTR_SUSPM | \
CNTR_ERRM | \
CNTR_SOFM | \
CNTR_ESOFM | \
CNTR_RESETM \
)
typedefenum_RESUME_STATE {
RESUME_EXTERNAL,
RESUME_INTERNAL,
RESUME_LATER,
RESUME_WAIT,
RESUME_START,
RESUME_ON,
RESUME_OFF,
RESUME_ESOF
} RESUME_STATE;
typedefenum_DEVICE_STATE {
UNCONNECTED,
ATTACHED,
POWERED,
SUSPENDED,
ADDRESSED,
CONFIGURED
} DEVICE_STATE;
voidsetupUSB(void);
voidusbDsbBus(void);
voidusbAppInit(void); /* singleton usb initializer */
voidusbSuspend(void);
voidusbResumeInit(void);
voidusbResume(RESUME_STATEstate);
RESULTusbPowerOn(void);
RESULTusbPowerOff(void);
/* internal functions (as per the usb_core pProperty structure) */
voidusbInit(void);
voidusbReset(void);
voidusbStatusIn(void);
voidusbStatusOut(void);
RESULTusbDataSetup(u8request);
RESULTusbNoDataSetup(u8request);
RESULTusbGetInterfaceSetting(u8, u8);
u8*usbGetDeviceDescriptor(u16length);
u8*usbGetConfigDescriptor(u16length);
u8*usbGetStringDescriptor(u16length);
u8*usbGetFunctionalDescriptor(u16length);
/* internal callbacks to respond to standard requests */
voidusbGetConfiguration(void);
voidusbSetConfiguration(void);
voidusbGetInterface(void);
voidusbSetInterface(void);
voidusbGetStatus(void);
voidusbClearFeature(void);
voidusbSetEndpointFeature(void);
voidusbSetDeviceFeature(void);
voidusbSetDeviceAddress(void);
/* the small number of comm emulator functions to
eventually be migrated into their own usart sources
*/
u8*vcomGetLineCoding(u16length);
u8*vcomSetLineCoding(u16length);
voidvcomEp1In(void);
voidvcomEp3Out(void);
/* Interrupt setup/handling exposed only so that
its obvious from main what interrupts are overloaded