GithubHelp home page GithubHelp logo

tubbz-alt / osmo-tetra Goto Github PK

View Code? Open in Web Editor NEW

This project forked from osmocom/osmo-tetra

0.0 0.0 0.0 223 KB

Mirrored from git://git.osmocom.org/osmo-tetra

Home Page: http://osmocom.org/projects/tetra

License: GNU Affero General Public License v3.0

Shell 2.31% Makefile 0.69% C 79.97% Python 16.82% C++ 0.21%

osmo-tetra's Introduction

TETRA MAC/PHY layer experimentation code

(C) 2010-2016 by Harald Welte [email protected] and contributors

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 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 to build this softwar

Homepage

The official homepage of the project is https://osmocom.org/projects/tetra/wiki/OsmocomTETRA

GIT Repository

You can clone from the official osmo-tetra.git repository using

git clone git://git.osmocom.org/osmo-tetra.git

There is a cgit interface at http://git.osmocom.org/osmo-tetra/

Mailing List

Discussions related to osmo-tetra are happening on the [email protected] mailing list, please see https://lists.osmocom.org/mailman/listinfo/tetra for subscription options and the list archive.

Please observe the Osmocom Mailing List Rules when posting.

Contributing

Our coding standards are described at https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards

We us a gerrit based patch submission/review process for managing contributions. Please see https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit for more details

The current patch queue for osmo-tetra can be seen at https://gerrit.osmocom.org/#/q/project:osmo-tetra+status:open

Demodulator

src/demod/python/cpsk.py

  • contains a gnuradio based pi4/DQPSK demodulator, courtesy of KA1RBI

src/demod/python/osmosdr-tetra_demod_fft.py

  • call demodulator on any source supported by gr-osmosdr (uhd, fcd, hackrf, blaerf, etc.)

src/demod/python/simdemod2.py

  • call demodulator on a 'cfile' containing complex baseband samples

src/demod/python/{uhd,fcdp}-tetra_demod.py

  • use demodulator directly with UHd or FCDP hadware (no gr-osmosdr)

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: 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: * a SYNC-PDU as block 1 * a ACCESS-ASSIGN PDU as broadcast block * a SYSINFO-PDU as block 2

Scrambling is set to 0 (no scrambling) for all elements of the burst.

It does not actually modulate and/or transmit yet.

Quick example

# 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

osmo-tetra's People

Contributors

aeburriel avatar blackbit42 avatar blobbsen avatar frankas avatar laf0rge avatar luckyhacky avatar mnhauke avatar neeels avatar oe1rfc avatar pasky avatar pinkavaj avatar shinjile avatar smunaut avatar sq5bpf avatar steve-m avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.