mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-23 11:35:18 +00:00

Until now, the unifying plugin was a 'special snowflake' and did things in very different ways to the other plugins. Refactor each object to derive from either FuUsbDevice or FuUdevDevice, and then remove LuDevice and the LuContext layers.
154 lines
5.4 KiB
C
154 lines
5.4 KiB
C
/*
|
|
* Copyright (C) 2016-2018 Richard Hughes <richard@hughsie.com>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-2.1+
|
|
*/
|
|
|
|
#ifndef __FU_UNIFYING_HIDPP_H
|
|
#define __FU_UNIFYING_HIDPP_H
|
|
|
|
#include <gio/gio.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
/*
|
|
* Based on the HID++ documentation provided by Nestor Lopez Casado at:
|
|
* https://drive.google.com/folderview?id=0BxbRzx7vEV7eWmgwazJ3NUFfQ28&usp=sharing
|
|
*/
|
|
#define HIDPP_DEVICE_ID_WIRED 0x00
|
|
#define HIDPP_DEVICE_ID_RECEIVER 0xFF
|
|
#define HIDPP_DEVICE_ID_UNSET 0xFE
|
|
|
|
#define HIDPP_REPORT_NOTIFICATION 0x01
|
|
#define HIDPP_REPORT_ID_SHORT 0x10
|
|
#define HIDPP_REPORT_ID_LONG 0x11
|
|
#define HIDPP_REPORT_ID_VERY_LONG 0x12
|
|
|
|
#define HIDPP_SUBID_VENDOR_SPECIFIC_KEYS 0x03
|
|
#define HIDPP_SUBID_POWER_KEYS 0x04
|
|
#define HIDPP_SUBID_ROLLER 0x05
|
|
#define HIDPP_SUBID_MOUSE_EXTRA_BUTTONS 0x06
|
|
#define HIDPP_SUBID_BATTERY_CHARGING_LEVEL 0x07
|
|
#define HIDPP_SUBID_USER_INTERFACE_EVENT 0x08
|
|
#define HIDPP_SUBID_F_LOCK_STATUS 0x09
|
|
#define HIDPP_SUBID_CALCULATOR_RESULT 0x0A
|
|
#define HIDPP_SUBID_MENU_NAVIGATE 0x0B
|
|
#define HIDPP_SUBID_FN_KEY 0x0C
|
|
#define HIDPP_SUBID_BATTERY_MILEAGE 0x0D
|
|
#define HIDPP_SUBID_UART_RX 0x0E
|
|
#define HIDPP_SUBID_BACKLIGHT_DURATION_UPDATE 0x17
|
|
#define HIDPP_SUBID_DEVICE_DISCONNECTION 0x40
|
|
#define HIDPP_SUBID_DEVICE_CONNECTION 0x41
|
|
#define HIDPP_SUBID_DEVICE_DISCOVERY 0x42
|
|
#define HIDPP_SUBID_PIN_CODE_REQUEST 0x43
|
|
#define HIDPP_SUBID_RECEIVER_WORKING_MODE 0x44
|
|
#define HIDPP_SUBID_ERROR_MESSAGE 0x45
|
|
#define HIDPP_SUBID_RF_LINK_CHANGE 0x46
|
|
#define HIDPP_SUBID_HCI 0x48
|
|
#define HIDPP_SUBID_LINK_QUALITY 0x49
|
|
#define HIDPP_SUBID_DEVICE_LOCKING_CHANGED 0x4a
|
|
#define HIDPP_SUBID_WIRELESS_DEVICE_CHANGE 0x4B
|
|
#define HIDPP_SUBID_ACL 0x51
|
|
#define HIDPP_SUBID_VOIP_TELEPHONY_EVENT 0x5B
|
|
#define HIDPP_SUBID_LED 0x60
|
|
#define HIDPP_SUBID_GESTURE_AND_AIR 0x65
|
|
#define HIDPP_SUBID_TOUCHPAD_MULTI_TOUCH 0x66
|
|
#define HIDPP_SUBID_TRACEABILITY 0x78
|
|
#define HIDPP_SUBID_SET_REGISTER 0x80
|
|
#define HIDPP_SUBID_GET_REGISTER 0x81
|
|
#define HIDPP_SUBID_SET_LONG_REGISTER 0x82
|
|
#define HIDPP_SUBID_GET_LONG_REGISTER 0x83
|
|
#define HIDPP_SUBID_SET_VERY_LONG_REGISTER 0x84
|
|
#define HIDPP_SUBID_GET_VERY_LONG_REGISTER 0x85
|
|
#define HIDPP_SUBID_ERROR_MSG 0x8F
|
|
#define HIDPP_SUBID_ERROR_MSG_20 0xFF
|
|
|
|
#define HIDPP_ERR_SUCCESS 0x00
|
|
#define HIDPP_ERR_INVALID_SUBID 0x01
|
|
#define HIDPP_ERR_INVALID_ADDRESS 0x02
|
|
#define HIDPP_ERR_INVALID_VALUE 0x03
|
|
#define HIDPP_ERR_CONNECT_FAIL 0x04
|
|
#define HIDPP_ERR_TOO_MANY_DEVICES 0x05
|
|
#define HIDPP_ERR_ALREADY_EXISTS 0x06
|
|
#define HIDPP_ERR_BUSY 0x07
|
|
#define HIDPP_ERR_UNKNOWN_DEVICE 0x08
|
|
#define HIDPP_ERR_RESOURCE_ERROR 0x09
|
|
#define HIDPP_ERR_REQUEST_UNAVAILABLE 0x0A
|
|
#define HIDPP_ERR_INVALID_PARAM_VALUE 0x0B
|
|
#define HIDPP_ERR_WRONG_PIN_CODE 0x0C
|
|
|
|
/*
|
|
* HID++1.0 registers
|
|
*/
|
|
|
|
#define HIDPP_REGISTER_HIDPP_NOTIFICATIONS 0x00
|
|
#define HIDPP_REGISTER_ENABLE_INDIVIDUAL_FEATURES 0x01
|
|
#define HIDPP_REGISTER_BATTERY_STATUS 0x07
|
|
#define HIDPP_REGISTER_BATTERY_MILEAGE 0x0D
|
|
#define HIDPP_REGISTER_PROFILE 0x0F
|
|
#define HIDPP_REGISTER_LED_STATUS 0x51
|
|
#define HIDPP_REGISTER_LED_INTENSITY 0x54
|
|
#define HIDPP_REGISTER_LED_COLOR 0x57
|
|
#define HIDPP_REGISTER_OPTICAL_SENSOR_SETTINGS 0x61
|
|
#define HIDPP_REGISTER_CURRENT_RESOLUTION 0x63
|
|
#define HIDPP_REGISTER_USB_REFRESH_RATE 0x64
|
|
#define HIDPP_REGISTER_GENERIC_MEMORY_MANAGEMENT 0xA0
|
|
#define HIDPP_REGISTER_HOT_CONTROL 0xA1
|
|
#define HIDPP_REGISTER_READ_MEMORY 0xA2
|
|
#define HIDPP_REGISTER_DEVICE_CONNECTION_DISCONNECTION 0xB2
|
|
#define HIDPP_REGISTER_PAIRING_INFORMATION 0xB5
|
|
#define HIDPP_REGISTER_DEVICE_FIRMWARE_UPDATE_MODE 0xF0
|
|
#define HIDPP_REGISTER_DEVICE_FIRMWARE_INFORMATION 0xF1
|
|
|
|
/*
|
|
* HID++2.0 error codes
|
|
*/
|
|
#define HIDPP_ERROR_CODE_NO_ERROR 0x00
|
|
#define HIDPP_ERROR_CODE_UNKNOWN 0x01
|
|
#define HIDPP_ERROR_CODE_INVALID_ARGUMENT 0x02
|
|
#define HIDPP_ERROR_CODE_OUT_OF_RANGE 0x03
|
|
#define HIDPP_ERROR_CODE_HW_ERROR 0x04
|
|
#define HIDPP_ERROR_CODE_LOGITECH_INTERNAL 0x05
|
|
#define HIDPP_ERROR_CODE_INVALID_FEATURE_INDEX 0x06
|
|
#define HIDPP_ERROR_CODE_INVALID_FUNCTION_ID 0x07
|
|
#define HIDPP_ERROR_CODE_BUSY 0x08
|
|
#define HIDPP_ERROR_CODE_UNSUPPORTED 0x09
|
|
|
|
/*
|
|
* HID++2.0 features
|
|
*/
|
|
#define HIDPP_FEATURE_ROOT 0x0000
|
|
#define HIDPP_FEATURE_I_FEATURE_SET 0x0001
|
|
#define HIDPP_FEATURE_I_FIRMWARE_INFO 0x0003
|
|
#define HIDPP_FEATURE_GET_DEVICE_NAME_TYPE 0x0005
|
|
#define HIDPP_FEATURE_DFU_CONTROL 0x00c1
|
|
#define HIDPP_FEATURE_DFU_CONTROL_SIGNED 0x00c2
|
|
#define HIDPP_FEATURE_DFU 0x00d0
|
|
#define HIDPP_FEATURE_BATTERY_LEVEL_STATUS 0x1000
|
|
#define HIDPP_FEATURE_KBD_REPROGRAMMABLE_KEYS 0x1b00
|
|
#define HIDPP_FEATURE_SPECIAL_KEYS_BUTTONS 0x1b04
|
|
#define HIDPP_FEATURE_MOUSE_POINTER_BASIC 0x2200
|
|
#define HIDPP_FEATURE_ADJUSTABLE_DPI 0x2201
|
|
#define HIDPP_FEATURE_ADJUSTABLE_REPORT_RATE 0x8060
|
|
#define HIDPP_FEATURE_COLOR_LED_EFFECTS 0x8070
|
|
#define HIDPP_FEATURE_ONBOARD_PROFILES 0x8100
|
|
#define HIDPP_FEATURE_MOUSE_BUTTON_SPY 0x8110
|
|
|
|
#include "fu-unifying-hidpp-msg.h"
|
|
|
|
gboolean fu_unifying_hidpp_send (gint fd,
|
|
FuUnifyingHidppMsg *msg,
|
|
guint timeout,
|
|
GError **error);
|
|
gboolean fu_unifying_hidpp_receive (gint fd,
|
|
FuUnifyingHidppMsg *msg,
|
|
guint timeout,
|
|
GError **error);
|
|
gboolean fu_unifying_hidpp_transfer (gint fd,
|
|
FuUnifyingHidppMsg *msg,
|
|
GError **error);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __FU_UNIFYING_HIDPP_H */
|