1. Fix code generated from ASN.1 of F1AP v15.4.0 failed to be compiled
2. Fix incorrect UPER encoding for empty extensible SEQUENCE in 38.331
3. Fix the problem that duplicate type names exist in OPEN TYPE
Fix the problem that duplicate type names exist in OPEN TYPE.
The following excerpt of ASN.1 of X2AP is one example.
HandoverRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}|
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory}|
...
}
1. Fix the problem of compiling NR_RangeToBestCell.c of NR-RRC 15.3.0
2. Fix the problem that default OCTET/BIT STRING value not used in APER
3. Add support of extension group inside CHOICE type used in LTE-RRC 15.3.0
4. Fix the problem that NGAP 15.0.0 ASN.1 can not generate C files
1. Fix the problem of compiling NR_RangeToBestCell.c of NR-RRC 15.3.0
2. Fix the problem that default OCTET/BIT STRING value not used in APER
3. Add support of extension group inside CHOICE type used in LTE-RRC 15.3.0
4. Fix the problem that NGAP 15.0.0 ASN.1 can not generate C files
1. It's no need to modify LTE-RRC's ASN.1 file for enabling option group
feature in generate_asn1.
2. It's no need to patch the C header files generated from
LTE-RRC/S1AP/X2AP's ASN.1 in fix_asn1.
3. It's no need to pre-process S1AP/X2AP's ASN.1 for enabling information
object class feature by asn1tostruct.py.
This commit requires an un-official version of asn1c which are
collaboration of asn1c community members and `build_helper` is modified
in this commit accordingly :
https://github.com/brchiu/asn1c/tree/velichkov_s1ap_plus_option_group
This asn1c can also convert ASN.1 of 5G NR RRC (38.331, v15.1.0) and
generate C files with -findirect-choice command line option without
tweaking ASN.1 file.
Examples for how to use this asn1c for S1AP are in S1AP files, e.g.
s1ap_eNB_nas_procedures.c and s1ap_eNB_handler.c.
There is an modified openair-cn (based on tag 0.5.0) with this new asn1c at :
https://github.com/brchiu/openair-cn/tree/new-asn1c
Basic S1AP interaction and data transfer operation between OAI eNB and
this modified openair-cn has been tested.
Note: Community version of asn1c is keeping evolved to provide better usage.
To minimize migration effort, we follow the logic of legacy macro Rel10 and Rel14 used
for conditional compilation of current code.
In the future, they might be changed to accommodate finer software configuration, e.g.
MAKE_VERSION(12,2,0) or MAKE_VERSION(13,1,0) .... etc.
1. Previous SW configuration for different RRC version relies on whether macro Rel10,
Rel14 defined or not by checking #ifdef Rel14 or #if defined(Rel10) || defined(R14).
Whenever there is a newer RRC version, e.g. Rel15, it will be very a tedious and
error-prone job to add defined(Rel15) in every place.
2. Some RRC messages are defined in release 13 instead of release 14, NB-IoT
feature is one of such example. Our code shall reflect this fact instead of using
an afterward version number in software configuration.
3. Some RRC messages or some fields of certain RRC messages are added in the middle
a release, e.g. SystemInformationBlockType1_v1310_IEs_t defined in RRC 13.1.0
and RRC 9.2.0 made some changes to SIB12 and SIB13 so we have sib12_v920 and
sib13_v920 fields in SIB12 and SIB13's struct.
We need a finer grain of control when using ASN1 from different RRC version.
4. S1AP also has this problem that it use UPDATE_RELEASE_9 and UPDATE_RELEASE_10 to
differentiate between various S1AP version.
This commit propose using MAKE_VERSION(x,y,z) to designate the version number and
modify current conditional compilation accordingly.
Note: 2018/04/16, Modified based on Cedric's comment.