this is a small utility program illustrating the use of the new (2020) TRAU related blocks like I.460 mux, TRAU frame synchronizer, TRAU frame decoder and trau2rtp conversion. The only argument to the progrmam is the input file, which can either be * a DAHDI device like /dev/dahdi/chan/004/002 to use TS2 on span/line 4 * a pre-recorded capture file containing raw binary 64k timeslot data The tool will automatically determine if a regular file or a DAHDI device was passed, and behave accordingly. == reading capture files There are FR and EFR exampel captures included. The input data (*.log.bz2) was generated using strace on an osmo-nitb process while a MO-to-MT call was running on two sub-slots of TS2. The strace log is converted to a binary stream of the raw 64bit E1 slot using strace-write-parse.py You can use the too like this: * start osmo-gapk as a RTP to ALSA sink like osmo-gapk -I 127.0.0.1/9999 -f gsm -g rawpcm-s16le -A default # for FR osmo-gapk -I 127.0.0.1/9999 -f rtp-efr -g rawpcm-s16le -A default # for EFR * run trau2rtp to read the bin file and generate RTP: ./trau2rtp e1_ts2_fr.bin # for FR ./trau2rtp e1_ts2_efr.bin # for EFR == Interfacing a DAHDI device It can be operated in two modes: a) local loop between sub-slots 1+2 (bit-offset 2 + 4), i.e. connecting the first two calls on a 'typical' TRX0 where the first sub-slot (bit-offset 0) is not used, OR b) interface between 64k TRAU slot and RTP. IP addresses + port numbers are compiled-in, you need to modify them accordingly. In mode "a", you can use it to have voice calls for low-level debugging without a media gateway. In mode "b", you can e.g. play back audio from an exterenal RTP source and listen to it over the GSM attached mobile phone. Command line for playing back EFR via RTP: ./osmo-gapk -f amr-efr -i ../tests/ref-files/hhgttg_part1_5.s16.amr-efr -g rtp-efr -O 192.168.11.179/8002 -t -l Command line for playing back FR via RTP: ./osmo-gapk -f gsm -i ../tests/ref-files/hhgttg_part1_5.s16.gsm -g gsm -O 192.168.11.179/8002 -t -l The '-l' option is experimental and requires gapk patch I2d552695dfb4cc96039838e79e0f5ae25a6737c8. If you want to use it with EFR, you need to change pq_file.c to skip the AMR file header when rewinding: - fseek(state->fh, 0, SEEK_SET); + fseek(state->fh, 6, SEEK_SET); The code has been tested against BS-11 and RBS6000/DUG20 in both modes (loop vs. RTP) and for FR and EFR.