aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2013-11-27sysmobts: Make the eeprom/nominal power reading backward compatibleHolger Hans Peter Freyther1-3/+3
There are existing deployments where the EEPROM either contains a wrong value and/or the kernel can not be updated to support the different EEPROM of revD. Revert to the old behavior that if no nominal can be derived from the model_nr we assume that it is 23.
2013-11-27sysmobts: Print the model number that is not supported.Holger Hans Peter Freyther1-0/+5
When using an old kernel on revD hardware we will read garabge from the EEPROM and it is nice for debugging to see which model number has been picked.
2013-11-27bts: Fix typos in the log messagesHolger Hans Peter Freyther3-3/+3
2013-11-27bts: Fix a typo in the log messageHolger Hans Peter Freyther1-1/+1
2013-11-14rsl: Rename abis_rsl_sendmsg to avoid symbol clash with libosmo-abisHolger Hans Peter Freyther3-21/+21
Nicolas ended up with linker issues due abis_rsl_sendmsg being defined twice. Rename our version of the function and update the code. Patched with: @i@ expression E; @@ - abis_rsl_sendmsg(E) + abis_bts_rsl_sendmsg(E)
2013-11-05sysmobts: Notify the BSC about all muted lchansJacob Erlbeck1-0/+30
Currently it takes some time (around 30s) until it is detected that the radio link is down after mute. Not till then the BSC is informed and the call terminated. This patch modifies this behaviour by sending a RSL_MT_CONN_FAIL message with cause RSL_ERR_RADIO_LINK_FAIL for each muted and active lchan immediately after the corresponding Change Administrative State Request has been acknowledged. Ticket: OW#976 Sponsored-by: On-Waves ehf
2013-11-05sysmobts: Only set RC state to LOCK if all channels are mutedJacob Erlbeck1-2/+8
Currently only mute_state[0] (refers to ts[0]) is inspected to determine, whether the Radio Carrier's state is set to LOCK. This patch changes this by looking at all channels and using LOCK if (and only if) all channels have been muted successfully. Sponsored-by: On-Waves ehf
2013-11-05sysmobts: Use status flags instead of direct LED accessJacob Erlbeck3-3/+36
Currently the LEDs are being accessed directly from within the l1_if.c file. So the handling of rf mute and activate/deactivate both access LED_RF_ACTIVE directly. This may lead to an inconsistent LED status. This patch replaces these calls to sysmobts_led_set() by an abstract equivalent bts_update_status(), that uses a set of independant status ids. The associated values can than be combined into a visible LED status. Currently LED_RF_ACTIVE is on iff BTS_STATUS_RF_ACTIVE is set and BTS_STATUS_RF_MUTE is not set. Sponsored-by: On-Waves ehf
2013-11-05sysmobts: Do a RF mute when Radio Carrier is lockedJacob Erlbeck3-4/+72
Currently a Change Administrative State Request is just applied unconditionally to the object's state object and then acknowledged. This patch implements the special handling of setting the Radio Carriers state to LOCK or UNLOCK. This is done by passing the appropriate mute command to the L1 layer. Always all radio channels are affected, it is not possible to lock single radio channels. On success, an ACK is sent back to the bsc with the new state (based on the state passed in the callback by the L1 layer). If something went wrong or the firmware doesn't support RF mute, a NACK (REQ_NOT_GRANTED) is sent instead. Note that a NACK for such a request hasn't been sent by the BTS to the BSC yet, so (albeit it's spec conformant to do so) the BSC must be prepared to handle this correctly. Ticket: OW#976 Sponsored-by: On-Waves ehf
2013-11-05sysmobts: Add L1 support for the new RF mute requestJacob Erlbeck4-0/+63
This adds a new function l1if_mute_rf(femtol1_hdl, ch_mute[8]) to set the mute state for each radio channel. On completion and iff l1if_mute_rf() returned 0 the callback oml_mo_rf_lock_chg(mo, ch_mute_state[8], success) is invoked when the response from the superfemto DSP is received. Ticket: OW#976 Sponsored-by: On-Waves ehf
2013-11-05sysmobts: Add mappings for MuteRfReq/MuteRfCnfJacob Erlbeck1-0/+11
This add the mappings for SuperFemto_PrimId_MuteRfReq and SuperFemto_PrimId_MuteRfCnf to the arrays femtobts_sysprim_type, femtobts_sysprim_names, and femtobts_sysprim_req2conf. Sponsored-by: On-Waves ehf
2013-11-05sysmobts: Add L1P_T_INVALID to l1prim_typeJacob Erlbeck2-0/+11
Currently uninitialized elements of the femtobts_sysprim_type array are mistaken as L1P_T_REQ (which is accidently the first element and thus 0). This patch adds a new element to the enum that has the value 0 to detect uninitialized elements of the femtobts_sysprim_type array. Those will then show up in the log as 'SYS Prim XXX is not a Request!'. This patch also adds missing definitions of the CalibTbl messages in the femtobts_sysprim_type mapping so that the requests can still be identified as such. Sponsored-by: On-Waves ehf
2013-10-31pcu: Exit the PCU in case of loss of the sysmobts connectionHolger Hans Peter Freyther1-1/+1
The PCU is not capable of cleaning up properly. For now simply exit the PCU in case the sysmobts has exited. This requires osmo-pcu a30f47613abb7c22a26d534d66e478265a8c2c09 or later.
2013-10-28sysmobts calibration: Load further tables even if one failsHarald Welte1-1/+11
Even if one calibration table cannot be loaded, continue to try to load the other tables, instead of aborting very early.
2013-10-28sysmobts calibration: skip bands not supported by L1Harald Welte3-5/+43
If L1 tells us that a certain band is not supported, then there is no point in even trying to read+load calibration tables from EEPROM or files.
2013-10-28sysmbts calibration: print error if we fail to read from EEPROMHarald Welte1-2/+10
2013-10-25rsl/pcu: Do not send a CHAN ACT to the BSC on PCU usageHolger Hans Peter Freyther3-0/+30
The PCU is forcing the activation of a PDCH. Currently the BSC will receive a channel act ack for a channel that was not activated at all. Use the "release_reason" flag of the lchan to see if we have requested a normal activation or a silent one. It feels a bit odd to do it in the TX function but it is the most easy solution right now. I have added logging so it will not be totally silent.
2013-10-25lchan: Print the name of the channel already in release requestHolger Hans Peter Freyther1-1/+5
2013-10-10sysmobts: Fix the unit test after the internal band changesHolger Hans Peter Freyther1-4/+15
2013-10-10sysmobts: Attempt to fix the compilation for the v1 hardwareHolger Hans Peter Freyther1-0/+4
2013-10-10misc: Fix resource leak when the ioctl is failingHolger Hans Peter Freyther1-2/+2
Fixes: Coverity CID 1040759
2013-10-09sysmobts: Permit local override of transmit power above 23 dBmHarald Welte1-1/+1
This is used in the sysmoBTS 2050, where the maximum power is 40 dBm We might want to add a safeguard of some kind to prevent people from overdriving their transmitters.
2013-10-09sysmobts: don't call sysmobts_get_nominal_power() twiceHarald Welte1-1/+1
... no need for that
2013-10-09sysmobts: make L1 power configurableHarald Welte1-0/+18
The TRX nominal output power (as seen by OML) is the aggregate power of any gain internal to the sysmoBTS (and managed by L1) and any external PA. This is what is used in trx->nominal_power; fl1h->l1_power is the transmit power to which we configure the sysmoBTS L1. This is 23 dBm (200mW) by default in the sysmoBTS 1002, and 40 dBm (5W) in the sysmoBTS 2050. However, if sysmoBTS 2050 is used in single-TRX configuration, it may be used with higher power, which we can now configure in the config file / vty. TODO: A separate, additional field that keeps track of any gain added by an external PA, e.g. if the sysmoBTS 1002 is used with a sysmoAMP.
2013-10-09sysmobts: Don't use the clock calibration value on external clocksHarald Welte1-3/+21
If the clock is provided by an external (like GPS) clock, we should not use the calibration value. The latter is only used in context of the OCXO or VCTCXO.
2013-10-09sysmobts: Set nominal transmit power depending on sysmoBTS modelHarald Welte3-1/+32
This enables the use of up to 5W for each TRX in a sysmoBTS 2050.
2013-10-09Do not attempt to initialize L1 with a band unsupported by hardwareHarald Welte3-11/+21
If the EEPROM tells us that a given unit doesn't support a given band, we shouldn't try to use it, even if the BSC tells us to use an ARFCN in such an unsupported band. The reason is simple: The given BTS unit might have band specific filter / duplexer / PA.
2013-10-09sysmobts: Read supported bands from EEPROMHarald Welte1-2/+21
...rather than assuming that any v2 hardware supports all bands.
2013-10-06Merge branch 'shared/libosmo-abis-late-init'Holger Hans Peter Freyther12-498/+211
2013-10-06abis: delay l1if_reset() until OML link is establishedHarald Welte4-3/+15
2013-10-06abis: Use OML remote (BSC) address if RSL CONNECT contains no IPHarald Welte4-7/+25
This introduces a new get_signlink_remote_ip() function whcih we also use in the RSL code to determine the RTP remote address if the CRCX/MDCX contains no remote IP address IE.
2013-10-06Call e1inp_vty_init() to make abis interface accessible from VTYHarald Welte1-0/+1
It might not be particularly useful, but then there's no disadvantage either...
2013-10-06migrate away from our own abis.c code to libosmoabisHarald Welte10-497/+179
libosmoabis has a BTS-side implementation of the IPA protocol for years, and osmo-bts should have used that all the time. Unfortunately it had its own local hack, this patch is migrating to the libosmocore implementation.
2013-10-04Use GPS as default clock source on sysmoBTS 2050Harald Welte3-3/+41
2013-10-04add sysmobts-util command-line utility to read/write EEPROM parametersHarald Welte2-1/+132
2013-10-04sysmobts_par: add value_string definitions for parametersHarald Welte2-1/+18
2013-10-04sysmobts_par: Implement new EEPROM parameters (trx_nr, model_nr, model_flags)Harald Welte2-0/+21
2013-10-04sysmobts_par: support for negative parametersHarald Welte3-23/+23
by splitting the rerutn code/status from the actual value, we support negative values to be stored in the EEPROM
2013-10-04EEPROM: add model_nr, model_flags and trx_nr to EEPROMHarald Welte1-1/+9
2013-09-03Remove obsolete osmo-bts-bb codeAndreas Eversberg5-529/+1
2013-07-26sysmobts-calib: For gps the sign/difference appears to be differentHolger Hans Peter Freyther1-0/+10
For the sysmoBTS 2050 this appears to have a different sign. We can't test this with NWL right now so we will need to see if this is a case of ping/pong.
2013-07-16sysmobts: Set the clock calibration to the value read from the eepromNicolas J. Bouliane4-1/+50
By default read the clock calibration from the EEPROM. It is still possible to set it using the cli. Signed-off-by: Nicolas J. Bouliane <nicolas.bouliane@nutaq.com>
2013-07-16calib: The call to fscanf can fail and we should check the return valueHolger Hans Peter Freyther1-4/+14
Coverity wants us to check that fscanf has scanned the amount of variables we want to have. Initialize the scan result to 0/0.0f and warn if the scan has failed. Fixes: Coverity CID 1040774, CID 1040773
2013-07-16eeprom: Check the return value of the fseek in all callsHolger Hans Peter Freyther1-3/+20
Coverity insists that we should check the return value of the calls to fseek. In general this is a good idea. Fixes: Coverity CID 1040770, CID 1040771, CID 1040772
2013-07-16eeprom: After eeprom_write g_file could point to a closed fileHolger Hans Peter Freyther1-0/+1
Calling eeprom_write would either re-use g_file or newly open the file and set g_file but it will close the file as well. This will lead to other code using fseek/fread on a closed file. On top of that the general rule for the eeprom code now is that read and write may not be mixed (due caching and other bits).
2013-07-16oml: Remove the unused nofh variable from oml_mo_tx_sw_act_repHolger Hans Peter Freyther1-3/+1
The variable was assigned but nothing was done with it, just remove it for now. Fixes: Coverity CID 1040758
2013-07-09rsl: Fix the audio handling after the 'alignment' handling fixHolger Hans Peter Freyther1-26/+21
The issue got introduced in fcdba6bfaca9e016f35fc9fa826948ec74f66121 when moving from the uint32_t pointer to a plain int. The code was now like this: if (connect_ip > 0) { if (connect_ip == 0) lookup_ip_based_on_rsl ... Coverity detected this as logically dead code and it was breaking audio handling for the osmo-bsc case. Remove the tristate handling, the RSL behavior is that leaving out port/ip is like specifying it as zero. Fixes: Coverity CID 1040769
2013-07-09sysmobts: The code allowed a out of bounds access to temp_type_strHolger Hans Peter Freyther1-1/+1
The array has three elements but check was for > _NUM_TEMP_TYPES (3) so an access at array[3] was possible. It is unlikely to have happened due the usage of enums. Use ARRAY_SIZE and >= on the real array to avoid this problem. Fixes: Coverity CID 1040760
2013-07-04sysmobts: Cache the eeprom_Cfg_t for reading tx/rx calib dataHolger Hans Peter Freyther1-67/+75
The current code has 26 fseek/fread. Only the minority really results in a call to read. Nevertheless the time for reading during the bootstrap can take up to 7.82 seconds. Caching the header (which is already done by fopen/fread) will result in one call to fseek/fread and only consumes 0.784 seconds.
2013-07-04sysmobts: Add a method to free cached epprom resourcesHolger Hans Peter Freyther3-0/+9
Close the cached file descriptor once the calibration data is loaded and applied.