/** Sets the stalled property of an endpoint @param [in] bEP Endpoint number @param [in] fStall TRUE to stall, FALSE to unstall */ void USBHwEPStall(unsigned char bEP, int fStall) { int idx = EP2IDX(bEP); USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); }
/** Sets the 'configured' state. All registered endpoints are 'realised' and enabled, and the 'configured' bit is set in the device status register. @param [in] fConfigured If TRUE, configure device, else unconfigure */ void USBHwConfigDevice(int fConfigured) { // set configured bit USBHwCmdWrite(CMD_DEV_CONFIG, fConfigured ? CONF_DEVICE : 0); }
/** Connects or disconnects from the USB bus @param [in] fConnect If TRUE, connect, otherwise disconnect */ void USBHwConnect(int fConnect) { USBHwCmdWrite(CMD_DEV_STATUS, fConnect ? CON : 0); }
/** Enables interrupt on NAK condition For IN endpoints a NAK is generated when the host wants to read data from the device, but none is available in the endpoint buffer. For OUT endpoints a NAK is generated when the host wants to write data to the device, but the endpoint buffer is still full. The endpoint interrupt handlers can distinguish regular (ACK) interrupts from NAK interrupt by checking the bits in their bEPStatus argument. @param [in] bIntBits Bitmap indicating which NAK interrupts to enable */ void USBHwNakIntEnable(unsigned char bIntBits) { USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); }
/** Sets the USB address. @param [in] bAddr Device address to set */ void USBHwSetAddress(unsigned char bAddr) { USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); }
/** Enables or disables an endpoint @param [in] idx Endpoint index @param [in] fEnable TRUE to enable, FALSE to disable */ static void USBHwEPEnable(int idx, int fEnable) { USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fEnable ? 0 : EP_DA); }
/** Sets the stalled property of an endpoint @param [in] bEP Endpoint number @param [in] fStall TRUE to stall, FALSE to unstall */ void USBHwEPStall(U8 bEP, BOOL fStall) { int idx = EP2IDX(bEP); USBHwCmdWrite(CMD_EP_SET_STATUS | idx, fStall ? EP_ST : 0); }
/** Enables interrupt on NAK condition For IN endpoints a NAK is generated when the host wants to read data from the device, but none is available in the endpoint buffer. For OUT endpoints a NAK is generated when the host wants to write data to the device, but the endpoint buffer is still full. The endpoint interrupt handlers can distinguish regular (ACK) interrupts from NAK interrupt by checking the bits in their bEPStatus argument. @param [in] bIntBits Bitmap indicating which NAK interrupts to enable */ void USBHwNakIntEnable(U8 bIntBits) { USBHwCmdWrite(CMD_DEV_SET_MODE, bIntBits); }
/** Sets the USB address. @param [in] bAddr Device address to set */ void USBHwSetAddress(U8 bAddr) { USBHwCmdWrite(CMD_DEV_SET_ADDRESS, DEV_EN | bAddr); }