First, there is no such thing in gr-trellis as a “convolutional
interleaver”. There is only a generic interleaver, ie a permutation
which is defined through the different constructors provided in
interleaver.h (through a file, random, etc).
If you do not want to have super control over it i suggest you start
with just a random interleaver and see how it works.
Second, I see a minor problem in your code:
the viterbi block should specify the block size as its 2nd parameter
so instead of
self.va = trellis.viterbi_s(f,2,0,-1)
you should put something like
self.va = trellis.viterbi_s(f,len(self.src_data),0,-1)
I tried this modification and works fine with me.
Let me know if you have any problems,