void gui_factory_test_stop() { DEBUG("FACTORY TEST OK\n"); fc_continue(); led_set(0x00, 0x00, 0x00); buzzer_set_vol(0); }
void audio_off() { //stop unused timer audio_timer.Stop(); //reset state of audio vario audio_vario_reset(); //silence! buzzer_set_vol(0); }
void audio_beep_next() { uint16_t tone = pgm_read_word(&audio_beep_tone_ptr[audio_beep_index]); audio_beep_duration = pgm_read_word(&audio_beep_length_ptr[audio_beep_index]); audio_beep_index++; buzzer_set_vol(fc.audio_volume); buzzer_set_freq(tone); DEBUG("beep next %d %d\n", tone, audio_beep_index); }
void audio_set_tone(uint16_t tone) { if (tone == 0) { next_tone = 0; //buzzer is running continuously turn off sound if (!delay_on) { //disable sound output buzzer_set_vol(0); } } else { if (next_tone != 0) { float tmp = ((float)tone - next_tone) / AUDIO_LOW_PASS; next_tone = next_tone + tmp; } else { next_tone = tone; } //buzzer is running continuously update freq now if (delay_on == false) { buzzer_set_freq(next_tone); buzzer_set_vol(fc.audio_volume); } //fluid update is enabled if (fc.audio_fluid && audio_period == PERIOD_SOUND) buzzer_set_freq(next_tone); } }
void buzzer_init() { BUZZER_TIMER_PWR_ON; BUZZER_VOL_DAC_PWR_ON; DacInit(BUZZER_VOL_DAC); DacSetReference(dac_avcc); //buzzer buzzer_timer.Init(BUZZER_TIMER, timer_div1024); buzzer_timer.SetMode(timer_pwm); buzzer_timer.EnableOutputs(timer_A); buzzer_timer.EnableInterrupts(timer_overflow); buzzer_set_vol(0); }
void gui_factory_test_init() { DEBUG(" *** Factory test ***\n"); fc_pause(); led_notify_disable(); //We need to test gps and bt module if (!bt_ready()) { DEBUG("Force enable BT\n"); bt_module_init(); } if (!gps_selftest()) { DEBUG("Force enable GPS\n"); gps_start(); } buzzer_set_vol(0); buzzer_set_freq(0); f_test_button_test = 0; f_test_lcd = FTEST_LCD_MIN_AUTO; if (storage_ready()) { FILINFO fno; if (f_stat("SET_CONT", &fno) == FR_OK) { f_test_lcd_cont_max = 110; f_test_lcd_cont_min = 70; f_test_lcd_cont = 4; f_test_lcd = FTEST_LCD_DONE; } } disp.SetFlip(false); disp.SetInvert(false); }
void audio_set_delay(uint16_t length, uint16_t pause) { //Continuous sound (sink) if (pause == 0 || length == 0) { next_length = 0; next_pause = 0; } else //with pauses (lift) { //convert from ms and ticks next_length = 31 * length; next_pause = 31 * pause; //if previous sound was continuous (audio_timer is not working) if (delay_on == false) { //restart timer counter audio_timer.SetValue(1); //set new tone + enable sound buzzer_set_freq(next_tone); buzzer_set_vol(fc.audio_volume); audio_timer.SetTop(next_length); //start timer audio_timer.Start(); //set the period state state audio_period = PERIOD_SOUND; } //we have pauses enabled delay_on = true; } }
void audio_vario_apply() { switch (audio_vario_mode) { case(VARIO_OFF): //start the beeps if (audio_vario_length > 0 && audio_vario_pause > 0) { buzzer_set_vol(config.gui.vario_volume); buzzer_set_freq(audio_vario_freq); audio_timer.SetValue(0); audio_timer.SetTop(audio_vario_length); audio_timer.Start(); audio_vario_mode = VARIO_BEEP; break; } //continous tone else { buzzer_set_vol(config.gui.vario_volume); buzzer_set_freq(audio_vario_freq); audio_vario_mode = VARIO_CONT; break; } break; case(VARIO_BEEP): if (audio_vario_length == 0 || audio_vario_pause == 0) { audio_timer.Stop(); buzzer_set_vol(config.gui.vario_volume); buzzer_set_freq(audio_vario_freq); audio_vario_mode = VARIO_CONT; break; } if (config.audio_profile.fluid) buzzer_set_freq(audio_vario_freq); break; case(VARIO_PAUSE): if (vario_force_change) audio_vario_mode = VARIO_OFF; break; case(VARIO_CONT): if (audio_vario_length > 0 && audio_vario_pause > 0) { buzzer_set_freq(audio_vario_freq); audio_timer.SetValue(0); audio_timer.SetTop(audio_vario_length); audio_timer.Start(); audio_vario_mode = VARIO_BEEP; break; } buzzer_set_freq(audio_vario_freq); break; } }