AgeCommit message (Collapse)AuthorFilesLines
2016-11-14e1_recorder: Add LAPD PCAP dump supportHEADmasterHarald Welte1-1/+41
We can now write a PCAP file from the HDLC-decoded super channel.
2016-11-14hdlc: add call-back function for completely decoded HDLC framesHarald Welte2-5/+32
... and some more comments/documentation
2016-11-14e1cap_dump: Implement functional HDLC decode of super-channelHarald Welte3-11/+105
Finally the bit ordering and bit format of the SuperChannel has been figured out. * the data as read from DAHDI must be flipped (0->1 / 1->0). why? * the data must be read lsb-first when converting into a bit-buffer We are now getting the following output e.g. for a OM2000 "TX Configuration Request" message: fa 03 8a 8a 80 80 00 13 00 b0 0b 00 ff 01 20 00 2e 2b 1c 00 06 01 95 81 76 00 e9 bf ^ lapd hdr ^ OML ^l ^OM2000 TX Config Req for 43 dBm
2016-11-14hdlc: Simplify + Fix HDLC implementationHarald Welte2-53/+25
* remove the notion of states, as there is really only one state * implement zero removal / bit stuffing for synchronous links
2016-11-14hdlc: Add some more comments to the code [cosmetic]Harald Welte1-2/+16
2016-10-26WIP: More work on SuperChannel decode, but it doesn't work yet...Harald Welte4-0/+162
2016-10-26add .gitignore fileHarald Welte1-0/+5
2016-10-23e1cap_dump: Add SC (Super Channel) modeHarald Welte1-1/+72
In the super channel mode, it seems the BTS transmits one byte in each timeslot, accross the entire link. This basically means that if you have a 10 byte long signalling message to be sent, its first byte will be in TS1 up until the tenth byte in TS10. As we are reading in 160 byte chunks from the E1 timeslots, we build a matrix with 160 columns (for each byte) and 24/30 rows (timeslots). So we write 24 times 160 bytes into the matrix. Once we have completed all timeslots, we start to read the matrix by reading byte 0 of each timeslot (in incrementing TS order), next byte 1 of each timeslot, ... until we end up having read 160 times 24 bytes from the matrix. The resulting bitstream needs to be HDLC-synchronized and the resulting messages passed up for further decoding.
2016-10-19e1_recorder: add config option for configuration fileHarald Welte1-1/+27
2016-10-19e1_recorder: propagate errors to main, where we exit() in case of failing to ↵Harald Welte2-2/+9
open file
2016-10-19e1_recorder: Add signal handlers for log file rotation + talloc reportHarald Welte3-2/+28
2016-10-19e1_inp: Use HDLC mode for signalling, not SIGNHarald Welte2-4/+4
The SIGN mode implies that LAPD instances are bound to the timeslots, which is of course not what we want in a pure capturing/recording scenario. Instead, use the new E1INP_TS_TYPE_HDLC mode, which allows us to capture any HDLC framed messages on E1/T1 timeslots, whether LAPD or e.g. MTP.
2016-10-19e1cap_dump: Add 16k sub-channel demux + filterHarald Welte1-15/+51
We can now filter a given 16k sub-slot out of the capture data and export it to stdout.
2016-10-19e1cap_dump: Add capability to filter on a given line+timeslot and for binary ↵Harald Welte1-8/+66
2016-10-19storage.c: Remove debug printf()Harald Welte1-1/+0
2016-10-19e1cap_dump: Print human-readable timeHarald Welte1-2/+18
2016-10-18add a command line tool for dumping the contents of a capture fileHarald Welte4-1/+98
2016-10-18storage.h: make sure we use packed attribute not aligned.Harald Welte1-1/+6
This was a stupid mistake when writing the header initially, let's try to fix it while staying binary compatible.
2016-10-18e1_recorder: Fix msgb memory leaks in absence of a mirror portHarald Welte1-2/+5
2016-10-17storage.h: document fields of headerHarald Welte1-0/+6
2016-07-29first functional version that actually records + mirrors dataHarald Welte4-9/+102
2016-07-28fix compilationHarald Welte1-2/+2
2016-07-28initial import of incomplete project to record E1 linesHarald Welte7-0/+410