OSDN Git Service

[v2.0][RENC] Try to reject click-noise, may be correct ;_;
[openi2cradio/OpenI2CRadio.git] / power.c
diff --git a/power.c b/power.c
index bd98772..7ece052 100644 (file)
--- a/power.c
+++ b/power.c
@@ -30,6 +30,8 @@
 #include "lcd_acm1602.h"
 #include "power.h"
 #include "menu.h"
+#include "backlight.h"
+#include "rencoder.h"
 
 /*
  * Detect reset condition.
@@ -91,9 +93,9 @@ void power_on_inthook(void)
 void power_on(unsigned char f)
 {
     if(f == 0x00){
-        set_examp_mute(0xff);
-        idle_time_ms(200);
-        set_radiopower(0x00);
+       set_radiopower(0x00);
+       set_examp_mute(0xff);
+//        idle_time_ms(200);
     } else {
         set_examp_mute(0x00);
         idle_time_ms(100);
@@ -136,33 +138,37 @@ unsigned char chk_powerbutton(void)
     return 0; // Not pressed
 }
 
-void shutdown(unsigned char save)
+void shutdown(unsigned char savef)
 {
     rfamp_power(RFAMP_OFF);
+    power_on(0);
     acm1602_suspend(LCD_I2CADDR);
-    power_off(save);
+    lcd_setbacklight(0, 0);
+    power_off(savef);
 }
 
-void power_off(unsigned char save)
+void power_off(unsigned char savef)
 {
     unsigned char sts;
 
-    if(save != 0) save_eeprom();
+    if(savef != 0) {
 
-    lcd_setbacklight(0, 0);
+        save_eeprom();
+        save_userbands();
+    }
     set_powerlamp(0);
     _AM_STATLAMP = 0;
     _FM_STATLAMP = 0;
-    power_on(0);
 
     WDTCONbits.SWDTEN = 0; // Lame WDT OFF.
     sts = 0;
+    rencoder_stop();
     do {
         RCONbits.IPEN = 1;
         IOCB = 0x10; // IOCB4 ONLY.
         OSCCONbits.IDLEN = 0; // Not Idle.
         INTCON2bits.RBIP = 1; // Priority = HIGH;
-        INTCON = 0b0000100;
+        INTCON = 0b00001000;
         T0CONbits.TMR0ON = 0;
         Sleep();
         // Wake up