From 00b9d1e73fdff986ef82b9f8d1a84e7e68eab195 Mon Sep 17 00:00:00 2001 From: "Andreas.Eversberg" Date: Sat, 21 Aug 2010 15:06:46 +0000 Subject: [layer23] L1CTL frequency change implementation in l1ctl.c --- src/host/layer23/src/common/l1ctl.c | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'src/host/layer23/src/common/l1ctl.c') diff --git a/src/host/layer23/src/common/l1ctl.c b/src/host/layer23/src/common/l1ctl.c index 835de5d3..b8e332f7 100644 --- a/src/host/layer23/src/common/l1ctl.c +++ b/src/host/layer23/src/common/l1ctl.c @@ -402,6 +402,67 @@ int l1ctl_tx_dm_est_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn, return osmo_send_l1(ms, msg); } +/* Transmit L1CTL_DM_FREQ_REQ */ +int l1ctl_tx_dm_freq_req_h0(struct osmocom_ms *ms, uint16_t band_arfcn, + uint8_t tsc, uint16_t fn) +{ + struct msgb *msg; + struct l1ctl_info_ul *ul; + struct l1ctl_dm_freq_req *req; + + msg = osmo_l1_alloc(L1CTL_DM_FREQ_REQ); + if (!msg) + return -1; + + printf("Tx Dedic.Mode Freq Req (arfcn=%u, fn=%d)\n", + band_arfcn, fn); + + ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul)); + ul->chan_nr = 0; + ul->link_id = 0; + + req = (struct l1ctl_dm_freq_req *) msgb_put(msg, sizeof(*req)); + req->fn = htons(fn); + req->tsc = tsc; + req->h = 0; + req->h0.band_arfcn = htons(band_arfcn); + + return osmo_send_l1(ms, msg); +} + +int l1ctl_tx_dm_freq_req_h1(struct osmocom_ms *ms, uint8_t maio, uint8_t hsn, + uint16_t *ma, uint8_t ma_len, + uint8_t tsc, uint16_t fn) +{ + struct msgb *msg; + struct l1ctl_info_ul *ul; + struct l1ctl_dm_freq_req *req; + int i; + + msg = osmo_l1_alloc(L1CTL_DM_FREQ_REQ); + if (!msg) + return -1; + + printf("Tx Dedic.Mode Freq Req (maio=%u, hsn=%u, " + "fn=%d)\n", maio, hsn, fn); + + ul = (struct l1ctl_info_ul *) msgb_put(msg, sizeof(*ul)); + ul->chan_nr = 0; + ul->link_id = 0; + + req = (struct l1ctl_dm_freq_req *) msgb_put(msg, sizeof(*req)); + req->fn = htons(fn); + req->tsc = tsc; + req->h = 1; + req->h1.maio = maio; + req->h1.hsn = hsn; + req->h1.n = ma_len; + for (i = 0; i < ma_len; i++) + req->h1.ma[i] = htons(ma[i]); + + return osmo_send_l1(ms, msg); +} + /* Transmit L1CTL_DM_REL_REQ */ int l1ctl_tx_dm_rel_req(struct osmocom_ms *ms) { -- cgit v1.2.3