Skip to content

Commit

Permalink
Merge pull request #11 from Desz01ate/refactor
Browse files Browse the repository at this point in the history
Refactor
  • Loading branch information
Desz01ate committed Apr 14, 2022
2 parents 35b86ad + c3cf536 commit 4007445
Show file tree
Hide file tree
Showing 20 changed files with 112 additions and 128 deletions.
12 changes: 9 additions & 3 deletions Sample/SystemMonitor/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,16 @@ static async Task Main(string[] args)
var totalMemoryMBytes = GC.GetGCMemoryInfo().TotalAvailableMemoryBytes / 1024 / 1024;
var gpu = PhysicalGPU.GetPhysicalGPUs().FirstOrDefault();

var backgroundGrid = new VirtualLedGrid(30, 9);

backgroundGrid.Set(new Color(0, 16, 0));

var grid = new VirtualLedGrid(30, 9);
grid.Set(new Color(6, 6, 6));
using var mediator = new PhysicalDeviceMediator(grid);

// Order of grid matters, predecessor grids will get override by successor grids.
// in this example the green background will get override by custom system color in some area.
using var mediator = new PhysicalDeviceMediator(backgroundGrid, grid);

mediator.Attach<RazerKeyboardAdapter>(0, 1);
mediator.Attach<RazerMousepadAdapter>(0, 0);
mediator.Attach<RazerMouseAdapter>(23, 0);
Expand All @@ -44,7 +50,6 @@ static async Task Main(string[] args)
var diskGrid = grid.Slice(2, 4, 11, 1);
var gpuGrid = grid.Slice(2, 5, 11, 1);


var cpuColor = new Color(17, 125, 187);
var memoryColor = new Color(139, 18, 174);
var diskColor = new Color(77, 166, 12);
Expand Down Expand Up @@ -87,6 +92,7 @@ static async Task Main(string[] args)
{
diskGrid[diskCol, 0] = diskColor;
}

for (var gpuCol = 0; gpuCol < gpuGridLegth; gpuCol++)
{
gpuGrid[gpuCol, 0] = cpuColor;
Expand Down
61 changes: 19 additions & 42 deletions VirtualGrid.Asus/AsusRogStrix_G15_2021_Adapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,27 @@ namespace VirtualGrid.Asus
/// </summary>
public class AsusRogStrix_G15_2021_Adapter : IPhysicalDeviceAdapter
{
class Representator
{
private readonly RogStrixKeyboardKey[][] _keys;
public Representator()
{
this._keys = new RogStrixKeyboardKey[9][] {
new [] {(RogStrixKeyboardKey)0,(RogStrixKeyboardKey)1,(RogStrixKeyboardKey)2,(RogStrixKeyboardKey)3,(RogStrixKeyboardKey)4,(RogStrixKeyboardKey)5,(RogStrixKeyboardKey)6,(RogStrixKeyboardKey)7,(RogStrixKeyboardKey)8,(RogStrixKeyboardKey)9,(RogStrixKeyboardKey)10,(RogStrixKeyboardKey)11,(RogStrixKeyboardKey)12,(RogStrixKeyboardKey)13,(RogStrixKeyboardKey)14,(RogStrixKeyboardKey)15,(RogStrixKeyboardKey)16,(RogStrixKeyboardKey)17,(RogStrixKeyboardKey)18,(RogStrixKeyboardKey)19,(RogStrixKeyboardKey)20, },
new [] {(RogStrixKeyboardKey)21,(RogStrixKeyboardKey)22,(RogStrixKeyboardKey)23,(RogStrixKeyboardKey)24,(RogStrixKeyboardKey)25,(RogStrixKeyboardKey)26,(RogStrixKeyboardKey)27,(RogStrixKeyboardKey)28,(RogStrixKeyboardKey)29,(RogStrixKeyboardKey)30,(RogStrixKeyboardKey)31,(RogStrixKeyboardKey)32,(RogStrixKeyboardKey)33,(RogStrixKeyboardKey)34,(RogStrixKeyboardKey)35,(RogStrixKeyboardKey)36,(RogStrixKeyboardKey)37,(RogStrixKeyboardKey)38,(RogStrixKeyboardKey)39,(RogStrixKeyboardKey)40,(RogStrixKeyboardKey)41, },
new [] {(RogStrixKeyboardKey)42,(RogStrixKeyboardKey)43,(RogStrixKeyboardKey)44,(RogStrixKeyboardKey)45,(RogStrixKeyboardKey)46,(RogStrixKeyboardKey)47,(RogStrixKeyboardKey)48,(RogStrixKeyboardKey)49,(RogStrixKeyboardKey)50,(RogStrixKeyboardKey)51,(RogStrixKeyboardKey)52,(RogStrixKeyboardKey)53,(RogStrixKeyboardKey)54,(RogStrixKeyboardKey)55,(RogStrixKeyboardKey)56,(RogStrixKeyboardKey)57,(RogStrixKeyboardKey)58,(RogStrixKeyboardKey)59,(RogStrixKeyboardKey)60,(RogStrixKeyboardKey)61,(RogStrixKeyboardKey)62, },
new [] {(RogStrixKeyboardKey)63,(RogStrixKeyboardKey)64,(RogStrixKeyboardKey)65,(RogStrixKeyboardKey)66,(RogStrixKeyboardKey)67,(RogStrixKeyboardKey)68,(RogStrixKeyboardKey)69,(RogStrixKeyboardKey)70,(RogStrixKeyboardKey)71,(RogStrixKeyboardKey)72,(RogStrixKeyboardKey)73,(RogStrixKeyboardKey)74,(RogStrixKeyboardKey)75,(RogStrixKeyboardKey)76,(RogStrixKeyboardKey)77,(RogStrixKeyboardKey)78,(RogStrixKeyboardKey)79,(RogStrixKeyboardKey)80,(RogStrixKeyboardKey)81,(RogStrixKeyboardKey)82,(RogStrixKeyboardKey)83, },
new [] {(RogStrixKeyboardKey)84,(RogStrixKeyboardKey)85,(RogStrixKeyboardKey)86,(RogStrixKeyboardKey)87,(RogStrixKeyboardKey)88,(RogStrixKeyboardKey)89,(RogStrixKeyboardKey)90,(RogStrixKeyboardKey)91,(RogStrixKeyboardKey)92,(RogStrixKeyboardKey)93,(RogStrixKeyboardKey)94,(RogStrixKeyboardKey)95,(RogStrixKeyboardKey)96,(RogStrixKeyboardKey)97,(RogStrixKeyboardKey)98,(RogStrixKeyboardKey)99,(RogStrixKeyboardKey)100,(RogStrixKeyboardKey)101,(RogStrixKeyboardKey)102,(RogStrixKeyboardKey)103,(RogStrixKeyboardKey)104, },
new [] {(RogStrixKeyboardKey)105,(RogStrixKeyboardKey)106,(RogStrixKeyboardKey)107,(RogStrixKeyboardKey)108,(RogStrixKeyboardKey)109,(RogStrixKeyboardKey)110,(RogStrixKeyboardKey)111,(RogStrixKeyboardKey)112,(RogStrixKeyboardKey)113,(RogStrixKeyboardKey)114,(RogStrixKeyboardKey)115,(RogStrixKeyboardKey)116,(RogStrixKeyboardKey)117,(RogStrixKeyboardKey)118,(RogStrixKeyboardKey)119,(RogStrixKeyboardKey)120,(RogStrixKeyboardKey)121,(RogStrixKeyboardKey)122,(RogStrixKeyboardKey)123,(RogStrixKeyboardKey)124,(RogStrixKeyboardKey)125, },
new [] {(RogStrixKeyboardKey)126,(RogStrixKeyboardKey)127,(RogStrixKeyboardKey)128,(RogStrixKeyboardKey)129,(RogStrixKeyboardKey)130,(RogStrixKeyboardKey)131,(RogStrixKeyboardKey)132,(RogStrixKeyboardKey)133,(RogStrixKeyboardKey)134,(RogStrixKeyboardKey)135,(RogStrixKeyboardKey)136,(RogStrixKeyboardKey)137,(RogStrixKeyboardKey)138,(RogStrixKeyboardKey)139,(RogStrixKeyboardKey)140,(RogStrixKeyboardKey)141,(RogStrixKeyboardKey)142,(RogStrixKeyboardKey)143,(RogStrixKeyboardKey)144,(RogStrixKeyboardKey)145,(RogStrixKeyboardKey)146, },
new [] {(RogStrixKeyboardKey)147,(RogStrixKeyboardKey)148,(RogStrixKeyboardKey)149,(RogStrixKeyboardKey)150,(RogStrixKeyboardKey)151,(RogStrixKeyboardKey)152,(RogStrixKeyboardKey)153,(RogStrixKeyboardKey)154,(RogStrixKeyboardKey)155,(RogStrixKeyboardKey)156,(RogStrixKeyboardKey)157,(RogStrixKeyboardKey)158,(RogStrixKeyboardKey)159,(RogStrixKeyboardKey)160,(RogStrixKeyboardKey)161,(RogStrixKeyboardKey)162,(RogStrixKeyboardKey)163,(RogStrixKeyboardKey)164,(RogStrixKeyboardKey)165,(RogStrixKeyboardKey)166,(RogStrixKeyboardKey)167, },
new [] {(RogStrixKeyboardKey)168,(RogStrixKeyboardKey)169,(RogStrixKeyboardKey)170,(RogStrixKeyboardKey)171,(RogStrixKeyboardKey)172,(RogStrixKeyboardKey)173,(RogStrixKeyboardKey)174,(RogStrixKeyboardKey)175,(RogStrixKeyboardKey)176,(RogStrixKeyboardKey)177,(RogStrixKeyboardKey)178,(RogStrixKeyboardKey)179,(RogStrixKeyboardKey)180,(RogStrixKeyboardKey)181,(RogStrixKeyboardKey)182,(RogStrixKeyboardKey)183,(RogStrixKeyboardKey)184,(RogStrixKeyboardKey)185,(RogStrixKeyboardKey)186,(RogStrixKeyboardKey)(-1),(RogStrixKeyboardKey)(-1), },
};
}

public RogStrixKeyboardKey this[int col, int row]
{
get
{
return _keys[row][col];
}
}
}

private readonly IAuraSdk2 _sdk;
private readonly IAuraSyncDevice _notebookKeyboard;
private readonly Representator _representor;
private readonly RogStrixKeyboardKey[][] _representor = new RogStrixKeyboardKey[9][]
{
new [] {(RogStrixKeyboardKey)0,(RogStrixKeyboardKey)1,(RogStrixKeyboardKey)2,(RogStrixKeyboardKey)3,(RogStrixKeyboardKey)4,(RogStrixKeyboardKey)5,(RogStrixKeyboardKey)6,(RogStrixKeyboardKey)7,(RogStrixKeyboardKey)8,(RogStrixKeyboardKey)9,(RogStrixKeyboardKey)10,(RogStrixKeyboardKey)11,(RogStrixKeyboardKey)12,(RogStrixKeyboardKey)13,(RogStrixKeyboardKey)14,(RogStrixKeyboardKey)15,(RogStrixKeyboardKey)16,(RogStrixKeyboardKey)17,(RogStrixKeyboardKey)18,(RogStrixKeyboardKey)19,(RogStrixKeyboardKey)20,},
new [] {(RogStrixKeyboardKey)21,(RogStrixKeyboardKey)22,(RogStrixKeyboardKey)23,(RogStrixKeyboardKey)24,(RogStrixKeyboardKey)25,(RogStrixKeyboardKey)26,(RogStrixKeyboardKey)27,(RogStrixKeyboardKey)28,(RogStrixKeyboardKey)29,(RogStrixKeyboardKey)30,(RogStrixKeyboardKey)31,(RogStrixKeyboardKey)32,(RogStrixKeyboardKey)33,(RogStrixKeyboardKey)34,(RogStrixKeyboardKey)35,(RogStrixKeyboardKey)36,(RogStrixKeyboardKey)37,(RogStrixKeyboardKey)38,(RogStrixKeyboardKey)39,(RogStrixKeyboardKey)40,(RogStrixKeyboardKey)41,},
new [] {(RogStrixKeyboardKey)42,(RogStrixKeyboardKey)43,(RogStrixKeyboardKey)44,(RogStrixKeyboardKey)45,(RogStrixKeyboardKey)46,(RogStrixKeyboardKey)47,(RogStrixKeyboardKey)48,(RogStrixKeyboardKey)49,(RogStrixKeyboardKey)50,(RogStrixKeyboardKey)51,(RogStrixKeyboardKey)52,(RogStrixKeyboardKey)53,(RogStrixKeyboardKey)54,(RogStrixKeyboardKey)55,(RogStrixKeyboardKey)56,(RogStrixKeyboardKey)57,(RogStrixKeyboardKey)58,(RogStrixKeyboardKey)59,(RogStrixKeyboardKey)60,(RogStrixKeyboardKey)61,(RogStrixKeyboardKey)62,},
new [] {(RogStrixKeyboardKey)63,(RogStrixKeyboardKey)64,(RogStrixKeyboardKey)65,(RogStrixKeyboardKey)66,(RogStrixKeyboardKey)67,(RogStrixKeyboardKey)68,(RogStrixKeyboardKey)69,(RogStrixKeyboardKey)70,(RogStrixKeyboardKey)71,(RogStrixKeyboardKey)72,(RogStrixKeyboardKey)73,(RogStrixKeyboardKey)74,(RogStrixKeyboardKey)75,(RogStrixKeyboardKey)76,(RogStrixKeyboardKey)77,(RogStrixKeyboardKey)78,(RogStrixKeyboardKey)79,(RogStrixKeyboardKey)80,(RogStrixKeyboardKey)81,(RogStrixKeyboardKey)82,(RogStrixKeyboardKey)83,},
new [] {(RogStrixKeyboardKey)84,(RogStrixKeyboardKey)85,(RogStrixKeyboardKey)86,(RogStrixKeyboardKey)87,(RogStrixKeyboardKey)88,(RogStrixKeyboardKey)89,(RogStrixKeyboardKey)90,(RogStrixKeyboardKey)91,(RogStrixKeyboardKey)92,(RogStrixKeyboardKey)93,(RogStrixKeyboardKey)94,(RogStrixKeyboardKey)95,(RogStrixKeyboardKey)96,(RogStrixKeyboardKey)97,(RogStrixKeyboardKey)98,(RogStrixKeyboardKey)99,(RogStrixKeyboardKey)100,(RogStrixKeyboardKey)101,(RogStrixKeyboardKey)102,(RogStrixKeyboardKey)103,(RogStrixKeyboardKey)104,},
new [] {(RogStrixKeyboardKey)105,(RogStrixKeyboardKey)106,(RogStrixKeyboardKey)107,(RogStrixKeyboardKey)108,(RogStrixKeyboardKey)109,(RogStrixKeyboardKey)110,(RogStrixKeyboardKey)111,(RogStrixKeyboardKey)112,(RogStrixKeyboardKey)113,(RogStrixKeyboardKey)114,(RogStrixKeyboardKey)115,(RogStrixKeyboardKey)116,(RogStrixKeyboardKey)117,(RogStrixKeyboardKey)118,(RogStrixKeyboardKey)119,(RogStrixKeyboardKey)120,(RogStrixKeyboardKey)121,(RogStrixKeyboardKey)122,(RogStrixKeyboardKey)123,(RogStrixKeyboardKey)124,(RogStrixKeyboardKey)125,},
new [] {(RogStrixKeyboardKey)126,(RogStrixKeyboardKey)127,(RogStrixKeyboardKey)128,(RogStrixKeyboardKey)129,(RogStrixKeyboardKey)130,(RogStrixKeyboardKey)131,(RogStrixKeyboardKey)132,(RogStrixKeyboardKey)133,(RogStrixKeyboardKey)134,(RogStrixKeyboardKey)135,(RogStrixKeyboardKey)136,(RogStrixKeyboardKey)137,(RogStrixKeyboardKey)138,(RogStrixKeyboardKey)139,(RogStrixKeyboardKey)140,(RogStrixKeyboardKey)141,(RogStrixKeyboardKey)142,(RogStrixKeyboardKey)143,(RogStrixKeyboardKey)144,(RogStrixKeyboardKey)145,(RogStrixKeyboardKey)146,},
new [] {(RogStrixKeyboardKey)147,(RogStrixKeyboardKey)148,(RogStrixKeyboardKey)149,(RogStrixKeyboardKey)150,(RogStrixKeyboardKey)151,(RogStrixKeyboardKey)152,(RogStrixKeyboardKey)153,(RogStrixKeyboardKey)154,(RogStrixKeyboardKey)155,(RogStrixKeyboardKey)156,(RogStrixKeyboardKey)157,(RogStrixKeyboardKey)158,(RogStrixKeyboardKey)159,(RogStrixKeyboardKey)160,(RogStrixKeyboardKey)161,(RogStrixKeyboardKey)162,(RogStrixKeyboardKey)163,(RogStrixKeyboardKey)164,(RogStrixKeyboardKey)165,(RogStrixKeyboardKey)166,(RogStrixKeyboardKey)167,},
new [] {(RogStrixKeyboardKey)168,(RogStrixKeyboardKey)169,(RogStrixKeyboardKey)170,(RogStrixKeyboardKey)171,(RogStrixKeyboardKey)172,(RogStrixKeyboardKey)173,(RogStrixKeyboardKey)174,(RogStrixKeyboardKey)175,(RogStrixKeyboardKey)176,(RogStrixKeyboardKey)177,(RogStrixKeyboardKey)178,(RogStrixKeyboardKey)179,(RogStrixKeyboardKey)180,(RogStrixKeyboardKey)181,(RogStrixKeyboardKey)182,(RogStrixKeyboardKey)183,(RogStrixKeyboardKey)184,(RogStrixKeyboardKey)185,(RogStrixKeyboardKey)186,(RogStrixKeyboardKey)(-1),(RogStrixKeyboardKey)(-1),},
};

/// <inheritdoc/>
public string Name => "Asus Rog Strix Laptop";

/// <inheritdoc/>
public bool Initialized { get; }

/// <inheritdoc/>
public int RowCount => 9;

/// <inheritdoc/>
public int ColumnCount => 21;

/// <summary>
Expand All @@ -67,7 +47,6 @@ public AsusRogStrix_G15_2021_Adapter()
var devices = sdk.Enumerate(528384);
this._sdk = sdk;
this._notebookKeyboard = devices.Count > 0 ? devices[0] : throw new Exception("No Asus device attached.");
this._representor = new Representator();
this.Initialized = true;
}
catch (Exception)
Expand All @@ -86,6 +65,8 @@ public Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellati

for (var row = 0; row < virtualGrid.RowCount; row++)
{
var physicalRow = _representor[row];

for (var col = 0; col < virtualGrid.ColumnCount; col++)
{
var cellColor = virtualGrid[col, row];
Expand All @@ -95,16 +76,16 @@ public Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellati
continue;
}

var asusKey = _representor[col, row];
var key = physicalRow[col];

if (IsInvalidKey(asusKey))
if (IsInvalidKey(key))
{
continue;
}

var color = ToUint(cellColor.Value);

_notebookKeyboard.Lights[(int)asusKey].Color = color;
_notebookKeyboard.Lights[(int)key].Color = color;
}
}

Expand All @@ -119,11 +100,7 @@ public void Dispose()
this._sdk?.ReleaseControl(0);
}

private static uint ToUint(Color color)
{
var value = (color.B << 16) | (color.G << 8) | (color.R);
return (uint)value;
}
private static uint ToUint(Color color) => (uint)(color.B << 16 | color.G << 8 | color.R);

private static bool IsInvalidKey(RogStrixKeyboardKey key)
{
Expand Down Expand Up @@ -207,4 +184,4 @@ private static bool IsInvalidKey(RogStrixKeyboardKey key)
}
}
}
}
}
3 changes: 1 addition & 2 deletions VirtualGrid.Asus/Enums/RogStrixKeyboardKey.cs
Original file line number Diff line number Diff line change
Expand Up @@ -211,5 +211,4 @@ internal enum RogStrixKeyboardKey
Invalid8_20 = 185,
Invalid8_21 = 186,
}

}
}
4 changes: 2 additions & 2 deletions VirtualGrid.Asus/VirtualGrid.Asus.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
<TargetFramework>netstandard2.1</TargetFramework>
<LangVersion>9.0</LangVersion>
<Nullable>enable</Nullable>
<Version>2.1</Version>
<Version>2.1.1</Version>
<PackageReleaseNotes>** You need to manually copy Interop.AuraServiceLib.dll in package directory to output directory to make this library works. **

This release contains code update to support VirtualGrid v.2.1.</PackageReleaseNotes>
Performance improvement for speed and memory usage.</PackageReleaseNotes>
<Copyright>Copyright © Chanvut Booneid 2021</Copyright>
<PackageProjectUrl>https://github.com/Desz01ate/VirtualGrid</PackageProjectUrl>
<RepositoryUrl>https://github.com/Desz01ate/VirtualGrid</RepositoryUrl>
Expand Down
12 changes: 0 additions & 12 deletions VirtualGrid.Asus/VirtualGrid.Asus.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions VirtualGrid.Razer/ChromaConnectorInterfaceSingleton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ internal static class ChromaConnectorInterfaceSingleton
{
private static IChroma? _chromaConnector;
private static readonly object _lock = new();

public static IChroma ChromaConnector
{
get
Expand Down
10 changes: 6 additions & 4 deletions VirtualGrid.Razer/RazerChromaLinkAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,22 @@ public class RazerChromaLinkAdapter : RazerPeripheralBaseAdapter

public override int ColumnCount => 5;

public override async Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
public override Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
{
if (!this.Initialized)
return;
{
return Task.CompletedTask;
}

var chromaLinkGrid = CustomChromaLinkEffect.Create();

var keyIdx = 0;
foreach (var key in virtualGrid)
{
chromaLinkGrid[keyIdx++] = ToColoreColor(key.Color.Value);
chromaLinkGrid[keyIdx++] = ToColoreColor(key.Color);
}

await this.ChromaInterface.ChromaLink.SetCustomAsync(chromaLinkGrid);
return this.ChromaInterface!.ChromaLink.SetCustomAsync(chromaLinkGrid);
}
}
}
22 changes: 8 additions & 14 deletions VirtualGrid.Razer/RazerHeadsetAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,33 @@ namespace VirtualGrid.Razer
/// </summary>
public class RazerHeadsetAdapter : RazerPeripheralBaseAdapter
{
/// <inheritdoc/>
public override string Name => "RΛZΞR Headset";

/// <inheritdoc/>
public override int RowCount => 1;

/// <inheritdoc/>
public override int ColumnCount => 3;

/// <inheritdoc/>
public override async Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
public override Task ApplyAsync(IVirtualLedGrid virtualGrid, CancellationToken cancellationToken = default)
{
if (!this.Initialized)
return;
{
return Task.CompletedTask;
}

var headset = CustomHeadsetEffect.Create();

var actualIdx = 0;
var keyIdx = 0;

foreach (var cell in virtualGrid)
{
if (keyIdx++ % 2 != 0) //create a gap between L and R
continue;
if (cell.Color == null)
if (keyIdx++ % 2 != 0)
continue;

headset[actualIdx++] = ToColoreColor(cell.Color.Value);
headset[actualIdx++] = ToColoreColor(cell.Color);
}

#pragma warning disable CS8602 // Dereference of a possibly null reference.
await this.ChromaInterface.Headset.SetCustomAsync(headset);
#pragma warning restore CS8602 // Dereference of a possibly null reference.

return this.ChromaInterface!.Headset.SetCustomAsync(headset);
}
}
}

0 comments on commit 4007445

Please sign in to comment.