Dropped ugly 'blocks' kludge for a 16-bit length field.
[goodfet] / firmware / goodfet.c
index bf63b13..4cddc19 100644 (file)
@@ -1,5 +1,6 @@
 /*! \file goodfet.c\r
   \author Travis Goodspeed\r
 /*! \file goodfet.c\r
   \author Travis Goodspeed\r
+  \brief Main module.\r
   \r
   This is the main module of the GoodFET, which calls the initialization\r
   routines and delegates commands to the various applications.\r
   \r
   This is the main module of the GoodFET, which calls the initialization\r
   routines and delegates commands to the various applications.\r
@@ -34,7 +35,8 @@ void init(){
 //! Handle a command.\r
 void handle(unsigned char app,\r
            unsigned char verb,\r
 //! Handle a command.\r
 void handle(unsigned char app,\r
            unsigned char verb,\r
-           unsigned char len){\r
+           unsigned long len){\r
+  //debugstr("GoodFET");\r
   switch(app){\r
   case MONITOR:\r
     monitorhandle(app,verb,len);\r
   switch(app){\r
   case MONITOR:\r
     monitorhandle(app,verb,len);\r
@@ -68,7 +70,8 @@ void handle(unsigned char app,
 int main(void)\r
 {\r
   volatile unsigned int i;\r
 int main(void)\r
 {\r
   volatile unsigned int i;\r
-  unsigned char app, verb, len;\r
+  unsigned char app, verb;\r
+  unsigned long len;\r
   \r
   init();\r
   \r
   \r
   init();\r
   \r
@@ -79,13 +82,23 @@ int main(void)
     //Magic 3\r
     app=serial_rx();\r
     verb=serial_rx();\r
     //Magic 3\r
     app=serial_rx();\r
     verb=serial_rx();\r
-    len=serial_rx();\r
+    //len=serial_rx();\r
+    len=rxword();\r
     \r
     \r
-    //Read data, if any\r
-    for(i=0;i<len;i++){\r
-      cmddata[i]=serial_rx();\r
+    //Read data, looking for buffer overflow.y\r
+    if(len<=CMDDATALEN){\r
+      for(i=0;i<len;i++){\r
+       cmddata[i]=serial_rx();\r
+      }\r
+      handle(app,verb,len);\r
+    }else{\r
+      //Listen to the blaberring.\r
+      for(i-0;i<len;i++)\r
+       serial_rx();\r
+      //Reply with an error.\r
+      debugstr("Buffer length exceeded.");\r
+      txdata(MONITOR,NOK,0);\r
     }\r
     }\r
-    handle(app,verb,len);\r
   }\r
 }\r
 \r
   }\r
 }\r
 \r