aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-sysmo
AgeCommit message (Collapse)AuthorFilesLines
2017-07-05sysmo: Remove non longer valid -p option from helpPau Espin Pedrol1-1/+0
The dsp-trace-flags command line argument was removed in 9684099ae905e6e61cbc326035d0b37c480f6172 Change-Id: I8dbcdc7080ca3f7d7968aeef24422faa75d925fe
2017-07-04sysmo, litecell15: Make sure all TCH events are triggeredPau Espin Pedrol1-0/+5
Change-Id: Ie674c7ec40838af36308c6998f227fa452ace4b4
2017-07-04Use L1P instead of L1C for TCH logging and allocationPau Espin Pedrol1-13/+13
L1C is for L1-Control primitives, while TCH channels are L1 Data channels. Change-Id: I07ea3a7326bfcb62271d58deb0743311f6d97c8b
2017-07-04Revert "osmo-bts-sysmo: Include frame number in MEAS IND"Philipp Maier1-7/+2
This reverts commit 3f97e4b1fcdc788345ab7740bd4fb8a3d73f5526. Change-Id: Ib50c813c470bf6ea740fe6667431eaa1a23fdd8d
2017-06-30sysmo/tch.c: Clean up use of empty bufferPau Espin Pedrol1-3/+4
Make code easier to read and avoid reading first byte of the buffer if size is 0. Change-Id: I5ecfc4df5a3fcad3d3ad50bf3dd3db65b694481a
2017-06-29Revert "sysmobts: normalize frame number in measurement indication"Philipp Maier1-10/+2
This reverts commit 88b2cc30a6a7253c2c4c76178e5727fad48556ca. Change-Id: I30f37a9feef24a45e254377502615d717dba9765
2017-06-24osmo-bts-sysmo/l1_if.c: PH-DATA.ind belongs to L1P, not L1CHarald Welte1-1/+1
L1C is control, while L1P is data primitive. Change-Id: I5a0ef08df96a67cd25b11eb23c60934011b01c29
2017-06-22Copy sysmobts.service to osmo-bts-sysmoMax2-6/+6
This way the name of systemd service file will match the name of the binary similar to lc15. Add aliases so the user can use both old and new names regardless of which file is installed. Once the corresponding changes to OE recipes are applied old file can be removed. Based on work by Pau Espin Pedrol <pespin@sysmocom.de> Change-Id: I08615eb625d488603aeb5962ad9f30869c0e77c5
2017-06-15Set and report BTS featuresMax1-0/+5
Set (possibly incomplete) list of BTS model-specific features and report them in response to attribute request via OML. Change-Id: I5f8a6681c3562ec261441e84dde6e085b516d92f Related: OS#1614
2017-06-09sysmobts: normalize frame number in measurement indicationPhilipp Maier1-2/+10
The higher layers relay on a normalized version of frame number in order to detect the end of a measurement period. The frame number on which the measurement reports are sent may depend on the phy, so we need to normalize the frame number before we report it to the higher layers. Change-Id: I90bd01479e41f04a6b0aefe3845d071e3148d0c6
2017-06-09Re-add version to phy_instanceMax1-0/+4
This is resubmission of 9eeb0b1a136fc8c24a86cb4d832c264674c10db0 with errorneous use of talloc_asprintf() removed which should fix OS#2316. Change-Id: I02ae6fffdc808c1ea14185dbb4a720d27a62d4bb Related: OS#1614
2017-06-02Revert "Add version to phy_instance"Neels Hofmeyr1-4/+0
This reverts commit 9eeb0b1a136fc8c24a86cb4d832c264674c10db0. This commit caused osmo-gsm-tester test runs for the sysmoBTS to fail with SIGABRT consistently. See below redmine issues. In osmo-bts-sysmo/l1_if.c, it uses talloc_asprintf to write to the char version[MAX_VERSION_LENGTH]; talloc_asprintf() however is intended to work on string buffers allocated by talloc, and attempts to reallocate version[]. Furthermore, it is not clear why the patch passes a 'data' arg to app_info_sys_compl_cb() that is not used. Hence I will revert this instead of trying to fix. Please resolve issues and re-submit. Related: OS#2316 OS#1614 Change-Id: I2c9fd5e6739c1750365c0241476ce4b1aa2df3d4
2017-05-29Add version to phy_instanceMax1-0/+4
Change-Id: I5b2352b8d15e9b0d8616fcd526b4902d247e4693 Related: OS#1614
2017-05-29sysmobts: Re-order the bit-endianness of every HR codec parameterHarald Welte3-6/+57
The so-called "RTP mode" of the DSP contains a bug on all firmware versions < 5.3.3 which causes the bit-order within each of the non-aligned codec parameters to be wrong. Introduce a function originally written by Sylvain Munaut during 32C3 in http://git.osmocom.org/openbsc/commit/?h=sylvain/32c3_codec&id=5b4a16bbe93a7b1ace65cc23d6cce56ecf4f1275 to bring the bits into [the correct] order. This has never been seen in a "pure sysmoBTS" setup, as all BTSs would use the same (wrong) bit-ordering and thus interoperate. This patch now checks for an affected DSP firmware version and then jumbles (old DSP firmware version) or does nothing (new DSP firmware version). Change-Id: Ia0eee4f514fb8fd81c052bb44a4facba898d6afb Closes: SYS#2452
2017-05-29l1_if: Add inline functions to check dsp/fgpa version at runtimeHarald Welte1-0/+15
Change-Id: Iddae9c8de33aca6663dca77908fa4852ad704ce9
2017-05-29Consistently check for minimum attribute/TLV length in RSL and OMLHarald Welte1-2/+1
Make more use of TLVP_PRES_LEN() instead of plain TLVP_PRESENT() and implicitly assuming a certain length of the information element. What this obviously doesn't introduce is some kind of error generation/reporting in case the minimum length is not fulfilled. An IE that's too small is silently ignored by TLVP_PRES_LEN() and treated as if the IE wouldn't exist in the first place. Change-Id: If5c4eee65711c49bc8ba4675221b1d5fd16198e9
2017-05-29osmo-bts-sysmo: Include frame number in MEAS INDPhilipp Maier1-2/+7
l1_if.c does not generate struct osmo_phsap_prim l1sap properly. The (logical) frame number is not included in this struct. This renders the logic that processes the reported measurements non functional, since the logic (see measurement.c) is no longer able to detect the end of the measurement period. This commit fixes the problem by adding the missing frame number to the l1sap structure. Change-Id: I2bab40c30d727395eb3096026810917407419cd7
2017-05-27Implement basic Get Attribute responderMax1-0/+4
Add 3GPP TS 52.021 ยง8.11.2 Get Attribute Response handling: * report OsmoBTS version * report sysmoBTS sub-model * report OsmoBTS variant Requires I7ecb0c4339530d3a8354a2f94b34063dda87e030 in OpenBSC. Change-Id: I09f95ed995fab5def9dc6e8cc201012fba4db28d Related: OS#1614
2017-05-15Prepare for BTS attribute reporting via OMLMax5-25/+39
* move BTS model name resolution into separate function * add convenience wrappers for BTS type and number fo TRX and use then in L1 interface Change-Id: I4649100df8f1b8e095f210fc294567ba014c0b6a Related: OS#1614
2017-05-10Set BTS variant while initializing BTS modelMax1-0/+1
This will allow proper BTS attribute reporting via OML in follow-up patches. Change-Id: I1c49d6c39fb4dac7a46ee25ceacf4c6ef0f0b736 Related: OS#1614
2017-04-30sysmobts: Store a simple network config in the EEPROM as wellHolger Hans Peter Freyther4-8/+168
Make it possible to store: * Static vs. DHCP mode * IPv4 address * Netmask * GW IPv4 address * DNS IPv4 address Add a simple CRC8 and pick 0xFF as initial value so an all zero EEPROM will not generate a 0 CRC. The code tries to differentiate exit code between unreadable EEPROM and CRC error. This is a reference to see if we want to have store it in the EEPROM or not. Change-Id: Id8a37fe952ef2a8ef36778729f506f900accf8d1
2017-04-29sysmobts: Make reservation for mode/netmask/ip and sucHolger Hans Peter Freyther2-1/+16
Change-Id: Ib98856356dc296be9e449d35479bc9234c0c4d32
2017-04-06sysmobts: Don't start with 0dBm TRX output power before rampingHarald Welte1-2/+4
In case a system has a high-gain external PA (like a 40dB PA) connected externally, we cannot simply switch the transceiver to 0 dBm in trx_init() only to then start the ramping at much lower levels once the PHJ completes in trx_init_compl_cb(). The result would be a short 0 + 40 dBm spike followed by later ramping. We want to avoid that spike, particularly its associated inrush current, so let's bring up the board with smething very conservative like -50 dBm, and then ramp from there. Change-Id: I0ad91fce64f65e0213c9fcfde3390ace519055db Fixes: SYS#3259
2017-03-14Handle ctrl cmd allocation failuresMax1-18/+19
Check that ctrl command was successfully allocated before using it. Fixes: CID163884 Change-Id: Id19e1ce5fae6f936c9ed93f9a6317b57d28d7311
2017-02-24Use oml-alert CTRL command for temp reportMax4-13/+65
Send temperature reports via OML alert facility exposed by CTRL protocol. Change-Id: If29fbd0ab01fefc76e87b90cf1fbc81b2089ba76 Related: OS#1615
2017-02-14sysmobts: fully support trx_power_paramsHarald Welte4-32/+44
The simplistic approach of sysmobts_get_nominal_power() is insufficient to cope for devices that have an internal PA. The Actual transceiver board is driven to a certain level (0..23 dBm typically), and the external PA must be handled independent of that. Increasing the return value of sysmobts_get_nominal_power() would result in the sysmoBTS mainboard attempting to reach a higher power, which is wrong. This change affects sysmoBTS 1020 and 1100. It causes power-ramping to be used by default. For 1002 and 2050, no behavior change is expected. Change-Id: Ieff75d5becaa80a2097b6e744c75c2d16259c9a4
2017-02-10all models: fix vty write: bts_model_config_write_phyNeels Hofmeyr1-12/+9
The vty write for phy/inst is broken, leading to a written-out config being unparsable; fix all of these: - in common/vty.c, actually call bts_model_config_write_phy_inst(). - in sysmo and lc15 write the phy instance elements in bts_model_config_write_phy_inst() and not in bts_model_config_write_phy(), which lead to writing the members above their parent 'instance'. - sysmo, lc15 and oct omit the bts_model_config_write_phy_inst() implementation. This did not cause a compilation problem because it was in fact never called. - sysmo writes 'clock-source None' when clk_src is zero, leading to unparsable config (related: OS#1944). Instead omit the 'clock-source' when zero. - osmo-bts-trx seems to be the only part that lacks nothing, yet it also didn't work properly because bts_model_config_write_phy_inst() was never called. This problem existed since commit d784e50747b8cf0ce505489e1451f75be5ccbd4b "Introduce new phy_link and phy_instance abstraction" Change-Id: Icc54fa70045c8fa58e78cf9f788c21a437edfbd4
2017-02-07Revert "sysmobts: Add correct nominal transmit power for sysmoBTS 1020"Harald Welte1-2/+0
This reverts commit 1965b0d88082e427930f95071e992f0d9be79047, which was a premature change. The 10dB gain are not the power of the TRX board, but are due to an internal, factory mounted PA, i.e. the trx_power_params.pa. This will be introduced after adding a set of tx_power.c unit tests. Change-Id: I524b63c51fb0fe1f90ced28486a8e712f2dc50ae
2017-02-02sysmobts_eeprom.h: Fix/extend model number definitionsHarald Welte1-1/+2
Fix the model number definition for the 1020 and add the one for 1002. Change-Id: Iba4cfbbda1000d7e34eca614b3a6165d2feb65e1
2017-02-02sysmobts: Add correct nominal transmit power for sysmoBTS 1020Harald Welte1-0/+2
The sysmoBTS 1020 is a 2W BTS, hence its nominal transmit powre is 33dBm. We must handle this correctly based on the model-nr in the EEPROM. As a result, proper power ramping will be made during start of the unit by default. Change-Id: I91a78dadfd7d2e1bc74c8086808c55effdcdd132
2017-02-01Fix AMR HR DTX FSM logic.Jean-Francois Dionne2-6/+15
Fix SID_FIRST_INH detection during speech and when SID_FIRST is interrupted by FACCH. Fix SID_UPDATE_INH detection during silence and when SID_UPDATE is interrupted by FACCH. Add a delay for SID_FIRST to appear at the right time after FACCH. Fix extra byte sent in downlink for SID_FIRST and SID_UPDATE. Change-Id: Ia811305e15541f2376005df736bd610e8b0d2f69
2017-02-01DTX: fix "unexpected burst" errorJean-Francois Dionne1-0/+1
Fix error during FACCH interruption of DTX for AMR HR. Max's note: added fix for sysmobts. Change-Id: Ib064952331b4f89676ee68a3d8078b1d9debe570 Related: OS#1801
2017-01-31sysmo,lc15: fix memory leak at each call placedJean-Francois Dionne1-1/+3
Max's note: added same fix for default case and ported it to sysmobts. Change-Id: Ife1293e3238cfda16eac9c28e7e81ffe5595e031
2017-01-12lc15,sysmobts l1_if: fix memleak in handle_mph_time_ind()Jean-Francois Dionne1-0/+1
Change-Id: I3061060235a488b114b636b3af9a2253a94de1e8
2017-01-10DTX: fix SID-FIRST detectionJean-Francois Dionne1-1/+1
Max's note: made similar modification to osmo-bts-sysmo/tch.c Change-Id: I76e62783b73803dfc0d32693a68020a9d89878b8 Related: OS#1801
2017-01-04DTX AMR HR: fix inhibitionMax2-1/+6
* Unlike in AMR FR, in AMR HR incoming ONSET have to be treated differently depending on whether we've recently sent SID UPDATE or EMPTY frame. Split ST_SID_U FSM state into 2 states to accommodate for that and make sure that additional states specific to AMR HR are not used for AMR FR. * Avoid sending E_VOICE and E_SID_U in corresponding states as those do not initiate FSM state transitions anyway. This decrease extra load from FSM signalling which otherwise would be triggered on per-frame basis. * Introduce separate signal for SID First P1 -> P2 transition to avoid confusion with E_COMPL and E_SID_U initiated transitions from P1 state. * Don't init DTX FSM for SDCCH channels. Change-Id: I229ba39a38a223fada4881fc9aca35d3639371f8 Related: OS#1801
2016-12-01Fix AGCH/PCH proportional allocationMax2-18/+7
Do not assume that 1 == BS_AG_BLKS_RES but take that information from SI3. Note: due to current implementation quirks we activate channels before SI3 obtained, than we deactivate channels upon receiving SI3 and activate them again. This might not be necessary once we migrate to proper OML state machines. This affects lc15 and sysmo hw. Change-Id: I11377b12680ac3b2f77f80e742b6f0af63fc9c1e Related: OS#1575
2016-12-01Remove duplicated codeMax2-6/+4
Remove lchan deactivation related code duplication to facilitate future use for dynamic CCCH re-activation. Change-Id: Id0d3b19dbfaa16d1734321a07a6eb0355bfd77c9
2016-12-01DTX DL AMR: rewrite FSM recursionMax2-32/+32
Add explicit state for recursion (sending the different payload data in response to the RTS request for same FN) and corresponding transition. Remove ST_FACCH_V as with new explicit recursion handling it becomes unreacheable. This makes it easier to maintain preemption (interruption of current procedure due to FACCH or Inhibition). This also reduces the number of possible transitions out of each state thus reducing graph's cyclomatic complexity. Change-Id: If39b68083d23a4a35f468a5d75f54eb733ebfd14
2016-11-11Replace link_id constant with defineMax1-3/+3
Instead of using constant for link_id directly, use shared define value. Change-Id: Ibf3d439d8893bd994ba089796175b6c635db2cf8
2016-11-08DTX DL: tighten check for enabled operationMax2-4/+4
Introduce dtx_dl_amr_enabled() function which checks that DTX is enabled and FSM is allocated and use it for all corresponding checks. Change-Id: Ifa68b641265ed14f242765c85e40da2d1021a541
2016-11-03DTX fix ONSET handlingMax2-3/+2
* re-introduce ST_ONSET_F to guard from repetitive ONSET messages in case multiple FACCH occur duriing DTX silence period. * produce ONSET event after both SID FIRST and UPDATE in case of AMR FR. * always dispatch E_SID_F (SID FIRST) signal if in talkspurt. * allow E_SID_* right after ONSET (zero-length talkspurt). * add missing E_ONSET signal description. * fix FSM transitions for AMR HR *Inhibited and First P*. * fix incorrect return from l1if_tch_encode() in ONSET FACCH with incoming SID UPDATE Change-Id: I0e9033c5f169da46aed9a0d1295faff489778dcf Related: OS#1801
2016-10-28DTX DL: split ONSET state handlingMax2-8/+47
Handle ONSET cause by Voice and FACCH separately. In case of Voice we have RTP payload which we have to cache and send later on in next response to L1 RTS. FACCH have higher priority so it preempts both voice and silence alike - hence we can send ONSET immediately but still have to track previous state in order to get back to it gracefully. This affects lc15 and sysmo hw as there's no FSM-based DTX implementation for other models yet. Note: this requires patch for OpenBSC which adds FACCH buffer to tch.dtx struct. Change-Id: Idba14dcd0cb12cd7aee86391fcc152c49fcd7052 Related: OS#1802
2016-10-18Replace magic number with defineMax1-2/+3
SDCCH occupy lchan 0..3 in combined configuration so for CCCH we've always used lchan[4] - replace it with CCCH_LCHAN define and add comment. Change-Id: Ic5d742c292d638f119c6b4672120c1950adeb7f0
2016-10-14msgb ctx: use new msgb_talloc_ctx_init() in various main()sNeels Hofmeyr1-3/+1
Change-Id: I31d62d5e1f0b272985fdef5013270d385c4b988a
2016-10-13DTX DL: use FSM for AMRMax3-38/+102
Use dedicated FSM to handle all DTX DL related events: - add explicit checks if DTX DL is enabled (fixes regression for non-DTX setup introduced in 654175f33bd412671e3ef8cdd65c0689d10f278c) - fix handling of AMR CMI for SPEECH frames - add FSM for DTX DL - sync with corresponding changes in OpenBSC's - handle FACCH-related DTX ONSET events This affects both lc15 and sysmobts and requires corresponding change in OpenBSC (Change-Id: Idac8609faf9b5ced818fde899ccfc6ed0c42e8fd). Change-Id: I74a0b42cb34d525b8a70d264135e82994ca70d31
2016-10-12Move copy-pasted array into shared headerMax1-6/+0
Change-Id: I377ece2845830e3defab2d515f44b629ce5aed8e
2016-09-30DTX: send AMR voice alongside with ONSETMax3-10/+16
When ONSET event happens (either via Marker bit or due to unmarked talkspurt) we should first send Onset event to L1 and than send voice data in response to the same PH-RTS.ind. Change-Id: I2a7b89430ca49eee4a350c5f980bd6bcbc386347
2016-09-30DTX: move ONSET detection into separate functionMax1-36/+19
Move code from tch.c (lc15, sysmo) into generic function which: - check if talkspurt is happening - cache SID if necessary or invalidate cache - fill in CMR & CMI prefix This also fixes the problem when SID FIRST was cached without sending just like SID UPDATE instead of being sent right away. Change-Id: I6c7016a54749abadeef4fd4f5b6f750b256fb916
2016-09-30DTX: further AMR SID cache fixes (lc15, sysmo)Max1-82/+33
* consolidate AMR CMR and CMI handling in common/amr.c * use it in save_last_sid() * remove dead code * properly compute RTP payload length for AMR * use save_last_sid() for FR & HR as well * invalidate cached SID if SPEECH frame is received Fixes: OS #1800, #1801 Change-Id: I5a1c1ad0b0a295a50e67775a4db85f1d331755ed