X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Fapps%2Fmonitor%2Fmonitor.c;h=b6858aa0ceeb85a26d8b3ac3d5730c3d5220d0a7;hp=ab6f8a4d0462ad72664828c795459b9f6d80117b;hb=0fdb361ae1af20139c5751a1b6151e5e065a31b3;hpb=5fb0341d348e101b30794945a6c91546e25e8e7b diff --git a/firmware/apps/monitor/monitor.c b/firmware/apps/monitor/monitor.c index ab6f8a4..b6858aa 100644 --- a/firmware/apps/monitor/monitor.c +++ b/firmware/apps/monitor/monitor.c @@ -7,6 +7,11 @@ #include "platform.h" #include "monitor.h" #include "builddate.h" +#if (platform == tilaunchpad) +#include +extern jmp_buf warmstart; + +#endif #define MONITOR_APP @@ -46,8 +51,8 @@ app_t const monitor_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; @@ -58,9 +63,9 @@ void monitor_handle_fn(uint8_t const app, 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 @@ -78,14 +83,26 @@ void monitor_handle_fn(uint8_t const app, break; case PEEK: + #ifdef MSP430 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; case POKE: + #ifdef MSP430 //Todo, make word or byte. memorybyte[cmddataword[0]] = cmddata[2]; 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; @@ -123,29 +140,50 @@ void monitor_handle_fn(uint8_t const app, break; case MONITOR_DIR: - P5DIR=cmddata[0]; - txdata(app,verb,1); - break; - case MONITOR_IN: - cmddata[0]=P5IN; - txdata(app,verb,1); - break; - case MONITOR_OUT: - P5OUT=cmddata[0]; - txdata(app,verb,1); - break; - + debugstr("Command deprecated."); + txdata(app,verb,1); + break; + case MONITOR_SILENT: - silent=cmddata[0]; - txdata(app,verb,1); - break; + silent=cmddata[0]; + txdata(app,verb,1); + break; case MONITOR_CONNECTED: - msp430_init_dco_done(); - txdata(app,verb,0); - break; + #ifdef MSP430 + msp430_init_dco_done(); + #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; + } } @@ -161,10 +199,14 @@ void monitor_ram_pattern() } txdata(0x00,0x90,0); +#if (platform == tilaunchpad) + longjmp(warmstart,1); +#else //Reboot #ifdef MSP430 asm("br &0xfffe"); #endif +#endif } //! Return the number of contiguous bytes 0xBEEF, to measure RAM usage.