diff options
Diffstat (limited to 'include/osmocom/gsm/protocol/gsm_49_031.h')
-rw-r--r-- | include/osmocom/gsm/protocol/gsm_49_031.h | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/include/osmocom/gsm/protocol/gsm_49_031.h b/include/osmocom/gsm/protocol/gsm_49_031.h index c6152e17..463fabf5 100644 --- a/include/osmocom/gsm/protocol/gsm_49_031.h +++ b/include/osmocom/gsm/protocol/gsm_49_031.h @@ -20,15 +20,13 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * */ #pragma once #include <stdint.h> #include <stdbool.h> + +#include <osmocom/core/endian.h> #include <osmocom/gsm/protocol/gsm_48_071.h> #include <osmocom/gsm/protocol/gsm_23_032.h> #include <osmocom/gsm/gsm0808_utils.h> @@ -62,6 +60,22 @@ struct lcs_cause_ie { uint8_t diag_val; }; +/* 3GPP TS 49.031 10.16 LCS QoS IE */ +struct osmo_bssmap_le_lcs_qos { +#if OSMO_IS_LITTLE_ENDIAN + uint8_t vert:1, vel:1, spare1:6; + uint8_t ha_val:7, ha_ind:1; + uint8_t va_val:7, va_ind:1; + uint8_t spare3:6, rt:2; +#elif OSMO_IS_BIG_ENDIAN +/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianness.py) */ + uint8_t spare1:6, vel:1, vert:1; + uint8_t ha_ind:1, ha_val:7; + uint8_t va_ind:1, va_val:7; + uint8_t rt:2, spare3:6; +#endif +} __attribute__ ((packed)); + enum bssap_le_msg_discr { BSSAP_LE_MSG_DISCR_BSSMAP_LE = 0, }; @@ -171,7 +185,15 @@ struct bssmap_le_perform_loc_req { bool apdu_present; struct bsslap_pdu apdu; - bool more_items; /*!< always set this to false */ + bool more_items; /*!< set this to true iff any fields below are used */ + + bool lcs_priority_present; + uint8_t lcs_priority; /*!< see in 3GPP TS 29.002 */ + + bool lcs_qos_present; + struct osmo_bssmap_le_lcs_qos lcs_qos; + + bool more_items2; /*!< always set this to false */ }; struct bssmap_le_perform_loc_resp { |