I am making good progress.
The first couple of weeks or so (months?) I was collecting information.
I managed to get some design articles about Mode S transponders,
various protocol specifications, and comments. I was able to decode
some packets by sight using the oscilloscope program. The bit timing is
very tight. Thanks go to Matt E. for designing a board that can
handle a 4 MSPS sampling rate. It was now coding time! I reviewed some
GNURadio design guidelines and how to write a module.
Of course the name is most important. I decided on a subdirectory off
gnuradio named gr-mode-s. gr-transponder would make it look like
sending as well as receiving. My project is focused on Mode S data and
derivatives (TCAS, ACAS, ADS-B, TIS-B, etc). I am open to a better name
as the mode-s name forced me to use the prefix of mode_s for things.
I decided to use gr-pager as the model as it is the closest to what I
want to do. I eliminated some blocks but may put them back in. I
basically have a slicer, decoder/framer, and parser C++ blocks. I use
python code to put the blocks together into a mode S decoder superblock.
I appreciate the autoconf/automake and the whole gnuradio build scheme.
For a programmer who has only done small gcc projects it looks like
it is real work to do things from scratch. I was able to figure out
what most of the autoconf/automake files are for. I replaced the pager
prefixes with mode_s, add the required .m4 files, etc. I was amazed
that I got my new project integrated into the build tree quickly. The
major part of the time was spent getting my code to work.
So I am jumping up and down with joy as I can now decode Mode S. I can
now work on improving the slicer, add decoding of the messages, etc. It
seems like I am not getting hundreds of miles of range due to the
antenna setup but I get enough to work on the decoders.
A future to-do is to submit my code. I guess I need to join the patch
It would be neat if I could get hardware that is smaller sized. Maybe a
USRP Jr board that allows one receiver or one receiver and one
transmitter board, I could also use one with a LFRX board and dedicate
it to my AR5000.