Rewrite Hierachy that shockers now contain the api they use.
This commit is contained in:
@ -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
|
||||
};
|
||||
}
|
||||
}
|
@ -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();
|
@ -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>
|
||||
|
Reference in New Issue
Block a user