Loading...
Searching...
No Matches
gsm_44_068.h
Go to the documentation of this file.
#pragma once
#include <stdint.h>
#include <osmocom/core/utils.h>
/* Group Call Control (GCC) is an ETSI/3GPP standard protocol used between
* MS (Mobile Station) and MSC (Mobile Switchting Center) in 2G/GSM-R network.
* It is specified in 3GPP TS 44.068.
*
* (C) 2023 by Sysmocom s.f.m.c. GmbH
* All Rights Reserved
*
* Author: Andreas Eversberg
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* 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, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-2.0+
*/
/* 9 Information Element Identifiers */
enum osmo_gsm44068_iei {
OSMO_GSM44068_IEI_MOBILE_IDENTITY = 0x17,
OSMO_GSM44068_IEI_USER_USER = 0x7E,
OSMO_GSM44068_IEI_CALL_STATE = 0xA0,
OSMO_GSM44068_IEI_STATE_ATTRIBUTES = 0xB0,
OSMO_GSM44068_IEI_TALKER_PRIORITY = 0xC0,
OSMO_GSM44068_IEI_SMS_INDICATIONS = 0xD0,
};
/* 9.3 Message Type */
enum osmo_gsm44068_msg_type {
OSMO_GSM44068_MSGT_IMMEDIATE_SETUP = 0x31,
OSMO_GSM44068_MSGT_SETUP = 0x32,
OSMO_GSM44068_MSGT_CONNECT = 0x33,
OSMO_GSM44068_MSGT_TERMINATION = 0x34,
OSMO_GSM44068_MSGT_TERMINATION_REQUEST = 0x35,
OSMO_GSM44068_MSGT_TERMINATION_REJECT = 0x36,
OSMO_GSM44068_MSGT_STATUS = 0x38,
OSMO_GSM44068_MSGT_GET_STATUS = 0x39,
OSMO_GSM44068_MSGT_SET_PARAMETER = 0x3a,
OSMO_GSM44068_MSGT_IMMEDIATE_SETUP_2 = 0x3b,
};
/* Table 9.2 priority */
enum osmo_gsm44068_priority_level {
OSMO_GSM44068_PRIO_LEVEL_4 = 0x1,
OSMO_GSM44068_PRIO_LEVEL_3 = 0x2,
OSMO_GSM44068_PRIO_LEVEL_2 = 0x3,
OSMO_GSM44068_PRIO_LEVEL_1 = 0x4,
OSMO_GSM44068_PRIO_LEVEL_0 = 0x5,
OSMO_GSM44068_PRIO_LEVEL_B = 0x6,
OSMO_GSM44068_PRIO_LEVEL_A = 0x7,
};
/* 9.4.2 Call State */
enum osmo_gsm44068_call_state {
OSMO_GSM44068_CSTATE_U0 = 0x0,
OSMO_GSM44068_CSTATE_U1 = 0x1,
OSMO_GSM44068_CSTATE_U2sl_U2 = 0x2,
OSMO_GSM44068_CSTATE_U3 = 0x3,
OSMO_GSM44068_CSTATE_U4 = 0x4,
OSMO_GSM44068_CSTATE_U5 = 0x5,
OSMO_GSM44068_CSTATE_U0p = 0x6,
OSMO_GSM44068_CSTATE_U2wr_U6 = 0x7,
OSMO_GSM44068_CSTATE_U2r = 0x8,
OSMO_GSM44068_CSTATE_U2ws = 0x9,
OSMO_GSM44068_CSTATE_U2sr = 0xa,
OSMO_GSM44068_CSTATE_U2nc = 0xb,
};
/* 9.4.3 Cause */
enum osmo_gsm44068_cause {
OSMO_GSM44068_CAUSE_ILLEGAL_MS = 0x03,
OSMO_GSM44068_CAUSE_IMEI_NOT_ACCEPTED = 0x05,
OSMO_GSM44068_CAUSE_ILLEGAL_ME = 0x06,
OSMO_GSM44068_CAUSE_SERVICE_NOT_AUTHORIZED = 0x08,
OSMO_GSM44068_CAUSE_APP_NOT_SUPPORTED_ON_PROTO = 0x09,
OSMO_GSM44068_CAUSE_RR_CONNECTION_ABORTED = 0x0a,
OSMO_GSM44068_CAUSE_NORMAL_CALL_CLEARING = 0x10,
OSMO_GSM44068_CAUSE_NETWORK_FAILURE = 0x11,
OSMO_GSM44068_CAUSE_BUSY = 0x14,
OSMO_GSM44068_CAUSE_CONGESTION = 0x16,
OSMO_GSM44068_CAUSE_USER_NOT_ORIGINATOR = 0x17,
OSMO_GSM44068_CAUSE_NET_WANTS_TO_MAINTAIN_CALL = 0x18,
OSMO_GSM44068_CAUSE_RESPONSE_TO_GET_STATUS = 0x1e,
OSMO_GSM44068_CAUSE_SERVICE_OPTION_NOT_SUBSCR = 0x20,
OSMO_GSM44068_CAUSE_REQUESTED_SERVICE_NOT_SUB = 0x21,
OSMO_GSM44068_CAUSE_SERVICE_OPTION_OOO = 0x22,
OSMO_GSM44068_CAUSE_CALL_CANNOT_BE_IDENTIFIED = 0x26,
OSMO_GSM44068_CAUSE_RETRY_UPON_ENTRY_NEW_CALL = 0x30, /* up to 0x3f */
OSMO_GSM44068_CAUSE_INVALID_TRANSACTION_ID = 0x51,
OSMO_GSM44068_CAUSE_SEMANTICALLY_INCORRECT_MSG = 0x5f,
OSMO_GSM44068_CAUSE_INVALID_MANDATORY_INFO = 0x60,
OSMO_GSM44068_CAUSE_MESSAGE_TYPE_NON_EXISTENT = 0x61,
OSMO_GSM44068_CAUSE_MESSAGE_TYPE_NOT_COMPAT = 0x62,
OSMO_GSM44068_CAUSE_IE_NON_EXISTENT = 0x63,
OSMO_GSM44068_CAUSE_IE_NOT_COMPAT = 0x64,
OSMO_GSM44068_CAUSE_PROTOCOL_ERROR = 0x70,
};
/* 9.4.4 Originator Indication */
#define OSMO_GSM44068_OI_MS_IS_ORIGINATOR 0x01
/* 9.4.7 State Attributes */
#define OSMO_GSM44068_DA_DOWNLINK_ATTACHED 0x08
#define OSMO_GSM44068_UA_UPLINK_ATTACHED 0x04
#define OSMO_GSM44068_COMM_T 0x02
/* 9.4.9 Talker Priority */
enum osmo_gsm44068_talker_priority {
OSMO_GSM44068_PRIO_NORMAL = 0x0,
OSMO_GSM44068_PRIO_PRIVILEGED = 0x1,
OSMO_GSM44068_PRIO_EMERGENCY = 0x2,
};
/* 9.4.10 SMS Indications */
#define OSMO_GSM44068_DC_DATA_CONFIDENTALLY_RQD 0x02
#define OSMO_GSM44068_GP_GUARANTEED_PRIVACY_RQD 0x01
extern const struct value_string osmo_gsm44068_msg_type_names[];
extern const struct value_string osmo_gsm44068_priority_level_names[];
extern const struct value_string osmo_gsm44068_cause_names[];
extern const struct value_string osmo_gsm44068_call_state_names[];
extern const struct value_string osmo_gsm44068_talker_priority_names[];
extern const struct tlv_definition osmo_gsm44068_att_tlvdef;
osmo_gsm44068_priority_level_names
const struct value_string osmo_gsm44068_priority_level_names[]
Definition gsm44068.c:48
osmo_gsm44068_call_state_names
const struct value_string osmo_gsm44068_call_state_names[]
Definition gsm44068.c:89
osmo_gsm44068_att_tlvdef
const struct tlv_definition osmo_gsm44068_att_tlvdef
Definition gsm44068.c:112
osmo_gsm44068_talker_priority_names
const struct value_string osmo_gsm44068_talker_priority_names[]
Definition gsm44068.c:105
osmo_gsm44068_cause
osmo_gsm44068_cause
Definition gsm_44_068.h:82
OSMO_GSM44068_CAUSE_IE_NON_EXISTENT
@ OSMO_GSM44068_CAUSE_IE_NON_EXISTENT
Definition gsm_44_068.h:106
OSMO_GSM44068_CAUSE_SERVICE_OPTION_OOO
@ OSMO_GSM44068_CAUSE_SERVICE_OPTION_OOO
Definition gsm_44_068.h:98
OSMO_GSM44068_CAUSE_IMEI_NOT_ACCEPTED
@ OSMO_GSM44068_CAUSE_IMEI_NOT_ACCEPTED
Definition gsm_44_068.h:84
OSMO_GSM44068_CAUSE_INVALID_TRANSACTION_ID
@ OSMO_GSM44068_CAUSE_INVALID_TRANSACTION_ID
Definition gsm_44_068.h:101
OSMO_GSM44068_CAUSE_NET_WANTS_TO_MAINTAIN_CALL
@ OSMO_GSM44068_CAUSE_NET_WANTS_TO_MAINTAIN_CALL
Definition gsm_44_068.h:94
OSMO_GSM44068_CAUSE_RESPONSE_TO_GET_STATUS
@ OSMO_GSM44068_CAUSE_RESPONSE_TO_GET_STATUS
Definition gsm_44_068.h:95
OSMO_GSM44068_CAUSE_MESSAGE_TYPE_NOT_COMPAT
@ OSMO_GSM44068_CAUSE_MESSAGE_TYPE_NOT_COMPAT
Definition gsm_44_068.h:105
OSMO_GSM44068_CAUSE_CONGESTION
@ OSMO_GSM44068_CAUSE_CONGESTION
Definition gsm_44_068.h:92
OSMO_GSM44068_CAUSE_SERVICE_OPTION_NOT_SUBSCR
@ OSMO_GSM44068_CAUSE_SERVICE_OPTION_NOT_SUBSCR
Definition gsm_44_068.h:96
OSMO_GSM44068_CAUSE_ILLEGAL_ME
@ OSMO_GSM44068_CAUSE_ILLEGAL_ME
Definition gsm_44_068.h:85
OSMO_GSM44068_CAUSE_NORMAL_CALL_CLEARING
@ OSMO_GSM44068_CAUSE_NORMAL_CALL_CLEARING
Definition gsm_44_068.h:89
OSMO_GSM44068_CAUSE_PROTOCOL_ERROR
@ OSMO_GSM44068_CAUSE_PROTOCOL_ERROR
Definition gsm_44_068.h:108
OSMO_GSM44068_CAUSE_BUSY
@ OSMO_GSM44068_CAUSE_BUSY
Definition gsm_44_068.h:91
OSMO_GSM44068_CAUSE_APP_NOT_SUPPORTED_ON_PROTO
@ OSMO_GSM44068_CAUSE_APP_NOT_SUPPORTED_ON_PROTO
Definition gsm_44_068.h:87
OSMO_GSM44068_CAUSE_CALL_CANNOT_BE_IDENTIFIED
@ OSMO_GSM44068_CAUSE_CALL_CANNOT_BE_IDENTIFIED
Definition gsm_44_068.h:99
OSMO_GSM44068_CAUSE_SEMANTICALLY_INCORRECT_MSG
@ OSMO_GSM44068_CAUSE_SEMANTICALLY_INCORRECT_MSG
Definition gsm_44_068.h:102
OSMO_GSM44068_CAUSE_RR_CONNECTION_ABORTED
@ OSMO_GSM44068_CAUSE_RR_CONNECTION_ABORTED
Definition gsm_44_068.h:88
OSMO_GSM44068_CAUSE_USER_NOT_ORIGINATOR
@ OSMO_GSM44068_CAUSE_USER_NOT_ORIGINATOR
Definition gsm_44_068.h:93
OSMO_GSM44068_CAUSE_INVALID_MANDATORY_INFO
@ OSMO_GSM44068_CAUSE_INVALID_MANDATORY_INFO
Definition gsm_44_068.h:103
OSMO_GSM44068_CAUSE_REQUESTED_SERVICE_NOT_SUB
@ OSMO_GSM44068_CAUSE_REQUESTED_SERVICE_NOT_SUB
Definition gsm_44_068.h:97
OSMO_GSM44068_CAUSE_ILLEGAL_MS
@ OSMO_GSM44068_CAUSE_ILLEGAL_MS
Definition gsm_44_068.h:83
OSMO_GSM44068_CAUSE_NETWORK_FAILURE
@ OSMO_GSM44068_CAUSE_NETWORK_FAILURE
Definition gsm_44_068.h:90
OSMO_GSM44068_CAUSE_RETRY_UPON_ENTRY_NEW_CALL
@ OSMO_GSM44068_CAUSE_RETRY_UPON_ENTRY_NEW_CALL
Definition gsm_44_068.h:100
OSMO_GSM44068_CAUSE_MESSAGE_TYPE_NON_EXISTENT
@ OSMO_GSM44068_CAUSE_MESSAGE_TYPE_NON_EXISTENT
Definition gsm_44_068.h:104
OSMO_GSM44068_CAUSE_IE_NOT_COMPAT
@ OSMO_GSM44068_CAUSE_IE_NOT_COMPAT
Definition gsm_44_068.h:107
OSMO_GSM44068_CAUSE_SERVICE_NOT_AUTHORIZED
@ OSMO_GSM44068_CAUSE_SERVICE_NOT_AUTHORIZED
Definition gsm_44_068.h:86
osmo_gsm44068_call_state
osmo_gsm44068_call_state
Definition gsm_44_068.h:66
OSMO_GSM44068_CSTATE_U0
@ OSMO_GSM44068_CSTATE_U0
Definition gsm_44_068.h:67
OSMO_GSM44068_CSTATE_U5
@ OSMO_GSM44068_CSTATE_U5
Definition gsm_44_068.h:72
OSMO_GSM44068_CSTATE_U2wr_U6
@ OSMO_GSM44068_CSTATE_U2wr_U6
Definition gsm_44_068.h:74
OSMO_GSM44068_CSTATE_U2sl_U2
@ OSMO_GSM44068_CSTATE_U2sl_U2
Definition gsm_44_068.h:69
OSMO_GSM44068_CSTATE_U2nc
@ OSMO_GSM44068_CSTATE_U2nc
Definition gsm_44_068.h:78
OSMO_GSM44068_CSTATE_U2ws
@ OSMO_GSM44068_CSTATE_U2ws
Definition gsm_44_068.h:76
OSMO_GSM44068_CSTATE_U2r
@ OSMO_GSM44068_CSTATE_U2r
Definition gsm_44_068.h:75
OSMO_GSM44068_CSTATE_U4
@ OSMO_GSM44068_CSTATE_U4
Definition gsm_44_068.h:71
OSMO_GSM44068_CSTATE_U0p
@ OSMO_GSM44068_CSTATE_U0p
Definition gsm_44_068.h:73
OSMO_GSM44068_CSTATE_U3
@ OSMO_GSM44068_CSTATE_U3
Definition gsm_44_068.h:70
OSMO_GSM44068_CSTATE_U1
@ OSMO_GSM44068_CSTATE_U1
Definition gsm_44_068.h:68
OSMO_GSM44068_CSTATE_U2sr
@ OSMO_GSM44068_CSTATE_U2sr
Definition gsm_44_068.h:77
osmo_gsm44068_cause_names
const struct value_string osmo_gsm44068_cause_names[]
Definition gsm44068.c:59
osmo_gsm44068_msg_type
osmo_gsm44068_msg_type
Definition gsm_44_068.h:41
OSMO_GSM44068_MSGT_TERMINATION_REQUEST
@ OSMO_GSM44068_MSGT_TERMINATION_REQUEST
Definition gsm_44_068.h:46
OSMO_GSM44068_MSGT_CONNECT
@ OSMO_GSM44068_MSGT_CONNECT
Definition gsm_44_068.h:44
OSMO_GSM44068_MSGT_STATUS
@ OSMO_GSM44068_MSGT_STATUS
Definition gsm_44_068.h:48
OSMO_GSM44068_MSGT_GET_STATUS
@ OSMO_GSM44068_MSGT_GET_STATUS
Definition gsm_44_068.h:49
OSMO_GSM44068_MSGT_IMMEDIATE_SETUP_2
@ OSMO_GSM44068_MSGT_IMMEDIATE_SETUP_2
Definition gsm_44_068.h:51
OSMO_GSM44068_MSGT_SETUP
@ OSMO_GSM44068_MSGT_SETUP
Definition gsm_44_068.h:43
OSMO_GSM44068_MSGT_SET_PARAMETER
@ OSMO_GSM44068_MSGT_SET_PARAMETER
Definition gsm_44_068.h:50
OSMO_GSM44068_MSGT_IMMEDIATE_SETUP
@ OSMO_GSM44068_MSGT_IMMEDIATE_SETUP
Definition gsm_44_068.h:42
OSMO_GSM44068_MSGT_TERMINATION
@ OSMO_GSM44068_MSGT_TERMINATION
Definition gsm_44_068.h:45
OSMO_GSM44068_MSGT_TERMINATION_REJECT
@ OSMO_GSM44068_MSGT_TERMINATION_REJECT
Definition gsm_44_068.h:47
osmo_gsm44068_priority_level
osmo_gsm44068_priority_level
Definition gsm_44_068.h:55
OSMO_GSM44068_PRIO_LEVEL_A
@ OSMO_GSM44068_PRIO_LEVEL_A
Definition gsm_44_068.h:62
OSMO_GSM44068_PRIO_LEVEL_1
@ OSMO_GSM44068_PRIO_LEVEL_1
Definition gsm_44_068.h:59
OSMO_GSM44068_PRIO_LEVEL_4
@ OSMO_GSM44068_PRIO_LEVEL_4
Definition gsm_44_068.h:56
OSMO_GSM44068_PRIO_LEVEL_B
@ OSMO_GSM44068_PRIO_LEVEL_B
Definition gsm_44_068.h:61
OSMO_GSM44068_PRIO_LEVEL_0
@ OSMO_GSM44068_PRIO_LEVEL_0
Definition gsm_44_068.h:60
OSMO_GSM44068_PRIO_LEVEL_3
@ OSMO_GSM44068_PRIO_LEVEL_3
Definition gsm_44_068.h:57
OSMO_GSM44068_PRIO_LEVEL_2
@ OSMO_GSM44068_PRIO_LEVEL_2
Definition gsm_44_068.h:58
osmo_gsm44068_talker_priority
osmo_gsm44068_talker_priority
Definition gsm_44_068.h:120
OSMO_GSM44068_PRIO_NORMAL
@ OSMO_GSM44068_PRIO_NORMAL
Definition gsm_44_068.h:121
OSMO_GSM44068_PRIO_EMERGENCY
@ OSMO_GSM44068_PRIO_EMERGENCY
Definition gsm_44_068.h:123
OSMO_GSM44068_PRIO_PRIVILEGED
@ OSMO_GSM44068_PRIO_PRIVILEGED
Definition gsm_44_068.h:122
osmo_gsm44068_iei
osmo_gsm44068_iei
Definition gsm_44_068.h:31
OSMO_GSM44068_IEI_TALKER_PRIORITY
@ OSMO_GSM44068_IEI_TALKER_PRIORITY
Definition gsm_44_068.h:36
OSMO_GSM44068_IEI_SMS_INDICATIONS
@ OSMO_GSM44068_IEI_SMS_INDICATIONS
Definition gsm_44_068.h:37
OSMO_GSM44068_IEI_CALL_STATE
@ OSMO_GSM44068_IEI_CALL_STATE
Definition gsm_44_068.h:34
OSMO_GSM44068_IEI_MOBILE_IDENTITY
@ OSMO_GSM44068_IEI_MOBILE_IDENTITY
Definition gsm_44_068.h:32
OSMO_GSM44068_IEI_USER_USER
@ OSMO_GSM44068_IEI_USER_USER
Definition gsm_44_068.h:33
OSMO_GSM44068_IEI_STATE_ATTRIBUTES
@ OSMO_GSM44068_IEI_STATE_ATTRIBUTES
Definition gsm_44_068.h:35
osmo_gsm44068_msg_type_names
const struct value_string osmo_gsm44068_msg_type_names[]
Definition gsm44068.c:34
tlv_definition
Definition of All 256 IE / TLV.
Definition tlv.h:527
value_string
utils.h