
#include "VersionNum"
#include "Global/Services.h"   // Service_DeviceDead, and Service_USB (before usb.h, so USBDevFS.h's #ifndef-guarded copy agrees rather than clashing)
#include "usb.h"
#include "usbjoystick.h"
#include "adc.h"
#include "cmds.h"
#include "joyswis.h"
#include "buffer.h"
#include "joydev.h"
#include "mouse.h"
#include "joycompat.h"

title-string:USBJoystick

help-string:	USBJoystick Module_MajorVersion_CMHG Module_MinorVersion_CMHG

date-string:		Module_Date_CMHG

initialisation-code:	module_initialise

finalisation-code:	module_finalise

service-call-handler: servicecall_handler	Service_USB,
						Service_DeviceDead

// Ordered to match doc.APIs section 6's own groupings (Inspection / Mapping /
// Config store / Emulation / Control) - CMHG doesn't sort *Help's "Commands
// provided:" list, it just walks this table in the order it's declared here,
// so the declaration order IS the *Help order.
command-keyword-table: command_handler
      USBJoystick_List(min-args: 0,
                   max-args: 1,
                   international:,
                   invalid-syntax: "SJLST",
                   help-text: "HJLST"
                   ),
     USBJoystick_Read(min-args: 1,
                   max-args: 1,
                   international:,
                   invalid-syntax: "SJRD",
                   help-text: "HJRD"
                   ),
      USBJoystick_Mappings(min-args: 1,
                   max-args: 1,
                   international:,
                   invalid-syntax: "SJMPGS",
                   help-text: "HJMPGS"
                   ),
      USBJoystick_Debug(min-args: 0,
                   max-args: 1,
                   international:,
                   invalid-syntax: "SJDBG",
                   help-text: "HJDBG"
                   ),
      USBJoystick_Fingerprint(min-args: 1,
                   max-args: 1,
                   international:,
                   invalid-syntax: "SJFGRP",
                   help-text: "HJFGRP"
                   ),
     USBJoystick_SetStick(min-args: 2,
                   max-args: 2,
                   international:,
                   invalid-syntax: "SJSSTK",
                   help-text: "HJSSTK"
                   ),
      USBJoystick_Map(min-args: 3,
                   max-args: 4,
                   international:,
                   invalid-syntax: "SJMAP",
                   help-text: "HJMAP"
                   ),
      USBJoystick_Unmap(min-args: 1,
                   max-args: 3,
                   international:,
                   invalid-syntax: "SJUNMP",
                   help-text: "HJUNMP"
                   ),
      USBJoystick_SaveMappings(min-args: 1,
                   max-args: 2,
                   international:,
                   invalid-syntax: "SJSAVM",
                   help-text: "HJSAVM"
                   ),
      USBJoystick_RevertToDefaultMap(min-args: 1,
                   max-args: 1,
                   international:,
                   invalid-syntax: "SJRVDM",
                   help-text: "HJRVDM"
                   ),
      USBJoystick_ReloadConfig(min-args: 0,
                   max-args: 0,
                   international:,
                   invalid-syntax: "SJRLDC",
                   help-text: "HJRLDC"
                   ),
      USBJoystick_SaveSettings(min-args: 0,
                   max-args: 0,
                   international:,
                   invalid-syntax: "SJSVST",
                   help-text: "HJSVST"
                   ),
     USBJoystick_Emulate(min-args: 1,
                   max-args: 2,
                   international:,
                   invalid-syntax: "SJEMU",
                   help-text: "HJEMU"
                   ),
      USBJoystick_Control(min-args: 1,
                   max-args: 2,
                   international:,
                   invalid-syntax: "SJCTRL",
                   help-text: "HJCTRL"
                   )

swi-chunk-base-number:	USBJoystickSWI_Base

swi-handler-code:	module_swi

swi-decoding-table:	USBJoystickSWI_Name,
			Read,
			CalibrateTopRight,
			CalibrateBottomLeft,
			Status,
			Enumerate,
			DeviceInfo,
			AxisInfo,
			AxisValues,
			GetMapping,
			SetStick,
			Emulate,
			SaveMapping,
			RevertToDefaultMap,
			ReloadConfig,
			ReadBindings,
			WriteBindings,
			AddBinding,
			ReadDefaultBindings,
			Control,
			SaveSettings

vector-handlers:	upcallv_hook/upcallv_hook_handler,
			bytev_hook/bytev_hook_handler

generic-veneers:	ukswiv_hook/ukswiv_hook_handler

international-help-file:"Resources:$.Resources.USBJoystick.Messages"
