OSDN Git Service

[v1.0][Doc] v1.0(.0) Release.
[openi2cradio/OpenI2CRadio.git] / power.c
diff --git a/power.c b/power.c
index bd98772..681e0a8 100644 (file)
--- a/power.c
+++ b/power.c
@@ -30,6 +30,7 @@
 #include "lcd_acm1602.h"
 #include "power.h"
 #include "menu.h"
+#include "backlight.h"
 
 /*
  * Detect reset condition.
@@ -91,9 +92,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);
+//        idle_time_ms(200);
+        set_examp_mute(0xff);
     } else {
         set_examp_mute(0x00);
         idle_time_ms(100);
@@ -136,24 +137,26 @@ unsigned char chk_powerbutton(void)
     return 0; // Not pressed
 }
 
-void shutdown(unsigned char save)
+void shutdown(unsigned char save_v)
 {
     rfamp_power(RFAMP_OFF);
+    power_on(0);
     acm1602_suspend(LCD_I2CADDR);
-    power_off(save);
+    lcd_setbacklight(0, 0);
+    power_off(save_v);
 }
 
-void power_off(unsigned char save)
+void power_off(unsigned char save_v)
 {
     unsigned char sts;
 
-    if(save != 0) save_eeprom();
-
-    lcd_setbacklight(0, 0);
-    set_powerlamp(0);
+    if(save_v != 0) {
+        save_eeprom();
+//        save_frequencies();
+    }
     _AM_STATLAMP = 0;
     _FM_STATLAMP = 0;
-    power_on(0);
+    set_powerlamp(0);
 
     WDTCONbits.SWDTEN = 0; // Lame WDT OFF.
     sts = 0;
@@ -162,7 +165,7 @@ void power_off(unsigned char save)
         IOCB = 0x10; // IOCB4 ONLY.
         OSCCONbits.IDLEN = 0; // Not Idle.
         INTCON2bits.RBIP = 1; // Priority = HIGH;
-        INTCON = 0b0000100;
+        INTCON = 0b00001000;
         T0CONbits.TMR0ON = 0;
         Sleep();
         // Wake up