The idea is to group protocol extensions and have one message
type (with 4 variations: Req/Ind/Cnf/Err) per group. Similar
to the stack and heap allocation model in Linux, new entries
shall be added to the 'RRCTLMsgType' enum as follows:
* regular messages - from the bottom downward,
* extension groups - from the end upward.
The mask '11xxxx'B gives us 16 unique messages, one is reserved.
RRCTL is a simple protocol (inspired by Osmocom's L1CTL) that allows
an external NAS entity to control the RRC layer of srsUE [1][2].
The basic primitives are PLMN search, selection, and PDU transfer.
The following message types are implemented:
* Reset - reset internal state of the external NAS interface;
* NetworkSearch - initiates PLMN (carrier) search on pre-configured
EARFCN (Absolute Radio Freqency Number);
* NetworkSelect - binds the UE to one of the previously detected
carriers (see `NetworkSearch`) defined by a
given pair of MCC and MNC;
* ConnEstabish - establishes connection to the serving cell
(previously selected using `NetworkSelect`)
with a given cause and NAS PDU;
* ConnRelease - releases previously established dedicated connection;
* ConnData - encapsulates a received (Downlink) or to be transmitted
(Uplink) NAS PDU (the former also contains LCID).
[1] https://github.com/srsran/srsRAN (original project)
[2] https://github.com/axilirator/srsLTE (extNAS fork)
Without this patch, an unexpected value (e.g. an integer) passed
to {BufBCD,PLMN}.set_val() would be silently ignored and the
actual value would remain unchanged.
DebugMux is a vendor specific interface exposed by nearly all old
Sony Ericsson phones and modems. Similar to the Qualcomm's Diag
interface, DebugMux can be used to obtain logging messages from
different sub-systems, including the baseband.
Unfortunately, Sony Ericsson never published any documentation
describing the protocol. All information was obtained by analyzing
serial port traces and reverse-engineering DebugMuxSrv.exe.