Update README to reflect project status

This commit is contained in:
Harald Welte 2011-01-22 12:43:17 +01:00
parent 7b423e9989
commit 6c73dad43d

74
README
View file

@ -1,9 +1,9 @@
TETRA MAC/PHY layer experimentation code TETRA MAC/PHY layer experimentation code
(C) 2010 by Harald Welte <laforge@gnumonks.org> (C) 2010-2011 by Harald Welte <laforge@gnumonks.org>
====================================================================== ======================================================================
This code aims to implement the (so far) sending and (in the future) This code aims to implement the sending and receiving part of the
receiving part of the TETRA MAC/PHY layer. TETRA MAC/PHY layer.
If you read the ETSI EN 300 392-2 (TETRA V+D Air Interface), you will 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 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 It is most useful to look at Figure 8.5, 8.6, 9.3 and 19.12 in conjunction
with this program. 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: Specifically, it implements:
lib_crc.[ch] lower_mac/crc_simple.[ch]
* CRC16-CCITT (currently defunct/broken as we need it for * CRC16-CCITT (currently defunct/broken as we need it for
non-octet-aligned bitfields) non-octet-aligned bitfields)
tetra_rm3014.[ch] 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 * (30, 14) Reed-Muller code for the ACCH (broadcast block of
each downlink burst) each downlink burst)
tetra_conv_enc.[ch] lower_mac/tetra_scramb.[ch]
* 16-state Rate-Compatible Punctured Convolutional (RCPC) coder
tetra_interleave.[ch]
* Block interleaving (over a single block only)
tetra_scramb.[ch]
* Scrambling * Scrambling
tetra_burst.[ch] lower_mac/viterbi*.[ch]
* Convolutional decoder for signalling and voice channels
phy/tetra_burst.[ch]
* Routines to encode continuous normal and sync bursts * Routines to encode continuous normal and sync bursts
testpdu.[ch] phy/tetra_burst_sync.[ch]
* Routines to build some example SYNC-PDU and SYSINFO-PDU
=== 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 The main program conv_enc_test.c generates a single continuous downlinc sync
burst (SB), contining: burst (SB), contining:
@ -38,13 +73,14 @@ burst (SB), contining:
Scrambling is set to 0 (no scrambling) for all elements of the burst. 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.
== Quick example ==
USAGE: # assuming you have generated a file samples.cfile at a sample rate of
# 195.312kHz (100MHz/512 == USRP2 at decimation 512)
src/float_to_bits data/dqpsk-float.dat data/out.bits 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/burst_test data/out.bits src/tetra-rx /tmp/out.bits