F1AP_LIB_FIND_IE() is used to look up elements in a list, but was
hitherto hardcoded to use "protocolIEs" as an intermediate struct. A
follow-up commit will use this macro where we don't have protocolIEs,
but "iE_Extensions". Hence, modify to make it work for that case (and
others) as well.
Introduce generic _F1_CHECK_EXP(), which is like the macros for checking
values (_F1_EQ_CHECK_INT() etc). Reuse the same for introducing
_F1_EQ_CHECK_OPTIONAL_IE that will be used to write the check for
optional fields more concisely.
CP_OPT_BYTE_ARRAY() FREE_OPT_BYTE_ARRAY() are macros to wrap handling of
optional byte arrays.
_F1_MALLOC() simplifies allocations and is similar to asn1cCallocOne(),
but provided to avoid confusion (since more than ASN.1 structures will
use it).
All will be used in the following commits.
* _F1_EQ_CHECK_GENERIC can be used to check the equality of two different members of F1AP structs
and return `false` if the condition is not met.
When the condition fails, the macros will print a debug message to the standard error stream,
including the function name, line number, and the provided format string and arguments.
Add a new target f1ap_lib that groups F1AP ASN.1 encoding&decoding for
messages defined f1ap_messages_types.h. The objective is to, for each
F1AP message,
- add encoder&decoder (similar to what already exists, but without
mandatory message sending afterwards)
- eq_X() function that checks two messages for equality (to be used
mostly in tests)
- cp_X() function that deep-copies a message, e.g., to be used when
sending ITTI messages, instead of manual copying done currently
- free_X() function that frees the memory associated to a memory, to
avoid memory leaks.
Each message will be tested, notably that encoding&decoding as well as
copying yield identical messages.
The actual message encoding & decoding, tests, and their use will be
done in the forthcoming commits.