#ifndef JOYDEV_H_INCLUDED
#define JOYDEV_H_INCLUDED

#define USB_PATH_SPECIFIER "devices#interface=%d;endpoint=%d;nopad;noblock:%s"

_kernel_oserror* joy_check_device(const usb_service_t* dev, void* handle);
uint8_t *get_report_descriptor(usb_device_t* device, usb_hid_device_descriptor_t *hdesc);
void set_up_joystick(const usb_service_t* dev, usb_device_t* device, usb_device_descriptor_t* ddesc, usb_interface_descriptor_t* idesc, usb_endpoint_descriptor_t* edesc);
osbool parse_usb_hid_device_descriptor(uint32_t length, uint8_t* buf);
void joystick_decode(uint32_t i);

void open_joysticks(void);
void open_joystick(uint32_t i);
void joy_remove_device(const char* device_name);

void servicecall_handler(int32_t service_number, _kernel_swi_regs *r, void *pw);

#endif
