You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
42 lines
1.3 KiB
#ifndef USBPAD_H__ |
|
#define USBPAD_H__ |
|
|
|
#include "gamepads.h" |
|
#include "usb.h" |
|
|
|
#define USBPAD_REPORT_SIZE 15 |
|
|
|
struct usbpad { |
|
volatile unsigned char gamepad_vibrate; // output |
|
unsigned char vibration_on, force_vibrate; |
|
unsigned char constant_force; |
|
unsigned char periodic_magnitude; |
|
|
|
unsigned short _FFB_effect_duration; // in milliseconds |
|
unsigned char _FFB_effect_index; |
|
#define LOOP_MAX 0xFFFF |
|
unsigned int _loop_count; |
|
|
|
unsigned char gamepad_report0[USBPAD_REPORT_SIZE]; |
|
unsigned char hid_report_data[8]; // Used for force feedback |
|
}; |
|
|
|
void usbpad_init(struct usbpad *pad); |
|
int usbpad_getReportSize(void); |
|
unsigned char *usbpad_getReportBuffer(struct usbpad *pad); |
|
|
|
void usbpad_update(struct usbpad *pad, const gamepad_data *pad_data); |
|
void usbpad_vibrationTask(struct usbpad *pad); |
|
char usbpad_mustVibrate(struct usbpad *pad); |
|
void usbpad_forceVibrate(struct usbpad *pad, char force); |
|
|
|
uint8_t usbpad_hid_set_report(struct usbpad *pad, const struct usb_request *rq, const uint8_t *data, uint16_t len); |
|
uint16_t usbpad_hid_get_report(struct usbpad *pad, struct usb_request *rq, const uint8_t **dat); |
|
|
|
// For mappings. ID starts at 0. |
|
#define USB_BTN(id) (0x0001 << (id)) |
|
|
|
int usbpad_getReportSizeKB(void); |
|
void usbpad_update_kb(struct usbpad *pad, const gamepad_data *pad_data); |
|
|
|
#endif // USBPAD_H__
|
|
|