I'm using Gnu Radio Companion 3.8.4 to create a flow graph. The graph shall decode the signal from an 2.4 GHz RC car transmitter.
I started with the following graph:
Source => GFSK Demod => Sync and create packed PDU => Check CC11XX CRC-16 => Message Debug
Initially I just appended the address bits to the end of the "Sync and create packed PDU" which works in principle, but that block strips then the address from the output. Unfortunately the block "Check CC11XX CRC-16" requires the full PDU including the address for the CRC check.
The demodulated data looks like this:
- 01010101 Preamble (is removed by the block "Sync and create packed PDU")
- 01000101 01010110 Sync Word (is removed by the block "Sync and create packed PDU")
- 00000110 00011110 11000001 Address? = 0x061EC1
- 10001111 10000110 11001000 00100100 11001000 10010110 01111111 channels 1 to 7
- 11111011 01111010 CRC-16
Then I tried to use the "PDU filter" to ignore all packets where the address field doesn't match using this graph:
Source => GFSK Demod => Sync and create packed PDU => PDU Filter => Check CC11XX CRC-16 => Message Debug
I thought I would need to provide something like this for the parameters of "PDU Filter":
- Key: pdu[0:2]
- Value: [0x06, 0x1E, 0xC1]
I couldn't figure out how to set those values so that they match the syntax of the PDU Filter" block. My questions:
- how to specify which part of the input PDU shall be used as Key (in my case the first 3 bytes)?
- How to specify the constant Value to compare with?
For the Key I tried these variations, e.g.
- pmt.intern("key") => this is the default value when adding the new filter from palette
- instead of "key" I also tried "msg" and "pdu"
For the Value I tried those variations:
- [0x06, 0x1E, 0xC1]
- pmt.init_u8vector(3, [0x06, 0x1E, 0xC1])
- pmt.init_u8vector(24, [0,0,0,0, 0,1,1,0, 0,0,0,1, 1,1,1,0, 1,1,0,0, 0,0,0,1])
- pmt.cons(pmt.make_dict(), pmt.init_u8vector(24, [0,0,0,0, 0,1,1,0, 0,0,0,1, 1,1,1,0, 1,1,0,0, 0,0,0,1]))
None of the combinations worked. Most of the parameter combinations are not accepted in the block parameter editor, others give runtime errors.
I'm a beginner with gnuradio and didn't want to start programming new blocks, just using the existing blocks in the GNU Radio Companion.