Rewrite Hierachy that shockers now contain the api they use.

This commit is contained in:
2024-02-01 23:03:28 +01:00
parent 9596811ae7
commit 65059f66ed
18 changed files with 171 additions and 168 deletions

View File

@ -1,65 +0,0 @@
using Microsoft.Extensions.Logging;
namespace TestApp;
public class Logger : ILogger
{
private LogLevel _enabledLoglevel;
private readonly ConsoleColor _defaultForegroundColor = Console.ForegroundColor;
private readonly ConsoleColor _defaultBackgroundColor = Console.BackgroundColor;
public Logger(LogLevel logLevel = LogLevel.Trace)
{
_enabledLoglevel = logLevel;
}
public void UpdateLogLevel(LogLevel logLevel)
{
this._enabledLoglevel = logLevel;
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
{
if (!IsEnabled(logLevel))
return;
Console.ForegroundColor = ForegroundColorForLogLevel(logLevel);
Console.BackgroundColor = BackgroundColorForLogLevel(logLevel);
Console.Write(logLevel.ToString()[..3].ToUpper());
Console.ResetColor();
// ReSharper disable once LocalizableElement
Console.Write($" [{DateTime.UtcNow:HH:mm:ss.fff}] ");
Console.WriteLine(formatter.Invoke(state, exception));
}
public bool IsEnabled(LogLevel logLevel)
{
return logLevel >= _enabledLoglevel;
}
public IDisposable? BeginScope<TState>(TState state) where TState : notnull
{
return null;
}
private ConsoleColor ForegroundColorForLogLevel(LogLevel logLevel)
{
return logLevel switch
{
LogLevel.Error or LogLevel.Critical => ConsoleColor.Black,
LogLevel.Debug => ConsoleColor.Black,
LogLevel.Information => ConsoleColor.White,
_ => _defaultForegroundColor
};
}
private ConsoleColor BackgroundColorForLogLevel(LogLevel logLevel)
{
return logLevel switch
{
LogLevel.Error or LogLevel.Critical => ConsoleColor.Red,
LogLevel.Debug => ConsoleColor.Yellow,
LogLevel.Information => ConsoleColor.Black,
_ => _defaultBackgroundColor
};
}
}

View File

@ -1,35 +1,33 @@
using CShocker.Devices;
using CShocker.Devices.Abstract;
using CShocker.Devices.Abstract;
using CShocker.Devices.Additional;
using CShocker.Devices.APIs;
using CShocker.Ranges;
using CShocker.Shockers;
using CShocker.Shockers.Abstract;
using CShocker.Shockers.Additional;
using GlaxLogger;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using TestApp;
Logger logger = new ();
List<OpenShockShocker> shockers = new();
Logger logger = new (LogLevel.Trace);
Console.WriteLine("OpenShock API Key:");
string? apiKey = Console.ReadLine();
while(apiKey is null || apiKey.Length < 1)
apiKey = Console.ReadLine();
OpenShockHttp openShockHttp = new (new IntensityRange(30, 50), new DurationRange(1000, 1000), apiKey, logger: logger);
shockers = openShockHttp.GetShockers();
openShockHttp.Control(ControlAction.Vibrate, 20, 1000, shockers.First());
File.WriteAllText("devices.json", JsonConvert.SerializeObject(openShockHttp));
OpenShockHttp deserialized = JsonConvert.DeserializeObject<OpenShockHttp>(File.ReadAllText("devices.json"))!;
Thread.Sleep(1100); //Wait for previous to end
deserialized.Control(ControlAction.Vibrate, 20, 1000, shockers.First());
openShockHttp.Dispose();
deserialized.Dispose();
/*
OpenShockHttp openShockHttp = new (new IntensityRange(30, 50), new DurationRange(1000, 1000), apiKey, logger: logger);
OpenShockShocker shocker = openShockHttp.GetShockers(apiKey).First();
shocker.Control(ControlAction.Vibrate, 20, 1000);
File.WriteAllText("shockers.json", JsonConvert.SerializeObject(shocker));
OpenShockShocker deserialized = JsonConvert.DeserializeObject<OpenShockShocker>(File.ReadAllText("shockers.json"), new ApiJsonConverter())!;
Thread.Sleep(1100); //Wait for previous to end
deserialized.Control(ControlAction.Vibrate, 20, 1000);
shocker.Dispose();
deserialized.Dispose();
*/
#pragma warning disable CA1416
List<SerialPortInfo> serialPorts = SerialHelper.GetSerialPorts();
@ -49,15 +47,11 @@ while (!int.TryParse(selectedPortStr, out selectedPort) || selectedPort < 0 || s
}
OpenShockSerial openShockSerial = new(new IntensityRange(30, 50), new DurationRange(1000, 1000),serialPorts[selectedPort], apiKey, logger: logger);
shockers = openShockSerial.GetShockers();
openShockSerial.Control(ControlAction.Vibrate, 20, 1000, shockers.First());
File.WriteAllText("devices.json", JsonConvert.SerializeObject(openShockSerial));
OpenShockHttp deserialized = JsonConvert.DeserializeObject<OpenShockHttp>(File.ReadAllText("devices.json"))!;
openShockSerial.Dispose();
OpenShockShocker shocker = openShockSerial.GetShockers(apiKey).First();
shocker.Control(ControlAction.Vibrate, 20, 1000);
File.WriteAllText("shockers.json", JsonConvert.SerializeObject(shocker));
OpenShockShocker deserialized = JsonConvert.DeserializeObject<OpenShockShocker>(File.ReadAllText("shockers.json"), new ApiJsonConverter())!;
shocker.Dispose();
deserialized.Dispose();
*/
foreach(OpenShockShocker s in shockers)
Console.Write(s);
File.WriteAllText("shockers.json", JsonConvert.SerializeObject(shockers));
List<IShocker> deserializedShockers = JsonConvert.DeserializeObject<List<IShocker>>(File.ReadAllText("shockers.json"), new ShockerJsonConverter())!;
logger.Dispose();

View File

@ -11,4 +11,10 @@
<ProjectReference Include="..\CShocker\CShocker.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="GlaxLogger">
<HintPath>..\..\GlaxLogger\GlaxLogger\bin\Debug\net7.0\GlaxLogger.dll</HintPath>
</Reference>
</ItemGroup>
</Project>