mirror of
				https://github.com/digistump/DigistumpArduino.git
				synced 2025-10-30 20:14:49 -07:00 
			
		
		
		
	Fix for 1.5.8
This commit is contained in:
		| @@ -5,7 +5,7 @@ | ||||
|  * Modified for Digispark by Digistump | ||||
|  * And now modified by Sean Murphy (duckythescientist) from a keyboard device to a joystick device | ||||
|  * And now modified by Bluebie to have better code style, not ruin system timers, and have delay() function | ||||
|  * Most of the credit for the joystick code should go to Rapha<EFBFBD>l Ass<EFBFBD>nat | ||||
|  * Most of the credit for the joystick code should go to Raphaël Assénat | ||||
|  */ | ||||
| #ifndef __DigiJoystick_h__ | ||||
| #define __DigiJoystick_h__ | ||||
| @@ -26,12 +26,10 @@ | ||||
| #include "oddebug.h" | ||||
| #include "usbconfig.h" | ||||
|   | ||||
| static uchar *rt_usbHidReportDescriptor=NULL; | ||||
| const static uchar *rt_usbHidReportDescriptor=NULL; | ||||
| static uchar rt_usbHidReportDescriptorSize=0; | ||||
| static uchar *rt_usbDeviceDescriptor=NULL; | ||||
| const static uchar *rt_usbDeviceDescriptor=NULL; | ||||
| static uchar rt_usbDeviceDescriptorSize=0; | ||||
| byte buttonLowByte = 0; | ||||
| byte buttonHighByte = 0; | ||||
|  | ||||
| // TODO: Work around Arduino 12 issues better. | ||||
| //#include <WConstants.h> | ||||
| @@ -53,9 +51,9 @@ static unsigned char must_report = 0; | ||||
| static unsigned char idle_rate = DIGIJOYSTICK_DEFAULT_REPORT_INTERVAL / 4; // in units of 4ms | ||||
| // new minimum report frequency system: | ||||
| static unsigned long last_report_time = 0; | ||||
| char usb_hasCommed = 0; | ||||
|  | ||||
| unsigned char gcn64_usbHidReportDescriptor[] PROGMEM = { | ||||
|  | ||||
| const unsigned char gcn64_usbHidReportDescriptor[] PROGMEM = { | ||||
| 		0x05, 0x01,										 // USAGE_PAGE (Generic Desktop) | ||||
| 		0x09, 0x05,										 // USAGE (Gamepad) | ||||
| 		0xa1, 0x01,										 // COLLECTION (Application) | ||||
| @@ -93,7 +91,7 @@ unsigned char gcn64_usbHidReportDescriptor[] PROGMEM = { | ||||
|  | ||||
| #define USBDESCR_DEVICE					1 | ||||
|  | ||||
| unsigned char usbDescrDevice[] PROGMEM = {		/* USB device descriptor */ | ||||
| const unsigned char usbDescrDevice[] PROGMEM = {		/* USB device descriptor */ | ||||
| 		18,					/* sizeof(usbDescrDevice): length of descriptor in bytes */ | ||||
| 		USBDESCR_DEVICE,		/* descriptor type */ | ||||
| 		0x01, 0x01, /* USB version supported */ | ||||
| @@ -137,18 +135,11 @@ int getGamepadReport(unsigned char *dstbuf) { | ||||
| 	return GCN64_REPORT_SIZE; | ||||
| } | ||||
|  | ||||
|  | ||||
|   | ||||
| class DigiJoystickDevice { | ||||
|  public: | ||||
| 	DigiJoystickDevice () { | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	void begin(){ | ||||
|  | ||||
| 		cli(); | ||||
| 		PORTB &= ~(_BV(USB_CFG_DMINUS_BIT) | _BV(USB_CFG_DPLUS_BIT)); | ||||
| 		usbDeviceDisconnect(); | ||||
| 		_delay_ms(250); | ||||
| 		usbDeviceConnect(); | ||||
| @@ -163,21 +154,6 @@ class DigiJoystickDevice { | ||||
| 		sei(); | ||||
| 		 | ||||
| 		last_report_time = millis(); | ||||
| 	 | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	char isConnected() | ||||
| 	{ | ||||
| 		return usb_hasCommed; | ||||
| 	} | ||||
| 	 | ||||
| 	void refresh() { | ||||
| 		update(); | ||||
| 	} | ||||
|  | ||||
| 	void poll() { | ||||
| 		update(); | ||||
| 	} | ||||
| 	 | ||||
| 	void update() { | ||||
| @@ -263,18 +239,6 @@ class DigiJoystickDevice { | ||||
| 	void setSLIDER(char value) { | ||||
| 		setSLIDER(*(reinterpret_cast<byte *>(&value))); | ||||
| 	} | ||||
|  | ||||
| 	void setButton(unsigned char button, unsigned char state) { | ||||
| 		if(button<8){ | ||||
| 			bitWrite(buttonLowByte, button, state); | ||||
| 			setButtons(buttonByte, (byte) 0); | ||||
| 		} | ||||
| 		else{ | ||||
| 			button = button - 8; | ||||
| 		  	bitWrite(buttonHighByte, button, state); | ||||
| 		  	setButtons((byte) 0, buttonByte); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	void setButtons(unsigned char low, unsigned char high) { | ||||
| 		last_built_report[6] = low; | ||||
| @@ -308,7 +272,6 @@ extern "C"{ | ||||
| 	// USB_PUBLIC uchar usbFunctionSetup | ||||
| 	 | ||||
| 	uchar usbFunctionSetup(uchar data[8]) { | ||||
| 		usb_hasCommed = 1; | ||||
| 		usbRequest_t *rq = (usbRequest_t *)data; | ||||
|  | ||||
| 		usbMsgPtr = reportBuffer; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Erik Tylek Kettenburg
					Erik Tylek Kettenburg