---
# System prepended metadata

title: 'Trace the OAI source code and use figures and flowchart to describe the following questions:'

---

# Trace the OAI source code and use figures and flowchart to describe the following questions:
:::success
**References**
 - [Figures](https://hackmd.io/@ferlinda/H1rhidRTc?view)
 - [openairinterface5G](https://gitlab.eurecom.fr/oai/openairinterface5g.git)
 - [nr-softmodem](https://blog.csdn.net/HiWangWenBing/article/details/120790128)
 - [Source code file](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/NR_SA_F1AP_5GRECORDS/executables/nr-softmodem.c)
 - [5G Wikipedia](https://wiki.patras5g.eu/radio-equipment/g-node-bs)
:::
:::info
**Question List:**
1. What is GNBSParams?
2. What are the functions involved to get it?
3. How does nr-softmodem decide the mode to run?
4. What function is called first to run in OAI CU + OAI DU mode?
:::
:::success
**Goal:** Understand the how nr-softmodem decide the mode to run and what function is called first to run in OAI CU + OAI DU mode.
:::

# Background:
**GNodeBs (gNBs)** are the 5G wireless base stations that transmit and receive communications between the user equipment and the mobile network.

## Source Code Tracing

:::warning
**Questions: What is GNBSParams? What are the functions involved to get it?**
:::

#### 1. Functions
| Function Name | Location | Functions | Description |
| ------------- | -------- | ----------------- | ---------------- |
| GNBSParams    | nr_softmodem.c  | get number of gNBs; for gNB ID; GNBParamList| allows setting parameters to test/improve it & controls the behavior of nr-softmodem without changing the compiled code | 

#### 2. Flowchart

Loading....................

# Background:
**nr-softmodem** is an executable program on the 5G NR base station side, which is an interface program for the software on the 5G NR base station side.

## Source Code Tracing

:::warning
**Questions:How does nr-softmodem decide the mode to run? What function is called first to run it in OAI CU + OAI DU mode?**
:::

![](https://imgur.com/J8ThfOf.png)

 ![](https://imgur.com/vovXOYh.png)
 
  

#### 1. Functions
| Function Name | Location | Description |
| ------------- | -------- | ----------- |
| CONFIG & LIBCONFIG| nr_softmodem.c  | sets parameters the first function's to run it OAI CU + OAI DU mode|


| Function Name | Location | Source code/libraries | Description |
| ------------- | -------- | ----------------- | ---------------- |
|GNB_APP |nr_softmodem.c|gnb_app.h;phy_scope_interface.h;nr_phy_scope.h;nr-softmodem.h|This function allows nr-softmodem to decide a mode|

:::spoiler Detail of `How does nr-softmodem decide the mode to run?`
 "system.h"
<openair2/GNB_APP/gnb_app.h>
PHY/TOOLS/phy_scope_interface.h"
"PHY/TOOLS/nr_phy_scope.h"
"stats.h"
"nr-softmodem.h"
#"executables/softmodem-common.h"
"executables/thread-common.h"
"NB_IoT_interface.h"
"x2ap_eNB.h"
"ngap_gNB.h"
"gnb_paramdef.h"
<openair3/ocp-gtpu/gtp_itf.h>
"nfapi/oai_integration/vendor_ext.h"

```
:::




