aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/include/openbsc/meas_rep.h
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-11-29 19:07:28 +0100
committerHarald Welte <laforge@gnumonks.org>2009-11-29 19:07:28 +0100
commit3c7dc6ed50e8baa05a8aea26c72319530e747317 (patch)
tree252c7c938f2bda82ac690447200a7c4c71bbec9d /openbsc/include/openbsc/meas_rep.h
parenta5312fdd2b444b363c36fa7b6e78a1bbe03c9e20 (diff)
New complete measurement result/report handling
This patch extends struct gsm_meas_rep into a complete structure containing all information from both uplink and downlink measurement results/reports. This is a first step to provide this complete measurement data as a C structure into a to-be-implemented handover decision algorithm.
Diffstat (limited to 'openbsc/include/openbsc/meas_rep.h')
-rw-r--r--openbsc/include/openbsc/meas_rep.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/meas_rep.h b/openbsc/include/openbsc/meas_rep.h
new file mode 100644
index 000000000..0c2bdabde
--- /dev/null
+++ b/openbsc/include/openbsc/meas_rep.h
@@ -0,0 +1,50 @@
+#ifndef _MEAS_REP_H
+#define _MEAS_REP_H
+
+/* extracted from a L3 measurement report IE */
+struct gsm_meas_rep_cell {
+ u_int8_t rxlev;
+ u_int8_t bcch_freq; /* FIXME: translate to ARFCN */
+ u_int8_t bsic;
+};
+
+/* RX Level and RX Quality */
+struct gsm_rx_lev_qual {
+ u_int8_t rx_lev;
+ u_int8_t rx_qual;
+};
+
+/* unidirectional measumrement report */
+struct gsm_meas_rep_unidir {
+ struct gsm_rx_lev_qual full;
+ struct gsm_rx_lev_qual sub;
+};
+
+#define MEAS_REP_F_UL_DTX 0x01
+#define MEAS_REP_F_DL_VALID 0x02
+#define MEAS_REP_F_BA1 0x04
+#define MEAS_REP_F_DL_DTX 0x08
+#define MEAS_REP_F_MS_TO 0x10
+#define MEAS_REP_F_MS_L1 0x20
+#define MEAS_REP_F_FPC 0x40
+
+/* parsed uplink and downlink measurement result */
+struct gsm_meas_rep {
+ u_int8_t nr;
+ unsigned int flags;
+
+ struct gsm_meas_rep_unidir ul;
+ struct gsm_meas_rep_unidir dl;
+
+ u_int8_t bs_power;
+ u_int8_t ms_timing_offset;
+ struct {
+ int8_t pwr; /* MS power in dBm */
+ u_int8_t ta; /* MS timing advance */
+ } ms_l1;
+
+ int num_cell;
+ struct gsm_meas_rep_cell cell[6];
+};
+
+#endif /* _MEAS_REP_H */