aboutsummaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-07-28 14:46:00 +0200
committerHarald Welte <laforge@gnumonks.org>2016-08-08 17:41:27 +0000
commit4b76a323b3bb71f8d3f4dc7439ecd9bad0f13bcf (patch)
tree25fc6161bdc7eb8d070188d84b06b22e9a6b432d /src/common
parentb0f8fa814376d46ff9d7ef0e94e8480ce63442f9 (diff)
Fill measurements data for L1SAP
Fill in values for BER, BTO, Link quality in L1SAP and send them to PCU. Note: this increases the version of BTS <-> PCU protocol. It also requires corresponding changes in libosmocore. All BTS models provide measurements data unless direct DSP access for PCU is enabled. For BTS-specific notes see below. Octphy: conversion from sSNRDb to Link Quality uses formulae which works in practice instead of what's documented for sSNRDb value. Subject to change in future revisions. TRX: C / I link quality estimator is not computed. Change-Id: Ic9693a044756fb1c7bd2ff3cfa0db042c3c4e01c Related: OS#1616
Diffstat (limited to 'src/common')
-rw-r--r--src/common/l1sap.c7
-rw-r--r--src/common/pcu_sock.c5
-rw-r--r--src/common/scheduler.c9
3 files changed, 17 insertions, 4 deletions
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 4f6cf05d..304f7185 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -820,7 +820,9 @@ static int l1sap_ph_data_ind(struct gsm_bts_trx *trx,
if (L1SAP_IS_PTCCH(fn)) {
pcu_tx_data_ind(&trx->ts[tn], 1, fn,
0 /* ARFCN */, L1SAP_FN2PTCCHBLOCK(fn),
- data, len, rssi);
+ data, len, rssi, data_ind->ber10k,
+ data_ind->ta_offs_qbits,
+ data_ind->lqual_cb);
return 0;
}
@@ -829,7 +831,8 @@ static int l1sap_ph_data_ind(struct gsm_bts_trx *trx,
return 0;
/* PDTCH / PACCH frame handling */
pcu_tx_data_ind(&trx->ts[tn], 0, fn, 0 /* ARFCN */,
- L1SAP_FN2MACBLOCK(fn), data, len, rssi);
+ L1SAP_FN2MACBLOCK(fn), data, len, rssi, data_ind->ber10k,
+ data_ind->ta_offs_qbits, data_ind->lqual_cb);
return 0;
}
diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c
index 22b6fabf..fed464fb 100644
--- a/src/common/pcu_sock.c
+++ b/src/common/pcu_sock.c
@@ -337,7 +337,7 @@ int pcu_tx_rts_req(struct gsm_bts_trx_ts *ts, uint8_t is_ptcch, uint32_t fn,
int pcu_tx_data_ind(struct gsm_bts_trx_ts *ts, uint8_t is_ptcch, uint32_t fn,
uint16_t arfcn, uint8_t block_nr, uint8_t *data, uint8_t len,
- int8_t rssi)
+ int8_t rssi, uint16_t ber10k, int16_t bto, int16_t lqual)
{
struct msgb *msg;
struct gsm_pcu_if *pcu_prim;
@@ -362,6 +362,9 @@ int pcu_tx_data_ind(struct gsm_bts_trx_ts *ts, uint8_t is_ptcch, uint32_t fn,
data_ind->ts_nr = ts->nr;
data_ind->block_nr = block_nr;
data_ind->rssi = rssi;
+ data_ind->ber10k = ber10k;
+ data_ind->ta_offs_qbits = bto;
+ data_ind->lqual_cb = lqual;
memcpy(data_ind->data, data, len);
data_ind->len = len;
diff --git a/src/common/scheduler.c b/src/common/scheduler.c
index eeaf2c13..ec66cfc4 100644
--- a/src/common/scheduler.c
+++ b/src/common/scheduler.c
@@ -295,7 +295,11 @@ found_msg:
}
int _sched_compose_ph_data_ind(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn,
- enum trx_chan_type chan, uint8_t *l2, uint8_t l2_len, float rssi, enum osmo_ph_pres_info_type presence_info)
+ enum trx_chan_type chan, uint8_t *l2,
+ uint8_t l2_len, float rssi,
+ int16_t ta_offs_qbits, int16_t link_qual_cb,
+ uint16_t ber10k,
+ enum osmo_ph_pres_info_type presence_info)
{
struct msgb *msg;
struct osmo_phsap_prim *l1sap;
@@ -311,6 +315,9 @@ int _sched_compose_ph_data_ind(struct l1sched_trx *l1t, uint8_t tn, uint32_t fn,
l1sap->u.data.link_id = trx_chan_desc[chan].link_id;
l1sap->u.data.fn = fn;
l1sap->u.data.rssi = (int8_t) (rssi);
+ l1sap->u.data.ber10k = ber10k;
+ l1sap->u.data.ta_offs_qbits = ta_offs_qbits;
+ l1sap->u.data.lqual_cb = link_qual_cb;
l1sap->u.data.pdch_presence_info = presence_info;
msg->l2h = msgb_put(msg, l2_len);
if (l2_len)