You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

121 lines
3.8 KiB

namespace LTEMvcApp.Models
{
/// <summary>
/// 日志信道配置
/// </summary>
public static class LogChannelConfig
{
/// <summary>
/// 信道定义列表
/// </summary>
public static readonly List<ChannelDefinition> ChannelDefinitions = new()
{
new() { Name = "PRACH", Color = "#ffff00" },
new() { Name = "NPRACH", Color = "#ffff00" },
new() { Name = "SRS", Color = "#ffff80" },
new() { Name = "PUCCH", Color = "#00ff00" },
new() { Name = "PUSCH", Color = "#ff0000" },
new() { Name = "NPUSCH", Color = "#ff0000" },
new() { Name = "PDSCH", Color = "#0000ff" },
new() { Name = "NPDSCH", Color = "#0000ff" },
new() { Name = "PDCCH", Color = "#00ffff" },
new() { Name = "EPDCCH", Color = "#00ffff" },
new() { Name = "NPDCCH", Color = "#00ffff" },
new() { Name = "PMCH", Color = "#ff80ff" },
new() { Name = "INV", Color = "#D0D0D0" }
};
/// <summary>
/// 信道定义字典(按名称索引)
/// </summary>
public static readonly Dictionary<string, ChannelDefinition> ChannelsByName = ChannelDefinitions
.ToDictionary(c => c.Name, c => c);
/// <summary>
/// 信道定义字典(按ID索引)
/// </summary>
public static readonly Dictionary<int, ChannelDefinition> ChannelsById = ChannelDefinitions
.Select((c, i) => new { Channel = c, Index = i })
.ToDictionary(x => x.Index, x => x.Channel);
/// <summary>
/// 获取信道定义
/// </summary>
/// <param name="name">信道名称</param>
/// <returns>信道定义</returns>
public static ChannelDefinition? GetChannelByName(string name)
{
return ChannelsByName.TryGetValue(name, out var channel) ? channel : null;
}
/// <summary>
/// 获取信道定义
/// </summary>
/// <param name="id">信道ID</param>
/// <returns>信道定义</returns>
public static ChannelDefinition? GetChannelById(int id)
{
return ChannelsById.TryGetValue(id, out var channel) ? channel : null;
}
/// <summary>
/// 获取所有信道名称
/// </summary>
/// <returns>信道名称列表</returns>
public static List<string> GetAllChannelNames()
{
return ChannelDefinitions.Select(c => c.Name).ToList();
}
/// <summary>
/// 验证信道名称是否有效
/// </summary>
/// <param name="name">信道名称</param>
/// <returns>是否有效</returns>
public static bool IsValidChannel(string name)
{
return ChannelsByName.ContainsKey(name);
}
/// <summary>
/// 获取信道ID
/// </summary>
/// <param name="name">信道名称</param>
/// <returns>信道ID,如果不存在返回-1</returns>
public static int GetChannelId(string name)
{
for (int i = 0; i < ChannelDefinitions.Count; i++)
{
if (ChannelDefinitions[i].Name == name)
return i;
}
return -1;
}
}
/// <summary>
/// 信道定义
/// </summary>
public class ChannelDefinition
{
/// <summary>
/// 信道名称
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 颜色代码
/// </summary>
public string Color { get; set; } = "#000000";
/// <summary>
/// 信道ID
/// </summary>
public int Id { get; set; }
/// <summary>
/// 信道索引
/// </summary>
public int Index { get; set; }
}
}