Nearing support for the MSP430F2618 in lieu of the 1612.
[goodfet] / firmware / goodfet.c
1 //GOODFET Main File\r
2 //Includes several applications.\r
3 \r
4 #include "platform.h"\r
5 #include "command.h"\r
6 #include "apps.h"\r
7 \r
8 #include <signal.h>\r
9 #include <io.h>\r
10 #include <iomacros.h>\r
11 \r
12 \r
13 //LED on P1.0\r
14 //IO on P5\r
15 \r
16 //! Initialize registers and all that jazz.\r
17 void init(){\r
18   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer\r
19   \r
20   //LED and TX OUT\r
21   PLEDDIR |= PLEDPIN;\r
22   \r
23   msp430_init_dco();\r
24   msp430_init_uart();\r
25   \r
26   \r
27   \r
28   \r
29   //Enable Interrupts.\r
30   //eint();\r
31 }\r
32 \r
33 //! Handle a command.\r
34 void handle(unsigned char app,\r
35             unsigned char verb,\r
36             unsigned char len){\r
37   switch(app){\r
38   case MONITOR:\r
39     monitorhandle(app,verb,len);\r
40     break;\r
41   case SPI:\r
42     spihandle(app,verb,len);\r
43     break;\r
44   case I2C:\r
45     i2chandle(app,verb,len);\r
46     break;\r
47   case CHIPCON:\r
48     cchandle(app,verb,len);\r
49     break;\r
50   case JTAG:\r
51     jtaghandle(app,verb,len);\r
52     break;\r
53   case JTAG430:\r
54     jtag430handle(app,verb,len);\r
55     break;\r
56   default:\r
57     txdata(app,NOK,0);\r
58     break;\r
59   }\r
60 }\r
61 \r
62 //! Main loop.\r
63 int main(void)\r
64 {\r
65   volatile unsigned int i;\r
66   unsigned char app, verb, len;\r
67   \r
68   init();\r
69   \r
70   \r
71   //Ready\r
72   //txdata(MONITOR,OK,0);\r
73   //while (1){\r
74   //  txdata(0xFF,0xff,0x0);\r
75   //  delay(1000);\r
76   //}\r
77   //delay(0xffff);\r
78   //while(*((int*)0x1001));\r
79   \r
80   //while(1)\r
81   //  txdata(0xFF,0xFF,0);\r
82   \r
83   txstring(MONITOR,OK,"http://goodfet.sf.net/");\r
84   \r
85   //Command loop.  There's no end!\r
86   while(1){\r
87     //Magic 3\r
88     app=serial_rx();\r
89     verb=serial_rx();\r
90     len=serial_rx();\r
91     \r
92     //Read data, if any\r
93     for(i=0;i<len;i++){\r
94       cmddata[i]=serial_rx();\r
95     }\r
96     handle(app,verb,len);\r
97   }\r
98 }\r
99 \r