X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=firmware%2Flib%2Fcommand.c;h=d984fca791feb33f357e38223acde6d73d0bd090;hp=8d9eac10f1cbfd1effc55cdca2140b980b299791;hb=f4a6b415e762bcdc560f3ea655851d16f483ea5a;hpb=84de7aa6b2ef9e83c7d36c3b2fed78933113c38a diff --git a/firmware/lib/command.c b/firmware/lib/command.c index 8d9eac1..d984fca 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++)); } @@ -35,16 +33,17 @@ void debugstr(const char *str){ //! Transmit a header. void txhead(unsigned char app, unsigned char verb, - unsigned int len){ + unsigned long len){ serial_tx(app); serial_tx(verb); - serial_tx(len); + //serial_tx(len); + txword(len); } //! Transmit data. void txdata(unsigned char app, unsigned char verb, - unsigned int len){ + unsigned long len){ unsigned int i=0; if(silent) return; @@ -54,6 +53,41 @@ void txdata(unsigned char app, } } +//! Receive a long. +unsigned long rxlong(){ + unsigned long toret=0; + toret=serial_rx(); + toret|=(((long)serial_rx())<<8); + toret|=(((long)serial_rx())<<16); + toret|=(((long)serial_rx())<<24); + return toret; +} +//! Receive a word. +unsigned int rxword(){ + unsigned long toret=0; + toret=serial_rx(); + toret|=(((long)serial_rx())<<8); + return toret; +} +//! Transmit a long. +void txlong(unsigned long l){ + serial_tx(l&0xFF); + l>>=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.