init_deinit.c 921 B

123456789101112131415161718192021222324252627282930
  1. #include "init_deinit.h"
  2. FlizzerTrackerApp *init_tracker(uint32_t sample_rate, uint8_t rate, bool external_audio_output, uint32_t audio_buffer_size)
  3. {
  4. FlizzerTrackerApp *tracker = malloc(sizeof(FlizzerTrackerApp));
  5. memset(tracker, 0, sizeof(FlizzerTrackerApp));
  6. sound_engine_init(&tracker->sound_engine, sample_rate, external_audio_output, audio_buffer_size);
  7. tracker_engine_init(&tracker->tracker_engine, rate, &tracker->sound_engine);
  8. tracker->tracker_engine.song = &tracker->song;
  9. tracker->current_note = MIDDLE_C;
  10. return tracker;
  11. }
  12. void deinit_tracker(FlizzerTrackerApp *tracker)
  13. {
  14. sound_engine_deinit(&tracker->sound_engine);
  15. tracker_engine_deinit(&tracker->tracker_engine, false);
  16. FURI_CRITICAL_ENTER();
  17. LL_TIM_DeInit(TRACKER_ENGINE_TIMER);
  18. LL_TIM_DeInit(SAMPLE_RATE_TIMER);
  19. LL_TIM_DeInit(SPEAKER_PWM_TIMER);
  20. FURI_CRITICAL_EXIT();
  21. free(tracker);
  22. }