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.
Since Range512, Range256, and Range128 are all _freqListRange and have
the same basic decode operation, they are decoded the same, but Range256
and Range128 add the decoded ARFCNs to the origin ARFCN mod 1024.
Range512 does not add to the original ARFCN.