Fix ps2_host_recv_response
This commit is contained in:
		
							parent
							
								
									9ae9742ac5
								
							
						
					
					
						commit
						9d26053f1c
					
				
					 3 changed files with 12 additions and 13 deletions
				
			
		|  | @ -40,10 +40,6 @@ | |||
| #endif | ||||
| #define println(s)              print_P(PSTR(s "\n")) | ||||
| 
 | ||||
| #ifndef AVR_LIBC_PRINTF | ||||
| #define printf(f, ...)          xprintf(f, ##__VA_ARGS__) | ||||
| #endif | ||||
| 
 | ||||
| /* for old name */ | ||||
| #define pdec(data)              print_dec(data) | ||||
| #define pdec16(data)            print_dec(data) | ||||
|  |  | |||
|  | @ -217,7 +217,7 @@ uint8_t matrix_scan(void) | |||
|                         if (code < 0x80) { | ||||
|                             matrix_make(code); | ||||
|                         } else { | ||||
|                             printf("unexpected scan code at INIT: %02X\n", code); | ||||
|                             xprintf("unexpected scan code at INIT: %02X\n", code); | ||||
|                             clear_keyboard(); | ||||
|                         } | ||||
|                         state = INIT; | ||||
|  | @ -239,7 +239,7 @@ uint8_t matrix_scan(void) | |||
|                         if (code < 0x80) { | ||||
|                             matrix_make(code|0x80); | ||||
|                         } else { | ||||
|                             printf("unexpected scan code at E0: %02X\n", code); | ||||
|                             xprintf("unexpected scan code at E0: %02X\n", code); | ||||
|                             clear_keyboard(); | ||||
|                         } | ||||
|                         state = INIT; | ||||
|  | @ -259,7 +259,7 @@ uint8_t matrix_scan(void) | |||
|                     if (code < 0x80) { | ||||
|                         matrix_break(code); | ||||
|                     } else { | ||||
|                         printf("unexpected scan code at F0: %02X\n", code); | ||||
|                         xprintf("unexpected scan code at F0: %02X\n", code); | ||||
|                         clear_keyboard(); | ||||
|                     } | ||||
|                     state = INIT; | ||||
|  | @ -275,7 +275,7 @@ uint8_t matrix_scan(void) | |||
|                         if (code < 0x80) { | ||||
|                             matrix_break(code|0x80); | ||||
|                         } else { | ||||
|                             printf("unexpected scan code at E0_F0: %02X\n", code); | ||||
|                             xprintf("unexpected scan code at E0_F0: %02X\n", code); | ||||
|                             clear_keyboard(); | ||||
|                         } | ||||
|                         state = INIT; | ||||
|  | @ -371,7 +371,7 @@ uint8_t matrix_scan(void) | |||
| 
 | ||||
|     if (ps2_error > PS2_ERR_STARTBIT3) { | ||||
|         uint8_t ret = ps2_host_send(PS2_RESEND); | ||||
|         printf("Resend: %02X\n", ret); | ||||
|         xprintf("Resend: %02X\n", ret); | ||||
|     } | ||||
|     return 1; | ||||
| } | ||||
|  |  | |||
|  | @ -104,6 +104,7 @@ uint8_t ps2_host_send(uint8_t data) | |||
|     WAIT(clock_hi, 50, 8); | ||||
|     WAIT(data_hi, 50, 9); | ||||
| 
 | ||||
|     inhibit(); | ||||
|     res = ps2_host_recv_response(); | ||||
| ERROR: | ||||
|     inhibit(); | ||||
|  | @ -113,12 +114,14 @@ ERROR: | |||
| /* receive data when host want else inhibit communication */ | ||||
| uint8_t ps2_host_recv_response(void) | ||||
| { | ||||
|     // TODO:
 | ||||
|     // Command might take 20ms to response([3]p.21)
 | ||||
|     // TrackPoint might take 25ms ([5]2.7)
 | ||||
|     // 250 * 100us(wait for start bit in ps2_host_recv)
 | ||||
|     uint8_t data = 0; | ||||
|     uint8_t try = 200; | ||||
|     while (try-- && (data = ps2_host_recv())) ; | ||||
|     uint8_t try = 250; | ||||
|     do { | ||||
|         data = ps2_host_recv(); | ||||
|     } while (try-- && ps2_error); | ||||
|     return data; | ||||
| } | ||||
| 
 | ||||
|  | @ -172,7 +175,7 @@ uint8_t ps2_host_recv(void) | |||
|     return data; | ||||
| ERROR: | ||||
|     if (ps2_error > PS2_ERR_STARTBIT3) { | ||||
|         printf("x%02X\n", ps2_error); | ||||
|         xprintf("x%02X\n", ps2_error); | ||||
|     } | ||||
|     inhibit(); | ||||
|     return 0; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 tmk
						tmk