mirror of
https://github.com/raphnet/gc_n64_usb-v3
synced 2025-01-30 23:00:11 -05:00
Cleanup report descriptor a bit.
- No longer an extra button 0 in linux
This commit is contained in:
parent
d4a16f9ddb
commit
bc55a51cf7
@ -16,6 +16,9 @@ all: $(HEXFILE)
|
|||||||
clean:
|
clean:
|
||||||
rm -f $(PROGNAME).elf $(PROGNAME).hex $(PROGNAME).map $(OBJS)
|
rm -f $(PROGNAME).elf $(PROGNAME).hex $(PROGNAME).map $(OBJS)
|
||||||
|
|
||||||
|
main.o: main.c reportdesc.c dataHidReport.c
|
||||||
|
$(CC) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
%.o: %.S
|
%.o: %.S
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(CC) $(CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
8
main.c
8
main.c
@ -215,9 +215,11 @@ static unsigned char gamepad_report0[32];
|
|||||||
|
|
||||||
// Output Report IDs for various functions
|
// Output Report IDs for various functions
|
||||||
#define REPORT_SET_EFFECT 0x01
|
#define REPORT_SET_EFFECT 0x01
|
||||||
|
#define REPORT_SET_STATUS 0x02
|
||||||
#define REPORT_SET_PERIODIC 0x04
|
#define REPORT_SET_PERIODIC 0x04
|
||||||
#define REPORT_SET_CONSTANT_FORCE 0x05
|
#define REPORT_SET_CONSTANT_FORCE 0x05
|
||||||
#define REPORT_EFFECT_OPERATION 0x0A
|
#define REPORT_EFFECT_OPERATION 0x0A
|
||||||
|
#define REPORT_EFFECT_BLOCK_IDX 0x0B
|
||||||
#define REPORT_DISABLE_ACTUATORS 0x0C
|
#define REPORT_DISABLE_ACTUATORS 0x0C
|
||||||
#define REPORT_PID_POOL 0x0D
|
#define REPORT_PID_POOL 0x0D
|
||||||
|
|
||||||
@ -350,6 +352,12 @@ uint8_t hid_set_report_main(const struct usb_request *rq, const uint8_t *data, u
|
|||||||
|
|
||||||
switch(data[0])
|
switch(data[0])
|
||||||
{
|
{
|
||||||
|
case REPORT_SET_STATUS:
|
||||||
|
printf_P(PSTR("eff. set stat\r\n"));
|
||||||
|
break;
|
||||||
|
case REPORT_EFFECT_BLOCK_IDX:
|
||||||
|
printf_P(PSTR("eff. blk. idx\r\n"));
|
||||||
|
break;
|
||||||
case REPORT_DISABLE_ACTUATORS:
|
case REPORT_DISABLE_ACTUATORS:
|
||||||
printf_P(PSTR("disable actuators\r\n"));
|
printf_P(PSTR("disable actuators\r\n"));
|
||||||
break;
|
break;
|
||||||
|
4
n64.c
4
n64.c
@ -132,8 +132,10 @@ static char n64Update(void)
|
|||||||
}
|
}
|
||||||
#ifdef BUTTON_A_RUMBLE_TEST
|
#ifdef BUTTON_A_RUMBLE_TEST
|
||||||
must_rumble = force_rumble;
|
must_rumble = force_rumble;
|
||||||
|
//printf("Caps: %02x %02x %02x\r\n", caps[0], caps[1], caps[2]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
switch (n64_rumble_state)
|
switch (n64_rumble_state)
|
||||||
{
|
{
|
||||||
case RSTATE_INIT:
|
case RSTATE_INIT:
|
||||||
@ -257,8 +259,6 @@ static char n64Update(void)
|
|||||||
xval += 16000;
|
xval += 16000;
|
||||||
yval += 16000;
|
yval += 16000;
|
||||||
|
|
||||||
printf("x: 0x%04x -> ", xval, yval);
|
|
||||||
|
|
||||||
last_built_report[1] = ((uint8_t*)&xval)[0];
|
last_built_report[1] = ((uint8_t*)&xval)[0];
|
||||||
last_built_report[2] = ((uint8_t*)&xval)[1];
|
last_built_report[2] = ((uint8_t*)&xval)[1];
|
||||||
|
|
||||||
|
65
reportdesc.c
65
reportdesc.c
@ -30,22 +30,17 @@ const uint8_t gcn64_usbHidReportDescriptor[] PROGMEM = {
|
|||||||
0x09,0x05, // Usage Joystick
|
0x09,0x05, // Usage Joystick
|
||||||
0xA1,0x01, // Collection Application
|
0xA1,0x01, // Collection Application
|
||||||
//axis
|
//axis
|
||||||
0x85,0x01, // Report ID 1
|
//
|
||||||
// not sure how this is to work?
|
|
||||||
// 0x05, 0x02, //USAGE_PAGE (Simulation Controls)
|
|
||||||
//0x09, 0xBB, //USAGE (Throttle)
|
|
||||||
0x09, 0x01, // usage pointer
|
0x09, 0x01, // usage pointer
|
||||||
0xA1, 0x00, // COLLECTION (phys)
|
0xA1, 0x00, // COLLECTION (phys)
|
||||||
0x05, 0x01, // USAGE_PAGE (Generic desktop)
|
0x85,0x01, // Report ID 1
|
||||||
|
0x05, 0x01, // USAGE_PAGE (Generic desktop)
|
||||||
0x75, 0x10, // REPORT_SIZE (16)
|
0x75, 0x10, // REPORT_SIZE (16)
|
||||||
0x95, 0x06, // REPORT_COUNT (6)
|
0x95, 0x06, // REPORT_COUNT (6)
|
||||||
|
|
||||||
0x15, 0x00, // LOGICAL_MINIMUM (0)
|
0x15, 0x00, // LOGICAL_MINIMUM (0)
|
||||||
0x26, 0x00, 0x7D, // LOGICAL_MAXIMUM (32000)
|
0x26, 0x00, 0x7D, // LOGICAL_MAXIMUM (32000)
|
||||||
|
|
||||||
// 0x16, 0x00, // Physical Minimum (0)
|
|
||||||
// 0x46, 0x00, 0x7D, // Physical Maximum (32000)
|
|
||||||
|
|
||||||
0x09, 0x30, // USAGE (X)
|
0x09, 0x30, // USAGE (X)
|
||||||
0x09, 0x31, // USAGE (Y)
|
0x09, 0x31, // USAGE (Y)
|
||||||
0x09, 0x33, // USAGE (Rx)
|
0x09, 0x33, // USAGE (Rx)
|
||||||
@ -53,32 +48,23 @@ const uint8_t gcn64_usbHidReportDescriptor[] PROGMEM = {
|
|||||||
0x09, 0x35, // USAGE (Rz)
|
0x09, 0x35, // USAGE (Rz)
|
||||||
0x09, 0x36, // USAGE (Slider)
|
0x09, 0x36, // USAGE (Slider)
|
||||||
0x81, 0x02, // INPUT
|
0x81, 0x02, // INPUT
|
||||||
|
0xc0, // END COLLECTION
|
||||||
|
|
||||||
#define NUM_BUTTONS 16
|
#define NUM_BUTTONS 16
|
||||||
|
|
||||||
//buttons
|
//buttons
|
||||||
0x05, 0x09, // USAGE_PAGE (Button)
|
0xA1, 0x00, // COLLECTION (phys)
|
||||||
0x15, 0x00, // LOGICAL_MINIMUM (0)
|
0x05, 0x09, // USAGE_PAGE (Button)
|
||||||
0x25, 0x01, // LOGICAL_MAXIMUM (1)
|
0x15, 0x00, // LOGICAL_MINIMUM (0)
|
||||||
0x75, 0x01, // REPORT_SIZE (1)
|
0x25, 0x01, // LOGICAL_MAXIMUM (1)
|
||||||
0x95, NUM_BUTTONS, // REPORT_COUNT (14)
|
0x75, 0x01, // REPORT_SIZE (1)
|
||||||
0x19, 0x01, // USAGE_MINIMUM (Button 1)
|
0x95, NUM_BUTTONS, // REPORT_COUNT (14)
|
||||||
0x29, NUM_BUTTONS, // USAGE_MAXIMUM (Button 14)
|
0x19, 0x01, // USAGE_MINIMUM (Button 1)
|
||||||
0x75, 0x01, // REPORT_SIZE (1)
|
0x29, NUM_BUTTONS, // USAGE_MAXIMUM (Button 14)
|
||||||
0x95, NUM_BUTTONS, // REPORT_COUNT (16)
|
0x75, 0x01, // REPORT_SIZE (1)
|
||||||
0x81, 0x02, // INPUT
|
0x95, NUM_BUTTONS, // REPORT_COUNT (16)
|
||||||
|
0x81, 0x02, // INPUT
|
||||||
0xc0, // END COLLECTION
|
0xc0, // END COLLECTION
|
||||||
#if 0
|
|
||||||
//???
|
|
||||||
0x06,0x01,0xFF, // Usage Page Generic Desktop
|
|
||||||
0x09,0x49, // Usage Undefined
|
|
||||||
0x75,0x01, // Report Size 1
|
|
||||||
0x95,0x01, // Report Count 1
|
|
||||||
0x81,0x02, // Input (Variable)
|
|
||||||
0x75,0x07, // Report Size 7
|
|
||||||
0x81,0x03, // Input (Constant, Variable)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
0x05,0x0F, // Usage Page Physical Interface
|
0x05,0x0F, // Usage Page Physical Interface
|
||||||
@ -87,7 +73,11 @@ const uint8_t gcn64_usbHidReportDescriptor[] PROGMEM = {
|
|||||||
0x85,0x02, // Report ID 2
|
0x85,0x02, // Report ID 2
|
||||||
0x09,0x9F, // Usage DS Device is Reset
|
0x09,0x9F, // Usage DS Device is Reset
|
||||||
0x09,0xA0, // Usage DS Device is Pause
|
0x09,0xA0, // Usage DS Device is Pause
|
||||||
0x09,0xA4, // Usage Actuator Power
|
// RA: 2015-08-18: Removed this bit since it gets
|
||||||
|
// mapped to BTN_DEAD in linux's hid-input.c and this
|
||||||
|
// makes the adapter appear to have 17 buttons.
|
||||||
|
//
|
||||||
|
// 0x09,0xA4, // Usage Actuator Power
|
||||||
0x09,0xA5, // Usage Undefined
|
0x09,0xA5, // Usage Undefined
|
||||||
0x09,0xA6, // Usage Undefined
|
0x09,0xA6, // Usage Undefined
|
||||||
0x15,0x00, // Logical Minimum 0
|
0x15,0x00, // Logical Minimum 0
|
||||||
@ -95,19 +85,19 @@ const uint8_t gcn64_usbHidReportDescriptor[] PROGMEM = {
|
|||||||
0x35,0x00, // Physical Minimum 0
|
0x35,0x00, // Physical Minimum 0
|
||||||
0x45,0x01, // Physical Maximum 1
|
0x45,0x01, // Physical Maximum 1
|
||||||
0x75,0x01, // Report Size 1
|
0x75,0x01, // Report Size 1
|
||||||
0x95,0x05, // Report Count 5
|
0x95,0x04, // Report Count 4
|
||||||
0x81,0x02, // Input (Variable)
|
0x81,0x02, // Input (Variable)
|
||||||
0x95,0x03, // Report Count 3
|
0x95,0x04, // Report Count 4
|
||||||
0x75,0x01, // Report Size 1
|
0x75,0x01, // Report Size 1
|
||||||
0x81,0x03, // Input (Constant, Variable)
|
0x81,0x03, // Input (Constant, Variable)
|
||||||
0x09,0x94, // Usage PID Device Control
|
0x09,0x94, // Usage PID Device Control
|
||||||
0x15,0x00, // Logical Minimum 0
|
0x15,0x00, // Logical Minimum 0
|
||||||
0x25,0x01, // Logical Maximum 1
|
0x25,0x01, // Logical Maximum 1
|
||||||
0x35,0x00, // Physical Minimum 0
|
0x35,0x00, // Physical Minimum 0
|
||||||
0x45,0x01, // Physical Maximum 1
|
0x45,0x01, // Physical Maximum 1
|
||||||
0x75,0x01, // Report Size 1
|
0x75,0x01, // Report Size 1
|
||||||
0x95,0x01, // Report Count 1
|
0x95,0x01, // Report Count 1
|
||||||
0x81,0x02, // Input (Variable)
|
0x81,0x02, // Input (Variable)
|
||||||
0x09,0x22, // Usage Effect Block Index
|
0x09,0x22, // Usage Effect Block Index
|
||||||
0x15,0x01, // Logical Minimum 1
|
0x15,0x01, // Logical Minimum 1
|
||||||
0x25,0x28, // Logical Maximum 28h (40d)
|
0x25,0x28, // Logical Maximum 28h (40d)
|
||||||
@ -115,10 +105,9 @@ const uint8_t gcn64_usbHidReportDescriptor[] PROGMEM = {
|
|||||||
0x45,0x28, // Physical Maximum 28h (40d)
|
0x45,0x28, // Physical Maximum 28h (40d)
|
||||||
0x75,0x07, // Report Size 7
|
0x75,0x07, // Report Size 7
|
||||||
0x95,0x01, // Report Count 1
|
0x95,0x01, // Report Count 1
|
||||||
0x81,0x02, // Input (Variable)
|
0x81,0x02, // Input (Variable)
|
||||||
0xC0 , // End Collection
|
0xC0 , // End Collection
|
||||||
|
|
||||||
|
|
||||||
0x09,0x21, // Usage Set Effect Report
|
0x09,0x21, // Usage Set Effect Report
|
||||||
0xA1,0x02, // Collection Datalink
|
0xA1,0x02, // Collection Datalink
|
||||||
0x85,0x01, // Report ID 1
|
0x85,0x01, // Report ID 1
|
||||||
|
Loading…
Reference in New Issue
Block a user