summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/src
diff options
context:
space:
mode:
authorAlex Badea <vamposdecampos@gmail.com>2013-01-03 13:25:05 +0200
committerSylvain Munaut <tnt@246tNt.com>2013-01-06 00:47:59 +0100
commit147103ce0144aeb2cfd93ed3afdddec73aadff8c (patch)
tree849816595320ef0065f6d0eee41853ef98f9abb2 /src/host/layer23/src
parent9ed9aac023ab4fb9f8fa12d3ef3b8d2bb6da9712 (diff)
l1: add CBCH flag to dedicated mode
Add a .dm_flags member to struct l1ctl_dm_est_req. Define a flag bit to indicate CBCH mode. If set, this instructs L1 to use the CBCH variant of SDCCH for dedicated mode (no uplink, no SACCH). Add the new dm_flags field to l1ctl_tx_dm_est_req* API calls. Clear it everywhere, except for app_cbch_sniff which requests CBCH. Signed-off-by: Alex Badea <vamposdecampos@gmail.com>
Diffstat (limited to 'src/host/layer23/src')
-rw-r--r--src/host/layer23/src/common/l1ctl.c6
-rw-r--r--src/host/layer23/src/misc/app_cbch_sniff.c4
-rw-r--r--src/host/layer23/src/mobile/gsm48_rr.c4
3 files changed, 8 insertions, 6 deletions
diff --git a/src/host/layer23/src/common/l1ctl.c b/src/host/layer23/src/common/l1ctl.c
index 5898b227..74320852 100644
--- a/src/host/layer23/src/common/l1ctl.c
+++ b/src/host/layer23/src/common/l1ctl.c
@@ -461,7 +461,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, uint8_t dm_flags)
{
struct msgb *msg;
struct l1ctl_info_ul *ul;
@@ -484,6 +484,7 @@ 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->dm_flags = dm_flags;
return osmo_send_l1(ms, msg);
}
@@ -491,7 +492,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, uint8_t dm_flags)
{
struct msgb *msg;
struct l1ctl_info_ul *ul;
@@ -519,6 +520,7 @@ 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->dm_flags = dm_flags;
return osmo_send_l1(ms, msg);
}
diff --git a/src/host/layer23/src/misc/app_cbch_sniff.c b/src/host/layer23/src/misc/app_cbch_sniff.c
index 8256eaf6..a62dd7c9 100644
--- a/src/host/layer23/src/misc/app_cbch_sniff.c
+++ b/src/host/layer23/src/misc/app_cbch_sniff.c
@@ -57,12 +57,12 @@ static int try_cbch(struct osmocom_ms *ms, struct gsm48_sysinfo *s)
return l1ctl_tx_dm_est_req_h1(ms,
s->maio, s->hsn, s->hopping, s->hopp_len,
s->chan_nr, s->tsc,
- GSM48_CMODE_SIGN, 0);
+ GSM48_CMODE_SIGN, 0, L1CTL_DM_F_CBCH);
} else {
LOGP(DRR, LOGL_INFO, "chan_nr = 0x%02x TSC = %d ARFCN = %d\n",
s->chan_nr, s->tsc, s->arfcn);
return l1ctl_tx_dm_est_req_h0(ms, s->arfcn,
- s->chan_nr, s->tsc, GSM48_CMODE_SIGN, 0);
+ s->chan_nr, s->tsc, GSM48_CMODE_SIGN, 0, L1CTL_DM_F_CBCH);
}
}
diff --git a/src/host/layer23/src/mobile/gsm48_rr.c b/src/host/layer23/src/mobile/gsm48_rr.c
index 3d15494a..a21758c0 100644
--- a/src/host/layer23/src/mobile/gsm48_rr.c
+++ b/src/host/layer23/src/mobile/gsm48_rr.c
@@ -3002,10 +3002,10 @@ static int gsm48_rr_activate_channel(struct osmocom_ms *ms,
if (cd->h)
l1ctl_tx_dm_est_req_h1(ms, cd->maio, cd->hsn,
ma, ma_len, cd->chan_nr, cd->tsc, cd->mode,
- rr->audio_mode);
+ rr->audio_mode, 0);
else
l1ctl_tx_dm_est_req_h0(ms, cd->arfcn, cd->chan_nr, cd->tsc,
- cd->mode, rr->audio_mode);
+ cd->mode, rr->audio_mode, 0);
rr->dm_est = 1;
/* old SI 5/6 are not valid on a new dedicated channel */