Fix ps2_host_recv_response
This commit is contained in:
		
							parent
							
								
									9ae9742ac5
								
							
						
					
					
						commit
						9d26053f1c
					
				
					 3 changed files with 12 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -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