path: root/Transceiver52M/Transceiver.h
AgeCommit message (Collapse)AuthorFilesLines
2014-10-07ms: Enable synchronized uplink burstsThomas Tsou1-7/+3
Extend the measured SCH timing offset from the downlink to the uplink path. In order to absorb the frame timing adjustment and remove the potential of thread contention during the change, combine the lower FIFO threads into single drive loop. Force timing changes through to the UHD interface with stream flags triggered through the updateAlignment() call. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-10-06ms: Add SETRXMASK commandThomas Tsou1-1/+2
Create 64-bit multiframe masks for each physical slot. These are set through the SETRXMASK command with first and second arguemnts timeslot and mask respectively. Modulus value of 102 is currently not handled and will cause all receive bursts on that slot to be disabled in MS tracking mode. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-10-06ms: Add BSIC request commandThomas Tsou1-0/+1
The GETBSIC command returns 1 if no SCH has been decoded, and 0 with the BSIC value if SCH decoding has been successful. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-10-06Transceiver52M: Add FCCH based frequency correctionThomas Tsou1-1/+6
Enable frequency detection and correction by buffering the previous frame to allow FCCH measurement and compensation after frame timing is locked using the SCH. When the SCH is detected and symbol timing matched, measure the FCCH burst from one frame prior and compensate by baseband tuning the DDC on the device. Avoid appying frequency corrections to the RF portion due to possible tuning delays, which is not an issue with DDC tuning. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-10-06Transceiver52M: Decode SCH and adjust GSM clockThomas Tsou1-0/+3
When in MS acquisition mode, attempt to decode SCH and establish the BTS frame timing. Lock the transceiver GSM clock to the BTS by adjusting the clock value by the measured burst-SCH offset. Add tracking state, TRX_MODE_MS_TRACKING, which continues to detect and decode the SCH with timing tracking, but only on SCH poitions within the 51 multiframe. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-10-06Transceiver52M: Setup TRX mode for MS acquisitionThomas Tsou1-0/+9
On receipt of a SYNC command on the socket interface, set the mode to TRX_MODE_MS_ACQUIRE, which attempts to synchronize against a remote BTS signal by detecting the SCH burst and timing offset. The transceiver defaults to TRX_MODE_OFF, which implies no BTS or MS capability has been enabled. There is currently no command to enable the BTS mode. The MS mode also disables uplink transmission since no such capability is implemented. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-10-06Transceiver52M: Add SCH detection capabilityThomas Tsou1-0/+5
Use similar approach for detecting normal and RACH bursts, but apply a sample shift after detection in order to gradually zero the measured timing offset. SCH synchronization sequence and setup are added similar to RACH detection with the main difference, aside being the SCH runs full length of the burst. History is also added to accommodate full length burst correlation. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2014-01-26Transceiver52M: Disable filler table retransmissions by defaultThomas Tsou1-2/+6
Burst selection at a particular time works in the following order of priority. 1. Slot is disabled with channel combination set to NONE (default) 1. Burst exists in priority queue for the current time. 2. Filler table entry is used This patch sets default behaviour to force all filler table entries to zero and disallows filler table changes. This effectively means that only bursts received from upper layers will be transmitted and nothing will be automatically transmitted in the absence or delay of incoming burts at a particular time. New Command line option "Enable C0 filler table" allows reverting to previous idle burst generation and retransmission behaviour on TRX0. Retransmission cannot be enabled on non-C0 channels. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-16Transceiver52M: Create new osmo-trx executableThomas Tsou1-0/+3
Create new main executable with full command line option parsing of relevant parameters. Database configuration table still exists (and must exist because of the global gConfig object), but can be bypassed with command line options. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Use independent noise vectors for each channelThomas Tsou1-3/+4
Each ARFCN channel may be independently configureted and possibly on separate hardware, so don't share a single vector for noise estimate calculations. Allow a non-pointer based iterator so we can get away with using the default copy constructor. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Refactor receive path outer burst handlingThomas Tsou1-0/+16
Separate the large pullRadioVector() call, which forms the central portion of the receive path burst processing. Break out RACH, normal burst, and demodulation into separate methods. This makes the burst handling from the FIFO read to soft bit output somewhat more manageable. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Add vectorized radio burst capabilityThomas Tsou1-1/+1
This patch allows multiple signalVectors to be stored within a single radioVector object. The motivation is to provide a facility for diversity and/or MIMO burst handling. When no channel value is specified, single channel bevhaviour is maintained. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Set variable thread priority levelsThomas Tsou1-1/+1
The transceiver and underlying device drivers are threaded. use the following priority levels. 0.50 - UHD driver internal threads 0.45 - Receive device drive thread 0.44 - Transmit device drive thread 0.43 - UHD asynchronous update thread (error reporting) 0.42 - Receive burst processing thread(s) Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-15Transceiver52M: Add multi channel transceiver supportThomas Tsou1-39/+49
This patch primarily addresses devices with multiple RF front end support. Currently device support is limited to UmTRX. Vectorize transceiver variables to allow multiple asynchronous threads on the upper layer with single downlink and uplink threads driving the UHD I/O interface synchronously. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-08Transceiver52M: Separate transceiver per-slot state informationThomas Tsou1-31/+69
Collect the slot information into an indpendent state object. This will allow us to easily create multiple instances of internal state variables without having to replicate the transceiver object itself. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-08Transceiver52M: Delay socket allocation to heapThomas Tsou1-5/+5
For multiple transceiver connections, it is inappropriate to allocate all sockets in the transceiver constructor due to not knowing how many connections are avaialble in advance and for error checking purposes. Instead, store the base socket address port combination and setup the sockets in the initialization call. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-11-08Transceiver52M: Remove transmit logging optionThomas Tsou1-15/+0
The current status and operability of this compile option is unknown. Remove due to lack of use, demand, and maintenance. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Update noise measurement calculationThomas Tsou1-2/+2
Previous removal of the energy detector requirement broke the noise level calculation loop. The previous adaptive approach was finicky - noticably at high gain levels. Since we no longer use the energy threshold for primary burst gating, we can return to a simpler world. In the new approach, we compute a running average of energy levels and track them with a noise vector. A timeslot that passes the correlator threshold is a valid burst. These are not used in the noise calculation. Everything else is considered noise and used to compute the noise level with respect to full scale input level, which for almost all supported devices is 2^15. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Setup dual sample rate transceiverThomas Tsou1-1/+2
This patch applies oversampling, when selected with 4 sps, to the downlink only, while running the receiver with minimal sampling at 1 sps. These split sample rates allow us to run a highly accurate downlink signal with minimal distortion, while keeping receive path channel filtering on the FPGA. Without this patch, we oversample the receive path and require a steep receive filter to get similar adjacent channel suppression as the FPGA halfband / CIC filter combination, which comes with a high computational cost. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Separate main transmit and receive drive threadsThomas Tsou1-4/+8
This patch primarily addresses observed repeated overrun conditions in embedded environments - namely ARM. The heartbeat of the transceiver is derived from the receive sample stream, which drives the main GSM clock. Detach the transmit thread from the receive loop to avoid interfering with the receive I/O, which is sensitive to overrun conditions if pull process is interrupted. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Make GSM pulse filter internal to implementationThomas Tsou1-2/+1
There is no reason expose the pulse shaping filter outside of the signal processing calls. The main transceiver object makes no use of the filter and there's no reason to pass it around. Initialize the pulse shape with the signal processing library, and maintain an internal static member like many of the other library variables. Similarly destroy the object when the library is closed. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-10-18Transceiver52M: Rename samples-per-symbol variable namesThomas Tsou1-3/+3
Because repeatedly typing mSamplesPerSymbol is giving me carpal tunnel syndrome. Replace with the much shorter, easier to type, and just as clear name of 'sps'. Signed-off-by: Thomas Tsou <tom@tsou.cc>
2013-06-15Transceiver52M: Add more complete specification of GPRS typesttsou1-5/+7
Submitted by: Ivan Kluchnikov <kluchnikovi@gmail.com> Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5690 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2013-06-15Transceiver52M: Add GPRS combinations to correlation typesttsou1-1/+5
Submitted-by: Andreas Eversberg <jolly@eversberg.eu> Signed-off-by: Thomas Tsou <tom@tsou.cc> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@5677 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-11-26uhd: inline thread priority settingkurtis.heimerl1-1/+4
Push the ability to set thread priority out to the 52M Transceiver interface, because that's where the thread control exists. Signed-off-by: Thomas Tsou <ttsou@vt.edu> git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2644 19bc5d8c-e614-43d4-8b26-e1612bc8e597
2011-10-12Adding in the missing Transceiver52M directorydburgess1-0/+207
git-svn-id: http://wush.net/svn/range/software/public/openbts/trunk@2307 19bc5d8c-e614-43d4-8b26-e1612bc8e597