- //Magic 3
- app = serial_rx();
-
- // If the app is the reset byte (0x80) increment and loop
- if (app == RESET)
- {
- reset_count++;
-
- if (reset_count > 4)
- {
- // We could trigger the WDT with either:
- // WDTCTL = 0;
- // or
- // WDTCTL = WDTPW + WDTCNTCL + WDTSSEL + 0x00;
- // but instead we'll jump to our reboot function pointer
-#ifdef MSP430
-# if (platform == tilaunchpad)
- // do we really need this, we do not want to reset the TUSB3410
- dputs("reset_count>4\n");
-
- //longjmp(warmstart,111);
- goto warmstart;
-
-# else
- (*reboot_function)();
-# endif
-#else /* !MSP430 */
-# if (platform == donbfet)
- (*reboot_function)();
-# else
- debugstr("Rebooting not supported on this platform.");
-# endif
-#endif
- }
-
- continue;
- }
- else
- {
- reset_count = 0;
- }
-
- verb = serial_rx();
- len = rxword();
-
- //Read data, looking for buffer overflow.
- if(len <= CMDDATALEN)
- {
- for(i = 0; i < len; i++)
- {
- cmddata[i] = serial_rx();
- }
-
- handle(app,verb,len);
- }
- else
- {
- //Listen to the blaberring.
- for(i = 0; i < len; i++)
- serial_rx();
-
- //Reply with an error.
- debugstr("Buffer length exceeded.");
- txdata(MONITOR,NOK,0);
- }