Browse Source

新加一个NrCellConfig 实体解析

feature/protocol-log-Perfect
root 4 months ago
parent
commit
c6db427507
  1. 14
      CoreAgent.ProtocolClient/Models/CellConfig.cs
  2. 134
      CoreAgent.ProtocolClient/Models/NrCellConfig.cs
  3. 129
      modify.md

14
CoreAgent.ProtocolClient/Models/CellConfig.cs

@ -146,7 +146,11 @@ namespace CoreAgent.ProtocolClient.Models
/// <summary>跟踪区域码(TAC)</summary>
[JsonProperty("tac")]
public int Tac { get; set; }
/// <summary>邻区信息</summary>
[JsonProperty("nr_scell_list")]
public List<NrScellItem> NrScellList { get; set; } = new();
/// <summary>公共陆地移动网络(PLMN)列表</summary>
[JsonProperty("plmn_list")]
public List<PlmnItem> PlmnList { get; set; } = new();
@ -219,4 +223,12 @@ namespace CoreAgent.ProtocolClient.Models
[JsonProperty("reserved")]
public bool Reserved { get; set; }
}
/// <summary>
/// 邻区信息
/// </summary>
public class NrScellItem
{
[JsonProperty("cell_id")]
public int CellId { get;set; }
}
}

134
CoreAgent.ProtocolClient/Models/NrCellConfig.cs

@ -0,0 +1,134 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace CoreAgent.ProtocolClient.Models
{
/// <summary>
/// 5G NR小区配置实体,对应5G无线参数配置
/// 用于存储5G NR小区的各种物理层和协议层配置参数
/// 支持JSON序列化,属性名与外部API保持一致
/// </summary>
public class NrCellConfig
{
/// <summary>下行天线数量</summary>
[JsonProperty("n_antenna_dl")]
public int NAntennaDl { get; set; }
/// <summary>上行天线数量</summary>
[JsonProperty("n_antenna_ul")]
public int NAntennaUl { get; set; }
/// <summary>下行传输层数</summary>
[JsonProperty("n_layer_dl")]
public int NLayerDl { get; set; }
/// <summary>上行传输层数</summary>
[JsonProperty("n_layer_ul")]
public int NLayerUl { get; set; }
/// <summary>天线增益(dB)</summary>
[JsonProperty("gain")]
public int Gain { get; set; }
/// <summary>上行链路是否禁用</summary>
[JsonProperty("ul_disabled")]
public bool UlDisabled { get; set; }
/// <summary>射频端口号</summary>
[JsonProperty("rf_port")]
public int RfPort { get; set; }
/// <summary>下行QAM调制阶数</summary>
[JsonProperty("dl_qam")]
public int DlQam { get; set; }
/// <summary>上行QAM调制阶数</summary>
[JsonProperty("ul_qam")]
public int UlQam { get; set; }
/// <summary>5G NR物理小区标识</summary>
[JsonProperty("n_id_nrcell")]
public int NIdNrCell { get; set; }
/// <summary>5G NR频段号</summary>
[JsonProperty("band")]
public int Band { get; set; }
/// <summary>下行5G NR绝对射频信道号</summary>
[JsonProperty("dl_nr_arfcn")]
public int DlNrArfcn { get; set; }
/// <summary>上行5G NR绝对射频信道号</summary>
[JsonProperty("ul_nr_arfcn")]
public int UlNrArfcn { get; set; }
/// <summary>下行载波频率(Hz)</summary>
[JsonProperty("dl_freq")]
public long DlFreq { get; set; }
/// <summary>上行载波频率(Hz)</summary>
[JsonProperty("ul_freq")]
public long UlFreq { get; set; }
/// <summary>下行资源块数量</summary>
[JsonProperty("n_rb_dl")]
public int NRbDl { get; set; }
/// <summary>上行资源块数量</summary>
[JsonProperty("n_rb_ul")]
public int NRbUl { get; set; }
/// <summary>SSB 5G NR绝对射频信道号</summary>
[JsonProperty("ssb_nr_arfcn")]
public int SsbNrArfcn { get; set; }
/// <summary>下行MU-MIMO配置</summary>
[JsonProperty("dl_mu")]
public int DlMu { get; set; }
/// <summary>上行MU-MIMO配置</summary>
[JsonProperty("ul_mu")]
public int UlMu { get; set; }
/// <summary>SSB MU-MIMO配置</summary>
[JsonProperty("ssb_mu")]
public int SsbMu { get; set; }
/// <summary>双工模式(FDD/TDD)</summary>
[JsonProperty("mode")]
public string Mode { get; set; } = string.Empty;
/// <summary>PRACH序列索引</summary>
[JsonProperty("prach_sequence_index")]
public int PrachSequenceIndex { get; set; }
/// <summary>保证比特率(GBR)配置</summary>
[JsonProperty("gbr")]
public GbrConfig Gbr { get; set; } = new();
/// <summary>公共陆地移动网络(PLMN)列表</summary>
[JsonProperty("plmn_list")]
public List<NrPlmnItem> PlmnList { get; set; } = new();
}
/// <summary>
/// 5G NR PLMN配置项
/// 定义5G NR公共陆地移动网络的配置信息
/// </summary>
public class NrPlmnItem
{
/// <summary>PLMN标识列表</summary>
[JsonProperty("plmn_ids")]
public List<string> PlmnIds { get; set; } = new();
/// <summary>是否为保留PLMN</summary>
[JsonProperty("reserved")]
public bool Reserved { get; set; }
/// <summary>跟踪区域码(TAC)</summary>
[JsonProperty("tac")]
public int Tac { get; set; }
}
}

129
modify.md

@ -11802,4 +11802,131 @@ feat: 优化NetworkProtocolLogObserver并发处理和ProtocolWsClientManager资
- 协议日志处理的并发安全性
- 协议客户端的资源管理
- 系统稳定性和性能
- 代码可维护性
- 代码可维护性
## 2025-01-02
### CellConfig.cs中NrScellList属性类型修复
**修改时间**: 2025年1月2日
**修改文件**:
- `CoreAgent.ProtocolClient/Models/CellConfig.cs`
**修改内容**:
1. **问题描述**:
- JSON数据中 `nr_scell_list` 是一个数组结构:`"nr_scell_list": [{"cell_id": 1}]`
- 但在 `CellConfig` 类中,`NrScellList` 被定义为单个对象:`public NrScellItem NrScellList { get; set; }`
- 导致JSON反序列化时类型不匹配,无法正确解析邻区信息
2. **修复方案**:
- 将 `NrScellList` 属性的类型从 `NrScellItem` 改为 `List<NrScellItem>`
- 保持JSON属性名 `"nr_scell_list"` 不变
- 确保与JSON数据结构完全匹配
3. **具体修改**:
```csharp
// 修复前
[JsonProperty("nr_scell_list")]
public NrScellItem NrScellList { get; set; } = new();
// 修复后
[JsonProperty("nr_scell_list")]
public List<NrScellItem> NrScellList { get; set; } = new();
```
4. **设计优势**:
- **类型匹配**:属性类型与JSON数据结构完全匹配
- **数据完整性**:能够正确解析包含多个邻区的配置
- **向后兼容**:保持JSON属性名不变,不影响现有API
- **集合初始化**:使用集合初始化器确保属性不为null
- **类型安全**:使用强类型集合,避免类型错误
5. **修复的关键问题**:
- **JSON反序列化失败**:类型不匹配导致邻区信息无法正确解析
- **数据丢失**:单个对象无法容纳多个邻区信息
- **API不一致**:C#模型与JSON数据结构不一致
**影响范围**:
- 小区配置JSON数据的正确解析
- 邻区信息的数据完整性
- API数据模型的一致性
- JSON序列化和反序列化的稳定性
## 2025-01-02
### 创建NrCellConfig类支持5G NR小区配置
**修改时间**: 2025年1月2日
**修改文件**:
- `CoreAgent.ProtocolClient/Models/NrCellConfig.cs` (新建)
**修改内容**:
1. **创建NrCellConfig类**
- 专门用于处理5G NR(New Radio)小区配置
- 包含5G NR特有的配置参数,如 `n_id_nrcell`、`dl_nr_arfcn`、`ssb_nr_arfcn` 等
- 支持JSON序列化,属性名与外部API保持一致
2. **5G NR特有参数**:
- **物理小区标识**: `n_id_nrcell` - 5G NR物理小区标识
- **NR ARFCN**: `dl_nr_arfcn`、`ul_nr_arfcn` - 5G NR绝对射频信道号
- **SSB ARFCN**: `ssb_nr_arfcn` - SSB 5G NR绝对射频信道号
- **MU-MIMO配置**: `dl_mu`、`ul_mu`、`ssb_mu` - 多用户MIMO配置
- **5G NR频段**: `band` - 5G NR频段号(如78频段)
3. **NrPlmnItem类**:
- 专门用于5G NR的PLMN配置
- 包含 `plmn_ids` 列表(支持多个PLMN标识)
- 包含 `tac` 字段(跟踪区域码)
- 与4G LTE的 `PlmnItem` 区分开
4. **具体实现**:
```csharp
public class NrCellConfig
{
// 5G NR特有参数
[JsonProperty("n_id_nrcell")]
public int NIdNrCell { get; set; }
[JsonProperty("dl_nr_arfcn")]
public int DlNrArfcn { get; set; }
[JsonProperty("ssb_nr_arfcn")]
public int SsbNrArfcn { get; set; }
[JsonProperty("dl_mu")]
public int DlMu { get; set; }
// 其他5G NR参数...
}
public class NrPlmnItem
{
[JsonProperty("plmn_ids")]
public List<string> PlmnIds { get; set; } = new();
[JsonProperty("tac")]
public int Tac { get; set; }
}
```
5. **设计优势**:
- **技术区分**: 明确区分4G LTE和5G NR配置
- **参数完整**: 包含所有5G NR特有的配置参数
- **类型安全**: 使用强类型属性,避免类型错误
- **JSON兼容**: 完全匹配提供的JSON数据结构
- **扩展性**: 便于后续添加更多5G NR参数
- **文档完整**: 每个属性都有详细的XML文档注释
6. **与CellConfig的区别**:
- **CellConfig**: 用于4G LTE小区配置(`n_id_cell`、`dl_earfcn`等)
- **NrCellConfig**: 用于5G NR小区配置(`n_id_nrcell`、`dl_nr_arfcn`等)
- **PLMN结构**: 5G NR支持多个PLMN标识,4G LTE只支持单个PLMN
**影响范围**:
- 5G NR小区配置的数据模型支持
- 协议客户端配置的完整性
- 4G/5G技术栈的清晰分离
- JSON数据结构的标准化
- 未来5G NR功能的扩展基础
Loading…
Cancel
Save