input: implemented B_GET_DEVICE_NAME ioctl on both usb and i2c input devices
Change-Id: Ie1eb0a958b4d60e6fa673cf8fe72bdfe924baf51 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4798 Tested-by: Commit checker robot <[email protected]> Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
committed by
Adrien Destugues
parent
370623a923
commit
6a9aea9dfd
@@ -267,6 +267,12 @@ JoystickProtocolHandler::Control(uint32 *cookie, uint32 op, void *buffer,
|
|||||||
size_t length)
|
size_t length)
|
||||||
{
|
{
|
||||||
switch (op) {
|
switch (op) {
|
||||||
|
case B_GET_DEVICE_NAME:
|
||||||
|
{
|
||||||
|
const char name[] = DEVICE_NAME" Joystick";
|
||||||
|
return IOGetDeviceName(name, buffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
case B_JOYSTICK_SET_DEVICE_MODULE:
|
case B_JOYSTICK_SET_DEVICE_MODULE:
|
||||||
{
|
{
|
||||||
if (length < sizeof(joystick_module_info))
|
if (length < sizeof(joystick_module_info))
|
||||||
|
|||||||
@@ -343,6 +343,12 @@ KeyboardProtocolHandler::Control(uint32 *cookie, uint32 op, void *buffer,
|
|||||||
size_t length)
|
size_t length)
|
||||||
{
|
{
|
||||||
switch (op) {
|
switch (op) {
|
||||||
|
case B_GET_DEVICE_NAME:
|
||||||
|
{
|
||||||
|
const char name[] = DEVICE_NAME" Keyboard";
|
||||||
|
return IOGetDeviceName(name,buffer,length);
|
||||||
|
}
|
||||||
|
|
||||||
case KB_READ:
|
case KB_READ:
|
||||||
{
|
{
|
||||||
if (*cookie == 0) {
|
if (*cookie == 0) {
|
||||||
|
|||||||
@@ -131,6 +131,13 @@ MouseProtocolHandler::Control(uint32 *cookie, uint32 op, void *buffer,
|
|||||||
size_t length)
|
size_t length)
|
||||||
{
|
{
|
||||||
switch (op) {
|
switch (op) {
|
||||||
|
|
||||||
|
case B_GET_DEVICE_NAME:
|
||||||
|
{
|
||||||
|
const char name[] = DEVICE_NAME" Mouse";
|
||||||
|
return IOGetDeviceName(name,buffer,length);
|
||||||
|
}
|
||||||
|
|
||||||
case MS_READ:
|
case MS_READ:
|
||||||
{
|
{
|
||||||
if (length < sizeof(mouse_movement))
|
if (length < sizeof(mouse_movement))
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <ring_buffer.h>
|
#include <ring_buffer.h>
|
||||||
|
#include <kernel.h>
|
||||||
|
|
||||||
#include "Driver.h"
|
#include "Driver.h"
|
||||||
#include "HIDCollection.h"
|
#include "HIDCollection.h"
|
||||||
@@ -187,3 +188,16 @@ ProtocolHandler::SetNextHandler(ProtocolHandler *nextHandler)
|
|||||||
{
|
{
|
||||||
fNextHandler = nextHandler;
|
fNextHandler = nextHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status_t
|
||||||
|
ProtocolHandler::IOGetDeviceName(const char *name, void *buffer, size_t length)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!IS_USER_ADDRESS(buffer))
|
||||||
|
return B_BAD_ADDRESS;
|
||||||
|
|
||||||
|
if (user_strlcpy((char *)buffer, name, length) > 0)
|
||||||
|
return B_OK;
|
||||||
|
|
||||||
|
return B_ERROR;
|
||||||
|
}
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ public:
|
|||||||
void SetNextHandler(ProtocolHandler *next);
|
void SetNextHandler(ProtocolHandler *next);
|
||||||
ProtocolHandler * NextHandler() { return fNextHandler; };
|
ProtocolHandler * NextHandler() { return fNextHandler; };
|
||||||
|
|
||||||
|
status_t IOGetDeviceName(const char *name, void *buffer,
|
||||||
|
size_t length);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
status_t fStatus;
|
status_t fStatus;
|
||||||
|
|
||||||
|
|||||||
@@ -182,6 +182,13 @@ TabletProtocolHandler::Control(uint32 *cookie, uint32 op, void *buffer,
|
|||||||
size_t length)
|
size_t length)
|
||||||
{
|
{
|
||||||
switch (op) {
|
switch (op) {
|
||||||
|
|
||||||
|
case B_GET_DEVICE_NAME:
|
||||||
|
{
|
||||||
|
const char name[] = DEVICE_NAME" Tablet";
|
||||||
|
return IOGetDeviceName(name,buffer,length);
|
||||||
|
}
|
||||||
|
|
||||||
case MS_READ:
|
case MS_READ:
|
||||||
{
|
{
|
||||||
if (length < sizeof(tablet_movement))
|
if (length < sizeof(tablet_movement))
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#define DRIVER_NAME "i2c_hid"
|
#define DRIVER_NAME "i2c_hid"
|
||||||
#define DEVICE_PATH_SUFFIX "i2c"
|
#define DEVICE_PATH_SUFFIX "i2c"
|
||||||
|
#define DEVICE_NAME "I2C"
|
||||||
|
|
||||||
extern DeviceList *gDeviceList;
|
extern DeviceList *gDeviceList;
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#define DRIVER_NAME "usb_hid"
|
#define DRIVER_NAME "usb_hid"
|
||||||
#define DEVICE_PATH_SUFFIX "usb"
|
#define DEVICE_PATH_SUFFIX "usb"
|
||||||
|
#define DEVICE_NAME "USB"
|
||||||
|
|
||||||
#define USB_INTERFACE_CLASS_HID 3
|
#define USB_INTERFACE_CLASS_HID 3
|
||||||
#define USB_INTERFACE_SUBCLASS_HID_BOOT 1
|
#define USB_INTERFACE_SUBCLASS_HID_BOOT 1
|
||||||
|
|||||||
Reference in New Issue
Block a user