فهرست منبع

Wake on certain events

EEPROM DIM and BRIGHT values swapped!!!
leptun 5 سال پیش
والد
کامیت
1e09f8c003
4فایلهای تغییر یافته به همراه33 افزوده شده و 4 حذف شده
  1. 22 2
      Firmware/backlight.cpp
  2. 3 2
      Firmware/backlight.h
  3. 7 0
      Firmware/sound.cpp
  4. 1 0
      Firmware/ultralcd.cpp

+ 22 - 2
Firmware/backlight.cpp

@@ -11,6 +11,8 @@
 
 #ifdef LCD_BL_PIN
 
+#define BL_FLASH_DELAY_MS 25
+
 bool backlightSupport = 0; //only if it's true will any of the settings be visible to the user
 int16_t backlightLevel_HIGH = 0;
 int16_t backlightLevel_LOW = 0;
@@ -33,6 +35,24 @@ void force_bl_on(bool section_start)
     backlight_update();
 }
 
+void backlight_wake(const uint8_t flashNo)
+{
+    if (!backlightSupport) return;
+    
+    if (flashNo)
+    {
+        uint8_t backlightMode_bck = backlightMode;
+        for (uint8_t i = 0; i < (((backlightMode_bck == BACKLIGHT_MODE_AUTO) && !backlightTimer.running()) + (flashNo * 2)); i++)
+        {
+            backlightMode = !backlightMode; //toggles between BACKLIGHT_MODE_BRIGHT and BACKLIGHT_MODE_DIM
+            backlight_update();
+            _delay(BL_FLASH_DELAY_MS);
+        }
+        backlightMode = backlightMode_bck;
+    }
+    backlightTimer_reset();
+}
+
 void backlight_save() //saves all backlight data to eeprom.
 {
     eeprom_update_byte((uint8_t *)EEPROM_BACKLIGHT_LEVEL_HIGH, (uint8_t)backlightLevel_HIGH);
@@ -41,10 +61,11 @@ void backlight_save() //saves all backlight data to eeprom.
     eeprom_update_word((uint16_t *)EEPROM_BACKLIGHT_TIMEOUT, backlightTimer_period);
 }
 
-void backlightTimer_reset() //used for resetting the timer and waking the display. Triggered on events such as knob click, rotate and on full screen notifications.
+void backlightTimer_reset() //used for resetting the timer and waking the display. Triggered on user interactions.
 {
     if (!backlightSupport) return;
     backlightTimer.start();
+    backlight_update();
 }
 
 void backlight_update()
@@ -86,7 +107,6 @@ void backlight_init()
     
     SET_OUTPUT(LCD_BL_PIN);
     backlightTimer_reset();
-    backlight_update(); //sets brightness
 }
 
 #endif //LCD_BL_PIN

+ 3 - 2
Firmware/backlight.h

@@ -8,8 +8,8 @@
 
 enum Backlight_Mode
 {
-	BACKLIGHT_MODE_BRIGHT  = 0,
-	BACKLIGHT_MODE_DIM     = 1,
+	BACKLIGHT_MODE_DIM     = 0,
+	BACKLIGHT_MODE_BRIGHT  = 1,
 	BACKLIGHT_MODE_AUTO    = 2,
 };
 
@@ -27,6 +27,7 @@ extern void backlight_update();
 extern void backlight_init();
 extern void backlightTimer_reset();
 extern void backlight_save();
+extern void backlight_wake(const uint8_t flashNo = 0);
 
 
 #endif //_BACKLIGHT_H

+ 7 - 0
Firmware/sound.cpp

@@ -5,6 +5,7 @@
 //#include <inttypes.h>
 //#include <avr/eeprom.h>
 //#include "eeprom.h"
+#include "backlight.h"
 
 
 //eSOUND_MODE eSoundMode=e_SOUND_MODE_LOUD;
@@ -63,6 +64,7 @@ Sound_SaveMode();
 
 //if critical is true then silend and once mode is ignored
 void Sound_MakeCustom(uint16_t ms,uint16_t tone_,bool critical){
+    backlight_wake(1);
      if (!critical){
           if (eSoundMode != e_SOUND_MODE_SILENT){
                if(!tone_){
@@ -135,6 +137,7 @@ switch(eSoundMode)
 
 static void Sound_DoSound_Blind_Alert(void)
 {
+    backlight_wake(1);
      uint8_t nI;
 
      for(nI=0; nI<20; nI++)
@@ -148,6 +151,7 @@ static void Sound_DoSound_Blind_Alert(void)
 
  static void Sound_DoSound_Encoder_Move(void)
 {
+    backlight_wake();
 uint8_t nI;
 
  for(nI=0;nI<5;nI++)
@@ -161,6 +165,7 @@ uint8_t nI;
 
 static void Sound_DoSound_Echo(void)
 {
+    backlight_wake();
 uint8_t nI;
 
 for(nI=0;nI<10;nI++)
@@ -174,6 +179,7 @@ for(nI=0;nI<10;nI++)
 
 static void Sound_DoSound_Prompt(void)
 {
+    backlight_wake(2);
 WRITE(BEEPER,HIGH);
 _delay_ms(500);
 WRITE(BEEPER,LOW);
@@ -181,6 +187,7 @@ WRITE(BEEPER,LOW);
 
 static void Sound_DoSound_Alert(bool bOnce)
 {
+    backlight_wake();
 uint8_t nI,nMax;
 
 nMax=bOnce?1:3;

+ 1 - 0
Firmware/ultralcd.cpp

@@ -8868,6 +8868,7 @@ void menu_lcd_lcdupdate_func(void)
 		lcd_draw_update = 2;
 		lcd_oldcardstatus = IS_SD_INSERTED;
 		lcd_refresh(); // to maybe revive the LCD if static electricity killed it.
+        backlight_wake();
 		if (lcd_oldcardstatus)
 		{
 			card.initsd();