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