FreeCalypso > hg > gsm-net-reveng
changeset 68:0cfea66a15f3
pathloss: implement Egli model
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 25 Oct 2024 16:09:52 +0000 |
parents | d8ccdccd8b2b |
children | cf60172895fe |
files | pathloss/Makefile pathloss/egli.c pathloss/main.c pathloss/range_func.h |
diffstat | 4 files changed, 28 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/pathloss/Makefile Fri Oct 25 08:13:18 2024 +0000 +++ b/pathloss/Makefile Fri Oct 25 16:09:52 2024 +0000 @@ -1,12 +1,15 @@ CC= gcc CFLAGS= -O2 PROG= pathloss -OBJS= fsl.o main.o +OBJS= egli.o fsl.o main.o +HDRS= range_func.h all: ${PROG} ${PROG}: ${OBJS} ${CC} -o $@ ${OBJS} -lm +${OBJS}: ${HDRS} + clean: rm -f *.o ${PROG}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pathloss/egli.c Fri Oct 25 16:09:52 2024 +0000 @@ -0,0 +1,18 @@ +/* + * RF range calculation per Egli model + */ + +#define _GNU_SOURCE +#include <math.h> +#include "range_func.h" + +float rf_range_egli(float freq_mhz, float path_loss, float bts_ant_m, + float ms_ant_m) +{ + float l, r, x; + + l = 20.0f * log10f(freq_mhz / 40.0f); + r = path_loss - l; + x = bts_ant_m * ms_ant_m; + return sqrtf(x / pow10f(r / -20.0f)); +}
--- a/pathloss/main.c Fri Oct 25 08:13:18 2024 +0000 +++ b/pathloss/main.c Fri Oct 25 16:09:52 2024 +0000 @@ -274,6 +274,9 @@ printf("FSL: %.2f m DL, %.2f m UL\n", rf_range_freespace(freq_dl, path_loss_dl), rf_range_freespace(freq_ul, path_loss_ul)); - /* Egli and Hata coming next */ + printf("Egli: %.2f m DL, %.2f m UL\n", + rf_range_egli(freq_dl, path_loss_dl, bts_height, ms_height), + rf_range_egli(freq_ul, path_loss_ul, bts_height, ms_height)); + /* Hata model coming next */ exit(0); }