c5e35b561647fbace2a18e596ff33f7ccbf08baa
[goodfet] / firmware / lib / command.c
1 #include "command.h"
2 #include "platform.h"
3 #include <string.h>
4
5 //! Different command handling functions.
6
7 unsigned char cmddata[256];
8
9
10 //! Transmit a string.
11 void txstring(unsigned char app,
12               unsigned char verb,
13               const char *str){
14   unsigned char len=strlen(str);
15   serial_tx(app);
16   serial_tx(verb);
17   serial_tx(len);
18   while(len--)
19     serial_tx(*(str++));
20 }
21
22 //! Transmits a debugging string out of line.
23 void debugstr(const char *str){
24   txstring(0xFF,0xFF,str);
25 }
26
27
28 //! Transmit data.
29 void txdata(unsigned char app,
30             unsigned char verb,
31             unsigned char len){
32   unsigned int i=0;
33   serial_tx(app);
34   serial_tx(verb);
35   serial_tx(len);
36   for(i=0;i<len;i++){
37     serial_tx(cmddata[i]);
38   }
39 }
40
41 //Be very careful changing delay().
42 //It was chosen poorly by trial and error.
43
44 //! Delay for a count.
45 void delay(unsigned int count){
46   volatile unsigned int i=count;
47   while(i--) asm("nop");
48 }
49 //! MSDelay
50 void msdelay(unsigned int ms){
51   volatile unsigned int i,j;
52   i=100;
53   while(i--){
54     j=ms;
55     while(j--) asm("nop");
56   }
57   //Using TimerA might be cleaner.
58 }