//! 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
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
//Magic 3\r
app=serial_rx();\r
verb=serial_rx();\r
- len=serial_rx();\r
+ //len=serial_rx();\r
+ len=rxword();\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
- handle(app,verb,len);\r
}\r
}\r
\r