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

Update razer chroma support #1781

Merged
merged 2 commits into from
Nov 11, 2019
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
14 changes: 7 additions & 7 deletions Project-Aurora/Project-Aurora/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public static void LogLine(this NLog.Logger logger, string text, Logging_Level l
public static KeyboardLayoutManager kbLayout;
public static Effects effengine;
public static KeyRecorder key_recorder;
public static RzManager razerManager;
public static RzSdkManager razerSdkManager;

/// <summary>
/// Currently held down modifer key
Expand Down Expand Up @@ -326,30 +326,30 @@ protected override void OnStartup(StartupEventArgs e)

Global.key_recorder = new KeyRecorder(Global.InputEvents);

Global.logger.Info("Loading RazerManager");
Global.logger.Info("Loading RazerSdkManager");
if (RzHelper.IsSdkVersionSupported(RzHelper.GetSdkVersion()))
{
try
{
Global.razerManager = new RzManager()
Global.razerSdkManager = new RzSdkManager()
{
KeyboardEnabled = true,
MouseEnabled = true,
MousepadEnabled = true,
AppListEnabled = true,
};

Global.logger.Info("RazerManager loaded successfully!");
Global.logger.Info("RazerSdkManager loaded successfully!");
}
catch (Exception exc)
{
Global.logger.Fatal("RazerManager failed to load!");
Global.logger.Fatal("RazerSdkManager failed to load!");
Global.logger.Fatal(exc.ToString());
}
}
else
{
Global.logger.Warn("Currently installed razer sdk version \"{0}\" is not supported!", RzHelper.GetSdkVersion());
Global.logger.Warn("Currently installed razer sdk version \"{0}\" is not supported by the RazerSdkManager!", RzHelper.GetSdkVersion());
}

Global.logger.Info("Loading Applications");
Expand Down Expand Up @@ -483,7 +483,7 @@ protected override void OnExit(ExitEventArgs e)

try
{
Global.razerManager?.Dispose();
Global.razerSdkManager?.Dispose();
}
catch (Exception exc)
{
Expand Down
Binary file modified Project-Aurora/Project-Aurora/RazerSdkWrapper.dll
Binary file not shown.
19 changes: 5 additions & 14 deletions Project-Aurora/Project-Aurora/Settings/Control_Settings.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,36 +137,27 @@ public Control_Settings()
var rzSdkEnabled = RzHelper.IsSdkEnabled();

this.razer_wrapper_installed_version_label.Content = rzVersion.ToString();
this.razer_wrapper_supported_versions_label.Content = $"{RzHelper.MinimumSupportedVersion}-{RzHelper.MaximumSupportedVersion}";
if (rzVersion < RzHelper.MaximumSupportedVersion)
{
this.razer_wrapper_installed_version_label.Foreground = new SolidColorBrush(Colors.PaleVioletRed);
this.razer_wrapper_install_button.Visibility = Visibility.Visible;
}
else
{
this.razer_wrapper_installed_version_label.Foreground = new SolidColorBrush(Colors.LightGreen);
this.razer_wrapper_install_button.Visibility = Visibility.Hidden;
}
this.razer_wrapper_installed_version_label.Foreground = new SolidColorBrush(RzHelper.IsSdkVersionSupported(rzVersion) ? Colors.LightGreen : Colors.PaleVioletRed);
this.razer_wrapper_supported_versions_label.Content = $"[{RzHelper.SupportedFromVersion}-{RzHelper.SupportedToVersion})";

if (rzVersion == new RzSdkVersion())
this.razer_wrapper_uninstall_button.Visibility = Visibility.Hidden;

this.razer_wrapper_enabled_label.Content = rzSdkEnabled ? "Enabled" : "Disabled";
this.razer_wrapper_enabled_label.Foreground = rzSdkEnabled ? new SolidColorBrush(Colors.LightGreen) : new SolidColorBrush(Colors.PaleVioletRed);

if (Global.razerManager != null)
if (Global.razerSdkManager != null)
{
this.razer_wrapper_connection_status_label.Content = "Success";
this.razer_wrapper_connection_status_label.Foreground = new SolidColorBrush(Colors.LightGreen);

{
var appList = Global.razerManager.GetDataProvider<RzAppListDataProvider>();
var appList = Global.razerSdkManager.GetDataProvider<RzAppListDataProvider>();
appList.Update();
this.razer_wrapper_current_application_label.Content = $"{appList.CurrentAppExecutable ?? "None"} [{appList.CurrentAppPid}]";
}

Global.razerManager.DataUpdated += (s, _) =>
Global.razerSdkManager.DataUpdated += (s, _) =>
{
if (!(s is RzAppListDataProvider appList))
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,11 @@ public RazerLayerHandler()
_keyboardColors = new Color[22 * 6];
_mousepadColors = new Color[16];

if (Global.razerManager != null)
if (Global.razerSdkManager != null)
{
Global.razerManager.DataUpdated += OnDataUpdated;
Global.razerSdkManager.DataUpdated += OnDataUpdated;

var appList = Global.razerManager.GetDataProvider<RzAppListDataProvider>();
var appList = Global.razerSdkManager.GetDataProvider<RzAppListDataProvider>();
appList.Update();
_currentAppExecutable = appList.CurrentAppExecutable;
_currentAppPid = appList.CurrentAppPid;
Expand All @@ -103,7 +103,7 @@ private void OnDataUpdated(object s, EventArgs e)

if (provider is RzKeyboardDataProvider keyboard)
{
for (var i = 0; i < keyboard.ZoneGrid.Height * keyboard.ZoneGrid.Width; i++)
for (var i = 0; i < keyboard.Grids[0].Height * keyboard.Grids[0].Width; i++)
_keyboardColors[i] = keyboard.GetZoneColor(i);
}
else if (provider is RzMouseDataProvider mouse)
Expand All @@ -112,7 +112,7 @@ private void OnDataUpdated(object s, EventArgs e)
}
else if (provider is RzMousepadDataProvider mousePad)
{
for (var i = 0; i < mousePad.ZoneGrid.Height * mousePad.ZoneGrid.Width; i++)
for (var i = 0; i < mousePad.Grids[0].Height * mousePad.Grids[0].Width; i++)
_mousepadColors[i] = mousePad.GetZoneColor(i);
}
else if (provider is RzAppListDataProvider appList)
Expand Down Expand Up @@ -151,7 +151,7 @@ public void DumpData(AbstractDataProvider provider)
var path = Path.Combine(Global.LogsDirectory, "RazerLayer");
var filename = $"{provider.GetType().Name}_{Environment.TickCount}.bin";
using (var file = File.Open($@"{path}\{filename}", FileMode.Create)) {
var data = provider.ReadData();
var data = provider.Read();
file.Write(data, 0, data.Length);
}
}
Expand Down Expand Up @@ -209,8 +209,8 @@ private Color PostProcessColor(Color color)

public override void Dispose()
{
if(Global.razerManager != null)
Global.razerManager.DataUpdated -= OnDataUpdated;
if(Global.razerSdkManager != null)
Global.razerSdkManager.DataUpdated -= OnDataUpdated;

base.Dispose();
}
Expand Down
48 changes: 46 additions & 2 deletions Project-Aurora/Project-Aurora/Utils/RazerChromaUtils.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.Win32;
using Newtonsoft.Json.Linq;
using RazerSdkWrapper.Utils;
using System;
using System.Collections.Generic;
Expand All @@ -8,6 +9,7 @@
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace Aurora.Utils
{
Expand Down Expand Up @@ -79,12 +81,54 @@ int DoUninstall(string filepath)
}
});

public static Task<string> DownloadAsync() => Task.Run(() =>
public static Task<string> GetDownloadUrlAsync() => Task.Run(() =>
{
using (var client = new WebClient())
{
var endpoint = "prod";
var json = JObject.Parse(client.DownloadString("https://discovery.razerapi.com/user/endpoints"));
var hash = json["endpoints"].Children().FirstOrDefault(c => c.Value<string>("name") == endpoint)?.Value<string>("hash");

if (hash == null)
return null;

var platformData = @"
<PlatformRoot xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
<Platform>
<Arch>64</Arch>
<Locale>en</Locale>
<Mfr>Generic-MFR</Mfr>
<Model>Generic-MDL</Model>
<OS>Windows</OS>
<OSVer>10</OSVer>
<SKU>Generic-SKU</SKU>
</Platform>
</PlatformRoot>
";

client.Headers.Set("Content-Type", "application/xml");
var xml = client.UploadString($"https://manifest.razerapi.com/api/legacy/{hash}/{endpoint}/productlist/get", platformData);
var doc = new XmlDocument();
doc.LoadXml(xml);

foreach(XmlNode node in doc.DocumentElement.SelectNodes("//Module"))
if (node["Name"].InnerText == "CHROMABROADCASTER")
return node["DownloadURL"].InnerText;

return null;
}
});

public static Task<string> DownloadAsync() => Task.Run(async () =>
{
var url = await GetDownloadUrlAsync();
if (url == null)
return null;

using (var client = new WebClient())
{
var path = Path.ChangeExtension(Path.GetTempFileName(), ".exe");
client.DownloadFile(RzHelper.LatestSupportedVersionUrl, path);
client.DownloadFile(url, path);
return path;
}
});
Expand Down