Skip to content
Open
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
1 change: 1 addition & 0 deletions src/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ struct device {

// Equalizer Infos
EqualizerInfo* equalizer;
uint8_t equalizer_presets_count;
EqualizerPresets* equalizer_presets;
ParametricEqualizerInfo* parametric_equalizer;

Expand Down
4 changes: 3 additions & 1 deletion src/devices/audeze_maxwell.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ void audeze_maxwell_init(struct device** device)
device_maxwell.idProductsSupported = PRODUCT_IDS;
device_maxwell.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);

device_maxwell.equalizer_presets_count = 10;

strncpy(device_maxwell.device_name, "Audeze Maxwell", sizeof(device_maxwell.device_name));

device_maxwell.capabilities = B(CAP_SIDETONE) | B(CAP_INACTIVE_TIME) | B(CAP_VOLUME_LIMITER) | B(CAP_EQUALIZER_PRESET) | B(CAP_BATTERY_STATUS) | B(CAP_CHATMIX_STATUS) | B(CAP_VOICE_PROMPTS);
Expand Down Expand Up @@ -276,7 +278,7 @@ static int audeze_maxwell_send_equalizer_preset(hid_device* hid_device, uint8_t
static int audeze_maxwell_send_equalizer_custom_preset(hid_device* hid_device, uint8_t num)
{
// Getting only custom presets
return audeze_maxwell_send_equalizer_preset(hid_device, 7 + num);
return audeze_maxwell_send_equalizer_preset(hid_device, num + 1);
}

// The chatmix level is in the range of 0 to 20, where 10 is the center position.
Expand Down
16 changes: 10 additions & 6 deletions src/devices/headsetcontrol_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,13 @@ void headsetcontrol_test_init(struct device** device)
abort();
}

device_headsetcontrol_test.idVendor = VENDOR_TESTDEVICE;
device_headsetcontrol_test.idProductsSupported = PRODUCT_IDS;
device_headsetcontrol_test.numIdProducts = 1;
device_headsetcontrol_test.equalizer = &EQUALIZER;
device_headsetcontrol_test.equalizer_presets = &EQUALIZER_PRESETS;
device_headsetcontrol_test.parametric_equalizer = &PARAMETRIC_EQUALIZER;
device_headsetcontrol_test.idVendor = VENDOR_TESTDEVICE;
device_headsetcontrol_test.idProductsSupported = PRODUCT_IDS;
device_headsetcontrol_test.numIdProducts = 1;
device_headsetcontrol_test.equalizer = &EQUALIZER;
device_headsetcontrol_test.equalizer_presets = &EQUALIZER_PRESETS;
device_headsetcontrol_test.equalizer_presets_count = EQUALIZER_PRESETS_COUNT;
device_headsetcontrol_test.parametric_equalizer = &PARAMETRIC_EQUALIZER;

strncpy(device_headsetcontrol_test.device_name, "HeadsetControl Test device", sizeof(device_headsetcontrol_test.device_name));
// normally filled by hid in main.c
Expand Down Expand Up @@ -157,6 +158,9 @@ static int headsetcontrol_test_lights(hid_device* device_handle, uint8_t on)

static int headsetcontrol_test_send_equalizer_preset(hid_device* device_handle, uint8_t num)
{
if (num < 0 || num > EQUALIZER_PRESETS_COUNT-1) {
return -1;
}
return TESTBYTES_SEND;
}

Expand Down
9 changes: 5 additions & 4 deletions src/devices/steelseries_arctis_7_plus.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ int arctis_7_plus_read_device_status(hid_device* device_handle, unsigned char* d

void arctis_7_plus_init(struct device** device)
{
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.equalizer_presets_count = 4;

strncpy(device_arctis.device_name, "SteelSeries Arctis 7+", sizeof(device_arctis.device_name));

Expand Down
9 changes: 5 additions & 4 deletions src/devices/steelseries_arctis_nova_3.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ static int arctis_nova_3_send_microphone_volume(hid_device* device_handle, uint8

void arctis_nova_3_init(struct device** device)
{
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.equalizer_presets_count = 4;

strncpy(device_arctis.device_name, "SteelSeries Arctis Nova 3", sizeof(device_arctis.device_name));

Expand Down
13 changes: 7 additions & 6 deletions src/devices/steelseries_arctis_nova_5.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,13 @@ static int nova_5_save_state(hid_device* device_handle);

void arctis_nova_5_init(struct device** device)
{
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.equalizer_presets = &EQUALIZER_PRESETS;
device_arctis.parametric_equalizer = &PARAMETRIC_EQUALIZER;
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.equalizer_presets = &EQUALIZER_PRESETS;
device_arctis.equalizer_presets_count = EQUALIZER_PRESETS_COUNT;
device_arctis.parametric_equalizer = &PARAMETRIC_EQUALIZER;

strncpy(device_arctis.device_name, "SteelSeries Arctis Nova (5/5X)", sizeof(device_arctis.device_name));

Expand Down
11 changes: 6 additions & 5 deletions src/devices/steelseries_arctis_nova_7.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,12 @@ int arctis_nova_7_read_device_status(hid_device* device_handle, unsigned char* d

void arctis_nova_7_init(struct device** device)
{
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.equalizer_presets = &EQUALIZER_PRESETS;
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.equalizer_presets = &EQUALIZER_PRESETS;
device_arctis.equalizer_presets_count = EQUALIZER_PRESETS_COUNT;

strncpy(device_arctis.device_name, "SteelSeries Arctis Nova 7", sizeof(device_arctis.device_name));

Expand Down
9 changes: 5 additions & 4 deletions src/devices/steelseries_arctis_nova_pro_wireless.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,11 @@ static int save_state(hid_device* device_handle);

void arctis_nova_pro_wireless_init(struct device** device)
{
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.idVendor = VENDOR_STEELSERIES;
device_arctis.idProductsSupported = PRODUCT_IDS;
device_arctis.numIdProducts = sizeof(PRODUCT_IDS) / sizeof(PRODUCT_IDS[0]);
device_arctis.equalizer = &EQUALIZER;
device_arctis.equalizer_presets_count = EQUALIZER_PRESET_CUSTOM;

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

Expand Down
6 changes: 3 additions & 3 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ void print_help(char* programname, struct device* device_found, bool show_all)
printf(" -e, --equalizer STRING\tSet equalizer curve (values separated by spaces, commas, or new-lines)\n");
}
if (show_equalizer_preset) {
printf(" -p, --equalizer-preset NUMBER\tSet equalizer preset (0-3, 0 for default)\n");
printf(" -p, --equalizer-preset NUMBER\tSet equalizer preset (0-%d, 0 for default)\n", device_found->equalizer_presets_count-1);
}
printf("\n");
}
Expand Down Expand Up @@ -780,8 +780,8 @@ int main(int argc, char* argv[])
case 'p':
equalizer_preset = strtol(optarg, &endptr, 10);

if (*endptr != '\0' || endptr == optarg || equalizer_preset < 0 || equalizer_preset > 3) {
fprintf(stderr, "Usage: %s -p 0-3, 0 is default\n", argv[0]);
if (*endptr != '\0' || endptr == optarg || equalizer_preset < 0) {
fprintf(stderr, "Usage: %s -p 0-X, 0 is default\n", argv[0]);
return 1;
}
break;
Expand Down
20 changes: 14 additions & 6 deletions src/output.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,12 @@ void initializeHeadsetInfo(HeadsetInfo* info, struct device* device)
info->vendor_name = device->device_hid_vendorname;
info->product_name = device->device_hid_productname;

info->equalizer = device->equalizer;
info->equalizer_presets = device->equalizer_presets,
info->has_equalizer_info = info->equalizer != NULL;
info->has_equalizer_presets_info = info->equalizer_presets != NULL;
info->equalizer = device->equalizer;
info->equalizer_presets = device->equalizer_presets,
info->equalizer_presets_count = device->equalizer_presets_count,
info->has_equalizer_info = info->equalizer != NULL;
info->has_equalizer_presets_info = info->equalizer_presets != NULL;
info->has_equalizer_presets_count = info->equalizer_presets_count != NULL;

info->parametric_equalizer = device->parametric_equalizer,
info->has_parametric_equalizer_info = info->parametric_equalizer != NULL;
Expand Down Expand Up @@ -401,7 +403,6 @@ void output_json(HeadsetControlStatus* status, HeadsetInfo* infos)
printf(" }");

if (info->has_equalizer_presets_info) {
printf(",\n \"equalizer_presets_count\": %d", info->equalizer_presets->count);
printf(",\n \"equalizer_presets\": {\n");
for (int i = 0; i < info->equalizer_presets->count; i++) {
EqualizerPreset* presets = info->equalizer_presets->presets;
Expand All @@ -419,6 +420,10 @@ void output_json(HeadsetControlStatus* status, HeadsetInfo* infos)
}
}

if (info->has_equalizer_presets_count) {
printf(",\n \"equalizer_presets_count\": %d", info->equalizer_presets_count);
}

if (info->has_parametric_equalizer_info) {
printf(",\n \"parametric_equalizer\": {\n");
printf(" \"bands\": %d,\n", info->parametric_equalizer->bands_count);
Expand Down Expand Up @@ -633,7 +638,6 @@ void output_yaml(HeadsetControlStatus* status, HeadsetInfo* infos)
yaml_printint("max", info->equalizer->bands_max, 6);

if (info->has_equalizer_presets_info) {
yaml_printint("equalizer_presets_count", info->equalizer_presets->count, 4);
yaml_print("equalizer_presets", "", 4);
for (int i = 0; i < info->equalizer_presets->count; i++) {
EqualizerPreset* presets = info->equalizer_presets->presets;
Expand All @@ -652,6 +656,10 @@ void output_yaml(HeadsetControlStatus* status, HeadsetInfo* infos)
}
}

if (info->has_equalizer_presets_count) {
yaml_printint("equalizer_presets_count", info->equalizer_presets_count, 4);
}

if (info->has_parametric_equalizer_info) {
yaml_print("parametric_equalizer", "", 4);
yaml_printint("bands", info->parametric_equalizer->bands_count, 6);
Expand Down
2 changes: 2 additions & 0 deletions src/output.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ typedef struct {
EqualizerInfo* equalizer;
bool has_equalizer_presets_info;
EqualizerPresets* equalizer_presets;
bool has_equalizer_presets_count;
uint8_t equalizer_presets_count;
bool has_parametric_equalizer_info;
ParametricEqualizerInfo* parametric_equalizer;

Expand Down