* main.c
* - Driver Core
*/
-#define DEBUG 1
+#define DEBUG 0
#define VERSION VER2(0,1)
#include <acess.h>
#include <modules.h>
// === IMPORTS ===
extern tHID_ReportCallbacks gHID_Mouse_ReportCBs;
-extern tDevFS_Driver gHID_Mouse_DevFS;
+extern tHID_ReportCallbacks gHID_Kb_ReportCBs;
// === PROTOTYPES ===
int HID_Initialise(char **Arguments);
static void _FreeList(struct sHID_IntList *List);
// === GLOBALS ===
-MODULE_DEFINE(0, VERSION, USB_HID, HID_Initialise, NULL, "USB_Core", NULL);
+MODULE_DEFINE(0, VERSION, USB_HID, HID_Initialise, NULL, "USB_Core", "Keyboard", "Mouse", NULL);
tUSBDriver gHID_USBDriver = {
.Name = "HID",
.Match = {.Class = {0x030000, 0xFF0000}},
{
USB_RegisterDriver( &gHID_USBDriver );
- DevFS_AddDevice( &gHID_Mouse_DevFS );
-
return 0;
}
Log_Error("USB HID", "Device %p doesn't have a data pointer.", Dev);
return ;
}
-
+
+ LOG("Data for %p", info->DataAvail);
info->DataAvail(Dev, EndPt, Length, Data);
}
break;
case 0x0006: // Keyboard
LOG("Desktop->Keyboard");
- break;
+ return &gHID_Kb_ReportCBs;
}
break;
case 0x0007: // Keyboard / Keypad
LOG("Keyboard");
- break;
+ return &gHID_Kb_ReportCBs;
}
return NULL;
}
else
next_cbs = NULL;
cur_cbs = next_cbs;
- break;
+ goto _clear_local;
// - Feature
case 0xB0:
LOG("Feature 0x%x", val);
// - Usages
case 0x08: // Single
if( (byte & 3) != 3 ) val |= global_state.UsagePage;
+ LOG("Usage %x", val);
_AddItem(&local_state.Usages, val);
break;
case 0x18: // Range start
if( (byte & 3) != 3 ) val |= global_state.UsagePage;
+ LOG("Usage start %x", val);
local_state.UsageMin = val;
break;
case 0x28: // Range end (apply)
if( (byte & 3) != 3 ) val |= global_state.UsagePage;
+ LOG("Usage end %x (from %x)", val, local_state.UsageMin);
_AddItems(&local_state.Usages, local_state.UsageMin, val);
break;
// - Designators (Index into Physical report)
List->Items = realloc( List->Items, List->Space * sizeof(List->Items[0]) );
}
+// LOG("Added %x to %p", Value, List);
List->Items[ List->nItems ] = Value;
List->nItems ++;
}