| 602 | } |
| 603 | |
| 604 | void init(stream<complex_t>* input, float sampleRate, void (*handler)(M17LSF& lsf, void* ctx), void* ctx) { |
| 605 | _sampleRate = sampleRate; |
| 606 | |
| 607 | demod.init(input, _sampleRate, M17_DEVIATION); |
| 608 | rrc.init(31, _sampleRate, M17_BAUDRATE, M17_RRC_ALPHA); |
| 609 | fir.init(&demod.out, &rrc); |
| 610 | recov.init(&fir.out, _sampleRate / M17_BAUDRATE, 1e-6f, 0.01f, 0.01f); |
| 611 | doubler.init(&recov.out); |
| 612 | slice.init(&doubler.outA); |
| 613 | demux.init(&slice.out); |
| 614 | lsfFEC.init(&demux.linkSetupOut, handler, ctx); |
| 615 | payloadFEC.init(&demux.streamOut); |
| 616 | decodeLICH.init(&demux.lichOut, handler, ctx); |
| 617 | decodeAudio.init(&payloadFEC.out); |
| 618 | |
| 619 | ns2.init(&demux.packetOut); |
| 620 | |
| 621 | diagOut = &doubler.outB; |
| 622 | out = &decodeAudio.out; |
| 623 | |
| 624 | generic_hier_block<M17Decoder>::registerBlock(&demod); |
| 625 | generic_hier_block<M17Decoder>::registerBlock(&fir); |
| 626 | generic_hier_block<M17Decoder>::registerBlock(&recov); |
| 627 | generic_hier_block<M17Decoder>::registerBlock(&doubler); |
| 628 | generic_hier_block<M17Decoder>::registerBlock(&slice); |
| 629 | generic_hier_block<M17Decoder>::registerBlock(&demux); |
| 630 | generic_hier_block<M17Decoder>::registerBlock(&lsfFEC); |
| 631 | generic_hier_block<M17Decoder>::registerBlock(&payloadFEC); |
| 632 | generic_hier_block<M17Decoder>::registerBlock(&decodeLICH); |
| 633 | generic_hier_block<M17Decoder>::registerBlock(&decodeAudio); |
| 634 | |
| 635 | generic_hier_block<M17Decoder>::registerBlock(&ns2); |
| 636 | |
| 637 | generic_hier_block<M17Decoder>::_block_init = true; |
| 638 | } |
| 639 | |
| 640 | void setInput(stream<complex_t>* input) { |
| 641 | assert(generic_hier_block<M17Decoder>::_block_init); |
no outgoing calls
no test coverage detected