diff --git a/AX25RX.cpp b/AX25RX.cpp index 637bde0..2e2592b 100644 --- a/AX25RX.cpp +++ b/AX25RX.cpp @@ -39,22 +39,23 @@ * window='hann') * 32768, * dtype=int)[10:-10] */ -const uint32_t FILTER_LEN = 132; + +const uint32_t FILTER_LEN = 130U; + q15_t FILTER_COEFFS[] = { - 0, 5, 12, 18, 21, 19, 11, -2, -15, -25, - -27, -21, -11, -3, -5, -19, -43, -69, -83, -73, - -35, 27, 98, 155, 180, 163, 109, 39, -20, -45, - -26, 23, 74, 89, 39, -81, -247, -407, -501, -480, - -334, -92, 175, 388, 479, 429, 275, 99, 5, 68, - 298, 626, 913, 994, 740, 115, -791, -1770, -2544, -2847, - -2509, -1527, -76, 1518, 2875, 3653, 3653, 2875, 1518, -76, - -1527, -2509, -2847, -2544, -1770, -791, 115, 740, 994, 913, - 626, 298, 68, 5, 99, 275, 429, 479, 388, 175, - -92, -334, -480, -501, -407, -247, -81, 39, 89, 74, - 23, -26, -45, -20, 39, 109, 163, 180, 155, 98, - 27, -35, -73, -83, -69, -43, -19, -5, -3, -11, - -21, -27, -25, -15, -2, 11, 19, 21, 18, 12, - 5, 0 + 5, 12, 18, 21, 19, 11, -2, -15, -25, -27, + -21, -11, -3, -5, -19, -43, -69, -83, -73, -35, + 27, 98, 155, 180, 163, 109, 39, -20, -45, -26, + 23, 74, 89, 39, -81, -247, -407, -501, -480, -334, + -92, 175, 388, 479, 429, 275, 99, 5, 68, 298, + 626, 913, 994, 740, 115, -791, -1770, -2544, -2847, -2509, + -1527, -76, 1518, 2875, 3653, 3653, 2875, 1518, -76, -1527, + -2509, -2847, -2544, -1770, -791, 115, 740, 994, 913, 626, + 298, 68, 5, 99, 275, 429, 479, 388, 175, -92, + -334, -480, -501, -407, -247, -81, 39, 89, 74, 23, + -26, -45, -20, 39, 109, 163, 180, 155, 98, 27, + -35, -73, -83, -69, -43, -19, -5, -3, -11, -21, + -27, -25, -15, -2, 11, 19, 21, 18, 12, 5 }; CAX25RX::CAX25RX() : diff --git a/AX25RX.h b/AX25RX.h index 220d61d..d6e55c3 100644 --- a/AX25RX.h +++ b/AX25RX.h @@ -33,7 +33,7 @@ public: private: arm_fir_instance_q15 m_filter; - q15_t m_state[160U]; // NoTaps + BlockSize - 1, 132 + 20 - 1 plus some spare + q15_t m_state[160U]; // NoTaps + BlockSize - 1, 130 + 20 - 1 plus some spare CAX25Demodulator m_demod1; CAX25Demodulator m_demod2; CAX25Demodulator m_demod3;