From dc2a5931b7d69a3c00bac1487f92f335a9631b93 Mon Sep 17 00:00:00 2001
From: bno1 <ealex95@gmail.com>
Date: Wed, 6 May 2020 00:33:14 +0300
Subject: [PATCH] Add DPI stages to Basilisk X Hyper Speed

---
 daemon/openrazer_daemon/hardware/mouse.py                 | 5 +++--
 driver/razermouse_driver.c                                | 2 ++
 pylib/openrazer/_fake_driver/razeratherisreceiver.cfg     | 1 +
 pylib/openrazer/_fake_driver/razerbasiliskxhyperspeed.cfg | 1 +
 4 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/daemon/openrazer_daemon/hardware/mouse.py b/daemon/openrazer_daemon/hardware/mouse.py
index d68885df..bea85c55 100644
--- a/daemon/openrazer_daemon/hardware/mouse.py
+++ b/daemon/openrazer_daemon/hardware/mouse.py
@@ -2101,8 +2101,9 @@ class RazerBasiliskXHyperSpeed(__RazerDevice):
     USB_VID = 0x1532
     USB_PID = 0x0083
     METHODS = ['get_device_type_mouse', 'max_dpi', 'get_dpi_xy', 'set_dpi_xy',
-               'get_poll_rate', 'set_poll_rate', 'get_battery', 'is_charging',
-               'get_idle_time', 'set_idle_time', 'get_low_battery_threshold',
+               'get_dpi_stages', 'set_dpi_stages', 'get_poll_rate',
+               'set_poll_rate', 'get_battery', 'is_charging', 'get_idle_time',
+               'set_idle_time', 'get_low_battery_threshold',
                'set_low_battery_threshold']
 
     DEVICE_IMAGE = "https://assets.razerzone.com/eeimages/support/products/1589/1589_basilisk_x__hyperspeed.png"
diff --git a/driver/razermouse_driver.c b/driver/razermouse_driver.c
index e5f8fd89..9fbd2758 100644
--- a/driver/razermouse_driver.c
+++ b/driver/razermouse_driver.c
@@ -3886,6 +3886,7 @@ static int razer_mouse_probe(struct hid_device *hdev, const struct hid_device_id
         case USB_DEVICE_ID_RAZER_BASILISK_X_HYPERSPEED:
             CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_poll_rate);
             CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_dpi);
+            CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_dpi_stages);
             CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_level);
             CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_status);
             CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_low_threshold);
@@ -4330,6 +4331,7 @@ static void razer_mouse_disconnect(struct hid_device *hdev)
         case USB_DEVICE_ID_RAZER_BASILISK_X_HYPERSPEED:
             device_remove_file(&hdev->dev, &dev_attr_poll_rate);
             device_remove_file(&hdev->dev, &dev_attr_dpi);
+            device_remove_file(&hdev->dev, &dev_attr_dpi_stages);
             device_remove_file(&hdev->dev, &dev_attr_charge_level);
             device_remove_file(&hdev->dev, &dev_attr_charge_status);
             device_remove_file(&hdev->dev, &dev_attr_charge_low_threshold);
diff --git a/pylib/openrazer/_fake_driver/razeratherisreceiver.cfg b/pylib/openrazer/_fake_driver/razeratherisreceiver.cfg
index 216a07d8..4e3139ad 100644
--- a/pylib/openrazer/_fake_driver/razeratherisreceiver.cfg
+++ b/pylib/openrazer/_fake_driver/razeratherisreceiver.cfg
@@ -8,6 +8,7 @@ files = r,charge_level,255
         r,device_serial,XX0000000062
         r,device_type,%(name)s
         rw,dpi,800:800
+        rw,dpi_stages,0x010320032005dc05dc
         r,firmware_version,v1.0
         rw,poll_rate,500
         r,version,1.0.0
diff --git a/pylib/openrazer/_fake_driver/razerbasiliskxhyperspeed.cfg b/pylib/openrazer/_fake_driver/razerbasiliskxhyperspeed.cfg
index 3e64f539..841ca32d 100644
--- a/pylib/openrazer/_fake_driver/razerbasiliskxhyperspeed.cfg
+++ b/pylib/openrazer/_fake_driver/razerbasiliskxhyperspeed.cfg
@@ -8,6 +8,7 @@ files = r,charge_level,255
         r,device_serial,XX0000000083
         r,device_type,%(name)s
         rw,dpi,800:800
+        rw,dpi_stages,0x010320032005dc05dc
         r,firmware_version,v1.0
         rw,poll_rate,500
         r,version,1.0.0
-- 
GitLab