/* HID class driver callback function for the creation of HID reports to the host. */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t *const HIDInterfaceInfo, uint8_t *const ReportID, const uint8_t ReportType, void *ReportData, uint16_t *const ReportSize)
/* HID class driver callback function for the creation of HID reports to the host. */
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t *const HIDInterfaceInfo, uint8_t *const ReportID, const uint8_t ReportType, void *ReportData, uint16_t *const ReportSize)
{
	USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
	static bool IsKeyReleaseReport;
	IsKeyReleaseReport = !IsKeyReleaseReport;
	if ((IsKeyReleaseReport) || (CurrentTrackBuffer == &TrackDataBuffers[TOTAL_TRACKS]))
	{
		KeyboardReport->KeyCode[0] = KEY_NONE;
	}
	else if (!(CurrentTrackBuffer->Elements))
	{
		KeyboardReport->KeyCode[0] = KEY_ENTER;
		CurrentTrackBuffer++;
	}
	else
	{
		KeyboardReport->KeyCode[0] = BitBuffer_GetNextBit(CurrentTrackBuffer) ? KEY_1 : KEY_0;
	}
	*ReportSize = sizeof(USB_KeyboardReport_Data_t);
	return false;
}