Add LUFA mouse feature and fix mouse report.
- add LUFA boot mouse feature - remove report_id from mouse report - fix LUFA descriptor
This commit is contained in:
		
							parent
							
								
									effa5914bf
								
							
						
					
					
						commit
						a9a3610dd4
					
				
					 7 changed files with 108 additions and 48 deletions
				
			
		| 
						 | 
				
			
			@ -62,6 +62,11 @@ int main(void)
 | 
			
		|||
 | 
			
		||||
    debug("initForUsbConnectivity()\n");
 | 
			
		||||
    initForUsbConnectivity();
 | 
			
		||||
    int i;
 | 
			
		||||
    while(--i){         /* To configured */
 | 
			
		||||
        usbPoll();
 | 
			
		||||
        _delay_ms(1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    debug("main loop\n");
 | 
			
		||||
    while (1) {
 | 
			
		||||
| 
						 | 
				
			
			@ -90,10 +95,15 @@ int main(void)
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
        if (!suspended)
 | 
			
		||||
        if (!suspended) {
 | 
			
		||||
            usbPoll();
 | 
			
		||||
        keyboard_proc();
 | 
			
		||||
        if (!suspended)
 | 
			
		||||
 | 
			
		||||
            // TODO: configuration process is incosistent. it sometime fails.
 | 
			
		||||
            // To prevent failing to configure NOT scan keyboard during configuration
 | 
			
		||||
            if (usbConfiguration && usbInterruptIsReady()) {
 | 
			
		||||
                keyboard_proc();
 | 
			
		||||
            }
 | 
			
		||||
            vusb_transfer_keyboard();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,23 +91,48 @@ static void send_keyboard(report_keyboard_t *report)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    uint8_t report_id;
 | 
			
		||||
    report_mouse_t report;
 | 
			
		||||
} __attribute__ ((packed)) vusb_mouse_report_t;
 | 
			
		||||
 | 
			
		||||
static void send_mouse(report_mouse_t *report)
 | 
			
		||||
{
 | 
			
		||||
    report->report_id = REPORT_ID_MOUSE;
 | 
			
		||||
    vusb_mouse_report_t r = {
 | 
			
		||||
        .report_id = REPORT_ID_MOUSE,
 | 
			
		||||
        .report = *report
 | 
			
		||||
    };
 | 
			
		||||
    if (usbInterruptIsReady3()) {
 | 
			
		||||
        usbSetInterrupt3((void *)report, sizeof(*report));
 | 
			
		||||
        usbSetInterrupt3((void *)&r, sizeof(vusb_mouse_report_t));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
typedef struct {
 | 
			
		||||
    uint8_t report_id;
 | 
			
		||||
    uint8_t data0;
 | 
			
		||||
    uint8_t data1;
 | 
			
		||||
} __attribute__ ((packed)) vusb_system_report_t;
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
static void send_system(uint16_t data)
 | 
			
		||||
{
 | 
			
		||||
/*
 | 
			
		||||
    // Not need static?
 | 
			
		||||
    static uint8_t report[] = { REPORT_ID_SYSTEM, 0, 0 };
 | 
			
		||||
    report[1] = data&0xFF;
 | 
			
		||||
    report[2] = (data>>8)&0xFF;
 | 
			
		||||
*/
 | 
			
		||||
/*
 | 
			
		||||
    vusb_system_report_t r = {
 | 
			
		||||
        .report_id = REPORT_ID_SYSTEM,
 | 
			
		||||
        .data0 = data&0xFF,
 | 
			
		||||
        .data1 = (data>>8)&0xFF
 | 
			
		||||
    };
 | 
			
		||||
    if (usbInterruptIsReady3()) {
 | 
			
		||||
        usbSetInterrupt3((void *)&report, sizeof(report));
 | 
			
		||||
        usbSetInterrupt3((void *)&r, sizeof(vusb_system_report_t));
 | 
			
		||||
    }
 | 
			
		||||
*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void send_consumer(uint16_t data)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue