You can tell from my questions below that I am very new at this. If
there is some other approach to my OOT that make more sense, please tell
me...
I am aware of the gr-dsd OOT, but I want to decode/encode using a method
that won't violate patents.
I'm working on a OOT that will have various blocks to encode/decode
using an AMBE3000 device.
For decoding, incoming data will have an overall sync of 64+15 bits
followed by a 660 bit header and then 20 millisecond voice frames with
the encoded data (72 bits) and a "slow data" (24 bits). Starting with
the first voice frame, every 21st frame will have a 24 bit frame sync
instead of slow data. (It's the DStar protocol, see
http://www.qsl.net/kb9mwr/projects/dv/dstar/dstar_dv_frame3_en.pdf , and
it uses GMSK to convert between rf and digital.) The AMBE3000 will
decode the 9 bytes of voice data in the 12 byte frame into 160 audio
samples (short ints at 8000 per sec). The final voice frame should not
have any "slow data" but instead have a 48 bit termination pattern).
My dstar_encode_sb block seems more straightforward: When the flow is
started, just like a delay block, dstar_encode_sb will insert the
overall sync and header at the beginning of the transmission, then the
voice frames will be generated from an audio source. I'm unsure how to
properly terminate the end. Is there another block function that I can
override to add a final termination frame to the output stream as the
flow is shutting down?
My dstar_decode_bs is quite a bit more complicated. I would like my
dstar_decode_bs block to print some values from the header and only
output audio when it is receiving voice frames. Is that possible? Can
work() return zero when my block is not processing voice frames? Is
forecast() a hard rule, or is it just a suggestion to the gnuradio
scheduler?
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio