mirror of
https://github.com/PentHertz/OpenBTS.git
synced 2026-05-14 08:19:44 +00:00
Commit e161523c (transceiver: simplify transmit power control) changed transmit gain control to RF setting only. This was appropriate for a WBX board with 25 dB of gain control, but inappropriate for an RFX with fixed transmit gain. RFX boards will regain the ability to set transmit attenuation. Since gain is set on the RF side first, reintroducing digital gain settings should have limited overall effect on non-RFX daughterboards. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2660 19bc5d8c-e614-43d4-8b26-e1612bc8e597 |
||
|---|---|---|
| .. | ||
| Complex.h | ||
| DummyLoad.cpp | ||
| DummyLoad.h | ||
| inband-signaling-usb | ||
| Makefile.am | ||
| pulseApproximate.m | ||
| radioDevice.h | ||
| radioInterface.cpp | ||
| radioInterface.h | ||
| README | ||
| README.DFEsymbolspaced | ||
| README.Talgorithm | ||
| runTransceiver.cpp | ||
| sigProcLib.cpp | ||
| sigProcLib.h | ||
| sigProcLibTest.cpp | ||
| std_inband.rbf | ||
| Transceiver.cpp | ||
| Transceiver.h | ||
| UHDDevice.cpp | ||
| USRPDevice.cpp | ||
| USRPDevice.h | ||
| USRPping.cpp | ||
The Transceiver The transceiver consists of three modules: --- transceiver --- radioInterface --- USRPDevice The USRPDevice module is basically a driver that reads/writes packets to a USRP with two RFX900 daughterboards, board A is the Tx chain and board B is the Rx chain. The radioInterface module is basically an interface b/w the transceiver and the USRP. It operates the basestation clock based upon the sample count of received USRP samples. Packets from the USRP are queued and segmented into GSM bursts that are passed up to the transceiver; bursts from the transceiver are passed down to the USRP. The transceiver basically operates "layer 0" of the GSM stack, performing the modulation, detection, and demodulation of GSM bursts. It communicates with the GSM stack via three UDP sockets, one socket for data, one for control messages, and one socket to pass clocking information. The transceiver contains a priority queue to sort to-be-transmitted bursts, and a filler table to fill in timeslots that do not have bursts in the priority queue. The transceiver tries to stay ahead of the basestation clock, adapting its latency when underruns are reported by the radioInterface/USRP. Received bursts (from the radioInterface) pass through a simple energy detector, a RACH or midamble correlator, and a DFE-based demodulator. NOTE: There's a SWLOOPBACK #define statement, where the USRP is replaced with a memory buffer. In this mode, data written to the USRP is actually stored in a buffer, and read commands to the USRP simply pull data from this buffer. This was very useful in early testing, and still may be useful in testing basic Transceiver and radioInterface functionality.