Disable rat assignment in pcap class

This commit is contained in:
David Rupprecht 2021-02-26 09:56:22 +01:00 committed by Andre Puschmann
parent 24bea9a860
commit 5a95cbdfae
8 changed files with 16 additions and 29 deletions

View File

@ -27,7 +27,7 @@ namespace srslte {
class mac_pcap : srslte::thread class mac_pcap : srslte::thread
{ {
public: public:
mac_pcap(srslte_rat_t rat); mac_pcap();
~mac_pcap(); ~mac_pcap();
void enable(bool enable); void enable(bool enable);
uint32_t open(std::string filename, uint32_t ue_id = 0); uint32_t open(std::string filename, uint32_t ue_id = 0);
@ -63,7 +63,6 @@ public:
private: private:
srslog::basic_logger& logger; srslog::basic_logger& logger;
bool running = false; bool running = false;
srslte_rat_t rat = srslte_rat_t::nulltype;
uint32_t dlt = 0; // The DLT used for the PCAP file uint32_t dlt = 0; // The DLT used for the PCAP file
std::string filename; std::string filename;
FILE* pcap_file = nullptr; FILE* pcap_file = nullptr;
@ -87,6 +86,7 @@ private:
typedef struct { typedef struct {
// Different PCAP context for both RATs // Different PCAP context for both RATs
srslte::srslte_rat_t rat;
MAC_Context_Info_t context; MAC_Context_Info_t context;
mac_nr_context_info_t context_nr; mac_nr_context_info_t context_nr;
unique_byte_buffer_t pdu; unique_byte_buffer_t pdu;

View File

@ -17,9 +17,7 @@
namespace srslte { namespace srslte {
mac_pcap::mac_pcap(srslte_rat_t rat_) : mac_pcap::mac_pcap() : logger(srslog::fetch_basic_logger("MAC")), thread("PCAP_WRITER_MAC") {}
logger(srslog::fetch_basic_logger("MAC")), thread("PCAP_WRITER_" + to_string(rat_)), rat(rat_)
{}
mac_pcap::~mac_pcap() mac_pcap::~mac_pcap()
{ {
@ -41,18 +39,7 @@ uint32_t mac_pcap::open(std::string filename_, uint32_t ue_id_)
} }
// set DLT for selected RAT // set DLT for selected RAT
switch (rat) { dlt = UDP_DLT;
case srslte_rat_t::lte:
dlt = UDP_DLT;
break;
case srslte_rat_t::nr:
dlt = UDP_DLT;
break;
default:
logger.error("Error opening PCAP. Unsupported RAT selected.");
return SRSLTE_ERROR;
}
pcap_file = LTE_PCAP_Open(dlt, filename_.c_str()); pcap_file = LTE_PCAP_Open(dlt, filename_.c_str());
if (pcap_file == nullptr) { if (pcap_file == nullptr) {
logger.error("Couldn't open %s to write PCAP", filename_.c_str()); logger.error("Couldn't open %s to write PCAP", filename_.c_str());
@ -88,7 +75,7 @@ uint32_t mac_pcap::close()
// close file handle // close file handle
{ {
std::lock_guard<std::mutex> lock(mutex); std::lock_guard<std::mutex> lock(mutex);
srslte::console("Saving %s MAC PCAP (DLT=%d) to %s\n", to_string(rat).c_str(), dlt, filename.c_str()); srslte::console("Saving MAC PCAP (DLT=%d) to %s\n", dlt, filename.c_str());
LTE_PCAP_Close(pcap_file); LTE_PCAP_Close(pcap_file);
pcap_file = nullptr; pcap_file = nullptr;
} }
@ -99,7 +86,7 @@ uint32_t mac_pcap::close()
void mac_pcap::write_pdu(pcap_pdu_t& pdu) void mac_pcap::write_pdu(pcap_pdu_t& pdu)
{ {
if (pdu.pdu != nullptr) { if (pdu.pdu != nullptr) {
switch (rat) { switch (pdu.rat) {
case srslte_rat_t::lte: case srslte_rat_t::lte:
LTE_PCAP_MAC_UDP_WritePDU(pcap_file, &pdu.context, pdu.pdu->msg, pdu.pdu->N_bytes); LTE_PCAP_MAC_UDP_WritePDU(pcap_file, &pdu.context, pdu.pdu->msg, pdu.pdu->N_bytes);
break; break;
@ -150,6 +137,7 @@ void mac_pcap::pack_and_queue(uint8_t* payload,
{ {
if (running && payload != nullptr) { if (running && payload != nullptr) {
pcap_pdu_t pdu = {}; pcap_pdu_t pdu = {};
pdu.rat = srslte::srslte_rat_t::lte;
pdu.context.radioType = FDD_RADIO; pdu.context.radioType = FDD_RADIO;
pdu.context.direction = direction; pdu.context.direction = direction;
pdu.context.rntiType = rnti_type; pdu.context.rntiType = rnti_type;
@ -185,6 +173,7 @@ void mac_pcap::pack_and_queue_nr(uint8_t* payload,
{ {
if (running && payload != nullptr) { if (running && payload != nullptr) {
pcap_pdu_t pdu = {}; pcap_pdu_t pdu = {};
pdu.rat = srslte_rat_t::nr;
pdu.context_nr.radioType = FDD_RADIO; pdu.context_nr.radioType = FDD_RADIO;
pdu.context_nr.direction = direction; pdu.context_nr.direction = direction;
pdu.context_nr.rntiType = rnti_type; pdu.context_nr.rntiType = rnti_type;

View File

@ -53,8 +53,7 @@ int mac_pcap_eutra_test()
uint32_t num_threads = 10; uint32_t num_threads = 10;
uint32_t num_pdus_per_thread = 100; uint32_t num_pdus_per_thread = 100;
std::unique_ptr<srslte::mac_pcap> pcap_handle = std::unique_ptr<srslte::mac_pcap> pcap_handle = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap());
std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap(srslte::srslte_rat_t::lte));
TESTASSERT(pcap_handle->open("mac_pcap_test.pcap") == SRSLTE_SUCCESS); TESTASSERT(pcap_handle->open("mac_pcap_test.pcap") == SRSLTE_SUCCESS);
TESTASSERT(pcap_handle->open("mac_pcap_test.pcap") != SRSLTE_SUCCESS); // open again will fail TESTASSERT(pcap_handle->open("mac_pcap_test.pcap") != SRSLTE_SUCCESS); // open again will fail
@ -82,8 +81,7 @@ int mac_pcap_nr_test()
uint32_t num_threads = 10; uint32_t num_threads = 10;
uint32_t num_pdus_per_thread = 100; uint32_t num_pdus_per_thread = 100;
std::unique_ptr<srslte::mac_pcap> pcap_handle = std::unique_ptr<srslte::mac_pcap> pcap_handle = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap());
std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap(srslte::srslte_rat_t::nr));
TESTASSERT(pcap_handle->open("mac_pcap_nr_test.pcap") == SRSLTE_SUCCESS); TESTASSERT(pcap_handle->open("mac_pcap_nr_test.pcap") == SRSLTE_SUCCESS);
TESTASSERT(pcap_handle->open("mac_pcap_nr_test.pcap") != SRSLTE_SUCCESS); // open again will fail TESTASSERT(pcap_handle->open("mac_pcap_nr_test.pcap") != SRSLTE_SUCCESS); // open again will fail

View File

@ -608,7 +608,7 @@ int mac_dl_sch_pdu_unpack_and_pack_test6()
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
#if PCAP #if PCAP
pcap_handle = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap(srslte::srslte_rat_t::nr)); pcap_handle = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap());
pcap_handle->open("mac_nr_pdu_test.pcap"); pcap_handle->open("mac_nr_pdu_test.pcap");
#endif #endif

View File

@ -222,7 +222,7 @@ int rlc_um_nr_pdu_unpack_test6()
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
#if PCAP #if PCAP
pcap_handle = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap(srslte::srslte_rat_t::nr)); pcap_handle = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap());
pcap_handle->open("rlc_um_nr_pdu_test.pcap"); pcap_handle->open("rlc_um_nr_pdu_test.pcap");
#endif #endif

View File

@ -36,7 +36,7 @@ enb_stack_lte::enb_stack_lte(srslte::logger* logger_, srslog::sink& log_sink) :
s1ap(&task_sched, s1ap_logger), s1ap(&task_sched, s1ap_logger),
rrc(&task_sched), rrc(&task_sched),
logger(logger_), logger(logger_),
mac_pcap(srslte_rat_t::lte) mac_pcap()
{ {
get_background_workers().set_nof_workers(2); get_background_workers().set_nof_workers(2);
enb_task_queue = task_sched.make_task_queue(); enb_task_queue = task_sched.make_task_queue();

View File

@ -54,7 +54,7 @@ int mac_nr::init(const mac_nr_args_t& args_,
log_h->set_hex_limit(args.log_hex_limit); log_h->set_hex_limit(args.log_hex_limit);
if (args.pcap.enable) { if (args.pcap.enable) {
pcap = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap(srslte::srslte_rat_t::nr)); pcap = std::unique_ptr<srslte::mac_pcap>(new srslte::mac_pcap());
pcap->open(args.pcap.filename); pcap->open(args.pcap.filename);
} }

View File

@ -33,8 +33,8 @@ ue_stack_lte::ue_stack_lte() :
rrc_logger(srslog::fetch_basic_logger("RRC", false)), rrc_logger(srslog::fetch_basic_logger("RRC", false)),
usim_logger(srslog::fetch_basic_logger("USIM", false)), usim_logger(srslog::fetch_basic_logger("USIM", false)),
nas_logger(srslog::fetch_basic_logger("NAS", false)), nas_logger(srslog::fetch_basic_logger("NAS", false)),
mac_pcap(srslte_rat_t::lte), mac_pcap(),
mac_nr_pcap(srslte_rat_t::nr), mac_nr_pcap(),
usim(nullptr), usim(nullptr),
phy(nullptr), phy(nullptr),
rlc("RLC"), rlc("RLC"),