summaryrefslogtreecommitdiffstats
path: root/include/osmocom/gsm
Commit message (Collapse)AuthorAgeFilesLines
* utils: add function gsm_fn_as_gsmtime_str()Philipp Maier2017-07-111-0/+3
| | | | | | | Convert a given frame number into a printable string that displays the sub components of the frame number. Change-Id: I8015d2ded3940b01b35df7b72fc35c70c25e9926
* gsm_04_08.h: Add struct for 9.1.13b GPRS suspension requestHarald Welte2017-07-101-0/+8
| | | | Change-Id: I90113044460a6c511ced14f588876c4280d1cac7
* gsm_utils: Add osmo_dump_gsmtimePau Espin Pedrol2017-07-101-0/+3
| | | | | | Used by osmo-bts, moved from osmo-bts l1sap.c:dump_gsmtime. Change-Id: Ib5452e2c20f53006c0f6d197fb055728947125d8
* gsm_04_08/sgsn: Add another IE for internal usage in the sgsnHolger Hans Peter Freyther2017-07-091-0/+1
| | | | | | | | | The PDP charging characteristics will be returned from the PDP selection code and be used in the SGSN. It is following the same approach as the QoS and PDP addr. It is a bit of a pity that we have to define this in a different project. Change-Id: I7815c5dfd7b7fb0ea78d816ebfb3abfbf0090afe
* gsup: Add encoding/decoding for the pdp charging characteristicsHolger Hans Peter Freyther2017-07-071-0/+8
| | | | | | | | These fields can be in the ISD and the PDP Context inofmration. Store pointers to this IE in both cases. It needs to be used by the SGSN when opening a PDP context. Change-Id: Iedc7c02adcf77ca5c9545119e19c968dfbbb3e6b
* l1sap.h: Add ber10k and lqual_cb to ph_tch_paramPau Espin Pedrol2017-06-301-0/+2
| | | | | | | These fields are required in osmo-bts to do low link quality checks in a generic way. Change-Id: If4ae20c22b881e94585dad710f17b9e37f77bf82
* fix map entry and .h declaration for gsm0808_chan_type_to_speech_codec()Neels Hofmeyr2017-06-231-1/+1
| | | | | | | | | | | | Recent commit 3149b0d076477303a38df735fe579b1b06ee17b2 adds function gsm0808_chan_type_to_speech_codec() but adds a completely mismatching name in libosmogsm.map, as well as a definition with a typo in the name. Fix the entry in libosmogsm.map. Add the missing 'c' in gsm0808_utils.h Change-Id: I5a621fa5ef6b632eabbe224f3dd383eacaffb695
* doxygen: unify use of \file across the boardNeels Hofmeyr2017-06-2349-74/+121
| | | | | | | | | | | | | | | | | Considering the various styles and implications found in the sources, edit scores of files to follow the same API doc guidelines around the doxygen grouping and the \file tag. Many files now show a short description in the generated API doc that was so far only available as C comment. The guidelines and reasoning behind it is documented at https://osmocom.org/projects/cellular-infrastructure/wiki/Guidelines_for_API_documentation In some instances, remove file comments and add to the corresponding group instead, to be shared among several files (e.g. bitvec). Change-Id: Ifa70e77e90462b5eb2b0457c70fd25275910c72b
* doxygen: enable AUTOBRIEF, drop \briefNeels Hofmeyr2017-06-2314-321/+321
| | | | | | | | | | Especially for short descriptions, it is annoying to have to type \brief for every single API doc. Drop all \brief and enable the AUTOBRIEF feature of doxygen, which always takes the first sentence of an API doc as the brief description. Change-Id: I11a8a821b065a128108641a2a63fb5a2b1916e87
* cosmetic: remove API documentation strings in header filePhilipp Maier2017-06-221-24/+0
| | | | | | | | | | | | Typically we don't place comments with the function declarations in .h files. Not sure why this file has comments for each. The API doc belongs in the .c file as proper doxygen comments, and shouldn't be duplicated in the .h file. In this particular case, doxygen comments are added in the corresponding c file recently. Change-Id: I5c4cb55be5ec59a6945b1720b875c5987f1cfaad
* gsm0808: add function gsm0808_speech_codec_from_chan_type()Philipp Maier2017-06-221-0/+2
| | | | | | | | | | | | | | | | The contents of the speech codec element (struct gsm0808_speech_codec), that is also used in the speech codec list element (struct gsm0808_speech_codec_list) can be generated directly from the permitted speech parameter in the channel type field (struct gsm0808_channel_type) when full AoIP with compressed speech via RTP/UDP/IP is assumed and when the codec configuration on the air interface exactly matches the codec configuration on the IP backhaul. This patch adds a function that can be used as a helper to fill out spech codec fields by only giving a permitted speech parameter as input. Change-Id: I257c972e9fdf0dfe940a8d483447085bd62e50a2
* gsm0808: add function gsm0808_chan_type_to_speech_code()Philipp Maier2017-06-221-0/+2
| | | | | | | | | | | | The permitted speech field used in channel type element (struct gsm0808_channel_type) uses a different representation as the type field in the speech codec element (struct gsm0808_speech_codec) This patch adds a function to convert from permitted speech to speech codec type. Change-Id: Ib26a9c20864459b2baaa04f49b6e7902ba44b7cb
* gsm0808: add default speech codec configurationPhilipp Maier2017-06-221-0/+21
| | | | | | | | | In an AoIP scenario, the speech codec list field specifies the codecs used in the RTP interface. This patch adds a table with default codec configurations that match the codec configurations that are also used on the air interface. Change-Id: I9dc0165d76a022b2c1b7418bc3133407e61b7261
* gsm0808: fix AoIP speech codec element parser/generatorPhilipp Maier2017-06-221-2/+0
| | | | | | | | | | The implementation of the parser/generator for the speech codec information element slightly wrong, making it impossible to use it properly. (See also: 3GPP TS 48.008, 3.2.2.103) Change-Id: Idabb0f9620659557672e1c6b90c75481192e5c89
* gsm0808: add speech codec type constantsPhilipp Maier2017-06-211-0/+18
| | | | | | | | The codec type to be set in member type in struct gsm0808_speech_codec has its own coding scheme to reference the used codec types. This patch declares an enum with valid speech codec types. Change-Id: Icaa768071d4364e671bc7e6d48b82d1f07f93f93
* cosmetic: Add info about coresponding codecs to permitted speech constsPhilipp Maier2017-06-211-7/+8
| | | | | | | The constants in enum gsm0808_permitted_speech are not very expressive. Add comments indicating each constant's corresponding codec. Change-Id: I9734f7c261becffe38ffd41c304d006d08530c1a
* gsm0408: update bearer capability speech versionPhilipp Maier2017-06-211-1/+6
| | | | | | | | 3GPP TS 24.008 specifies two new speech versions for half rate and two new speech modes for full rate. This patch adds the relevant constants to enum gsm48_bcap_speech_ver in gsm_04_08.h Change-Id: Id2835384c855f924332d38f01c73bd1cfdb62549
* cosmetic: Add codec references to Speech Version IndicationPhilipp Maier2017-06-211-6/+6
| | | | | | | Add the information which GSM Speech codec version coresponds to which bearer capability speech version. Change-Id: Ic9493fea139420a52c32b17d00ac7d0b2bf86967
* Add header file with definitions for GSM TS 04.14 / 3GPP TS 44.014Harald Welte2017-06-121-0/+101
| | | | Change-Id: I1f4fc2761b55a4f83544c1c3793ab67fec9fc120
* Update L3 protocol discriminator definitionsHarald Welte2017-06-091-3/+5
| | | | Change-Id: Ia699d3494b93b7f88c36338e4960b35c42a29b9c
* l1sap: Add frame-number to measurement indication structPhilipp Maier2017-05-171-0/+1
| | | | | | | | The distribution of the channel measurement calculations over multiple timeslots (continous calculation) requires to keep track of the frame number in struct info_meas_ind_param Change-Id: I8c783b4a92ae2c3cc5d17936a146eb49d47eac37
* gsm/tlv.h: fix copy-paste errorVadim Yanitskiy2017-05-151-2/+2
| | | | Change-Id: Id52ddd8358fd4af1ecc71142deb09f1e237021f3
* gsm0808 + ipa: fix compilation on systems without sys/socket.hHarald Welte2017-05-152-2/+2
| | | | Change-Id: I60f5d4982cd96ab29f9924ec11b46bf56fbfc346
* tlv: Add tlvp_val{16,32}be() to get TLV values in unaligned host byte orderHarald Welte2017-05-151-0/+23
| | | | Change-Id: I3749e1e4974742bc8c32722e0e998775b5394829
* Make EARFCN size calculation more robustMax2017-05-141-1/+4
| | | | | | | | | | | | | * add osmo_earfcn_bit_size_ext() function which allows to specify how many EARFCNs we should skip when estimating required bit size for SI2quater * make old osmo_earfcn_bit_size() into wrapper over newly added function and mark it as deprecated This is necessary to properly estimate necessary space for EARFCNs when they are spread over several SI2q messages with different index. Change-Id: I92e12e91605bdab9916a3f665705287572434f74 Related: RT#8792
* gsm_04_08: Add missing GSM cause valueDaniel Willmann2017-05-121-0/+3
| | | | | | | | | | | | Table 10.5.157 in 10.5.6.6 of 3GPP TS 04.08 is badly formatted. The first value 0x19 "LLC or SNDCP failure" is in the same line as the heading and has not been included in the struct_value so far. Table 10.5.157 in 10.5.6.6 of 3GPP TS 24.008 fixes this formatting issue and also defines two more values 0x08 and 0x18 which are now added to the struct value_string. Change-Id: I5bcc52f739ff0677011d024448afcc2a54869638
* Add SW Description (de)marshallingMax2017-04-281-0/+16
| | | | | | | | | | | | | | | | * data structure representing 3GPP TS 52.021 §9.4.62 SW Description * function to serialize it into msgb * function to deserialize it from buffer * functions to extract/estimate buffer size for SW Description * test harness (partially taken from OpenBSC) There are several similar functions to deal with SW Description in OpenBSC, there's also need to use similar functionality in OsmoBTS. Hence it's better to put the code into common library with proper tests and documentation. Change-Id: Ib63b6b5e83b8914864fc7edd789f8958cdc993cd Related: OS#1614
* ipa: Introduce helpers to encode IPA CCM ID RESPONSEHarald Welte2017-04-151-0/+7
| | | | | | | | | | The ipa.c file already contained code to parse an ID RESPONSE into the 'struct ipaccess_unit', but it didn't so far contain code to put together an ID RESPONSE packet based on that structure. Let's change that with ipa_ccm_make_id_resp() and a helper wrapper ipa_ccm_make_id_resp_from_req(). Change-Id: Icbcd8827a75fd5f3393351c1ca372de85275ad35
* gsm0808: Add create functions for BSS_MAP_MSG_ASSIGMENT_RQSTPhilipp Maier2017-04-081-0/+5
| | | | | | | | | | gsm0808.h/c lacks functionality to generate BSS_MAP_MSG_ASSIGMENT_RQST messages. These messages are required if the code is used in an MSC implementation. This commit adds a gsm0808_create_assignment() function, that generates an A/AoiP BSS_MAP_MSG_PAGING message. Change-Id: I4d1d455a1e1cf95407e23ded7b7defbcf2dd6ff0
* gsm0808: Add create functions for BSS_MAP_MSG_PAGINGPhilipp Maier2017-04-081-0/+3
| | | | | | | | | | gsm0808.h/c lacks functionality to generate BSS_MAP_MSG_PAGING messages. These messages are required if the code is used in an MSC implementation. This commit adds a gsm0808_create_paging() function, that generates an A/AoiP BSS_MAP_MSG_PAGING message. Change-Id: I9afecf0109305ca5153bf081bb29cd94071dd2b7
* gsm0808: Add create functions for CIPHER MODE COMMANDPhilipp Maier2017-04-081-0/+2
| | | | | | | | | | gsm0808.h/c lacks functionality to generate CIPHER MODE COMMAND messages. These messages are required if the code is used in an MSC implementation. This commit adds a gsm0808_create_cipher() function, that generates an A/AoiP CIPHER MODE COMMAND message. Change-Id: I8eb1c357860c3e740b0f5d17e1c256bc87920958
* gsm0808: Add utils for Cell Identifier ListPhilipp Maier2017-04-082-0/+16
| | | | | | | | | | The planned support for true A over IP requires the encoding of the a Cell Identifier List element (see also BSS_MAP_MSG_PAGING). This commt adds encoding/decoding functionality and tests for the element mentioned above, however, it is not yet actively used. Change-Id: I625245dd1dd396fc2bc189e8cd2c444a33042528
* gsm0808: Add utils for Encryption InformationPhilipp Maier2017-04-082-0/+18
| | | | | | | | | | The planned support for true A over IP requires the encoding of the an Encryption Information element (see also BSS_MAP_MSG_CIPHER_MODE_CMD). This commt adds encoding/decoding functionality and tests for the element mentioned above, however, it is not yet actively used. Change-Id: I8262050a9d9fd3f17462cfbb046c6e034dccc6fb
* gsm0808: Add utils for Channel TypePhilipp Maier2017-04-082-0/+17
| | | | | | | | | | The planned support for true A over IP requires the encoding of the a Channel Type element (see also ASSIGNMENT REQUEST). This commt adds encoding/decoding functionality and tests for the element mentioned above, however, it is not yet actively used. Change-Id: Id0e2164d84b8cbcc6fe6a090fc7f40a1251421d7
* gsm0808: Add AoIP specific elements to gsm0808_create_... functionsPhilipp Maier2017-04-081-2/+19
| | | | | | | | | the classic A implementation in libosmocore lacks support for AoIP message elements. This patch adds support for AoIP by adding a set of new gsm0808_create_..., which support the missing AoIP message elements Change-Id: I77f866abec1822d19871052f3c647ad782785b34
* gsm0808: Add utils for Speech Codec List and Speech CodecPhilipp Maier2017-04-082-0/+41
| | | | | | | | | | The planned support for true A over IP requires the encoding and decoding of a so called "Speech Codec Element" element. This commt adds parsing functionality and tests for the element mentioned above, however, it is not yet actively used. Change-Id: I0e1e2edf47adaa45b22d4b0bcae3640dba7ca200
* gsm0808: Add utils for AoIP Transport Layer AddressPhilipp Maier2017-04-081-0/+30
| | | | | | | | | | The planned support for true A over IP requires the encoding and decoding of a so called "AoIP Transport Layer Address" element. This commt adds parsing functionality and tests for the element mentioned above, however, it is not yet actively used. Change-Id: I57933b0a06a3f54ec2a41e6ecb6ced9fbbc89332
* Add support for PCU version reportMax2017-03-231-0/+1
| | | | | | | | Expand 3GPP TS 52.021 §9.4.43 Probable Cause with Osmocom-specific value for PCU version reporting to enable sending it via OML alarms. Change-Id: If57459c0610f2c7b36d599b13087c8deef8bdd9e Related: OS#1614
* abis: add message type namesMax2017-03-221-0/+1
| | | | | | | | Add human-readable names for Message Types from 3GPP TS 52.021 §9.1 Related: OS#1614 Change-Id: Ide8202b4387351f57ceee34a9eb8c30aef09a663
* abis: add attribute namesMax2017-03-211-0/+1
| | | | | | | Add human-readable names for Attributes from 3GPP TS 52.021 §9.4 Change-Id: I861247c01557dac7e484ef6fb9b170f69c8a7f55 Related: OS#1614
* add gsm48_pdisc_msgtype_name()Neels Hofmeyr2017-03-161-0/+5
| | | | | | | | | | | | | | | Composing the message type string requires knowing the protocol discriminator. To ease printing the message type, add this function to switch between the defined value_string[]s depending on pdisc. Also publish the message type value_string[]s -- without inline functions to access them because it is anyway more convenient to use gsm48_pdisc_msgtype_name() instead. Since gsm48_pdisc_msgtype_name() is nontrivial, do not add as inline function -- in case the message type is not known, it needs a static string buffer. Change-Id: I0fca8e95ed5c2148b1a7440eff3fc9c7583898df
* add gsm48_pdisc_names and gsm48_pdisc_name()Neels Hofmeyr2017-03-161-0/+4
| | | | | | | I often want to log the protocol discriminator in the openbsc debug log. It's more useful to get the name directly instead of looking it up every time. Change-Id: I0f053e2a4360b27ffccda7cf82469fb1b1cbb3ae
* gsm_04_08: add _NUM_CHREQ_T to enumAlexander Couzens2017-03-141-0/+1
| | | | | | _NUM_CHREQ_T defines the last element of the enum Change-Id: Id67ba8de89dd6288e449197438e9e1c5d7f5a134
* gsm0408: add chreq_type for CHREQ_T_PDCH_ONE_PHASE and CHREQ_T_PDCH_TWO_PHASEAlexander Couzens2017-03-141-0/+2
| | | | | | | | | | The previous version of this commit got reverted to avoid a breakage in openbsc. The problem is openbsc use an array of chreq_type with a manual defined size. This array is using enums as index which breaks if any elements got added into the middle, because the size of the array can't hold elements greater or equal than the size. Change-Id: I6676105507fe4e5627f740dfe4c2770f766ad068
* gsm0503.h: generate header automaticallyVadim Yanitskiy2017-03-061-174/+0
| | | | | | | Since we have automatic header generation, implemented in the utils/conv_gen.py, it's time to use this feature! Change-Id: I21caa4e433b2cc1861611e35350a9671da444c2a
* gsm_04_08.h: add R99 MSCR and CBQ3 to SI3 Ctrl Chan DescrNeels Hofmeyr2017-02-231-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | MSCR and CBQ3 are Release 1999 additions to the Control Channel Description IE of SI3. Assuming that no-one is using the spare bits, this will not cause any code conflicts. In the R99 struct, spare1 and spare2 are in different places, so rather rename them to spare_1 and spare_2 to make sure we get a compiler barf *if* anyone tries to use them with the wrong structure. Adjust the spec reference to TS 44.018; TS 04.08 Figure 10.5.33 is replaced by TS 44.018 Figure 10.5.2.11.1 which is right there in the named Section 10.5.2.11, so drop the explicit reference. Motivation: the R99 Control Channel Description defines MSCR to indicate whether the MSC is R99+ or not. To use UMTS AKA on GSM networks, we want to indicate that our libmsc is capable of R99, like OsmoSGSN already does. CBQ3 is merely added for completeness, no particular use case in mind. Related: OS#1593 Change-Id: If87e07b5d04e1617155383e14c98d2125fdd0608
* gsup: add osmo_gsup_message_type_name()Neels Hofmeyr2017-02-151-0/+5
| | | | Change-Id: Ic29b588b72893821d73fe90ecc16c6bf78d5a360
* gsm48: add UMTS AKA res+sync IEIs, msg type and cause valNeels Hofmeyr2017-02-021-0/+4
| | | | | | According to 3GPP TS 24.008 9.2.3a, 9.2.3, 10.5.3.6 Change-Id: I745061ce8eb88aa23080dadcdbfe2d703c362a30
* GSUP, OAP, osmo-gen-vec: fix AUTS length to 14, not 16Neels Hofmeyr2017-02-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | GSUP transmits AUTS for UMTS authentication procedures, and OAP uses the same procedures to authenticate. osmo-gen-vec is a utility program that passes AUTS to our osmo_auth_gen_vec_auts() API. According to 3GPP 33.102 6.3.3, AUTS = SQN^AK || MAC-S, which are 6 || 8 == 14 bytes. This is confirmed by 24.008 9.2.3a where the TLV has 16 bytes, TL = 2 and AUTS being the V = 14. It is not harmful for milenage_gen_vec_auts() to pass two more AUTS bytes. But writing 16 bytes to a GSUP struct is a potential problem when passing in a 14 byte long AUTS buffer to the GSUP API, which then reads past the AUTS buffer. The API implies the length, so far to be 16, so passing in a 14 byte buffer to GSUP would require copying to a larger buffer first. Fix this by using a length of 14 for AUTS everywhere instead. This constitues an ABI breakage, we may handle it as a "fix before an official release", otherwise we need a version bump. The OAP protocol document has also been updated, needs an update in the osmo-gsm-manuals as well. Change-Id: If25b173d9ec57ea4c504d860954912b7d82af455
* OML: add external alertsMax2017-01-251-0/+2
| | | | | | | Add special cause for alerts produced by external processes. Change-Id: Idd7ee085321f8172c72ecfdba320186049f4d988 Related: OS#1615