Age | Commit message (Collapse) | Author | Files | Lines |
|
In l1sap_ph_rts_ind(), l1sap_ph_data_ind() and to_gsmtap(), the decision
to handle a TS as PDCH was still missing for dynamic TS.
It is not yet clear why this did not impact functionality for dynamic timeslots
on other BTS models. AFAICT they should not work without this patch, but in
fact they do. It would be nice to clarify this some day.
Change-Id: I7b873a089a3de70d980885a7539cb91997464743
|
|
The error was introduced in 61372a20de695a151611753689ee9a3018b101f6.
Change-Id: I9585eec018b88c5d0548a0a55fa4130bb26aa5b6
|
|
Due to missing runtime cmd patching DSP tracing was not possible at phy
level of config file. No it is possible to specify it as follows:
...
phy 0
instance 0
dsp-trace-flag debug
dsp-trace-flag mph_cnf
...
Change-Id: Ibbbf81d2c4b5d3adbcbc1f08a844d262e603e571
|
|
Since the osmo_unixsock_listen() was moved to libosmocore
it would be better to use the library's implementation
instead of reinventing the wheel again.
Change-Id: Id5828649d44ef11e70946793696b0d689d6b35e3
|
|
Change was in 334df9441a44de00c0dd3f66e73ac6fae28098fb
"cosmetic: clarify TCH/F_PDCH related naming and comments"
Change-Id: If3e353ea5796ee129bdd95e5f954e6c141cffec8
|
|
So far PTCCH was activated for DL but not for UL. Fix it.
Change-Id: I4fb5ecdfff1a6b8e8d77f561a9cf780f8e116f4d
Related: OS#1545
|
|
Existing interfaces are coded with the implicit expectation of using
a burst sequence length of 148, which is constant with GSM and GPRS.
That changes with EGPRS, where the burst length may be 444 due to
the use of 8-PSK instead of GMSK modulation.
Setup the interface to accept and return a length value with the
burst sequence. This allows 444 length bit vectors to/from the
EGPRS decoder/encoder. Length is explicitly used as a identifier for
8-PSK vs. GMSK modulated sequences.
Change-Id: I90b46b46b11b6ce280e7f8232d5a2fccec2d4f18
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
|
|
Handles uplink decoding and downlink encoding procedures for MCS 1-9.
Includes Type 1, 2, and 3 headers and tables from 3GPP TS 44.060 in
order to independently recover coding and puncturing scheme (CPS)
parameters for each coded message.
Change-Id: I0f059ae34c6f36179553cbc972f8becf8179eb55
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
|
|
Addition of GSM_PCHAN_TCH_F_TCH_H_PDCH should have added these assertions.
They clarify that only 'real' pchan types are expected in this function.
Change-Id: Ifd4b6820861ef716237e7eeed149b2add9e7d485
|
|
Change-Id: Icdb193ec6dbb95cf0c3e441c196b309aa599efe6
|
|
Change-Id: I053766452ee01bed6136a9742551c664666a7989
|
|
For chan_nr_by_sapi(), add GSM_PCHAN_TCH_F_TCH_H_PDCH to pick_pchan().
Add GSM_PCHAN_TCH_F_TCH_H_PDCH to pchan_to_logChComb[] for first pchan
initialization.
In ts_connect_as(), make sure that callers pass proper "real world" pchan
types, i.e. reject the "meta" GSM_PCHAN_TCH_F_TCH_H_PDCH pchan constant.
In ts_opstart(), connect as PCHAN_NONE since we will only know the desired
pchan when the first RSL chan activ is received.
Add GSM_PCHAN_TCH_F_TCH_H_PDCH to lchan_to_GsmL1_SubCh_t(), by using its
current "real" pchan mode.
Call cb_ts_[dis]connected() unconditionally, i.e. not only for TCH_F_PDCH when
a pending flag is set. The cb_ts_[dis]connected() will be a no-op if the pchan
type is not dynamic.
Change-Id: Ie30323f968da25027045c42a7ae7f1e70ca711ae
|
|
ts_connect() is only called during OPSTART. Name it such because a special
case for OPSTART will be added there for dyn TS.
Change-Id: Iba6880d94142096a8371b08f7404035912cadbb0
|
|
For chan_nr_by_sapi(), add GSM_PCHAN_TCH_F_TCH_H_PDCH to pick_pchan().
Add GSM_PCHAN_TCH_F_TCH_H_PDCH to pchan_to_logChComb[] for first pchan
initialization.
In ts_connect_as(), make sure that callers pass proper "real world" pchan
types, i.e. reject the "meta" GSM_PCHAN_TCH_F_TCH_H_PDCH pchan constant.
In ts_opstart(), connect as PCHAN_NONE since we will only know the desired
pchan when the first RSL chan activ is received.
Add GSM_PCHAN_TCH_F_TCH_H_PDCH to lchan_to_GsmL1_SubCh_t(), by using its
current "real" pchan mode.
Call cb_ts_[dis]connected() unconditionally, i.e. not only for TCH_F_PDCH when
a pending flag is set. The cb_ts_[dis]connected() will be a no-op if the pchan
type is not dynamic.
Change-Id: Iaffd2fc0aa9fc6c4a2acbc534ce6384392e0635b
|
|
ts_connect() is only called during OPSTART. Name it such because a special
case for OPSTART will be added there for dyn TS.
Change-Id: I09cc81e79661e8084aeebf8132435c207b2cf422
|
|
common/l1sap: For dyn TS, the BSC will issue RSL Chan Activ requests with a
non-standard chan_nr. While the rest of the code now understands that, the L1
phy will not. Translate to standard PDCH (== TCH/F).
common/oml: use dyn TS' current pchan mode for lchans config.
common/pcu_sock: detect desired PDCH mode of dyn TS.
common/rsl: implement reconnection chain of a TS for changing its pchan:
* rsl_rx_chan_activ():
** Add dyn_pchan_from_chan_nr() to derive the requested pchan from the RSL
chan_nr IE.
** Notice the need for a pchan change and invoke dyn_ts_l1_reconnect() (s.b.)
** Make Chan Mode IE presence optional, because the non-standard PDCH
activation message is simpler and does not require it.
** Do PDCH activation via PCU.
* Add dyn_ts_l1_reconnect(): store state and disconnect the L1 channel;
then wait for cb_ts_disconnected().
* Add osmo_dyn_ts_disconnected() to cb_ts_disconnected():
verify state and connect with the new pchan type; then wait for
cb_ts_connected().
* Add osmo_dyn_ts_connected() to cb_ts_connected(), which re-issues
the cached chan activation message from before disconnecting the L1 channel.
* Also send an rf chan rel/act ack for dyn TS upon PDCH de/act via PCU.
* Add dyn_ts_pdch_release(): on channel release of a dyn TS in PDCH mode,
release via the PCU. Call from rsl_rx_rd_chan_rel().
Change-Id: I463bb6b4e57674f091c3badba9257374961c52c7
|
|
lchan_lookup in openbsc abis_rsl.c and rsl_lchan_lookup() rsl.c are the
same code, except for the log context, which is only set in abis_rsl.c.
The common code was factored out to gsm_data_shared.c in openbsc.git.
Use the *rc return code argument to keep the logging part in the newly
introduced thin wrapper lchan_lookup() in common/rsl.c. This also removes code
dup for logging
The rsl_lchan_lookup() implementation is removed from osmo-bts, so a recent
openbsc is needed to build this.
Change-Id: Ibc469b75e31560271be8633d524366442d27e6fb
|
|
Includes EGPRS specific convolutional codes, interleaving tables
and functions, burst mappings, training sequences, and parity
checks from 3GPP TS 44.060 needed to handle MCS codings 1-9.
Change-Id: Ie270398dd7a72f282ba53e646853d8de1eabee93
Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
|
|
Move the actual switch from static conf_lchans_for_pchan() into new 'public'
function conf_lchans_as_pchan(), adding an explicit pchan argument. This allows
passing a non-trivial pchan, for dynamic TS.
conf_lchans_as_pchan() now takes a pchan argument, so distinguish the naming
and drop the 'for_pchan' from conf_lchans_for_pchan(), which takes only a ts
argument.
Change-Id: I8e458501fff5503c243512aeb3469c12b1f2bbc4
|
|
For ip.access dyn PDCH, call conf_lchans_as_pchan() instead of dup'ing the
pchan-to-lchan switch.
Change-Id: I979828e08953e83ae579a347334536f52939faf0
|
|
Change-Id: I285fdff8260f008d856b9cda811e9fbb936893eb
|
|
Change-Id: If29895de238e586b8298d84b6f0b41e08bea8c91
|
|
The only caller dtx_sched_optional() passes const arrays and a warning was
issued.
Change-Id: I18e0788ef96489d2116a60cae57bd516fe6eae8e
|
|
The function checks whether to switch a TS to/from PDCH, not whether it already
is PDCH.
Change-Id: Ib4036445d09792636bb2f1a8a665b6b28f32e1a0
|
|
We're about to introduce a new kind of dynamic channel, which will also use
parts of the ip.access mode dyn PDCH code paths. Make sure the general parts
have general names and mark ip.access specific parts as such.
Rename dyn_pdch_ts_[dis]connected() to cb_ts_[dis]connected().
Rename dyn_pdch_complete to ipacc_dyn_pdch_complete().
From cb_ts_[dis]connected(), factor out the current code into static
functions ipacc_dyn_pdch_[dis]connected() -- this will make sense once the
new dynamic kind is added to cb_ts_[dis]connected().
Change-Id: I7da5b7cb7b48572671f50e0dec97d9eec3083df1
|
|
The function checks whether to switch a TS to/from PDCH, not whether it already
is PDCH.
Change-Id: Ib4036445d09792636bb2f1a8a665b6b28f32e1a0
|
|
The only caller dtx_sched_optional() passes const arrays and a warning was
issued.
Change-Id: I18e0788ef96489d2116a60cae57bd516fe6eae8e
|
|
Change-Id: If29895de238e586b8298d84b6f0b41e08bea8c91
|
|
Change-Id: I285fdff8260f008d856b9cda811e9fbb936893eb
|
|
Also remove related cruft: .gitignore, msc-README and adjust an in-code
comment that referenced dyn_pdch.msc.
Change-Id: Ie41a453bb5070c1f18793f646dc053a978f43fba
|
|
Change-Id: I6b833b21d2bbbd45dfed6a094a674359762d02b7
Related: OS#1545
|
|
When receiving an OPSTART for the BTS object, also set the availability state
to OK.
Before, the availability would remain at NM_AVSTATE_DEPENDENCY, which caused an
unfortunate chain reaction resulting in osmo-bts-trx going through the
initialization sequence twice:
BTS BSC
|<-----| SITE_MANAGER OPSTART
n |----->| BTS state change: OPSTATE_DISABLED, AVSTATE_DEPENDENCY
o | | This signals to nm_statechg_event() in bts_ipaccess_nanobts.c
r | | to (a) Set BTS Attributes and (b) send BTS OPSTART
m |<-----| Set BTS Attributes (a)
a | | When osmo-bts-trx receives a Set BTS Attributes, it sends
l |----->| CHANNEL state change: OPSTATE_DISABLED x8
| | This signals the BSC to Set CHANNEL Attributes and OPSTART
i |<-----| Set CHANNEL Attributes x8
n |<-----| CHANNEL OPSTART x8
i |----->| CHANNEL state change: OPSTATE_ENABLED, AVSTATE_OK x8
t | |
|<-----| BTS OPSTART (b)
| | osmo-bts-trx immediately replies with:
|----->| BTS state change: OPSTATE_ENABLED, AVSTATE_DEPENDENCY
| | Unfortunately, availability is left at DEPENDENCY,
| | and the NM_OC_BTS case in nm_statechg_event() only
| | checks for availability, not for the opstate.
| | Hence nm_statechg_event() again feels inclined to
| | to (a) Set BTS Attributes and (b) send BTS OPSTART,
| |
--+------+----- This is where the second round starts
| |
s |<-----| Set BTS Attributes (a)
e | | When osmo-bts-trx receives a Set BTS Attributes, it sends
c |----->| CHANNEL state change: OPSTATE_DISABLED x8
o | | All channels are disabled again, and then re-launched:
n |<-----| Set CHANNEL Attributes x8
d |<-----| CHANNEL OPSTART x8
|----->| CHANNEL state change: OPSTATE_ENABLED, AVSTATE_OK x8
| |
i |<-----| BTS OPSTART (b)
n | | osmo-bts-trx again sets the OPSTATE_ENABLED, but since
i | | this time it was already enabled, no further state change
t | | is sent back to the BSC.
This nightmare pivots on two hinges:
1. osmo-bts-trx fails to set BTS availability to AVSTATE_OK.
2. nm_statechg_event() fails to heed the OPSTATE_ENABLED of the BTS state
change.
Note, the configured channels from the first round were not actually taken
down, only the OML OPSTATE_DISABLED were sent.
In this commit, fix the osmo-bts-trx side: send AVSTATE_OK for the BTS object
upon sending OPSTATE_ENABLED, so that only the part marked "normal init" above
is run.
This change applies the same fix to other OML objects, which should make sense
in the same manner, within the current hackish OML implementation:
* NM_OC_BTS
* NM_OC_SITE_MANAGER
* NM_OC_BASEB_TRANSC
* NM_OC_GPRS_NSE
* NM_OC_GPRS_CELL
* NM_OC_GPRS_NSVC
This means that the NM_OC_CHANNEL case just above is identical, and thus
collapse NM_OC_CHANNEL onto the other cases. Drop the comments from
NM_OC_CHANNEL since they merely rephrase the commands themselves.
See OS#1770 for BTS and NITB logs.
Fixes: OS#1770
Change-Id: I08aa861f6100568c79750f4fbc9a32e1557b9304
|
|
Many erratic PDTCH blocks are expected. To not bloat the log,
notifications for this should be on debug level.
See http://lists.osmocom.org/pipermail/openbsc/2016-June/009457.html
(Thu, 30 Jun 2016 01:49:33 +0300 / Alexander Chemeris
<alexander.chemeris@gmail.com> / Re: GPRS on osmo-trx not working)
Change-Id: Ie318248aa2b8de455174e72a63c602c7aeae312c
|
|
Many erratic bursts are expected. To not bloat the log, notifications for this
should be on debug level.
See http://lists.osmocom.org/pipermail/openbsc/2016-July/009482.html
(Tue, 5 Jul 2016 15:38:27 -0700 / Tom Tsou <tom@tsou.cc>
/ Re: osmo-bts-trx error logs -- was: GPRS on osmo-trx not working)
Change-Id: If591c087ba8fd48564139e32930050ee8ab07001
|
|
Change-Id: Iea62bd98954d0219ba597613cea6db63f7a6b396
|
|
Correct the too short padding I introduced in the commit
a55b166c6c7af79cbefe8e65fe77b2d61c634d2d. The result needs to
be 121 and not 120. Add static asserts to make sure it does
not happen again.
Change-Id: I3da7f3b8d3c8e12deb8b805cd15ff52a103d4e56
|
|
Change-Id: Ia70519c8f10d55084b53acb68e57debc70549246
|
|
Back in January in commit 634c3e46484a0932f8a04b894be215b9288eecff we
changed the executable name from 'sysmobts' to 'osmo-bts-sysmo', which
is a change that has not been propagated to the contributed screenrc and
systemd init files.
Change-Id: I875a0ce4f470226e1b06ed1b7c74ca9471ebb574
|
|
* detect SID and set RTP Marker accordingly (emulate ONSET events)
* set proper FN in TCH_IND
* detect speech pause and do not send dummy 'bad' frames during that
time
Change-Id: Id518e5c667df7773c281effb9e75b66bf898f6fc
Related: OS#1750
|
|
Those functions are now part of libosmocore.
Change-Id: Iab3206e3b41caff23f656a727605032df9798953
|
|
Abstract code for checking/setting lchan's UL SID flag and RTP Marker
into generic function and use it for LC15 and sysmoBTS.
Change-Id: Ica5392e92bab29164711163e7b01adb174272883
Related: OS#1750
|
|
* Remove static qualifier
* Remove duplicated code - use generic function instead
Change-Id: I37a312648771f58d3087471083cfcebbd97ccf1d
|
|
Change-Id: Iea6bc47182d021523285aea8d3f6a93ee4eec0eb
|
|
Change-Id: I4d5d11dd89449e4c9315f963576265bccad7e68c
|
|
The file calls bts_model_* API which was yet undeclared.
Change-Id: Ib6b30d125906c3abae518fb76da3a158885e3354
|
|
The cfg_trx_nominal_power_cmd added 12 days ago in
58e4e18206501c3bffa65f0b876bbc5ebe175d6e was floating.
Actually add it to the TRX_NODE.
Change-Id: I89d638b2e2bb1fb9baeabe566035ff171f4bfad0
|
|
The function would currently only be called in cases where one of the if
branches catches on, but for safety's and clarity's sake, don't ts_connect
using as_pchan if no reconnect is pending.
Change-Id: I52c34065254e902bb80662fc04540901b36cb4c3
|
|
Analogous to 63b296bdd9a25134ee61ce6f269750e796a8bfca on osmo-bts-sysmo.
Implement bts_model_ts_disconnect() by sending an MphDisconnect message to L1.
Pass a disconnect callback to invoke dyn_pdch_ts_disconnected() in
common/rsl.c.
Implement bts_model_ts_connect() by calling ts_connect_as(). Pass a connect cb
to invoke dyn_pdch_connected() in common/rsl.c.
Change-Id: I8c8c3244c726fd6055cedb22ee11706994ff9cd4
|
|
Analogous to 57fc1124e1649fa2b08ef143697689aca4677625 on osmo-bts-sysmo.
Change-Id: If65c5a86cbc1b5556b71de8a6744d92113fbbcba
|
|
Analogous to 294fbe104b9fb12f06f7cebe68a4b7a6ed28d5ef on osmo-bts-sysmo.
For upcoming dyn PDCH switching, I want to be able to set the pchan dynamically
upon ts_connect() and not continue with OPSTART ACK, but with the dyn PDCH.
Thus recoin ts_connect(ts) to ts_connect_as(ts, pchan, cb) and leave
ts_connect() as a thin wrapper to leave init code unchanged.
Change-Id: I7a27193168f83e8c40b6e54d1842f4502d0475e5
|