mirror of
https://github.com/libratbag/libratbag.git
synced 2026-11-08 07:33:53 +01:00
hidraw: Implement ratbag_hidraw_read_input_report and ratbag_hidraw_output_report
Logitech devices are using raw input/output reports, so we need this. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
This commit is contained in:
@@ -129,8 +129,27 @@ ratbag_hidraw_raw_request(struct ratbag_device *ratbag, unsigned char reportnum,
|
||||
int
|
||||
ratbag_hidraw_output_report(struct ratbag_device *ratbag, uint8_t *buf, size_t len)
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (len < 1 || len > HID_MAX_BUFFER_SIZE || !buf || ratbag->hidraw_fd < 0)
|
||||
return -EINVAL;
|
||||
|
||||
return -ENOTSUP;
|
||||
rc = write(ratbag->hidraw_fd, buf, len);
|
||||
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
if (rc != (int)len)
|
||||
return -EIO;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
ratbag_hidraw_read_input_report(struct ratbag_device *ratbag, uint8_t *buf, size_t len)
|
||||
{
|
||||
if (len < 1 || !buf || ratbag->hidraw_fd < 0)
|
||||
return -EINVAL;
|
||||
|
||||
return read(ratbag->hidraw_fd, buf, len);
|
||||
}
|
||||
|
||||
@@ -65,4 +65,15 @@ int ratbag_hidraw_raw_request(struct ratbag_device *ratbag, unsigned char report
|
||||
*/
|
||||
int ratbag_hidraw_output_report(struct ratbag_device *ratbag, uint8_t *buf, size_t len);
|
||||
|
||||
/**
|
||||
* ratbag_hidraw_read_input_report - read an input report from the device
|
||||
*
|
||||
* @hdev: hid device
|
||||
* @buf: resulting raw data
|
||||
* @len: length of buf
|
||||
*
|
||||
* @return: count of data transfered, negative if error
|
||||
*/
|
||||
int ratbag_hidraw_read_input_report(struct ratbag_device *ratbag, uint8_t *buf, size_t len);
|
||||
|
||||
#endif /* LIBRATBAG_HIDRAW_H */
|
||||
|
||||
Reference in New Issue
Block a user