Fix Selectable Buzzer Pin for CC3D
[betaflight.git] / src / main / drivers / sound_beeper.c
blob61e690010c75ca08b5780debf1e5e4087191c69d
1 /*
2 * This file is part of Cleanflight.
4 * Cleanflight is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Cleanflight is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
18 #include <stdbool.h>
19 #include <stdint.h>
20 #include <stdlib.h>
22 #include "platform.h"
24 #include "build_config.h"
26 #include "system.h"
27 #include "gpio.h"
29 #include "sound_beeper.h"
32 #ifdef BEEPER
34 void (*systemBeepPtr)(bool onoff) = NULL;
36 static uint16_t beeperPin;
38 static void beepNormal(bool onoff)
40 if (onoff) {
41 digitalLo(BEEP_GPIO, beeperPin);
42 } else {
43 digitalHi(BEEP_GPIO, beeperPin);
47 static void beepInverted(bool onoff)
49 if (onoff) {
50 digitalHi(BEEP_GPIO, beeperPin);
51 } else {
52 digitalLo(BEEP_GPIO, beeperPin);
55 #endif
57 void systemBeep(bool onoff)
59 #ifndef BEEPER
60 UNUSED(onoff);
61 #else
62 systemBeepPtr(onoff);
63 #endif
66 #ifdef CC3D
67 void beeperInit(beeperConfig_t *config, uint8_t use_buzzer_p6) {
68 if (use_buzzer_p6) {
69 beeperPin = Pin_2;
70 } else {
71 beeperPin = BEEP_PIN;
73 #else
74 void beeperInit(beeperConfig_t *config) {
75 beeperPin = BEEP_PIN;
76 #endif
77 #ifndef BEEPER
78 UNUSED(config);
79 #else
80 initBeeperHardware(config);
81 if (config->isInverted)
82 systemBeepPtr = beepInverted;
83 else
84 systemBeepPtr = beepNormal;
85 BEEP_OFF;
86 #endif