mirror of
https://github.com/meshtastic/firmware.git
synced 2025-02-05 04:10:07 +00:00
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
|
#include "buzz.h"
|
||
|
#include "configuration.h"
|
||
|
|
||
|
#ifdef NRF52_SERIES
|
||
|
#include "variant.h"
|
||
|
#endif
|
||
|
|
||
|
#ifndef PIN_BUZZER
|
||
|
|
||
|
void playBeep(){};
|
||
|
void playStartMelody(){};
|
||
|
void playShutdownMelody(){};
|
||
|
|
||
|
#else
|
||
|
#include "Tone.h"
|
||
|
#include "pitches.h"
|
||
|
|
||
|
extern "C" void delay(uint32_t dwMs);
|
||
|
|
||
|
struct ToneDuration {
|
||
|
int frequency_khz;
|
||
|
int duration_ms;
|
||
|
};
|
||
|
|
||
|
const int DURATION_1_8 = 125; // 1/8 note
|
||
|
const int DURATION_1_4 = 250; // 1/4 note
|
||
|
|
||
|
void playTones(const ToneDuration *tone_durations, int size) {
|
||
|
for (int i = 0; i < size; i++) {
|
||
|
const auto &tone_duration = tone_durations[i];
|
||
|
tone(PIN_BUZZER, tone_duration.frequency_khz, tone_duration.duration_ms);
|
||
|
// to distinguish the notes, set a minimum time between them.
|
||
|
delay(1.3 * tone_duration.duration_ms);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void playBeep() { tone(PIN_BUZZER, NOTE_B3, DURATION_1_4); }
|
||
|
|
||
|
void playStartMelody() {
|
||
|
ToneDuration melody[] = {{NOTE_B3, DURATION_1_4},
|
||
|
{NOTE_B3, DURATION_1_8},
|
||
|
{NOTE_B3, DURATION_1_8}};
|
||
|
playTones(melody, sizeof(melody) / sizeof(ToneDuration));
|
||
|
}
|
||
|
|
||
|
void playShutdownMelody() {
|
||
|
ToneDuration melody[] = {{NOTE_B3, DURATION_1_4},
|
||
|
{NOTE_G3, DURATION_1_8},
|
||
|
{NOTE_D3, DURATION_1_8}};
|
||
|
playTones(melody, sizeof(melody) / sizeof(ToneDuration));
|
||
|
}
|
||
|
#endif
|