Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SteelSeries Arctis 1 Wireless battery status support #156

Merged
merged 3 commits into from
May 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,7 @@ talking. This differs from a simple loopback via PulseAudio as you won't have an
- Sidetone, Battery (for Wireless), LED on/off
- Logitech G930
- Sidetone, Battery
- SteelSeries Arctis 1
- Sidetone, Inactive time
- SteelSeries Arctis 1 for XBox
- SteelSeries Arctis 1, Arctis 1 for XBox
- Sidetone, Battery, Inactive time
- SteelSeries Arctis (7 and Pro)
- Sidetone, Battery, Inactive time, Chat-Mix level, LED on/off (allows to turn off the blinking LED on the base-station)
Expand Down
10 changes: 4 additions & 6 deletions src/device_registry.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,12 @@
#include "devices/logitech_zone_wired.h"
#include "devices/roccat_elo_7_1_air.h"
#include "devices/steelseries_arctis_1.h"
#include "devices/steelseries_arctis_1_xbox.h"
#include "devices/steelseries_arctis_7.h"
#include "devices/steelseries_arctis_9.h"

#include <string.h>

#define NUMDEVICES 13
#define NUMDEVICES 12

// array of pointers to device
static struct device*(devicelist[NUMDEVICES]);
Expand All @@ -32,10 +31,9 @@ void init_devices()
arctis_7_init(&devicelist[6]);
arctis_9_init(&devicelist[7]);
gpro_init(&devicelist[8]);
arctis_1_xbox_init(&devicelist[9]);
zone_wired_init(&devicelist[10]);
elo71Air_init(&devicelist[11]);
g432_init(&devicelist[12]);
zone_wired_init(&devicelist[9]);
elo71Air_init(&devicelist[10]);
g432_init(&devicelist[11]);
}

int get_device(struct device* device_found, uint16_t idVendor, uint16_t idProduct)
Expand Down
2 changes: 0 additions & 2 deletions src/devices/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ set(SOURCE_FILES ${SOURCE_FILES}
${CMAKE_CURRENT_SOURCE_DIR}/logitech_g533.h
${CMAKE_CURRENT_SOURCE_DIR}/steelseries_arctis_1.c
${CMAKE_CURRENT_SOURCE_DIR}/steelseries_arctis_1.h
${CMAKE_CURRENT_SOURCE_DIR}/steelseries_arctis_1_xbox.c
${CMAKE_CURRENT_SOURCE_DIR}/steelseries_arctis_1_xbox.h
${CMAKE_CURRENT_SOURCE_DIR}/steelseries_arctis_7.c
${CMAKE_CURRENT_SOURCE_DIR}/steelseries_arctis_7.h
${CMAKE_CURRENT_SOURCE_DIR}/steelseries_arctis_9.c
Expand Down
23 changes: 13 additions & 10 deletions src/devices/steelseries_arctis_1.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@

static struct device device_arctis;

#define ID_ARCTIS_1 0x12b3
#define ID_ARCTIS_1 0x12b3
#define ID_ARCTIS_1_XBOX 0x12b6

static const uint16_t PRODUCT_IDS[] = { ID_ARCTIS_1 };
static const uint16_t PRODUCT_IDS[] = { ID_ARCTIS_1, ID_ARCTIS_1_XBOX };

static int arctis_1_send_sidetone(hid_device* device_handle, uint8_t num);
//static int arctis_1_request_battery(hid_device* device_handle);
static int arctis_1_request_battery(hid_device* device_handle);
static int arctis_1_send_inactive_time(hid_device* device_handle, uint8_t num);

static int arctis_1_save_state(hid_device* device_handle);
Expand All @@ -28,9 +29,9 @@ void arctis_1_init(struct device** device)

strncpy(device_arctis.device_name, "SteelSeries Arctis (1) Wireless", sizeof(device_arctis.device_name));

device_arctis.capabilities = CAP_SIDETONE | CAP_INACTIVE_TIME;
device_arctis.capabilities = CAP_SIDETONE | CAP_BATTERY_STATUS | CAP_INACTIVE_TIME;
device_arctis.send_sidetone = &arctis_1_send_sidetone;
//device_arctis.request_battery = &arctis_1_request_battery;
device_arctis.request_battery = &arctis_1_request_battery;
device_arctis.send_inactive_time = &arctis_1_send_inactive_time;

*device = &device_arctis;
Expand Down Expand Up @@ -69,13 +70,12 @@ static int arctis_1_send_sidetone(hid_device* device_handle, uint8_t num)
return ret;
}

/*static int arctis_1_request_battery(hid_device* device_handle)
static int arctis_1_request_battery(hid_device* device_handle)
{

int r = 0;

// request battery status
unsigned char data_request[2] = { 0x06, 0x18 };
unsigned char data_request[2] = { 0x06, 0x12 };

r = hid_write(device_handle, data_request, 2);

Expand All @@ -90,13 +90,16 @@ static int arctis_1_send_sidetone(hid_device* device_handle, uint8_t num)
if (r < 0)
return r;

int bat = data_read[2];
if (data_read[2] == 0x01)
return BATTERY_UNAVAILABLE;

int bat = data_read[3];

if (bat > 100)
return 100;

return bat;
}*/
}

static int arctis_1_send_inactive_time(hid_device* device_handle, uint8_t num)
{
Expand Down
125 changes: 0 additions & 125 deletions src/devices/steelseries_arctis_1_xbox.c

This file was deleted.

3 changes: 0 additions & 3 deletions src/devices/steelseries_arctis_1_xbox.h

This file was deleted.