namespace LTEMvcApp.Models
{
///
/// 日志信道配置
///
public static class LogChannelConfig
{
///
/// 信道定义列表
///
public static readonly List 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" }
};
///
/// 信道定义字典(按名称索引)
///
public static readonly Dictionary ChannelsByName = ChannelDefinitions
.ToDictionary(c => c.Name, c => c);
///
/// 信道定义字典(按ID索引)
///
public static readonly Dictionary ChannelsById = ChannelDefinitions
.Select((c, i) => new { Channel = c, Index = i })
.ToDictionary(x => x.Index, x => x.Channel);
///
/// 获取信道定义
///
/// 信道名称
/// 信道定义
public static ChannelDefinition? GetChannelByName(string name)
{
return ChannelsByName.TryGetValue(name, out var channel) ? channel : null;
}
///
/// 获取信道定义
///
/// 信道ID
/// 信道定义
public static ChannelDefinition? GetChannelById(int id)
{
return ChannelsById.TryGetValue(id, out var channel) ? channel : null;
}
///
/// 获取所有信道名称
///
/// 信道名称列表
public static List GetAllChannelNames()
{
return ChannelDefinitions.Select(c => c.Name).ToList();
}
///
/// 验证信道名称是否有效
///
/// 信道名称
/// 是否有效
public static bool IsValidChannel(string name)
{
return ChannelsByName.ContainsKey(name);
}
///
/// 获取信道ID
///
/// 信道名称
/// 信道ID,如果不存在返回-1
public static int GetChannelId(string name)
{
for (int i = 0; i < ChannelDefinitions.Count; i++)
{
if (ChannelDefinitions[i].Name == name)
return i;
}
return -1;
}
}
///
/// 信道定义
///
public class ChannelDefinition
{
///
/// 信道名称
///
public string Name { get; set; } = string.Empty;
///
/// 颜色代码
///
public string Color { get; set; } = "#000000";
///
/// 信道ID
///
public int Id { get; set; }
///
/// 信道索引
///
public int Index { get; set; }
}
}