diff options
| author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2013-12-16 21:04:53 +0100 | 
|---|---|---|
| committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2013-12-16 21:04:53 +0100 | 
| commit | 741e4c0336e39b25259ecfd867537cc6574a2fc6 (patch) | |
| tree | 62af5e1b35a78e9005a25c1caa7b40c0aaf5b38c | |
| parent | 2fc587ea04580fda4c194638625f89e57987b67a (diff) | |
Added relative count to the report.add_relative_count
| -rw-r--r-- | main.cpp | 30 | 
1 files changed, 29 insertions, 1 deletions
| @@ -37,6 +37,22 @@ auto report_desc = gamepad(  	report_size(8),  	input(0x02), +	usage_page(UsagePage::Desktop), +	usage(DesktopUsage::Rx), +	logical_minimum(-127), +	logical_maximum(127), +	report_count(1), +	report_size(8), +	input(0x06), + +	usage_page(UsagePage::Desktop), +	usage(DesktopUsage::Ry), +	logical_minimum(-127), +	logical_maximum(127), +	report_count(1), +	report_size(8), +	input(0x06), +	  	// Outputs.  	usage_page(UsagePage::Ordinal),  	usage(1), @@ -297,6 +313,8 @@ struct report_t {  	uint16_t buttons;  	uint8_t axis_x;  	uint8_t axis_y; +	int8_t axis_rx; +	int8_t axis_ry;  } __attribute__((packed));  int main() { @@ -356,6 +374,9 @@ int main() {  	qe2a.set_mode(Pin::AF);  	qe2b.set_mode(Pin::AF); +	uint8_t last_x = 0; +	uint8_t last_y = 0; +	  	while(1) {  		usb.process(); @@ -371,7 +392,14 @@ int main() {  		}  		if(usb.ep_ready(1)) { -			report_t report = {buttons, uint8_t(TIM2.CNT), uint8_t(TIM3.CNT)}; +			uint8_t x = TIM2.CNT; +			uint8_t y = TIM3.CNT; +			int8_t rx = x - last_x; +			int8_t ry = y - last_y; +			last_x = x; +			last_y = y; +			 +			report_t report = {buttons, x, y, rx, ry};  			usb.write(1, (uint32_t*)&report, sizeof(report));  		} | 
