add IE definitions for most MM/CC IEs
This commit is contained in:
parent
181a12a419
commit
16e523d2d0
|
@ -4,16 +4,45 @@ grammar osmo_codegen;
|
||||||
//language = Python;
|
//language = Python;
|
||||||
//}
|
//}
|
||||||
root :
|
root :
|
||||||
pdu_spec*
|
(pdu_spec | ie_spec | ie_alias)*
|
||||||
;
|
;
|
||||||
|
|
||||||
|
ie_alias: 'ie_alias' ie_name ie_name;
|
||||||
|
|
||||||
|
ie_name : ID;
|
||||||
|
|
||||||
|
ie_spec : 'ie_spec' ID
|
||||||
|
ie_field_def*
|
||||||
|
'end_ie_spec'
|
||||||
|
;
|
||||||
|
|
||||||
|
ie_field_def
|
||||||
|
: ie_field_name ie_field_len ie_field_type ie_field_opts
|
||||||
|
;
|
||||||
|
|
||||||
|
ie_field_name
|
||||||
|
: ID;
|
||||||
|
ie_field_len
|
||||||
|
: (NUMERIC | '*');
|
||||||
|
ie_field_type
|
||||||
|
: ('byte' | 'bytes' | 'bit' | 'bits' | 'bcd');
|
||||||
|
ie_field_opts
|
||||||
|
: field_val? ie_field_cond? ie_field_endian?;
|
||||||
|
ie_field_cond
|
||||||
|
: 'if (' ie_field_name COMP_OP NUMERIC ')';
|
||||||
|
ie_field_endian
|
||||||
|
: ('big' | 'little');
|
||||||
|
|
||||||
|
|
||||||
|
/* PDU */
|
||||||
|
|
||||||
pdu_spec
|
pdu_spec
|
||||||
: 'pdu_spec' ID
|
: 'pdu_spec' ID
|
||||||
field_def*
|
pdu_field_def*
|
||||||
'end_pdu_spec'
|
'end_pdu_spec'
|
||||||
;
|
;
|
||||||
|
|
||||||
field_mode
|
pdu_field_mode
|
||||||
: 'mand' | 'opt' | 'cond';
|
: 'mand' | 'opt' | 'cond';
|
||||||
|
|
||||||
field_val
|
field_val
|
||||||
|
@ -22,27 +51,27 @@ field_val
|
||||||
field_tag
|
field_tag
|
||||||
: 'tag' NUMERIC;
|
: 'tag' NUMERIC;
|
||||||
|
|
||||||
field_size
|
pdu_field_size
|
||||||
: NUMERIC ('-' NUMERIC)? ;
|
: NUMERIC ('-' NUMERIC)? ;
|
||||||
|
|
||||||
field_opts
|
pdu_field_opts
|
||||||
: ('uplink_only' | 'downlink_only')
|
: ('uplink_only' | 'downlink_only')
|
||||||
;
|
;
|
||||||
|
|
||||||
field_type
|
pdu_field_type
|
||||||
: (
|
: (
|
||||||
('V4u' field_val?)
|
('V4u' field_val?)
|
||||||
| ('V4l' field_val?)
|
| ('V4l' field_val?)
|
||||||
| ('V' field_size field_val?)
|
| ('V' pdu_field_size field_val?)
|
||||||
| ('TLV' field_size? field_val? field_tag)
|
| ('TLV' pdu_field_size? field_val? field_tag)
|
||||||
| ('LV' field_size field_val?)
|
| ('LV' pdu_field_size field_val?)
|
||||||
| ('TV' field_size field_val? field_tag)
|
| ('TV' pdu_field_size field_val? field_tag)
|
||||||
| ('T' field_val? field_tag)
|
| ('T' field_val? field_tag)
|
||||||
| ('TV4' field_val? field_tag)
|
| ('TV4' field_val? field_tag)
|
||||||
) field_opts*;
|
) pdu_field_opts*;
|
||||||
|
|
||||||
field_def
|
pdu_field_def
|
||||||
: ID field_mode field_type;
|
: ID pdu_field_mode pdu_field_type;
|
||||||
|
|
||||||
|
|
||||||
/* LEXER RULES */
|
/* LEXER RULES */
|
||||||
|
@ -72,6 +101,8 @@ STRING
|
||||||
: '"' ( ESC_SEQ | ~('\\'|'"') )* '"'
|
: '"' ( ESC_SEQ | ~('\\'|'"') )* '"'
|
||||||
;
|
;
|
||||||
|
|
||||||
|
COMP_OP : '==' | '<' | '>' | '>=' | '<=' | '!=';
|
||||||
|
|
||||||
fragment
|
fragment
|
||||||
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
|
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,150 @@
|
||||||
|
|
||||||
|
# 10.5.4.4 Auxiliary states
|
||||||
|
ie_spec cc_auxiliary_states
|
||||||
|
content_len 1 byte
|
||||||
|
mpty_aux_state 2 bits
|
||||||
|
hold_aux_state 2 bits
|
||||||
|
spare 3 bits val 0
|
||||||
|
ext 1 bit val 1
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.4a backup bearer capability: too complex
|
||||||
|
# 10.5.4.5 bearer capability: too complex
|
||||||
|
|
||||||
|
# 10.5.4.5a CC capabilities
|
||||||
|
ie_spec cc_capabilities
|
||||||
|
content_len 1 byte
|
||||||
|
dtmf 1 bit
|
||||||
|
pcp 1 bit
|
||||||
|
enicm 1 bit
|
||||||
|
spare 1 bit val 0
|
||||||
|
max_supp_bearers 4 bit
|
||||||
|
max_speech_bearers 4 bit
|
||||||
|
spare2 4 bit val 0
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.6 Call state
|
||||||
|
ie_spec cc_call_state
|
||||||
|
call_state 6 bit
|
||||||
|
coding_standard 2 bit
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.7 Called party BCD number
|
||||||
|
ie_spec cc_called_party_bcd_number
|
||||||
|
content_len 1 byte
|
||||||
|
numbering_plan_id 4 bit
|
||||||
|
type_of_number 3 bit
|
||||||
|
ext 1 bit val 1
|
||||||
|
digits * bcd
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.8 Called party subaddress
|
||||||
|
ie_spec cc_called_party_subaddr
|
||||||
|
content_len 1 byte
|
||||||
|
spare 3 bit val 0
|
||||||
|
odd_even_ind 1 bit
|
||||||
|
type_of_subaddr 3 bit
|
||||||
|
ext 1 bit val 1
|
||||||
|
subaddr_info * byte
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.9 Calling party BCD number
|
||||||
|
ie_spec cc_calling_party_bcd_number
|
||||||
|
content_len 1 byte
|
||||||
|
numbering_plan_id 4 bit
|
||||||
|
type_of_number 3 bit
|
||||||
|
ext1 1 bit
|
||||||
|
screening_ind 2 bit if (ext1 == 0)
|
||||||
|
spare 3 bit val 0 if (ext1 == 0)
|
||||||
|
presentation_ind 2 bit if (ext1 == 0)
|
||||||
|
ext2 1 bit val 1 if (ext1 == 0)
|
||||||
|
digits * bcd
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.10 Calling party subaddress
|
||||||
|
ie_alias cc_calling_party_subaddr cc_called_party_subaddr
|
||||||
|
|
||||||
|
# 10.5.4.11 Cause
|
||||||
|
ie_spec cc_cause
|
||||||
|
content_len 1 byte
|
||||||
|
location 4 bit
|
||||||
|
spare 1 bit val 0
|
||||||
|
coding_standard 2 bit
|
||||||
|
ext1 1 bit
|
||||||
|
recommendation 7 bit if (ext1 == 0)
|
||||||
|
ext2 1 bit val 1 if (ext1 == 0)
|
||||||
|
cause 7 bit
|
||||||
|
ext3 1 bit val 1
|
||||||
|
diagnostics * byte
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.11a CLIR suppression: no need
|
||||||
|
# 10.5.4.11b CLIR invocation: no need
|
||||||
|
# 10.5.4.12 Congestion level: no need
|
||||||
|
|
||||||
|
# 10.5.4.13 Connected number
|
||||||
|
ie_alias cc_connected_party_bcd_number cc_calling_party_bcd_number
|
||||||
|
|
||||||
|
# 10.5.4.14 Connected subaddress
|
||||||
|
ie_alias cc_connected_party_subaddr cc_called_party_subaddr
|
||||||
|
|
||||||
|
# 10.5.4.15 Facility: no need
|
||||||
|
|
||||||
|
# 10.5.4.16 Higher layer compatibility
|
||||||
|
ie_spec cc_high_layer_compat
|
||||||
|
content_len 1 byte
|
||||||
|
pres_method 2 bit
|
||||||
|
interpretation 3 bit
|
||||||
|
ext1 1 bit val 1
|
||||||
|
hl_charact_id 7 bit
|
||||||
|
ext2 1 bit
|
||||||
|
ext_hl_charact_id 7 bit if (ext1 == 0)
|
||||||
|
ext3 1 bit val 1
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.17 Keypad facility: no need
|
||||||
|
# 10.5.4.18 Low layer compatibility: no need
|
||||||
|
# 10.5.4.19 More data: no need
|
||||||
|
# 10.5.4.20 Notification ind: no need
|
||||||
|
|
||||||
|
# 10.5.4.21 Progress ind
|
||||||
|
ie_spec cc_progress_ind
|
||||||
|
content_len 1 byte
|
||||||
|
location 3 bit
|
||||||
|
spare 1 bit val 0
|
||||||
|
coding_standard 2 bit
|
||||||
|
ext1 1 bit val 1
|
||||||
|
progress_descr 7 bit
|
||||||
|
ext2 1 bit val 1
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.21b Redirecting party BCD number
|
||||||
|
ie_alias cc_redir_party_bcd_number cc_calling_party_bcd_number
|
||||||
|
|
||||||
|
# 10.5.4.21c Redirecting party subaddr
|
||||||
|
ie_alias cc_redir_party_subaddr cc_calling_party_subaddr
|
||||||
|
|
||||||
|
# 10.5.4.22 Repeat indicator: no need (TV4)
|
||||||
|
# 10.5.4.22a Reverse call setup direction: no need
|
||||||
|
# 10.5.4.22b SETUP container: no need
|
||||||
|
# 10.5.4.23 Signal: no need
|
||||||
|
# 10.5.4.24 SS Version ind: no need
|
||||||
|
# 10.5.4.25 User-user
|
||||||
|
ie_spec cc_user_user
|
||||||
|
content_len 1 byte
|
||||||
|
pdisc 1 byte
|
||||||
|
info * byte
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.4.26 Alerting Pattern: no need
|
||||||
|
|
||||||
|
# 10.5.4.27 Allowed actions: no need
|
||||||
|
|
||||||
|
# 10.5.4.28 Stream identifier: no need
|
||||||
|
# 10.5.4.29 Network call control capabilities: no need
|
||||||
|
# 10.5.4.30 Cause of no CLI: no need
|
||||||
|
# 10.5.4.31 Void
|
||||||
|
# 10.5.4.32 Supported codec list: too complex
|
||||||
|
# 10.5.4.33 Service category: no need
|
||||||
|
# 10.5.4.34 Redial: no need
|
||||||
|
# 10.5.4.35: Network-initiated service upgrade indicator: no need
|
|
@ -0,0 +1,58 @@
|
||||||
|
# TODO: we always code bitfields from LSB to MSB, the parser needs to know that!
|
||||||
|
|
||||||
|
ie_spec cell_identity
|
||||||
|
cell_identity 16 bit big
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.1.3 Location Area ID
|
||||||
|
ie_spec la_id
|
||||||
|
mcc 3 bcd
|
||||||
|
mnc 3 bcd
|
||||||
|
lac 16 bit big
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.1.4 Mobile ID
|
||||||
|
ie_spec mobile_id
|
||||||
|
content_len 8 bit
|
||||||
|
type 3 bit
|
||||||
|
odd_even_ind 1 bit
|
||||||
|
identity_digit * bcd
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.1.5 MS Classmark 1
|
||||||
|
ie_spec ms_classmark1
|
||||||
|
rf_pwr_capa 3 bit
|
||||||
|
a51 1 bit
|
||||||
|
es_ind 1 bit
|
||||||
|
rev_level 2 bit
|
||||||
|
spare 1 bit
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.1.6 MS Classmark 2
|
||||||
|
ie_spec ms_classmark2
|
||||||
|
content_len 8 bit
|
||||||
|
rf_pwr_capa 3 bit
|
||||||
|
a51 1 bit
|
||||||
|
es_ind 1 bit
|
||||||
|
rev_level 2 bit
|
||||||
|
spare 1 bit
|
||||||
|
fc 1 bit
|
||||||
|
vgcs 1 bit
|
||||||
|
vbs 1 bit
|
||||||
|
sm_capa 1 bit
|
||||||
|
ss_screen_ind 2 bit
|
||||||
|
ps_capa 1 bit
|
||||||
|
spare2 1 bit
|
||||||
|
a52 1 bit
|
||||||
|
a53 1 bit
|
||||||
|
cmsp 1 bit
|
||||||
|
solsa 1 bit
|
||||||
|
ucs2 1 bit
|
||||||
|
lcsva_capa 1 bit
|
||||||
|
spare3 1 bit
|
||||||
|
cm3 1 bit
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.1.7 MS Classmark 3: too complex
|
||||||
|
|
||||||
|
# 10.5.1.11 Priority level: TV4, no need
|
|
@ -0,0 +1,38 @@
|
||||||
|
|
||||||
|
# 10.5.3.1 Auth parameter RAND: no need
|
||||||
|
# 10.5.3.1.1 Auth parameter AUTN: no need
|
||||||
|
# 10.5.3.2 Auth response parameter: no need
|
||||||
|
# 10.5.3.2.1 Auth resp extension: no need
|
||||||
|
# 10.5.3.2.2 Auth failure parameter: no need
|
||||||
|
# 10.5.3.3 CM service type: no need (TV4)
|
||||||
|
# 10.5.3.4 Identity type: no need (TV4)
|
||||||
|
# 10.5.3.5 Location updating type: no need (TV4)
|
||||||
|
|
||||||
|
# 10.5.3.5a Network Name
|
||||||
|
ie_spec network_name
|
||||||
|
num_spare_bits 3 bit
|
||||||
|
add_ci 1 bit
|
||||||
|
coding_scheme 3 bit
|
||||||
|
ext 1 bit
|
||||||
|
text * byte
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.5.3.6 Reject cause: no need, single byte
|
||||||
|
# 10.5.3.7 Follow on proceed: no need (single byte)
|
||||||
|
# 10.5.3.8 Time Zone: no need (single byte)
|
||||||
|
# 10.6.3.9 Time Zone and Time
|
||||||
|
ie_spec nitz
|
||||||
|
year 2 bcd
|
||||||
|
month 2 bcd
|
||||||
|
day 2 bcd
|
||||||
|
hour 2 bcd
|
||||||
|
minute 2 bcd
|
||||||
|
second 2 bcd
|
||||||
|
time_zone 2 bcd
|
||||||
|
end_ie_spec
|
||||||
|
|
||||||
|
# 10.6.3.10 CTS permission: no need (single byte)
|
||||||
|
|
||||||
|
# 10.5.3.11 LSA identifier: no need
|
||||||
|
|
||||||
|
# 10.5.3.13 Emergency Number list (too complex)
|
Loading…
Reference in New Issue