X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Flib%2Fcommand.c;h=415171b732d9bc011f1c559acc8d6b1409d7a2ef;hp=afeb3f9fd452e062868629a3d3d2824fae227f92;hb=aa5d68445bc502a8ce1cf023d16cba5e089821f4;hpb=ae09939eb8c62c83f244527e7916cee5f9145e6c diff --git a/firmware/lib/command.c b/firmware/lib/command.c index afeb3f9..415171b 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++)); } @@ -32,20 +30,98 @@ void debugstr(const char *str){ txstring(0xFF,0xFF,str); } +//! brief Debug a hex word string. +void debughex(u16 v) { + unsigned char a[7]; + a[0]='0'; a[1]='x'; + + a[2]=0xf&(v>>12); + a[2]+=(a[2]>9)?('a'-10):'0'; + + a[3]=0xf&(v>>8); + a[3]+=(a[3]>9)?('a'-10):'0'; + + a[4]=0xf&(v>>4); + a[4]+=(a[4]>9)?('a'-10):'0'; + + a[5]=0xf&(v>>0); + a[5]+=(a[5]>9)?('a'-10):'0'; + + a[6]=0; + + txstring(0xFF,0xFF,a); +} + +/*! \brief Transmit debug bytes. + + Transmits bytes for debugging. +*/ +void debugbytes(const char *bytes, unsigned int len){ + u16 i; + txhead(0xFF,0xFE,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.