byte HIDRxReport(char *buffer, byte len) { hid_rpt_rx_len = 0; if(!mHIDRxIsBusy()) { /* * Adjust the expected number of bytes to equal * the actual number of bytes received. */ if(len > HID_BD_OUT.Cnt) len = HID_BD_OUT.Cnt; /* * Copy data from dual-ram buffer to user's buffer */ for(hid_rpt_rx_len = 0; hid_rpt_rx_len < len; hid_rpt_rx_len++) buffer[hid_rpt_rx_len] = hid_report_out[hid_rpt_rx_len]; /* * Prepare dual-ram buffer for next OUT transaction */ HID_BD_OUT.Cnt = sizeof(hid_report_out); mUSBBufferReady(HID_BD_OUT); }//end if return hid_rpt_rx_len; }//end HIDRxReport