From 25c8f966ebafdff66f5dbb8f8a44ee21c877d662 Mon Sep 17 00:00:00 2001 From: Read Error Date: Wed, 15 Jul 2015 03:52:37 -0400 Subject: [PATCH 1/3] Buzzer mute option. --- src/buzzer.c | 2 ++ src/cli.c | 1 + src/mw.h | 1 + 3 files changed, 4 insertions(+) diff --git a/src/buzzer.c b/src/buzzer.c index f5feef71..71285d1c 100644 --- a/src/buzzer.c +++ b/src/buzzer.c @@ -81,6 +81,8 @@ void buzzer(uint8_t mode) { uint8_t i = 0; + if (mcfg.buzzer_mute) + return; // Just return if same or higher priority sound is active. if (buzzerMode <= mode) return; diff --git a/src/cli.c b/src/cli.c index 09779c60..fcbd0f84 100644 --- a/src/cli.c +++ b/src/cli.c @@ -212,6 +212,7 @@ const clivalue_t valueTable[] = { { "rssi_adc_channel", VAR_INT8, &mcfg.rssi_adc_channel, 0, 9 }, { "rssi_adc_max", VAR_INT16, &mcfg.rssi_adc_max, 1, 4095 }, { "rssi_adc_offset", VAR_INT16, &mcfg.rssi_adc_offset, 0, 4095 }, + { "buzzer_mute", VAR_INT8, &mcfg.buzzer_mute, 0, 1 }, { "yaw_direction", VAR_INT8, &cfg.yaw_direction, -1, 1 }, { "tri_unarmed_servo", VAR_INT8, &cfg.tri_unarmed_servo, 0, 1 }, { "gimbal_flags", VAR_UINT8, &cfg.gimbal_flags, 0, 255}, diff --git a/src/mw.h b/src/mw.h index 3d2186a0..74aa6d72 100755 --- a/src/mw.h +++ b/src/mw.h @@ -366,6 +366,7 @@ typedef struct master_t { uint8_t rssi_adc_channel; // Read analog-rssi from RC-filter (RSSI-PWM to RSSI-Analog), RC_CH2 (unused when in CPPM mode, = 1), RC_CH8 (last channel in PWM mode, = 9), ADC_EXTERNAL_PAD (Rev5 only, = 5), 0 to disable (disabled if rssi_aux_channel > 0 or rssi_adc_channel == power_adc_channel) uint16_t rssi_adc_max; // max input voltage defined by RC-filter (is RSSI never 100% reduce the value) (1...4095) uint16_t rssi_adc_offset; // input offset defined by RC-filter (0...4095) + uint8_t buzzer_mute; // buzzer is only activated when BOXITEM is selected // gps-related stuff uint8_t gps_type; // See GPSHardware enum. From 7505860f6d68ebbae47e0f0294d590c977e4b461 Mon Sep 17 00:00:00 2001 From: Read Error Date: Wed, 15 Jul 2015 05:19:31 -0400 Subject: [PATCH 2/3] Simple, buzzer is on or off, no pulsing. --- src/buzzer.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/buzzer.c b/src/buzzer.c index 71285d1c..98472543 100644 --- a/src/buzzer.c +++ b/src/buzzer.c @@ -81,8 +81,16 @@ void buzzer(uint8_t mode) { uint8_t i = 0; - if (mcfg.buzzer_mute) - return; + if (mcfg.buzzer_mute) { + if (rcOptions[BOXBEEPERON]) { + BEEP_ON; + return; + } else { + BEEP_OFF; + return; + } + } + // Just return if same or higher priority sound is active. if (buzzerMode <= mode) return; @@ -168,6 +176,9 @@ void buzzer(uint8_t mode) */ void buzzerUpdate(void) { + if (mcfg.buzzer_mute) + buzzer(0); + // If beeper option from AUX switch has been selected if (rcOptions[BOXBEEPERON]) { if (buzzerMode > BUZZER_TX_SET) From 1c468716f1b9c3f59fecf6759d2dcd3253e27ae4 Mon Sep 17 00:00:00 2001 From: Read Error Date: Wed, 15 Jul 2015 07:16:45 -0400 Subject: [PATCH 3/3] Avoid unnecessarily writing to the GPIO pin. --- src/buzzer.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/buzzer.c b/src/buzzer.c index 98472543..0ff09ddd 100644 --- a/src/buzzer.c +++ b/src/buzzer.c @@ -81,15 +81,8 @@ void buzzer(uint8_t mode) { uint8_t i = 0; - if (mcfg.buzzer_mute) { - if (rcOptions[BOXBEEPERON]) { - BEEP_ON; - return; - } else { - BEEP_OFF; - return; - } - } + if (mcfg.buzzer_mute) + return; // Just return if same or higher priority sound is active. if (buzzerMode <= mode) @@ -176,8 +169,20 @@ void buzzer(uint8_t mode) */ void buzzerUpdate(void) { - if (mcfg.buzzer_mute) - buzzer(0); + if (mcfg.buzzer_mute) { + if (buzzerIsOn && rcOptions[BOXBEEPERON]) { + return; + } else if (!buzzerIsOn && rcOptions[BOXBEEPERON]) { + BEEP_ON; + buzzerIsOn = 1; + return; + } else { + BEEP_OFF; + buzzerIsOn = 0; + return; + } + } + // If beeper option from AUX switch has been selected if (rcOptions[BOXBEEPERON]) {