diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-02-26 18:56:18 +0100 |
---|---|---|
committer | Steve Markgraf <steve@steve-m.de> | 2021-10-23 18:51:19 +0200 |
commit | aad1256be76ba7f5bf58757cba224bcac130c112 (patch) | |
tree | b96ff789abb3674e1a78576e230fe6a0f3a3d7e4 | |
parent | 7836dae7a2a081155737c7988065da7bd9b31833 (diff) |
Add gain support to transceiver application
To alter default gain of 0, the gain can be altered by using SETRXGAIN
control command.
Please use a gain of 0, for normal use.
-rw-r--r-- | src/host/layer23/src/transceiver/l1ctl.c | 8 | ||||
-rw-r--r-- | src/host/layer23/src/transceiver/l1ctl.h | 2 | ||||
-rw-r--r-- | src/host/layer23/src/transceiver/trx.c | 14 | ||||
-rw-r--r-- | src/host/layer23/src/transceiver/trx.h | 1 |
4 files changed, 19 insertions, 6 deletions
diff --git a/src/host/layer23/src/transceiver/l1ctl.c b/src/host/layer23/src/transceiver/l1ctl.c index e4cda24d..0c66f128 100644 --- a/src/host/layer23/src/transceiver/l1ctl.c +++ b/src/host/layer23/src/transceiver/l1ctl.c @@ -113,7 +113,8 @@ l1ctl_tx_fbsb_req(struct l1ctl_link *l1l, int l1ctl_tx_bts_mode(struct l1ctl_link *l1l, - uint8_t enabled, uint8_t bsic, uint16_t band_arfcn) + uint8_t enabled, uint8_t bsic, uint16_t band_arfcn, + int gain) { struct msgb *msg; struct l1ctl_bts_mode *be; @@ -122,13 +123,14 @@ l1ctl_tx_bts_mode(struct l1ctl_link *l1l, if (!msg) return -1; - LOGP(DL1C, LOGL_INFO, "BTS Mode (enabled=%u, bsic=%u, arfcn=%u)\n", - enabled, bsic, band_arfcn); + LOGP(DL1C, LOGL_INFO, "BTS Mode (enabled=%u, bsic=%u, arfcn=%u " + "gain=%d)\n", enabled, bsic, band_arfcn, gain); be = (struct l1ctl_bts_mode *) msgb_put(msg, sizeof(*be)); be->enabled = enabled; be->bsic = bsic; be->band_arfcn = htons(band_arfcn); + be->gain = gain; return l1l_send(l1l, msg); } diff --git a/src/host/layer23/src/transceiver/l1ctl.h b/src/host/layer23/src/transceiver/l1ctl.h index da7769d2..9856fc2f 100644 --- a/src/host/layer23/src/transceiver/l1ctl.h +++ b/src/host/layer23/src/transceiver/l1ctl.h @@ -39,7 +39,7 @@ int l1ctl_tx_fbsb_req(struct l1ctl_link *l1l, uint16_t arfcn, uint8_t flags, uint16_t timeout, uint8_t sync_info_idx, uint8_t ccch_mode); int l1ctl_tx_bts_mode(struct l1ctl_link *l1l, - uint8_t enabled, uint8_t bsic, uint16_t band_arfcn); + uint8_t enabled, uint8_t bsic, uint16_t band_arfcn, int gain); int l1ctl_tx_bts_burst_req(struct l1ctl_link *l1l, uint32_t fn, uint8_t tn, struct burst_data *burst); diff --git a/src/host/layer23/src/transceiver/trx.c b/src/host/layer23/src/transceiver/trx.c index 9149b7ca..ae21344d 100644 --- a/src/host/layer23/src/transceiver/trx.c +++ b/src/host/layer23/src/transceiver/trx.c @@ -128,6 +128,7 @@ trx_alloc(const char *addr, uint16_t base_port, struct l1ctl_link *l1l) /* Init */ trx->arfcn = ARFCN_INVAL; trx->bsic = BSIC_INVAL; + trx->gain = 0; /* Best test results for broadest range of RX levels */ /* L1 link */ trx->l1l = l1l; @@ -227,7 +228,7 @@ _trx_ctrl_send_resp(struct trx *trx, const char *cmd, const char *fmt, ...) static int _trx_ctrl_cmd_poweroff(struct trx *trx, const char *cmd, const char *args) { - l1ctl_tx_bts_mode(trx->l1l, 0, 0, 0); + l1ctl_tx_bts_mode(trx->l1l, 0, 0, 0, 0); return _trx_ctrl_send_resp(trx, cmd, "%d", 0); } @@ -242,7 +243,7 @@ _trx_ctrl_cmd_poweron(struct trx *trx, const char *cmd, const char *args) "TRX received POWERON when not fully configured\n"); rv = -EINVAL; } else { - rv = l1ctl_tx_bts_mode(trx->l1l, 1, trx->bsic, trx->arfcn); + rv = l1ctl_tx_bts_mode(trx->l1l, 1, trx->bsic, trx->arfcn, trx->gain); } return _trx_ctrl_send_resp(trx, cmd, "%d", rv); @@ -278,6 +279,15 @@ _trx_ctrl_cmd_setrxgain(struct trx *trx, const char *cmd, const char *args) { int db = atoi(args); + if (db < 0 || db > 63) { + LOGP(DTRX, LOGL_ERROR, "Invalid gain received\n"); + return _trx_ctrl_send_resp(trx, cmd, "%d %d", -1, db); + } + + trx->gain = db; + + l1ctl_tx_bts_mode(trx->l1l, 1, trx->bsic, trx->arfcn, trx->gain); + return _trx_ctrl_send_resp(trx, cmd, "%d %d", 0, db); } diff --git a/src/host/layer23/src/transceiver/trx.h b/src/host/layer23/src/transceiver/trx.h index 0571cab2..19e02fcf 100644 --- a/src/host/layer23/src/transceiver/trx.h +++ b/src/host/layer23/src/transceiver/trx.h @@ -50,6 +50,7 @@ struct trx { /* TRX configuration */ uint16_t arfcn; uint8_t bsic; + int gain; }; |