X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Flib%2Fcommand.c;h=c5e35b561647fbace2a18e596ff33f7ccbf08baa;hp=c9c1b1cbbbc7a523906598fe0e72b089a062dc74;hb=ef8b3dcd43ed26a82df672e64396bf8c024bb09c;hpb=6a87a627534bd71abda0c446269dd03c5cad4a42 diff --git a/firmware/lib/command.c b/firmware/lib/command.c index c9c1b1c..c5e35b5 100644 --- a/firmware/lib/command.c +++ b/firmware/lib/command.c @@ -1,8 +1,31 @@ +#include "command.h" +#include "platform.h" +#include + //! Different command handling functions. unsigned char cmddata[256]; -//!Transmit data. + +//! Transmit a string. +void txstring(unsigned char app, + unsigned char verb, + const char *str){ + unsigned char len=strlen(str); + serial_tx(app); + serial_tx(verb); + serial_tx(len); + while(len--) + serial_tx(*(str++)); +} + +//! Transmits a debugging string out of line. +void debugstr(const char *str){ + txstring(0xFF,0xFF,str); +} + + +//! Transmit data. void txdata(unsigned char app, unsigned char verb, unsigned char len){ @@ -14,3 +37,22 @@ void txdata(unsigned char app, serial_tx(cmddata[i]); } } + +//Be very careful changing delay(). +//It was chosen poorly by trial and error. + +//! Delay for a count. +void delay(unsigned int count){ + volatile unsigned int i=count; + while(i--) asm("nop"); +} +//! MSDelay +void msdelay(unsigned int ms){ + volatile unsigned int i,j; + i=100; + while(i--){ + j=ms; + while(j--) asm("nop"); + } + //Using TimerA might be cleaner. +}