From 6eabfa83546a4dc4fba0e8fd1c17989b1bf44270 Mon Sep 17 00:00:00 2001 From: Thomas Mathieson Date: Thu, 4 Jul 2024 23:11:54 +0200 Subject: [PATCH] Sennheiser setter/metering improvements: - Fixed name setter - Fixed trim setter - RSSI and AF meters now output in ~ 0-1 range - Setting an enum by string value is now supported --- .../SennheiserSSC/SennheiserSSCWirelessMic.cs | 10 +++++----- WirelessMicSuiteServer/WebAPI.cs | 6 +++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/WirelessMicSuiteServer/SennheiserSSC/SennheiserSSCWirelessMic.cs b/WirelessMicSuiteServer/SennheiserSSC/SennheiserSSCWirelessMic.cs index 485e4e4..f7ae56c 100644 --- a/WirelessMicSuiteServer/SennheiserSSC/SennheiserSSCWirelessMic.cs +++ b/WirelessMicSuiteServer/SennheiserSSC/SennheiserSSCWirelessMic.cs @@ -47,10 +47,10 @@ public string? Name { if (value != null) { - var str = value.AsSpan(); + var str = value.ToUpper().AsSpan(); if (str.Length > 8) str = str[..8]; - receiver.Send($$$$$"""{"rx{{{{{receiverNo}}}}}":{"name":{{{{{str}}}}}}}"""); + receiver.Send($$$$$"""{"rx{{{{{receiverNo}}}}}":{"name":"{{{{{str}}}}}"}}"""); } } } @@ -75,7 +75,7 @@ public int? Sensitivity set { if (value != null) - receiver.Send($$$$$"""{"rx{{{{{receiverNo}}}}}":{"sync_settings":{"gain":{{{{{Math.Clamp((int)value, -12, 6)}}}}}}}}"""); + receiver.Send($$$$$"""{"rx{{{{{receiverNo}}}}}":{"sync_settings":{"trim":{{{{{Math.Clamp((int)value, -12, 6)}}}}}}}}"""); } } public int? OutputGain @@ -424,7 +424,7 @@ internal void ParseMeterMessage(Memory msg, JsonElement json) { case "rssi": //rssi: float (dBm) - meter.rssiA = meter.rssiB = prop.Value.GetSingle(); + meter.rssiA = meter.rssiB = (prop.Value.GetSingle()+120)/80f; break; case "rsqi": //rsqi: int(%)(RF signal quality indicator) @@ -446,7 +446,7 @@ internal void ParseMeterMessage(Memory msg, JsonElement json) break; case "af": //af: float (dBfs) - meter.audioLevel = prop.Value.GetSingle(); + meter.audioLevel = (prop.Value.GetSingle()+50)/50f; break; default: Log($"Unknown JSON property encountered '{prop.Name}' in '{msg}'!", LogSeverity.Warning); diff --git a/WirelessMicSuiteServer/WebAPI.cs b/WirelessMicSuiteServer/WebAPI.cs index 0ea3207..2eca9a5 100644 --- a/WirelessMicSuiteServer/WebAPI.cs +++ b/WirelessMicSuiteServer/WebAPI.cs @@ -443,10 +443,14 @@ private static bool IsSimple(Type type) return strConstructor.Invoke([valueStr]); } + object? value; var simpleType = targetType; if (targetType.IsEnum) + { + if (Enum.TryParse(targetType, valueStr, out value)) + return value; simpleType = targetType.GetEnumUnderlyingType(); - object? value; + } try {