📄 usb.c
字号:
int8 usb_gets(int8 endpoint, int8 * ptr, int8 max) {
int8 i,len;
#IF USB_EP1_RX_ENABLE
if (endpoint == 1) {
while (usb_ep1_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep1_rx_status.len < max) {len=usb_ep1_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep1_rx_buffer[i];
ptr++;
}
usb_ep1_rx_status.rx=0;
usb_ep1_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP2_RX_ENABLE
if (endpoint == 2) {
while (usb_ep2_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep2_rx_status.len < max) {len=usb_ep2_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep2_rx_buffer[i];
ptr++;
}
usb_ep2_rx_status.rx=0;
usb_ep2_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP3_RX_ENABLE
if (endpoint == 3) {
while (usb_ep3_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep3_rx_status.len < max) {len=usb_ep3_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep3_rx_buffer[i];
ptr++;
}
usb_ep3_rx_status.rx=0;
usb_ep3_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP4_RX_ENABLE
if (endpoint == 4) {
while (usb_ep4_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep4_rx_status.len < max) {len=usb_ep4_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep4_rx_buffer[i];
ptr++;
}
usb_ep4_rx_status.rx=0;
usb_ep4_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP5_RX_ENABLE
if (endpoint == 1) {
while (usb_ep5_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep5_rx_status.len < max) {len=usb_ep5_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep5_rx_buffer[i];
ptr++;
}
usb_ep5_rx_status.rx=0;
usb_ep5_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP6_RX_ENABLE
if (endpoint == 6) {
while (usb_ep6_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep6_rx_status.len < max) {len=usb_ep6_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep6_rx_buffer[i];
ptr++;
}
usb_ep6_rx_status.rx=0;
usb_ep6_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP7_RX_ENABLE
if (endpoint == 7) {
while (usb_ep7_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep7_rx_status.len < max) {len=usb_ep7_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep7_rx_buffer[i];
ptr++;
}
usb_ep7_rx_status.rx=0;
usb_ep7_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP8_RX_ENABLE
if (endpoint == 8) {
while (usb_ep8_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep8_rx_status.len < max) {len=usb_ep8_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep8_rx_buffer[i];
ptr++;
}
usb_ep8_rx_status.rx=0;
usb_ep8_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP9_RX_ENABLE
if (endpoint == 9) {
while (usb_ep9_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep9_rx_status.len < max) {len=usb_ep9_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep9_rx_buffer[i];
ptr++;
}
usb_ep9_rx_status.rx=0;
usb_ep9_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP10_RX_ENABLE
if (endpoint == 10) {
while (usb_ep10_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep10_rx_status.len < max) {len=usb_ep10_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep10_rx_buffer[i];
ptr++;
}
usb_ep10_rx_status.rx=0;
usb_ep10_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP11_RX_ENABLE
if (endpoint == 11) {
while (usb_ep11_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep11_rx_status.len < max) {len=usb_ep11_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep11_rx_buffer[i];
ptr++;
}
usb_ep11_rx_status.rx=0;
usb_ep11_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP12_RX_ENABLE
if (endpoint == 12) {
while (usb_ep12_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep12_rx_status.len < max) {len=usb_ep12_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep12_rx_buffer[i];
ptr++;
}
usb_ep12_rx_status.rx=0;
usb_ep12_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP13_RX_ENABLE
if (endpoint == 13) {
while (usb_ep13_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep13_rx_status.len < max) {len=usb_ep13_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep13_rx_buffer[i];
ptr++;
}
usb_ep13_rx_status.rx=0;
usb_ep13_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP14_RX_ENABLE
if (endpoint == 14) {
while (usb_ep14_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep14_rx_status.len < max) {len=usb_ep14_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep14_rx_buffer[i];
ptr++;
}
usb_ep14_rx_status.rx=0;
usb_ep14_rx_status.ov=0;
return(len);
}
#ENDIF
#IF USB_EP15_RX_ENABLE
if (endpoint == 1) {
while (usb_ep15_rx_status.rx != 1) {} //wait until data arrives
if (usb_ep15_rx_status.len < max) {len=usb_ep15_rx_status.len;} else {len=max;}
for (i=0;i<len;i++) {
*ptr=usb_ep15_rx_buffer[i];
ptr++;
}
usb_ep15_rx_status.rx=0;
usb_ep15_rx_status.ov=0;
return(len);
}
#ENDIF
return(0);
}
/// END User Functions
/// BEGIN USB Token, standard and HID request handler (part of ISR)
/**************************************************************
/* usb_token_reset()
/*
/* Output: modifies global variables USB_Interface[], in[], String_ptr,
/* String_end, USB_status_device, USB_dev_req
/*
/* Summary: Resets the token handler to initial (unconfigured) state.
/***************************************************************/
void usb_token_reset() {
int i;
for (i=0;i<USB_NUM_INTERFACES;i++) {
USB_Interface[i]=0; //reset each interface to default
#IF USB_BOOT_PROTOCOL
hid_protocol[i]=1;
#endif
}
for (i=0;i<USB_EP0_RX_SIZE;i++) {
usb_ep0_rx_buffer[i]=0;
}
usb_ep0_rx_status.rx=0;
usb_ep0_rx_status.ov=0;
#if USB_EP1_RX_SIZE
for (i=0;i<USB_EP1_RX_SIZE;i++) {
usb_ep1_rx_buffer[i]=0;
}
usb_ep1_rx_status.rx=0;
usb_ep1_rx_status.ov=0;
#endif
#if USB_EP2_RX_SIZE
for (i=0;i<USB_EP2_RX_SIZE;i++) {
usb_ep2_rx_buffer[i]=0;
}
usb_ep2_rx_status.rx=0;
usb_ep2_rx_status.ov=0;
#endif
#if USB_EP3_RX_SIZE
for (i=0;i<USB_EP3_RX_SIZE;i++) {
usb_ep3_rx_buffer[i]=0;
}
usb_ep3_rx_status.rx=0;
usb_ep3_rx_status.ov=0;
#endif
#if USB_EP4_RX_SIZE
for (i=0;i<USB_EP4_RX_SIZE;i++) {
usb_ep4_rx_buffer[i]=0;
}
usb_ep4_rx_status.rx=0;
usb_ep4_rx_status.ov=0;
#endif
#if USB_EP5_RX_SIZE
for (i=0;i<USB_EP5_RX_SIZE;i++) {
usb_ep5_rx_buffer[i]=0;
}
usb_ep5_rx_status.rx=0;
usb_ep5_rx_status.ov=0;
#endif
#if USB_EP6_RX_SIZE
for (i=0;i<USB_EP6_RX_SIZE;i++) {
usb_ep6_rx_buffer[i]=0;
}
usb_ep6_rx_status.rx=0;
usb_ep6_rx_status.ov=0;
#endif
#if USB_EP7_RX_SIZE
for (i=0;i<USB_EP7_RX_SIZE;i++) {
usb_ep7_rx_buffer[i]=0;
}
usb_ep7_rx_status.rx=0;
usb_ep7_rx_status.ov=0;
#endif
#if USB_EP8_RX_SIZE
for (i=0;i<USB_EP8_RX_SIZE;i++) {
usb_ep8_rx_buffer[i]=0;
}
usb_ep8_rx_status.rx=0;
usb_ep8_rx_status.ov=0;
#endif
#if USB_EP9_RX_SIZE
for (i=0;i<USB_EP9_RX_SIZE;i++) {
usb_ep9_rx_buffer[i]=0;
}
usb_ep9_rx_status.rx=0;
usb_ep9_rx_status.ov=0;
#endif
#if USB_EP10_RX_SIZE
for (i=0;i<USB_EP10_RX_SIZE;i++) {
usb_ep10_rx_buffer[i]=0;
}
usb_ep10_rx_status.rx=0;
usb_ep10_rx_status.ov=0;
#endif
#if USB_EP11_RX_SIZE
for (i=0;i<USB_EP11_RX_SIZE;i++) {
usb_ep11_rx_buffer[i]=0;
}
usb_ep11_rx_status.rx=0;
usb_ep11_rx_status.ov=0;
#endif
#if USB_EP12_RX_SIZE
for (i=0;i<USB_EP12_RX_SIZE;i++) {
usb_ep12_rx_buffer[i]=0;
}
usb_ep12_rx_status.rx=0;
usb_ep12_rx_status.ov=0;
#endif
#if USB_EP13_RX_SIZE
for (i=0;i<USB_EP13_RX_SIZE;i++) {
usb_ep13_rx_buffer[i]=0;
}
usb_ep13_rx_status.rx=0;
usb_ep13_rx_status.ov=0;
#endif
#if USB_EP14_RX_SIZE
for (i=0;i<USB_EP14_RX_SIZE;i++) {
usb_ep14_rx_buffer[i]=0;
}
usb_ep14_rx_status.rx=0;
usb_ep14_rx_status.ov=0;
#endif
#if USB_EP15_RX_SIZE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -