X-Git-Url: http://git.rot13.org//?a=blobdiff_plain;f=firmware%2Flib%2Fcommand.c;h=282d98adafc47c9d092901a8d266ac88d0320392;hb=f110fe63257686b9fcac78824d61ec429c2a5226;hp=afeb3f9fd452e062868629a3d3d2824fae227f92;hpb=ae09939eb8c62c83f244527e7916cee5f9145e6c;p=goodfet diff --git a/firmware/lib/command.c b/firmware/lib/command.c index afeb3f9..282d98a 100644 --- a/firmware/lib/command.c +++ b/firmware/lib/command.c @@ -7,17 +7,15 @@ #include "platform.h" #include -unsigned char cmddata[256]; - +unsigned char cmddata[CMDDATALEN]; +unsigned char silent=0; //! 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); + unsigned long len=strlen(str); + txhead(app,verb,len); while(len--) serial_tx(*(str++)); } @@ -33,19 +31,64 @@ void debugstr(const char *str){ } +//! Transmit a header. +void txhead(unsigned char app, + unsigned char verb, + unsigned long len){ + serial_tx(app); + serial_tx(verb); + //serial_tx(len); + txword(len); +} + //! Transmit data. void txdata(unsigned char app, unsigned char verb, - unsigned char len){ + unsigned long len){ unsigned int i=0; - serial_tx(app); - serial_tx(verb); - serial_tx(len); + if(silent) + return; + txhead(app,verb,len); for(i=0;i>=8; + serial_tx(l&0xFF); + l>>=8; + serial_tx(l&0xFF); + l>>=8; + serial_tx(l&0xFF); + l>>=8; +} +//! Transmit a word. +void txword(unsigned int l){ + serial_tx(l&0xFF); + l>>=8; + serial_tx(l&0xFF); + l>>=8; +} + //Be very careful changing delay(). //It was chosen poorly by trial and error.