static uchar usbRead(uchar *data, uchar len) { #if USB_CFG_IMPLEMENT_FN_READ if(usbMsgFlags & USB_FLG_USE_DEFAULT_RW){ #endif uchar i = len, *r = usbMsgPtr; if(usbMsgFlags & USB_FLG_MSGPTR_IS_ROM){ /* ROM data */ while(i--){ uchar c = PRG_RDB(r); /* assign to char size variable to enforce byte ops */ *data++ = c; r++; } }else{ /* RAM data */ while(i--) *data++ = *r++; } usbMsgPtr = r; return len; #if USB_CFG_IMPLEMENT_FN_READ }else{ if(len != 0) /* don't bother app with 0 sized reads */ return usbFunctionRead(data, len); return 0; } #endif }
static uchar usbRead(uchar *data, uchar len) { #if USB_CFG_IMPLEMENT_FN_READ if(usbMsgFlags & USB_FLG_USE_DEFAULT_RW){ #endif uchar i = len, *r = usbMsgPtr; if(usbMsgFlags & USB_FLG_MSGPTR_IS_ROM){ /* ROM data */ while(i--){ uchar c = PRG_RDB(r); /* assign to char size variable to enforce byte ops */ #ifdef USB_CFG_HID_REPORT_DESCRIPTOR_RUNTIME if ((usbDescrConfig + 18 + 7) == (void*)r) { *data++ = rt_usbHidReportDescriptorSize; } else { *data++ = c; } #else *data++ = c; #endif r++; } }else{ /* RAM data */ while(i--) *data++ = *r++; } usbMsgPtr = r; return len; #if USB_CFG_IMPLEMENT_FN_READ }else{ if(len != 0) /* don't bother app with 0 sized reads */ return usbFunctionRead(data, len); return 0; } #endif }