Cleaning up the Chipcon client.
[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   //Enable Interrupts.\r
27   //eint();\r
28 }\r
29 \r
30 //! Handle a command.\r
31 void handle(unsigned char app,\r
32             unsigned char verb,\r
33             unsigned char len){\r
34   switch(app){\r
35   case MONITOR:\r
36     monitorhandle(app,verb,len);\r
37     break;\r
38   case SPI:\r
39     spihandle(app,verb,len);\r
40     break;\r
41   case I2C:\r
42     i2chandle(app,verb,len);\r
43     break;\r
44   case CHIPCON:\r
45     cchandle(app,verb,len);\r
46     break;\r
47   case JTAG:\r
48     jtaghandle(app,verb,len);\r
49     break;\r
50   case JTAG430:\r
51     jtag430handle(app,verb,len);\r
52     break;\r
53   default:\r
54     txdata(app,NOK,0);\r
55     break;\r
56   }\r
57 }\r
58 \r
59 //! Main loop.\r
60 int main(void)\r
61 {\r
62   volatile unsigned int i;\r
63   unsigned char app, verb, len;\r
64   \r
65   init();\r
66   \r
67   \r
68   //Ready\r
69   //txdata(MONITOR,OK,0);\r
70   txstring(MONITOR,OK,"http://goodfet.sf.net/");\r
71   \r
72   //Command loop.  There's no end!\r
73   while(1){\r
74     //Magic 3\r
75     app=serial_rx();\r
76     verb=serial_rx();\r
77     len=serial_rx();\r
78     \r
79     //Read data, if any\r
80     for(i=0;i<len;i++){\r
81       cmddata[i]=serial_rx();\r
82     }\r
83     handle(app,verb,len);\r
84   }\r
85 }\r
86 \r