Added LED test into monitor, supporting increased LEDs on the apimote and telosb...
[goodfet] / firmware / apps / monitor / monitor.c
index 39833d4..b6858aa 100644 (file)
@@ -7,6 +7,11 @@
 #include "platform.h"
 #include "monitor.h"
 #include "builddate.h"
 #include "platform.h"
 #include "monitor.h"
 #include "builddate.h"
+#if (platform == tilaunchpad)
+#include <setjmp.h>
+extern jmp_buf warmstart;
+
+#endif
 
 #define MONITOR_APP
 
 
 #define MONITOR_APP
 
@@ -46,8 +51,8 @@ app_t const monitor_app = {
 
 //! Handles a monitor command.
 void monitor_handle_fn(uint8_t const app,
 
 //! Handles a monitor command.
 void monitor_handle_fn(uint8_t const app,
-                                          uint8_t const verb,
-                                          uint32_t const len)
+                      uint8_t const verb,
+                      uint32_t const len)
 {
        int i;
 
 {
        int i;
 
@@ -58,9 +63,9 @@ void monitor_handle_fn(uint8_t const app,
                break;
 
        case MONITOR_ECHO:
                break;
 
        case MONITOR_ECHO:
-               //Echo back the same buffer.
-               txdata(app,verb,len);
-               break;
+         //Echo back the same buffer.
+         txdata(app,verb,len);
+         break;
 
        case MONITOR_LIST_APPS:
                // transmit firmware build date
 
        case MONITOR_LIST_APPS:
                // transmit firmware build date
@@ -82,6 +87,8 @@ void monitor_handle_fn(uint8_t const app,
                cmddata[0]=memorybyte[cmddataword[0]];
           #else
                debugstr("Monitor peeks are unsupported on this platform.");
                cmddata[0]=memorybyte[cmddataword[0]];
           #else
                debugstr("Monitor peeks are unsupported on this platform.");
+               debughex(cmddataword[0]);
+               cmddata[0]=0x00;
          #endif
                txdata(app,verb,1);
                break;
          #endif
                txdata(app,verb,1);
                break;
@@ -93,6 +100,8 @@ void monitor_handle_fn(uint8_t const app,
                cmddata[0] = memorybyte[cmddataword[0]];
           #else
                debugstr("Monitor pokes are unsupported on this platform.");
                cmddata[0] = memorybyte[cmddataword[0]];
           #else
                debugstr("Monitor pokes are unsupported on this platform.");
+               debughex(cmddataword[0]);
+               cmddata[0]=0x00;
          #endif
                txdata(app,verb,1);
                break;
          #endif
                txdata(app,verb,1);
                break;
@@ -131,27 +140,16 @@ void monitor_handle_fn(uint8_t const app,
                break;
 
        case MONITOR_DIR:
                break;
 
        case MONITOR_DIR:
-         //P5DIR=cmddata[0];
-         debugstr("Command deprecated.");
-         txdata(app,verb,1);
-         break;
-
        case MONITOR_IN:
        case MONITOR_IN:
-         //cmddata[0]=P5IN;
-         debugstr("Command deprecated.");
-         txdata(app,verb,1);
-         break;
-
        case MONITOR_OUT:
        case MONITOR_OUT:
-         //P5OUT=cmddata[0];
          debugstr("Command deprecated.");
          txdata(app,verb,1);
          break;
          debugstr("Command deprecated.");
          txdata(app,verb,1);
          break;
-               
+
        case MONITOR_SILENT:
        case MONITOR_SILENT:
-               silent=cmddata[0];
-               txdata(app,verb,1);
-               break;
+         silent=cmddata[0];
+         txdata(app,verb,1);
+      break;
 
        case MONITOR_CONNECTED:
          #ifdef MSP430
 
        case MONITOR_CONNECTED:
          #ifdef MSP430
@@ -159,6 +157,33 @@ void monitor_handle_fn(uint8_t const app,
          #endif
          txdata(app,verb,0);
          break;
          #endif
          txdata(app,verb,0);
          break;
+
+       case MONITOR_LEDTEST:
+         //debugstr("Enter LEDTEST.");
+         i = 0;
+      #ifdef PLEDOUT
+       i++;
+       led_init();
+       led_on();
+       msdelay(5000);
+       led_off();
+      #endif
+      #ifdef PLED2OUT
+       i++;
+       led2_on();
+       msdelay(5000);
+       led2_off();
+      #endif
+      #ifdef PLED3OUT
+       i++;
+       led3_on();
+       msdelay(5000);
+       led3_off();
+      #endif
+      cmddata[0] = i;       //Return number of LEDs that we flashed.
+      txdata(app,verb,1);
+      break;
+
        }
 }
 
        }
 }
 
@@ -174,10 +199,14 @@ void monitor_ram_pattern()
        }
        txdata(0x00,0x90,0);
 
        }
        txdata(0x00,0x90,0);
 
+#if (platform == tilaunchpad)
+       longjmp(warmstart,1);
+#else
        //Reboot
 #ifdef MSP430
        asm("br &0xfffe");
 #endif
        //Reboot
 #ifdef MSP430
        asm("br &0xfffe");
 #endif
+#endif
 }
 
 //! Return the number of contiguous bytes 0xBEEF, to measure RAM usage.
 }
 
 //! Return the number of contiguous bytes 0xBEEF, to measure RAM usage.