Unify buzz methods as MarlinUI::buzz (#14803)
This commit is contained in:
parent
29c12905f5
commit
05995d1fd6
@ -65,7 +65,7 @@
|
|||||||
#include "feature/host_actions.h"
|
#include "feature/host_actions.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_BUZZER && DISABLED(LCD_USE_I2C_BUZZER)
|
#if USE_BEEPER
|
||||||
#include "libs/buzzer.h"
|
#include "libs/buzzer.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -702,7 +702,7 @@ void idle(
|
|||||||
print_job_timer.tick();
|
print_job_timer.tick();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_BUZZER && DISABLED(LCD_USE_I2C_BUZZER) && DISABLED(PCA9632_BUZZER)
|
#if USE_BEEPER
|
||||||
buzzer.tick();
|
buzzer.tick();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -137,13 +137,15 @@ void pca9632_set_led_color(const LEDColor &color) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(PCA9632_BUZZER)
|
#if ENABLED(PCA9632_BUZZER)
|
||||||
void pca9632_buzz(uint16_t const f, uint16_t d) {
|
|
||||||
UNUSED(f); UNUSED(d);
|
void pca9632_buzz(const long duration, const uint16_t freq) {
|
||||||
|
UNUSED(duration); UNUSED(freq);
|
||||||
uint8_t data[] = PCA9632_BUZZER_DATA;
|
uint8_t data[] = PCA9632_BUZZER_DATA;
|
||||||
Wire.beginTransmission(I2C_ADDRESS(PCA9632_ADDRESS));
|
Wire.beginTransmission(I2C_ADDRESS(PCA9632_ADDRESS));
|
||||||
Wire.write(data, sizeof(data));
|
Wire.write(data, sizeof(data));
|
||||||
Wire.endTransmission();
|
Wire.endTransmission();
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
#endif // PCA9632_BUZZER
|
||||||
|
|
||||||
#endif // PCA9632
|
#endif // PCA9632
|
||||||
|
@ -32,5 +32,6 @@ typedef LEDColor LEDColor;
|
|||||||
void pca9632_set_led_color(const LEDColor &color);
|
void pca9632_set_led_color(const LEDColor &color);
|
||||||
|
|
||||||
#if ENABLED(PCA9632_BUZZER)
|
#if ENABLED(PCA9632_BUZZER)
|
||||||
void pca9632_buzz(uint16_t const, uint16_t);
|
#include <stdint.h>
|
||||||
|
void pca9632_buzz(const long, const uint16_t);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1048,7 +1048,8 @@
|
|||||||
#define HAS_KILL (PIN_EXISTS(KILL))
|
#define HAS_KILL (PIN_EXISTS(KILL))
|
||||||
#define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
|
#define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
|
||||||
#define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
|
#define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
|
||||||
#define HAS_BUZZER (PIN_EXISTS(BEEPER) || ENABLED(LCD_USE_I2C_BUZZER) || ENABLED(PCA9632_BUZZER))
|
#define HAS_BUZZER (PIN_EXISTS(BEEPER) || EITHER(LCD_USE_I2C_BUZZER, PCA9632_BUZZER))
|
||||||
|
#define USE_BEEPER (HAS_BUZZER && DISABLED(LCD_USE_I2C_BUZZER, PCA9632_BUZZER))
|
||||||
#define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE))
|
#define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE))
|
||||||
|
|
||||||
// Digital control
|
// Digital control
|
||||||
@ -1570,7 +1571,7 @@
|
|||||||
#ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
|
#ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS
|
||||||
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100
|
||||||
#endif
|
#endif
|
||||||
#else
|
#elif HAS_BUZZER
|
||||||
#ifndef LCD_FEEDBACK_FREQUENCY_HZ
|
#ifndef LCD_FEEDBACK_FREQUENCY_HZ
|
||||||
#define LCD_FEEDBACK_FREQUENCY_HZ 5000
|
#define LCD_FEEDBACK_FREQUENCY_HZ 5000
|
||||||
#endif
|
#endif
|
||||||
|
@ -360,6 +360,33 @@ void MarlinUI::init_lcd() {
|
|||||||
lcd.clear();
|
lcd.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MarlinUI::detected() {
|
||||||
|
return true
|
||||||
|
#if EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && defined(DETECT_DEVICE)
|
||||||
|
&& lcd.LcdDetected() == 1
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if HAS_SLOW_BUTTONS
|
||||||
|
uint8_t MarlinUI::read_slow_buttons() {
|
||||||
|
#if ENABLED(LCD_I2C_TYPE_MCP23017)
|
||||||
|
// Reading these buttons this is likely to be too slow to call inside interrupt context
|
||||||
|
// so they are called during normal lcd_update
|
||||||
|
uint8_t slow_bits = lcd.readButtons()
|
||||||
|
#if !BUTTON_EXISTS(ENC)
|
||||||
|
<< B_I2C_BTN_OFFSET
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
#if ENABLED(LCD_I2C_VIKI)
|
||||||
|
if ((slow_bits & (B_MI | B_RI)) && PENDING(millis(), next_button_update_ms)) // LCD clicked
|
||||||
|
slow_bits &= ~(B_MI | B_RI); // Disable LCD clicked buttons if screen is updated
|
||||||
|
#endif // LCD_I2C_VIKI
|
||||||
|
return slow_bits;
|
||||||
|
#endif // LCD_I2C_TYPE_MCP23017
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void MarlinUI::clear_lcd() { lcd.clear(); }
|
void MarlinUI::clear_lcd() { lcd.clear(); }
|
||||||
|
|
||||||
#if ENABLED(SHOW_BOOTSCREEN)
|
#if ENABLED(SHOW_BOOTSCREEN)
|
||||||
@ -1063,7 +1090,7 @@ void MarlinUI::draw_status_screen() {
|
|||||||
|
|
||||||
#if ENABLED(LCD_HAS_STATUS_INDICATORS)
|
#if ENABLED(LCD_HAS_STATUS_INDICATORS)
|
||||||
|
|
||||||
static void MarlinUI::update_indicators() {
|
void MarlinUI::update_indicators() {
|
||||||
// Set the LEDS - referred to as backlights by the LiquidTWI2 library
|
// Set the LEDS - referred to as backlights by the LiquidTWI2 library
|
||||||
static uint8_t ledsprev = 0;
|
static uint8_t ledsprev = 0;
|
||||||
uint8_t leds = 0;
|
uint8_t leds = 0;
|
||||||
|
@ -102,6 +102,8 @@ void MarlinUI::set_font(const MarlinFont font_nr) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MarlinUI::detected() { return true; }
|
||||||
|
|
||||||
#if ENABLED(SHOW_BOOTSCREEN)
|
#if ENABLED(SHOW_BOOTSCREEN)
|
||||||
|
|
||||||
#if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
|
#if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
|
||||||
|
@ -64,6 +64,19 @@
|
|||||||
uint8_t MarlinUI::progress_bar_percent; // = 0
|
uint8_t MarlinUI::progress_bar_percent; // = 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if HAS_BUZZER
|
||||||
|
#include "../libs/buzzer.h"
|
||||||
|
void MarlinUI::buzz(const long duration, const uint16_t freq) {
|
||||||
|
#if ENABLED(LCD_USE_I2C_BUZZER)
|
||||||
|
lcd.buzz(duration, freq);
|
||||||
|
#elif ENABLED(PCA9632_BUZZER)
|
||||||
|
pca9632_buzz(const long duration, const uint16_t freq) {
|
||||||
|
#elif USE_BEEPER
|
||||||
|
buzzer.tone(duration, freq);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAS_SPI_LCD
|
#if HAS_SPI_LCD
|
||||||
|
|
||||||
#if HAS_GRAPHICAL_LCD
|
#if HAS_GRAPHICAL_LCD
|
||||||
@ -89,10 +102,6 @@
|
|||||||
#include "../feature/bedlevel/bedlevel.h"
|
#include "../feature/bedlevel/bedlevel.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_BUZZER
|
|
||||||
#include "../libs/buzzer.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_TRINAMIC
|
#if HAS_TRINAMIC
|
||||||
#include "../feature/tmc_util.h"
|
#include "../feature/tmc_util.h"
|
||||||
#endif
|
#endif
|
||||||
@ -568,7 +577,7 @@ void MarlinUI::status_screen() {
|
|||||||
const millis_t ms = millis();
|
const millis_t ms = millis();
|
||||||
#endif
|
#endif
|
||||||
if (ELAPSED(ms, next_beep)) {
|
if (ELAPSED(ms, next_beep)) {
|
||||||
BUZZ(FEEDRATE_CHANGE_BEEP_DURATION, FEEDRATE_CHANGE_BEEP_FREQUENCY);
|
buzz(FEEDRATE_CHANGE_BEEP_DURATION, FEEDRATE_CHANGE_BEEP_FREQUENCY);
|
||||||
next_beep = ms + 500UL;
|
next_beep = ms + 500UL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -611,13 +620,12 @@ void MarlinUI::quick_feedback(const bool clear_buttons/*=true*/) {
|
|||||||
#if HAS_BUZZER
|
#if HAS_BUZZER
|
||||||
// Buzz and wait. Is the delay needed for buttons to settle?
|
// Buzz and wait. Is the delay needed for buttons to settle?
|
||||||
buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ);
|
buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ);
|
||||||
#endif
|
#if HAS_LCD_MENU
|
||||||
|
#if USE_BEEPER
|
||||||
#if HAS_LCD_MENU
|
for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); }
|
||||||
#if ENABLED(LCD_USE_I2C_BUZZER)
|
#else
|
||||||
delay(10);
|
delay(10);
|
||||||
#elif PIN_EXISTS(BEEPER)
|
#endif
|
||||||
for (int8_t i = 5; i--;) { buzzer.tick(); delay(2); }
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -729,16 +737,6 @@ void MarlinUI::quick_feedback(const bool clear_buttons/*=true*/) {
|
|||||||
|
|
||||||
LCDViewAction MarlinUI::lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
LCDViewAction MarlinUI::lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW;
|
||||||
|
|
||||||
bool MarlinUI::detected() {
|
|
||||||
return
|
|
||||||
#if EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && defined(DETECT_DEVICE)
|
|
||||||
lcd.LcdDetected() == 1
|
|
||||||
#else
|
|
||||||
true
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MarlinUI::update() {
|
void MarlinUI::update() {
|
||||||
|
|
||||||
static uint16_t max_display_update_time = 0;
|
static uint16_t max_display_update_time = 0;
|
||||||
@ -1295,23 +1293,6 @@ void MarlinUI::update() {
|
|||||||
#endif // HAS_ENCODER_WHEEL
|
#endif // HAS_ENCODER_WHEEL
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_SLOW_BUTTONS
|
|
||||||
|
|
||||||
uint8_t MarlinUI::read_slow_buttons() {
|
|
||||||
#if ENABLED(LCD_I2C_TYPE_MCP23017)
|
|
||||||
// Reading these buttons this is likely to be too slow to call inside interrupt context
|
|
||||||
// so they are called during normal lcd_update
|
|
||||||
uint8_t slow_bits = lcd.readButtons() << B_I2C_BTN_OFFSET;
|
|
||||||
#if ENABLED(LCD_I2C_VIKI)
|
|
||||||
if ((slow_bits & (B_MI | B_RI)) && PENDING(millis(), next_button_update_ms)) // LCD clicked
|
|
||||||
slow_bits &= ~(B_MI | B_RI); // Disable LCD clicked buttons if screen is updated
|
|
||||||
#endif // LCD_I2C_VIKI
|
|
||||||
return slow_bits;
|
|
||||||
#endif // LCD_I2C_TYPE_MCP23017
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // HAS_ENCODER_ACTION
|
#endif // HAS_ENCODER_ACTION
|
||||||
|
|
||||||
#endif // HAS_SPI_LCD
|
#endif // HAS_SPI_LCD
|
||||||
|
@ -259,15 +259,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_BUZZER
|
#if HAS_BUZZER
|
||||||
static inline void buzz(const long duration, const uint16_t freq) {
|
static void buzz(const long duration, const uint16_t freq);
|
||||||
#if ENABLED(LCD_USE_I2C_BUZZER)
|
#endif
|
||||||
lcd.buzz(duration, freq);
|
|
||||||
#elif PIN_EXISTS(BEEPER)
|
#if ENABLED(LCD_HAS_STATUS_INDICATORS)
|
||||||
buzzer.tone(duration, freq);
|
static void update_indicators();
|
||||||
#elif ENABLED(PCA9632_BUZZER)
|
|
||||||
pca9632_buzz(duration, freq);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// LCD implementations
|
// LCD implementations
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include "../inc/MarlinConfig.h"
|
#include "../inc/MarlinConfig.h"
|
||||||
|
|
||||||
#if DISABLED(LCD_USE_I2C_BUZZER) && PIN_EXISTS(BEEPER)
|
#if USE_BEEPER
|
||||||
|
|
||||||
#include "buzzer.h"
|
#include "buzzer.h"
|
||||||
#include "../module/temperature.h"
|
#include "../module/temperature.h"
|
||||||
@ -78,4 +78,4 @@ void Buzzer::tick() {
|
|||||||
else if (ELAPSED(now, state.endtime)) reset();
|
else if (ELAPSED(now, state.endtime)) reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // !LCD_USE_I2C_BUZZER && BEEPER
|
#endif // USE_BEEPER
|
||||||
|
@ -23,16 +23,7 @@
|
|||||||
|
|
||||||
#include "../inc/MarlinConfig.h"
|
#include "../inc/MarlinConfig.h"
|
||||||
|
|
||||||
#if ENABLED(LCD_USE_I2C_BUZZER)
|
#if USE_BEEPER
|
||||||
|
|
||||||
#define BUZZ(d,f) ui.buzz(d,f)
|
|
||||||
|
|
||||||
#elif ENABLED(PCA9632_BUZZER)
|
|
||||||
|
|
||||||
#include "../feature/leds/pca9632.h"
|
|
||||||
#define BUZZ(d, f) pca9632_buzz(d,f)
|
|
||||||
|
|
||||||
#elif PIN_EXISTS(BEEPER)
|
|
||||||
|
|
||||||
#include "circularqueue.h"
|
#include "circularqueue.h"
|
||||||
|
|
||||||
@ -120,10 +111,18 @@
|
|||||||
|
|
||||||
// Provide a buzzer instance
|
// Provide a buzzer instance
|
||||||
extern Buzzer buzzer;
|
extern Buzzer buzzer;
|
||||||
|
|
||||||
|
// Buzz directly via the BEEPER pin tone queue
|
||||||
#define BUZZ(d,f) buzzer.tone(d, f)
|
#define BUZZ(d,f) buzzer.tone(d, f)
|
||||||
|
|
||||||
#else // No buzz capability
|
#elif HAS_BUZZER
|
||||||
|
|
||||||
|
// Buzz indirectly via the MarlinUI instance
|
||||||
|
#define BUZZ(d,f) ui.buzz(d,f)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// No buzz capability
|
||||||
#define BUZZ(d,f) NOOP
|
#define BUZZ(d,f) NOOP
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -157,6 +157,8 @@ void PrintCounter::loadStats() {
|
|||||||
#endif
|
#endif
|
||||||
#if HAS_BUZZER && SERVICE_WARNING_BUZZES > 0
|
#if HAS_BUZZER && SERVICE_WARNING_BUZZES > 0
|
||||||
if (doBuzz) for (int i = 0; i < SERVICE_WARNING_BUZZES; i++) BUZZ(200, 404);
|
if (doBuzz) for (int i = 0; i < SERVICE_WARNING_BUZZES; i++) BUZZ(200, 404);
|
||||||
|
#else
|
||||||
|
UNUSED(doBuzz);
|
||||||
#endif
|
#endif
|
||||||
#endif // HAS_SERVICE_INTERVALS
|
#endif // HAS_SERVICE_INTERVALS
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
#include "tool_change.h"
|
#include "tool_change.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_BUZZER && PIN_EXISTS(BEEPER)
|
#if USE_BEEPER
|
||||||
#include "../libs/buzzer.h"
|
#include "../libs/buzzer.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -749,7 +749,7 @@ int16_t Temperature::getHeaterPower(const heater_ind_t heater_id) {
|
|||||||
|
|
||||||
inline void loud_kill(PGM_P const lcd_msg) {
|
inline void loud_kill(PGM_P const lcd_msg) {
|
||||||
Running = false;
|
Running = false;
|
||||||
#if HAS_BUZZER && PIN_EXISTS(BEEPER)
|
#if USE_BEEPER
|
||||||
for (uint8_t i = 20; i--;) {
|
for (uint8_t i = 20; i--;) {
|
||||||
WRITE(BEEPER_PIN, HIGH); delay(25);
|
WRITE(BEEPER_PIN, HIGH); delay(25);
|
||||||
WRITE(BEEPER_PIN, LOW); delay(80);
|
WRITE(BEEPER_PIN, LOW); delay(80);
|
||||||
|
Loading…
Reference in New Issue
Block a user