diff --git a/HeliosPlus.Reporting/App.config b/HeliosPlus.LogReporter/App.config
similarity index 100%
rename from HeliosPlus.Reporting/App.config
rename to HeliosPlus.LogReporter/App.config
diff --git a/HeliosPlus.Reporting/FodyWeavers.xml b/HeliosPlus.LogReporter/FodyWeavers.xml
similarity index 100%
rename from HeliosPlus.Reporting/FodyWeavers.xml
rename to HeliosPlus.LogReporter/FodyWeavers.xml
diff --git a/HeliosPlus.Reporting/FodyWeavers.xsd b/HeliosPlus.LogReporter/FodyWeavers.xsd
similarity index 100%
rename from HeliosPlus.Reporting/FodyWeavers.xsd
rename to HeliosPlus.LogReporter/FodyWeavers.xsd
diff --git a/HeliosPlus.Reporting/HeliosPlus.LogReporter.csproj b/HeliosPlus.LogReporter/HeliosPlus.LogReporter.csproj
similarity index 97%
rename from HeliosPlus.Reporting/HeliosPlus.LogReporter.csproj
rename to HeliosPlus.LogReporter/HeliosPlus.LogReporter.csproj
index 2836785..3c884da 100644
--- a/HeliosPlus.Reporting/HeliosPlus.LogReporter.csproj
+++ b/HeliosPlus.LogReporter/HeliosPlus.LogReporter.csproj
@@ -8,7 +8,7 @@
AnyCPU
{76DF2BCF-911B-4820-B63E-8F3468DB5E79}
Exe
- HeliosPlus.Reporting
+ HeliosPlus.LogReporter
HeliosPlus.LogReporter
v4.8
512
@@ -42,6 +42,7 @@
prompt
4
true
+ false
AnyCPU
diff --git a/HeliosPlus.Reporting/HeliosPlus.ico b/HeliosPlus.LogReporter/HeliosPlus.ico
similarity index 100%
rename from HeliosPlus.Reporting/HeliosPlus.ico
rename to HeliosPlus.LogReporter/HeliosPlus.ico
diff --git a/HeliosPlus.Reporting/Program.cs b/HeliosPlus.LogReporter/Program.cs
similarity index 64%
rename from HeliosPlus.Reporting/Program.cs
rename to HeliosPlus.LogReporter/Program.cs
index 1cf9cf2..21753a0 100644
--- a/HeliosPlus.Reporting/Program.cs
+++ b/HeliosPlus.LogReporter/Program.cs
@@ -11,20 +11,20 @@ using HeliosPlus.Shared;
using NvAPIWrapper.GPU;
using NvAPIWrapper.Mosaic;
-namespace HeliosPlus.Reporting
+namespace HeliosPlus.LogReporter
{
internal class Program
{
private static StreamWriter _writer;
internal static string AppDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "HeliosPlus");
- private static void Dump(
+ private static void DumpObject(
IEnumerable items,
string title,
Tuple, string>[] actions = null,
int deepIn = 0)
{
- Console.WriteLine(title);
+ Console.Write($"- {title}...");
_writer.WriteLine(title + new string('=', Console.BufferWidth - title.Length));
var totalTime = TimeSpan.Zero;
var stopWatch = new Stopwatch();
@@ -43,21 +43,68 @@ namespace HeliosPlus.Reporting
stopWatch.Stop();
totalTime += stopWatch.Elapsed;
- Console.Write(@"-- Elapsed: {0}", totalTime);
+ Console.WriteLine(@"(Took {0} to complete)", totalTime);
_writer.WriteLine(@"-- Total Elapsed: {0}", totalTime);
- Console.WriteLine();
_writer.WriteLine();
+ _writer.WriteLine(new string('#', Console.BufferWidth));
+ _writer.WriteLine();
+ }
+
+ private static void IngestFile(string fileName, string title)
+ {
+
+ Console.Write($"- {title}...");
+ _writer.WriteLine(new string('=', Console.BufferWidth));
+ _writer.WriteLine(title + new string('=', Console.BufferWidth - title.Length));
+ _writer.WriteLine(new string('=', Console.BufferWidth));
+ var totalTime = TimeSpan.Zero;
+ var stopWatch = new Stopwatch();
+
+ if (File.Exists(fileName))
+ {
+ stopWatch.Start();
+
+ StreamReader reader = new StreamReader(fileName);
+ string fileContents = reader.ReadToEnd();
+ _writer.WriteLine(fileContents);
+
+ stopWatch.Stop();
+ totalTime += stopWatch.Elapsed;
+ Console.WriteLine(@"(Took {0} to complete)", totalTime);
+ _writer.WriteLine(@"-- Total Elapsed: {0}", totalTime);
+ _writer.WriteLine();
+ _writer.WriteLine(new string('#', Console.BufferWidth));
+ _writer.WriteLine();
+
+ }
+ else
+ {
+
+ }
+
+
}
private static void Main(string[] args)
{
+ Console.WriteLine("HeliosPlus LogReporter");
+ Console.WriteLine("======================");
+ Console.WriteLine();
+ Console.WriteLine("This program will interrogate your HeliosPlus configuration settings, the Windows Display ");
+ Console.WriteLine("Subsystem and any NVIDIA Display Drivers to record what they can detect and report. This");
+ Console.WriteLine("recorded information is then stored in a log file. If you report a problem then you may be");
+ Console.WriteLine("asked to send us the log file generated by this program in order for us to help you.");
+ Console.WriteLine();
+ Console.WriteLine("Starting the interrogation...");
+ Console.WriteLine();
+ string date = DateTime.Now.ToString("yyyyMMdd.HHmmss");
_writer = new StreamWriter(new FileStream(
- string.Format("HeliosPlus.Reporting.{0}.log", Process.GetCurrentProcess().Id),
+ string.Format("HeliosPlus.Reporting.{0}.log", date),
FileMode.CreateNew));
try
{
- Dump(DisplayAdapter.GetDisplayAdapters(), "WindowsDisplayAPI.DisplayAdapter.GetDisplayAdapters()");
+ IngestFile(Path.Combine(AppDataPath, "Settings_1.0.json"), "Storing HeliosPlus Settings JSON File");
}
catch (Exception e)
{
@@ -66,7 +113,35 @@ namespace HeliosPlus.Reporting
try
{
- Dump(Display.GetDisplays(), "WindowsDisplayAPI.Display.GetDisplays()", new[]
+ IngestFile(Path.Combine(AppDataPath, "Profiles", "DisplayProfiles_1.0.json"), "Storing HeliosPlus Display Profiles JSON File");
+ }
+ catch (Exception e)
+ {
+ WriteException(e);
+ }
+
+ try
+ {
+ IngestFile(Path.Combine(AppDataPath, "Shortcuts", "Shortcuts_1.0.json"), "Storing HeliosPlus Shortcuts JSON File");
+ }
+ catch (Exception e)
+ {
+ WriteException(e);
+ }
+
+
+ try
+ {
+ DumpObject(DisplayAdapter.GetDisplayAdapters(), "Storing a list of Display Adapters currently in this computer");
+ }
+ catch (Exception e)
+ {
+ WriteException(e);
+ }
+
+ try
+ {
+ DumpObject(Display.GetDisplays(), "Storing a list of possible settings for Displays currently connected to this computer", new[]
{
new Tuple, string>(display => display.GetPossibleSettings(),
"GetPossibleSettings()")
@@ -79,8 +154,8 @@ namespace HeliosPlus.Reporting
try
{
- Dump(UnAttachedDisplay.GetUnAttachedDisplays(),
- "WindowsDisplayAPI.UnAttachedDisplay.GetUnAttachedDisplays()");
+ DumpObject(UnAttachedDisplay.GetUnAttachedDisplays(),
+ "Storing a list of Displays not currently in use, but currently connected to this computer");
}
catch (Exception e)
{
@@ -89,8 +164,8 @@ namespace HeliosPlus.Reporting
try
{
- Dump(PathDisplayAdapter.GetAdapters(),
- "WindowsDisplayAPI.DisplayConfig.PathDisplayAdapter.GetAdapters()",
+ DumpObject(PathDisplayAdapter.GetAdapters(),
+ "Storing a list of Displays Targets for all Display Adapters currently in this computer",
new[]
{
new Tuple, string>(adapter => adapter.ToDisplayAdapter(),
@@ -104,8 +179,8 @@ namespace HeliosPlus.Reporting
try
{
- Dump(PathDisplaySource.GetDisplaySources(),
- "WindowsDisplayAPI.DisplayConfig.PathDisplaySource.GetDisplaySources()", new[]
+ DumpObject(PathDisplaySource.GetDisplaySources(),
+ "Storing a list of Display Sources for Displays currently connected to this computer", new[]
{
new Tuple, string>(source => source.ToDisplayDevices(),
"ToDisplayDevices()")
@@ -118,8 +193,8 @@ namespace HeliosPlus.Reporting
try
{
- Dump(PathDisplayTarget.GetDisplayTargets(),
- "WindowsDisplayAPI.DisplayConfig.PathDisplayTarget.GetDisplayTargets()", new[]
+ DumpObject(PathDisplayTarget.GetDisplayTargets(),
+ "Storing a list of Displays Targets for Displays currently connected to this computer", new[]
{
new Tuple, string>(target => target.ToDisplayDevice(),
"ToDisplayDevice()")
@@ -134,7 +209,7 @@ namespace HeliosPlus.Reporting
{
if (PathInfo.IsSupported)
{
- Dump(PathInfo.GetActivePaths(), "WindowsDisplayAPI.DisplayConfig.PathInfo.GetActivePaths()", null,
+ DumpObject(PathInfo.GetActivePaths(), "Storing a list of Active Displays currently connected to this computer", null,
2);
}
}
@@ -145,7 +220,7 @@ namespace HeliosPlus.Reporting
try
{
- Dump(LogicalGPU.GetLogicalGPUs(), "NvAPIWrapper.GPU.LogicalGPU.GetLogicalGPUs()", null, 1);
+ DumpObject(LogicalGPU.GetLogicalGPUs(), "Storing a list of logical NVIDIA GPUs formed by NVIDIA GPUs currently in this computer (e.g. SLI)", null, 1);
}
catch (Exception e)
{
@@ -154,7 +229,7 @@ namespace HeliosPlus.Reporting
try
{
- Dump(PhysicalGPU.GetPhysicalGPUs(), "NvAPIWrapper.GPU.PhysicalGPU.GetPhysicalGPUs()");
+ DumpObject(PhysicalGPU.GetPhysicalGPUs(), "Storing a list of physical NVIDIA GPUs currently in this computer");
}
catch (Exception e)
{
@@ -163,7 +238,7 @@ namespace HeliosPlus.Reporting
try
{
- Dump(NvAPIWrapper.Display.Display.GetDisplays(), "NvAPIWrapper.Display.Display.GetDisplays()", new[]
+ DumpObject(NvAPIWrapper.Display.Display.GetDisplays(), "Storing a list of Displays currently connected to this computer through a NVIDIA GPU", new[]
{
new Tuple, string>(
display => display.GetSupportedViews(),
@@ -177,8 +252,8 @@ namespace HeliosPlus.Reporting
try
{
- Dump(NvAPIWrapper.Display.UnAttachedDisplay.GetUnAttachedDisplays(),
- "NvAPIWrapper.Display.UnAttachedDisplay.GetUnAttachedDisplays()");
+ DumpObject(NvAPIWrapper.Display.UnAttachedDisplay.GetUnAttachedDisplays(),
+ "Storing a list of Displays currently connected to this computer through a NVIDIA GPU but not active");
}
catch (Exception e)
{
@@ -187,8 +262,8 @@ namespace HeliosPlus.Reporting
try
{
- Dump(NvAPIWrapper.Display.PathInfo.GetDisplaysConfig(),
- "NvAPIWrapper.Display.PathInfo.GetDisplaysConfig()",
+ DumpObject(NvAPIWrapper.Display.PathInfo.GetDisplaysConfig(),
+ "Storing a list of configuration of Displays currently connected to this computer through a NVIDIA GPU",
null, 3);
}
catch (Exception e)
@@ -198,17 +273,7 @@ namespace HeliosPlus.Reporting
try
{
- Dump(GridTopology.GetGridTopologies(), "NvAPIWrapper.Mosaic.GridTopology.GetGridTopologies()", null, 3);
- }
- catch (Exception e)
- {
- WriteException(e);
- }
-
-
- try
- {
- Dump(ProfileRepository.AllProfiles, "HeliosPlus.Shared.ProfileRepository.AllProfiles", null, 99);
+ DumpObject(GridTopology.GetGridTopologies(), "Storing a list of configured NZIVIDA Surround/Mosaic settings involving multiple Displays via a NVIDIA GPU", null, 3);
}
catch (Exception e)
{
@@ -219,12 +284,15 @@ namespace HeliosPlus.Reporting
_writer.Close();
_writer.Dispose();
+ Console.WriteLine(new string('=', Console.BufferWidth));
+ Console.WriteLine();
Console.WriteLine(@"Done, press enter to exit.");
Console.ReadLine();
}
private static void WriteException(Exception ex)
{
+ Console.WriteLine("{0} - Error: {1}", ex.GetType().Name, ex.Message);
_writer.WriteLine("{0} - Error: {1}", ex.GetType().Name, ex.Message);
}
diff --git a/HeliosPlus.Reporting/Properties/AssemblyInfo.cs b/HeliosPlus.LogReporter/Properties/AssemblyInfo.cs
similarity index 100%
rename from HeliosPlus.Reporting/Properties/AssemblyInfo.cs
rename to HeliosPlus.LogReporter/Properties/AssemblyInfo.cs