(1) With which type(s) of BTS does OpenBSC work?
Check the in bsc_hack.c : handle_options(), it will finally leads you to
gsm_bts_type() in gsm_data.c and there you can find the struct
bts_types. For now it supports nanobts900/1800 and bs11.
(2) What is OML NM?
OML stands for Organization and Maintenance Layer, it has a broad
meaning, but in this case it's for configuring the BTS. Actually it's
more for managing and configuring the network. Maybe other guys can give
better explenation about OML NM.
(3) What is the best way to follow the path in the
code in case of a call?
Well, you should know that the whole communication is based on select().
All socket connection and traffic is based on select(). When select is
called, it blocks untill a certain amount of time or an event occurs on
one of the provided file-descriptors. It than searches in a list
(Linux-doublylinked-list) which FD caused an event and than the
appropriate function will be called to handle it further
(callback-function). In case of a call you might look at rsl layer.