Getting closer to an I2C Python 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 \r
9 \r
10 //LED on P1.0\r
11 //IO on P5\r
12 \r
13 //! Initialize registers and all that jazz.\r
14 void init(){\r
15   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer\r
16   \r
17   //LED out and on.\r
18   PLEDDIR |= PLEDPIN;\r
19   PLEDOUT |= PLEDPIN;\r
20   \r
21   //Setup clocks, unique to each '430.\r
22   msp430_init_dco();\r
23   msp430_init_uart();\r
24   \r
25   //Enable Interrupts.\r
26   //eint();\r
27 }\r
28 \r
29 //! Handle a command.\r
30 void handle(unsigned char app,\r
31             unsigned char verb,\r
32             unsigned char len){\r
33   switch(app){\r
34   case MONITOR:\r
35     monitorhandle(app,verb,len);\r
36     break;\r
37   case SPI:\r
38     spihandle(app,verb,len);\r
39     break;\r
40   case I2CAPP:\r
41     i2chandle(app,verb,len);\r
42     break;\r
43   case CHIPCON:\r
44     cchandle(app,verb,len);\r
45     break;\r
46   case JTAG:\r
47     jtaghandle(app,verb,len);\r
48     break;\r
49   case JTAG430:\r
50     jtag430handle(app,verb,len);\r
51     break;\r
52   default:\r
53     txdata(app,NOK,0);\r
54     break;\r
55   }\r
56 }\r
57 \r
58 //! Main loop.\r
59 int main(void)\r
60 {\r
61   volatile unsigned int i;\r
62   unsigned char app, verb, len;\r
63   \r
64   init();\r
65   \r
66   \r
67   //Ready\r
68   //txdata(MONITOR,OK,0);\r
69   //while (1){\r
70   //  txdata(0xFF,0xff,0x0);\r
71   //  delay(1000);\r
72   //}\r
73   //delay(0xffff);\r
74   //while(*((int*)0x1001));\r
75   \r
76   //while(1)\r
77   //  txdata(0xFF,0xFF,0);\r
78   \r
79   txstring(MONITOR,OK,"http://goodfet.sf.net/");\r
80   \r
81   //Command loop.  There's no end!\r
82   while(1){\r
83     //Magic 3\r
84     app=serial_rx();\r
85     verb=serial_rx();\r
86     len=serial_rx();\r
87     \r
88     //Read data, if any\r
89     for(i=0;i<len;i++){\r
90       cmddata[i]=serial_rx();\r
91     }\r
92     handle(app,verb,len);\r
93   }\r
94 }\r
95 \r