forked from bastibl/osmo-tetra
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update README to reflect project status
- Loading branch information
Showing
1 changed file
with
61 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
TETRA MAC/PHY layer experimentation code | ||
(C) 2010 by Harald Welte <[email protected]> | ||
(C) 2010-2011 by Harald Welte <[email protected]> | ||
====================================================================== | ||
|
||
This code aims to implement the (so far) sending and (in the future) | ||
receiving part of the TETRA MAC/PHY layer. | ||
This code aims to implement the sending and receiving part of the | ||
TETRA MAC/PHY layer. | ||
|
||
If you read the ETSI EN 300 392-2 (TETRA V+D Air Interface), you will | ||
find this code implementing the parts between the MAC-blocks (called | ||
|
@@ -12,23 +12,58 @@ type-1 bits) and the bits that go to the DQPSK-modulator (type-5 bits). | |
It is most useful to look at Figure 8.5, 8.6, 9.3 and 19.12 in conjunction | ||
with this program. | ||
|
||
You will need libosmocore (http://bb.osmocom.org/trac/wiki/libosmocore) to link. | ||
|
||
|
||
== Demodulator == | ||
|
||
src/demod/python/cpsk.py | ||
* contains a gnuradio based pi4/DQPSK demodulator, courtesy of KA1RBI | ||
src/demod/python/tetra-demod.py | ||
* call demodulator on a 'cfile' containing complex baseband samples | ||
src/demod/python/usrp1-tetra_demod.py | ||
* use demodulator in realtime with a USRP1 SDR | ||
src/demod/python/usrp2-tetra_demod.py | ||
* use demodulator in realtime with a USRP2 SDR | ||
|
||
The output of the demodulator is a file containing one float value for each symbol, | ||
containing the phase shift (in units of pi/4) relative to the previous symbol. | ||
|
||
You can use the "float_to_bits" program to convert the float values to unpacked | ||
bits, i.e. 1-bit-per-byte | ||
|
||
|
||
== PHY/MAC layer == | ||
|
||
=== library code === | ||
|
||
Specifically, it implements: | ||
lib_crc.[ch] | ||
* CRC16-CCITT (currently defunct/broken as we need it for | ||
non-octet-aligned bitfields) | ||
tetra_rm3014.[ch] | ||
* (30, 14) Reed-Muller code for the ACCH (broadcast block of | ||
each downlink burst) | ||
tetra_conv_enc.[ch] | ||
* 16-state Rate-Compatible Punctured Convolutional (RCPC) coder | ||
tetra_interleave.[ch] | ||
* Block interleaving (over a single block only) | ||
tetra_scramb.[ch] | ||
* Scrambling | ||
tetra_burst.[ch] | ||
* Routines to encode continuous normal and sync bursts | ||
testpdu.[ch] | ||
* Routines to build some example SYNC-PDU and SYSINFO-PDU | ||
lower_mac/crc_simple.[ch] | ||
* CRC16-CCITT (currently defunct/broken as we need it for | ||
non-octet-aligned bitfields) | ||
lower_mac/tetra_conv_enc.[ch] | ||
* 16-state Rate-Compatible Punctured Convolutional (RCPC) coder | ||
lower_mac/tetra_interleave.[ch] | ||
* Block interleaving (over a single block only) | ||
lower_mac/tetra_rm3014.[ch] | ||
* (30, 14) Reed-Muller code for the ACCH (broadcast block of | ||
each downlink burst) | ||
lower_mac/tetra_scramb.[ch] | ||
* Scrambling | ||
lower_mac/viterbi*.[ch] | ||
* Convolutional decoder for signalling and voice channels | ||
phy/tetra_burst.[ch] | ||
* Routines to encode continuous normal and sync bursts | ||
phy/tetra_burst_sync.[ch] | ||
|
||
|
||
=== Receiver Program === | ||
|
||
The main receiver program 'tetra-rx' expects an input file containing a | ||
stream of unpacked bits, i.e. 1-bit-per-byte. | ||
|
||
|
||
=== Transmitter Program === | ||
|
||
The main program conv_enc_test.c generates a single continuous downlinc sync | ||
burst (SB), contining: | ||
|
@@ -38,13 +73,14 @@ burst (SB), contining: | |
|
||
Scrambling is set to 0 (no scrambling) for all elements of the burst. | ||
|
||
You will need libosmocore (http://bb.osmocom.org/trac/wiki/libosmocore) to link. | ||
|
||
|
||
It does not actually modulate and/or transmit yet. | ||
|
||
USAGE: | ||
|
||
src/float_to_bits data/dqpsk-float.dat data/out.bits | ||
== Quick example == | ||
|
||
src/burst_test data/out.bits | ||
# assuming you have generated a file samples.cfile at a sample rate of | ||
# 195.312kHz (100MHz/512 == USRP2 at decimation 512) | ||
src/demod/python/tetra-demod.py -i /tmp/samples.cfile -o /tmp/out.float -s 195312 -c 0 | ||
src/float_to_bits /tmp/out.float /tmp/out.bits | ||
src/tetra-rx /tmp/out.bits | ||
|