#ifndef JOYDEV_H_INCLUDED
#define JOYDEV_H_INCLUDED

#include "usb.h"   // USBServiceCall, usb_device_t, usb_*_descriptor_t

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

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

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
