47 lines
2.1 KiB
C++
47 lines
2.1 KiB
C++
#include "src/lib/rrc/encode.hpp"
|
|
#include "src/asn/rrc/ASN_RRC_RRCReconfiguration.h"
|
|
#include "src/asn/asn_utils.hpp"
|
|
#include <iostream>
|
|
|
|
int main() {
|
|
// 测试我们当前的容器生成逻辑
|
|
auto *rrcReconfig = asn::New<ASN_RRC_RRCReconfiguration>();
|
|
rrcReconfig->rrc_TransactionIdentifier = 1;
|
|
|
|
rrcReconfig->criticalExtensions.present = ASN_RRC_RRCReconfiguration__criticalExtensions_PR_rrcReconfiguration;
|
|
auto *rrcReconfigIes = asn::New<ASN_RRC_RRCReconfiguration_IEs>();
|
|
rrcReconfig->criticalExtensions.choice.rrcReconfiguration = rrcReconfigIes;
|
|
|
|
// 使用与我们代码中相同的CellGroupConfig数据
|
|
uint8_t cellGroupConfigData[] = {
|
|
0x00, 0x01, 0x40, 0x02, 0x01, 0x80, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02,
|
|
0x04, 0x40, 0x01, 0x20, 0x00, 0x01, 0x20, 0x10, 0x08, 0x00, 0x08, 0x04, 0x02, 0x01,
|
|
0x10, 0x08, 0x04, 0x02, 0x01, 0x08, 0x04, 0x02, 0x01,
|
|
0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01,
|
|
0xF0, 0xE0, 0xD0, 0xC0, 0xB0, 0xA0, 0x90, 0x80,
|
|
0x70, 0x60, 0x50, 0x40, 0x30, 0x20, 0x10, 0x00,
|
|
0xFF, 0xEE, 0xDD, 0xCC, 0xBB, 0xAA, 0x99, 0x88,
|
|
0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x00
|
|
};
|
|
|
|
rrcReconfigIes->secondaryCellGroup = asn::New<OCTET_STRING_t>();
|
|
asn::SetOctetString(*rrcReconfigIes->secondaryCellGroup,
|
|
OctetString::FromArray(cellGroupConfigData, sizeof(cellGroupConfigData)));
|
|
|
|
OctetString container = rrc::encode::EncodeS(asn_DEF_ASN_RRC_RRCReconfiguration, rrcReconfig);
|
|
|
|
std::cout << "Container size: " << container.length() << " bytes" << std::endl;
|
|
std::cout << "Expected size: >= 50 bytes for free5gc compatibility" << std::endl;
|
|
std::cout << "Status: " << (container.length() >= 50 ? "PASS" : "FAIL") << std::endl;
|
|
|
|
// 输出前32字节的十六进制
|
|
std::cout << "Hex dump: ";
|
|
for (size_t i = 0; i < std::min(32UL, container.length()); i++) {
|
|
printf("%02x ", static_cast<unsigned char>(container.data()[i]));
|
|
}
|
|
std::cout << std::endl;
|
|
|
|
asn::Free(asn_DEF_ASN_RRC_RRCReconfiguration, rrcReconfig);
|
|
return container.length() >= 50 ? 0 : 1;
|
|
}
|