init_deinit.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  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. if (tracker->tracker_engine.song == NULL)
  16. {
  17. tracker_engine_set_song(&tracker->tracker_engine, &tracker->song);
  18. }
  19. tracker_engine_deinit(&tracker->tracker_engine, false);
  20. FURI_CRITICAL_ENTER();
  21. LL_TIM_DeInit(TRACKER_ENGINE_TIMER);
  22. LL_TIM_DeInit(SAMPLE_RATE_TIMER);
  23. LL_TIM_DeInit(SPEAKER_PWM_TIMER);
  24. FURI_CRITICAL_EXIT();
  25. free(tracker);
  26. }