goran

module
v0.0.0-...-0fb1ab0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2023 License: AGPL-3.0

README

goran

goran is 5G NR radio access network packages that commonly used in the workflow of telecom RF engineers for simulations and calculations. Visit goran project landing page here -> go.dev///goran.

CI Go Reference



Documentations

Static Badge

Visit official documentations page here.

Force official documentations re-indexing to update to latest version: Click Link1 and Link2 and wait for a moment.

Supported Packages

Static Badge


| Technology | Package       | Function                      | Purpose                                          |
|------------|---------------|-------------------------------|--------------------------------------------------|
| 5G NR      | nrConversion  | BandwidthToRB()               | Converts Bandwidth (MHz) to RB (Count)           |
| 5G NR      | nrConversion  | McsToQm()                     | Converts MCS to Modulation Order (bits/Symbol)   |
| 5G NR      | nrConversion  | McsToR()                      | Converts MCS to Target Code Rate (R)             |
| 5G NR      | nrConversion  | McsToSe()                     | Converts MCS to Spectral Efficiency (bps/Hz)     |
| 5G NR      | nrConversion  | NumerologyToScs()             | Converts Numerology (µ) to SCS (kHz)             |
| 5G NR      | nrConversion  | NumerologyToSlotPerFrame()    | Converts Numerology (µ) to Slot/Frame (Count)    |
| 5G NR      | nrConversion  | NumerologyToSlotPerSubframe() | Converts Numerology (µ) to Slot/Subframe (Count) |
| 5G NR      | nrConversion  | NumerologyToSymbolPerSlot()   | Converts Numerology (µ) to Symbol/Slot (Count)   |
| 5G NR      | nrConversion  | QCIToPacketDelay()            | Converts 5QI to Packet Delay (ms)                |
| 5G NR      | nrConversion  | QCIToPacketLoss()             | Converts 5QI to Packet Loss Rate (%)             |
| 5G NR      | nrConversion  | QCIToPriority()               | Converts 5QI to Priority                         |
| 5G NR      | nrConversion  | QCIToType()                   | Converts 5QI to Bit Rate Type                    |
| 5G NR      | nrDownlink    | Tbs()                         | Calculates Transport Block Size (Bytes)          |
| 5G NR      | nrMeasurement | SsRsrp()                      | Calculates SS-RSRP (dBm)                         |
| 5G NR      | nrMeasurement | SsRsrq()                      | Calculates SS-RSRQ (dB)                          |
| 5G NR      | nrMeasurement | SsSinr()                      | Calculates SS-SINR (dB)                          |
| 5G NR      | nrMeasurement | SsRssi()                      | Calculates SS-RSSI (dBm)                         |
| 5G NR      | nrPathloss    | FreeSpace()                   | Generates Free Space Path Loss (dB)              |

Getting Started

Static Badge

# Go to project directory.
cd <project-directory> 

# Initialize Go modules.
go mod init <module-name> 

# Download `goran` package.
go get github.com/zulfadlizainal/goran 

# Get updated package. (Optional)
go get -u github.com/zulfadlizainal/goran

Static Badge

package main

import (
	"fmt"
	"log"

	// Import goran package
	"github.com/zulfadlizainal/goran/pkg/nrConversion"
)

func main() {

	bandwidth := 20
	freqrange := "Sub6" 
	scs := 30 

	// Call the function
	rbCount, err := nrConversion.BandwidthToRB(bandwidth, freqrange, scs)

	if err != nil {
		log.Fatalf("Error: %v", err)
	}

	fmt.Printf("RB count = %vRB\n", rbCount)

}
Verification

Static Badge

git clone github.com/zulfadlizainal/goran.git # Clone repository.
cd goran/pkg/<package-name> # Go to test directory.
go test # Run Go test.
Contribution

Static Badge

# What to Build

1. Flexible. No explicit roadmap. 
2. Build functions to address common RF engineers workflow.
3. Avoid functions creation for non-existing problems.
# Wish List

1. Generate urban and rural path loss.
2. Calculate PRACH power control, PUSCH power control. 
3. Calculate impact of measurement gap to downlink throughput.
4. Examples of goran packages usage.

Static Badge

# Guidelines

1. No dependencies outside Go standard library.
2. Include comprehensive comments for the codes. Documentation is automated based on the comments.
3. Include test for each functions with desired and undesired input.
4. Include error control. Return value for error is flexible but need to specify.


Buy Me A Coffee

Licenses

GNU AFFERO GPL Version 3

Directories

Path Synopsis
pkg
nrConversion
nrConversion is a package that converts 5G NR properties based on 3GPP pre-defined tables or formulas.
nrConversion is a package that converts 5G NR properties based on 3GPP pre-defined tables or formulas.
nrDownlink
nrDownlink is a package that calculates 5G NR downlink related properties.
nrDownlink is a package that calculates 5G NR downlink related properties.
nrMeasurement
nrMeasurement is a package that calculates 5G NR UE measurement quantities.
nrMeasurement is a package that calculates 5G NR UE measurement quantities.
nrPathloss
nrPathloss is a package that calculates 5G NR path loss based on various path loss models.
nrPathloss is a package that calculates 5G NR path loss based on various path loss models.
nrUplink
nrUplink is a package that calculates 5G NR downlink related properties.
nrUplink is a package that calculates 5G NR downlink related properties.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL