OSDN Git Service

[SCHEMATIC] Modify SW/MW/LW Preamp, insert galbanic-isolator replace of common-mode...
[openi2cradio/OpenI2CRadio.git] / main.c
diff --git a/main.c b/main.c
index d505a75..f1c2ab6 100644 (file)
--- a/main.c
+++ b/main.c
 #include "i2c_eeprom.h"
 #include "backlight.h"
 #include "rencoder.h"
+#include "euart.h"
+#include "uart_termio.h"
+#include "shell_strutl.h"
+#include "term_shell.h"
 
 /*
  * Config words.
@@ -85,7 +89,6 @@
                XINST=OFF
 #endif
 
-#define USE_RENCODER
 
 /*
  * Statuses
@@ -128,10 +131,8 @@ void TMR1_Handler(void)
 SIGHANDLER(TMR1_Handler)
 #endif
 {
-#ifdef USE_RENCODER
-    rencoder_count();
-#endif   
-    rencoder_restart();
+//    rencoder_count();
+        rencoder_tmrhook();
 }
 
 #ifdef __XC
@@ -165,10 +166,11 @@ void RBIF_handler(void)
 SIGHANDLER(RBIF_handler)
 #endif
 {
-    power_on_inthook();
-//    if(chk_powerbutton(0, 0) != 0) { // If pressed on
-//      power_off(1); //
-//    }
+    if(IOCBbits.IOCB4 != 0) {
+        power_on_inthook();
+    } else {
+        rencoder_inthook();
+    }
 }
 #ifdef __XC
 void  EEPROM_handler(void)
@@ -213,6 +215,14 @@ SIGHANDLER(I2CBus_handler)
     PIR2bits.BCLIF = 0;
 }
 
+#ifdef __XC
+void UART_R_Handler(void)
+#else
+SIGHANDLER(UART_R_Handler)
+#endif
+{
+    uart_inthdr_rx();
+}
 
 
 #ifdef __SDCC
@@ -224,7 +234,7 @@ END_DEF
 
 DEF_INTHIGH(inthigh_handler)
  DEF_HANDLER(SIG_RBIF, RBIF_handler)
-// DEF_HANDLER(SIG_EEIF, EEPROM_handler)
+ DEF_HANDLER(SIG_RCIF, UART_R_handler)
 // DEF_HANDLER(SIG_TMR1, TMR1_Handler)
 // DEF_HANDLER(SIG_INT1, EXINT_Handler)
  DEF_HANDLER(SIG_INT2, EXINT_Handler)
@@ -243,8 +253,8 @@ void interrupt low_priority intlow_handler(void)
 void interrupt high_priority inthigh_handler(void)
 {
     if(INTCONbits.RBIF) RBIF_handler();
-//    if(PIR2bits.EEIF)   EEPROM_handler();
     if(PIR1bits.TMR1IF) TMR1_Handler();
+    if(PIR1bits.RC1IF)   UART_R_Handler();
 //    if(PIR2bits.TMR3IF) TMR3_Handler();
 //    if(INTCON3bits.INT1IF) EXINT_Handler();
 //    if(INTCON3bits.INT2IF) EXINT_Handler();
@@ -268,6 +278,7 @@ void lowbatt(void)
     shutdown(1);
 }
 
+
 int main(void)
 {
     unsigned char c;
@@ -308,7 +319,6 @@ int main(void)
     WDTCONbits.SWDTEN = 1; // WDT ON.
     power_on(1);
     //intadc_init();
-    set_powerlamp(1);
     valinit();
     acm1602_init(LCD_I2CADDR, 1); //Init LCD
     lcd_setbacklight(0xff, 255);
@@ -317,20 +327,18 @@ int main(void)
   /* Push default parameters to AKC6955*/
     setup_akc6955();
     _CLS();
+    uart_init();
     //_LOCATE(0,0);
     _PUTCHAR(' ');
     update_status();
     update_display();
     ClrWdt();
-    ui_idlekey = setup.ui_idlecount / 92;
-    ui_idlepad = setup.ui_idlecount % 23;
-#ifdef USE_RENCODER
-    rencoder_init();
+   ui_idlekey = setup.ui_idlecount / 92;
+   ui_idlepad = setup.ui_idlecount % 23;
+   rencoder_init();
    rencoder_start();
-#endif
    do {
 
-#if 1
         if(battlevel < 340) { // 3.4V
                 lvcount++;
                 if(lvcount > 4) {
@@ -343,10 +351,9 @@ int main(void)
             } else {
                 lvcount = 0;
             }
-#endif
         /* Main routine*/
 
-        
+        term_shell(0); // Steel Shell
        for(i = 0; i < 4; i++) {
            c = pollkey_single_timeout(ui_idlekey, 1); // 23*41 = 943ms
            p = 0;
@@ -359,9 +366,7 @@ int main(void)
                setfreq_updown(c);
                update_status();
                 update_display();
-#ifdef USE_RENCODER
                rencoder_start();
-#endif
             }
             ClrWdt();
         }