void rx_fm_broadcast_to_audio_init(rx_fm_broadcast_to_audio_state_t* const state) {
	translate_fs_over_4_and_decimate_by_2_cic_3_s8_s16_init(&state->dec_stage_1_state);
	fir_cic3_decim_2_s16_s16_init(&state->dec_stage_2_state);
	fm_demodulate_s16_s16_init(&state->fm_demodulate_state, 768000, 75000);
	fir_cic4_decim_2_real_s16_s16_init(&state->audio_dec_1);
	fir_cic4_decim_2_real_s16_s16_init(&state->audio_dec_2);
	fir_cic4_decim_2_real_s16_s16_init(&state->audio_dec_3);
	fir_64_decim_2_real_s16_s16_init(&state->audio_dec_4, taps_64_lp_156_198);
}
Пример #2
0
void rx_tpms_fsk_init(void* const _state, packet_builder_payload_handler_t payload_handler) {
	rx_tpms_fsk_state_t* const state = (rx_tpms_fsk_state_t*)_state;

	const float symbol_rate = 19200.0f;
	const float sample_rate = 76800.0f;

	translate_fs_over_4_and_decimate_by_2_cic_3_s8_s16_init(&state->bb_dec_1);
	fir_cic3_decim_2_s16_s16_init(&state->bb_dec_2);
	fir_cic3_decim_2_s16_s16_init(&state->bb_dec_3);
	fir_cic3_decim_2_s16_s16_init(&state->bb_dec_4);
	for(size_t i=0; i<ARRAY_SIZE(state->symbol_z); i++) {
		state->symbol_z[i].i = 0;
		state->symbol_z[i].q = 0;
	}
	clock_recovery_init(&state->clock_recovery, symbol_rate / sample_rate, rx_tpms_fsk_clock_recovery_symbol_handler, state);
	access_code_correlator_init(&state->access_code_correlator, 0b01010101010101010101010101010110, 32, 2);
	packet_builder_init(&state->packet_builder, 160, payload_handler, state);
}