forked from mirrors/qmk_userspace
		
	Fix the way of sending out IN packet.
This fixes problem that it losts keycode when send keycodes in row in layer.c. Undef CONSOLE_ENABLE build option makes this problem clear.
This commit is contained in:
		
					parent
					
						
							
								e075361b6f
							
						
					
				
			
			
				commit
				
					
						7350b7c6aa
					
				
			
		
					 1 changed files with 19 additions and 22 deletions
				
			
		| 
						 | 
					@ -344,14 +344,14 @@ static void send_keyboard(report_keyboard_t *report)
 | 
				
			||||||
    Endpoint_SelectEndpoint(KEYBOARD_IN_EPNUM);
 | 
					    Endpoint_SelectEndpoint(KEYBOARD_IN_EPNUM);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Check if Keyboard Endpoint Ready for Read/Write */
 | 
					    /* Check if Keyboard Endpoint Ready for Read/Write */
 | 
				
			||||||
    if (Endpoint_IsReadWriteAllowed())
 | 
					    while (!Endpoint_IsReadWriteAllowed()) ;
 | 
				
			||||||
    {
 | 
					
 | 
				
			||||||
        /* Write Keyboard Report Data */
 | 
					    /* Write Keyboard Report Data */
 | 
				
			||||||
        Endpoint_Write_Stream_LE(report, sizeof(report_keyboard_t), NULL);
 | 
					    Endpoint_Write_Stream_LE(report, sizeof(report_keyboard_t), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Finalize the stream transfer to send the last packet */
 | 
				
			||||||
 | 
					    Endpoint_ClearIN();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Finalize the stream transfer to send the last packet */
 | 
					 | 
				
			||||||
        Endpoint_ClearIN();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    keyboard_report_sent = *report;
 | 
					    keyboard_report_sent = *report;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -362,14 +362,13 @@ static void send_mouse(report_mouse_t *report)
 | 
				
			||||||
    Endpoint_SelectEndpoint(MOUSE_IN_EPNUM);
 | 
					    Endpoint_SelectEndpoint(MOUSE_IN_EPNUM);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Check if Mouse Endpoint Ready for Read/Write */
 | 
					    /* Check if Mouse Endpoint Ready for Read/Write */
 | 
				
			||||||
    if (Endpoint_IsReadWriteAllowed())
 | 
					    while (!Endpoint_IsReadWriteAllowed()) ;
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        /* Write Mouse Report Data */
 | 
					 | 
				
			||||||
        Endpoint_Write_Stream_LE(report, sizeof(report_mouse_t), NULL);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Finalize the stream transfer to send the last packet */
 | 
					    /* Write Mouse Report Data */
 | 
				
			||||||
        Endpoint_ClearIN();
 | 
					    Endpoint_Write_Stream_LE(report, sizeof(report_mouse_t), NULL);
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
 | 
					    /* Finalize the stream transfer to send the last packet */
 | 
				
			||||||
 | 
					    Endpoint_ClearIN();
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -380,10 +379,9 @@ static void send_system(uint16_t data)
 | 
				
			||||||
        .usage = data
 | 
					        .usage = data
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM);
 | 
					    Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM);
 | 
				
			||||||
    if (Endpoint_IsReadWriteAllowed()) {
 | 
					    while (!Endpoint_IsReadWriteAllowed()) ;
 | 
				
			||||||
        Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL);
 | 
					    Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL);
 | 
				
			||||||
        Endpoint_ClearIN();
 | 
					    Endpoint_ClearIN();
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void send_consumer(uint16_t data)
 | 
					static void send_consumer(uint16_t data)
 | 
				
			||||||
| 
						 | 
					@ -393,10 +391,9 @@ static void send_consumer(uint16_t data)
 | 
				
			||||||
        .usage = data
 | 
					        .usage = data
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM);
 | 
					    Endpoint_SelectEndpoint(EXTRAKEY_IN_EPNUM);
 | 
				
			||||||
    if (Endpoint_IsReadWriteAllowed()) {
 | 
					    while (!Endpoint_IsReadWriteAllowed()) ;
 | 
				
			||||||
        Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL);
 | 
					    Endpoint_Write_Stream_LE(&r, sizeof(report_extra_t), NULL);
 | 
				
			||||||
        Endpoint_ClearIN();
 | 
					    Endpoint_ClearIN();
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue