annotate pathloss/egli.c @ 94:f9ef582c199c

tfo-ut: check in tfo-fr.bin and tfo-efr.bin Each of these binary files is an extract from MSC-side E1 timeslot recording in a Nokia TCSM2 TFO session involving a cross-connect between two TRAU channels. The extracts have been chosen to begin at the point where the TRAU starts emitting TFO frames, thereby beginning with a series of TFO frames that contain an embedded TFO_TRANS message. In each experiment, one of the two cross-connected TRAU channels emitted two "plain" TFO frames (not containing embedded TFO messages) in between the initial embedded TFO_TRANS and the subsequent embedded TFO_REQ_L; this channel was chosen for the present extracts. Each extract is thus 2560 PCM samples, containing 16 aligned TFO frames: 5 carrying TFO_TRANS, 2 plain, 9 carrying TFO_REQ_L.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 18 Mar 2025 22:56:23 +0000
parents 0cfea66a15f3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
68
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
2 * RF range calculation per Egli model
66
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #define _GNU_SOURCE
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <math.h>
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include "range_func.h"
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8
68
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
9 float rf_range_egli(float freq_mhz, float path_loss, float bts_ant_m,
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
10 float ms_ant_m)
66
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 {
68
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
12 float l, r, x;
66
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
68
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
14 l = 20.0f * log10f(freq_mhz / 40.0f);
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
15 r = path_loss - l;
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
16 x = bts_ant_m * ms_ant_m;
0cfea66a15f3 pathloss: implement Egli model
Mychaela Falconia <falcon@freecalypso.org>
parents: 66
diff changeset
17 return sqrtf(x / pow10f(r / -20.0f));
66
599fac1b882d pathloss: implement FSL
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 }