Fx2lib
0.2
|
Go to the source code of this file.
Defines | |
#define | STALLEP0() EP0CS |= bmEPSTALL |
#define | RESETTOGGLE(ep) |
Reset the toggle on an endpoint. To use this, the endpoint needs bit 8 to be IN=1,OUT=0. | |
#define | RESETFIFO(ep) |
#define | RESETFIFOS() |
#define | ep0_load_sudptr(src) |
#define | ep0_mode(mode_data, mode_length) |
#define | ep0_busywait() while (EP0CS & bmEPBUSY) printf("w\n"); |
#define | ep0_load_length(len) LOADWORD(EP0BC, len); |
#define | ep0_arm() ep0_load_length(0); |
#define | ep0_get_length() EP0BCL |
Enumerations | |
enum | ep0_mode_data { EP0_DATA_AUTO = 0, EP0_DATA_MANUAL = 1 } |
enum | ep0_mode_length { EP0_LENGTH_AUTO = 1, EP0_LENGTH_MANUAL = 0 } |
Functions | |
void | readep0 (BYTE *dst, WORD len) |
void | writeep0 (BYTE *src, WORD len) |
void | ep0_send_auto (__xdata BYTE *src, WORD len) |
void | ep0_send_byte (BYTE data) |
void | ep0_send_word (WORD data) |
BYTE | ep0_recv () |
Functions and macros for working with endpoints.
Definition in file eputils.h.
#define ep0_arm | ( | ) | ep0_load_length(0); |
#define ep0_busywait | ( | ) | while (EP0CS & bmEPBUSY) printf("w\n"); |
#define ep0_get_length | ( | ) | EP0BCL |
#define ep0_load_length | ( | len | ) | LOADWORD(EP0BC, len); |
#define ep0_load_sudptr | ( | src | ) |
#define ep0_mode | ( | mode_data, | |
mode_length | |||
) |
#define RESETFIFO | ( | ep | ) |
#define RESETFIFOS | ( | ) |
#define RESETTOGGLE | ( | ep | ) |
do {\ BYTE x = ep; \ if (x&0x80) { x |= 0x10; } \ x &= 0x1F; \ TOGCTL = x; \ TOGCTL = x | bmRESETTOGGLE; \ } while (0)
Reset the toggle on an endpoint. To use this, the endpoint needs bit 8 to be IN=1,OUT=0.
NOTE you can't use these unless you define SYNCDELAY as a macro or function. The reason is that SYNCDELAY needs to be longer or shorter depending on your IFCONFIG settings. See delay.h
Example:
#define SYNCDELAY SYNCDELAY4 // SYNCDELAY4 from delay.h
Stalls EP0.
enum ep0_mode_data |
enum ep0_mode_length |
void ep0_send_auto | ( | __xdata BYTE * | src, |
WORD | len | ||
) |
void ep0_send_byte | ( | BYTE | data | ) |
void ep0_send_word | ( | WORD | data | ) |
Continually read available bytes from endpoint0 into dst, wait until more bytes are available, and loop until len bytes have been read.