Skip to content

Development Guideline

Ali Güngör edited this page May 28, 2021 · 44 revisions

If you want to contribute to the UERANSIM. Here you can find some development guidelines.


C++ Coding Style

  • This UERANSIM-specific coding style guideline shall be used inside of the UERANSIM project.
  • Do not use C language, and don't write C-style codes. Use modern and rich C++ features instead.
  • Use Microsoft's C++ coding guidelines, with following exceptions:
    • Use AlwaysBreakTemplateDeclarations: Yes (for clang tidy)
    • Use camelCase for instance methods, PascalCase for static functions.

Development Environment

It is recommended to use Clion as an IDE.

  1. Start Clion C++ IDE
  2. Click Open
  3. Select the root folder of UERANSIM and hit OK
  4. Clion will ask you if you want to import the project as CMake or makefile. Select CMake.
  5. Click Build/Build Project from the top menu.

Build and Compile

Build instructions written in Installation Wiki is not required for developers. You should be able to build normally inside of Clion C++ IDE. You can also build in Debug mode, and/or utilize the debugger.

If you add, remove or rename a source file, make sure that you click Reload CMake Project from the menu, before building the project.


3GPP Specifications

Here's the list of technical specifications often used by UERANSIM:

  • TS 22.261 : Service requirements for next generation new services and markets
  • TS 23.003 : Numbering, addressing and identification
  • TS 23.122 : NAS functions related to MS in idle mode
  • TS 23.501 : System architecture for the 5G System
  • TS 23.502 : Procedures for the 5G System
  • TS 24.007 : Mobile radio interface signalling layer 3; General Aspects
  • TS 24.501 : Non-Access-Stratum (NAS) protocol for 5G System
  • TS 31.101 : UICC-terminal interface; Physical and logical characteristics
  • TS 31.102 : Characteristics of the USIM Application
  • TS 31.111 : USIM Application Toolkit (USAT)
  • TS 33.501 : Security architecture and procedures for 5G System
  • TS 38.201 : NR; Physical layer; General description
  • TS 38.202 : NR; Services provided by the physical layer
  • TS 38.300 : NR and NG-RAN Overall description;
  • TS 38.304 : NR; User Equipment (UE) procedures in idle mode and in RRC Inactive state
  • TS 38.322 : NR; Radio Link Control (RLC) protocol specification
  • TS 38.323 : NR; Packet Data Convergence Protocol (PDCP) specification
  • TS 38.331 : NR; Radio Resource Control (RRC); Protocol specification
  • TS 38.401 : NG-RAN; Architecture description
  • TS 38.410 : NG-RAN; NG general aspects and principles
  • TS 38.411 : NG-RAN; NG layer 1
  • TS 38.412 : NG-RAN; NG signalling transport
  • TS 38.413 : NG-RAN; NG Application Protocol (NGAP)
  • TS 38.414 : NG-RAN; NG data transport
  • TS 38.415 : NG-RAN; PDU session user plane protocol

We use release 15.6.0 for 3GPP specifications


Wireshark Plugin For RLS

It is recommended to use RLS dissector plugin for Wireshark. The plugin is available in tools folder.