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);
 }
--- a/pathloss/range_func.h	Fri Oct 25 08:13:18 2024 +0000
+++ b/pathloss/range_func.h	Fri Oct 25 16:09:52 2024 +0000
@@ -3,3 +3,5 @@
  */
 
 float rf_range_freespace(float freq_mhz, float path_loss);
+float rf_range_egli(float freq_mhz, float path_loss, float bts_ant_m,
+		    float ms_ant_m);