diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-12-11 11:31:39 +0100 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2016-09-25 08:11:42 +0200 |
commit | b67a42daa127efbf4520a81cf7e1e36c3088cbee (patch) | |
tree | 7f7fcad48b07bc8a6c2fcd0cd011b16551c15883 /src/host/layer23/src/common | |
parent | 1466d42251c79a59ee96abb62810c9d226750ee5 (diff) |
[WIP] HO: Add new parameters to L1CTL_DM_EST_REQ
* Flag to enter dedicated mode with TX disabled
* Flag to use sync info of neighbor cell
* Flag to use sync info of previous serving cell
* Index of neighbor cell
All these parameters are required to handover to a new channel.
Diffstat (limited to 'src/host/layer23/src/common')
-rw-r--r-- | src/host/layer23/src/common/l1ctl.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/host/layer23/src/common/l1ctl.c b/src/host/layer23/src/common/l1ctl.c index dd1b6eee..bdb4853b 100644 --- a/src/host/layer23/src/common/l1ctl.c +++ b/src/host/layer23/src/common/l1ctl.c @@ -473,7 +473,7 @@ int l1ctl_tx_rach_req(struct osmocom_ms *ms, uint8_t ra, uint16_t offset, /* Transmit L1CTL_DM_EST_REQ */ int l1ctl_tx_dm_est_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn, uint8_t chan_nr, uint8_t tsc, uint8_t tch_mode, - uint8_t audio_mode) + uint8_t audio_mode, int tx, int sync, int index) { struct msgb *msg; struct l1ctl_info_ul *ul; @@ -496,6 +496,14 @@ int l1ctl_tx_dm_est_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn, req->h0.band_arfcn = htons(band_arfcn); req->tch_mode = tch_mode; req->audio_mode = audio_mode; + req->flags = (tx) ? 0 : L1CTL_EST_F_RXONLY; + if (sync) { + if (index >= 0) { + req->flags |= L1CTL_EST_F_NBSYNC; + req->neighbor = index; + } else + req->flags |= L1CTL_EST_F_LASTSYNC; + } return osmo_send_l1(ms, msg); } @@ -503,7 +511,7 @@ int l1ctl_tx_dm_est_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn, int l1ctl_tx_dm_est_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn, uint16_t *ma, uint8_t ma_len, uint8_t chan_nr, uint8_t tsc, uint8_t tch_mode, - uint8_t audio_mode) + uint8_t audio_mode, int tx, int sync, int index) { struct msgb *msg; struct l1ctl_info_ul *ul; @@ -531,6 +539,14 @@ int l1ctl_tx_dm_est_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn, req->h1.ma[i] = htons(ma[i]); req->tch_mode = tch_mode; req->audio_mode = audio_mode; + req->flags = (tx) ? 0 : L1CTL_EST_F_RXONLY; + if (sync) { + if (index >= 0) { + req->flags |= L1CTL_EST_F_NBSYNC; + req->neighbor = index; + } else + req->flags |= L1CTL_EST_F_LASTSYNC; + } return osmo_send_l1(ms, msg); } |