X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=inline;f=mware%2Fxmodem.c;h=030783d36369d17649c8523e5268fbb339df37d2;hb=e5523f6098d2f4d51c838459ce83423152cc8692;hp=c3410cafed8db3b8581d248100ac816d73c00c34;hpb=eb0e3f4a811436eb3011ba1c5bf3167c0e4ab573;p=bertos.git diff --git a/mware/xmodem.c b/mware/xmodem.c old mode 100755 new mode 100644 index c3410caf..030783d3 --- a/mware/xmodem.c +++ b/mware/xmodem.c @@ -1,9 +1,34 @@ /** * \file * * \brief X-Modem serial transmission protocol (implementation) * @@ -20,51 +45,16 @@ * \author Francesco Sacchi */ -/*#* - *#* $Log$ - *#* Revision 1.11 2007/06/07 09:10:44 batt - *#* Fix some todos. - *#* - *#* Revision 1.10 2006/07/19 12:56:28 bernie - *#* Convert to new Doxygen style. - *#* - *#* Revision 1.9 2005/11/04 16:20:02 bernie - *#* Fix reference to README.devlib in header. - *#* - *#* Revision 1.8 2004/08/25 14:12:09 rasky - *#* Aggiornato il comment block dei log RCS - *#* - *#* Revision 1.7 2004/08/15 06:30:06 bernie - *#* Make the buffer a local variable, as documented. - *#* - *#* Revision 1.6 2004/08/15 05:31:46 bernie - *#* Add an #error to spread some FUD about the quality of this module; - *#* Add a few TODOs from Rasky's review; - *#* Update to the new drv/ser.c API; - *#* Move FlushSerial() to drv/ser.c and generalize. - *#* - *#* Revision 1.5 2004/08/12 23:46:21 bernie - *#* Remove extra indentation level in switch statements. - *#* - *#* Revision 1.4 2004/08/12 23:35:50 bernie - *#* Replace a handmade loop with memset(). - *#* - *#* Revision 1.3 2004/08/12 23:34:36 bernie - *#* Replace if/else with continue to reduce indentation level. - *#* - *#* Revision 1.2 2004/08/12 23:24:07 bernie - *#* Rename UPDCRC() to UPDCRC16(). - *#* - *#* Revision 1.1 2004/08/11 19:54:22 bernie - *#* Import XModem protocol into DevLib. - *#* - *#*/ #include "xmodem.h" -#include +#include #include /* for memset() */ -#include +#include +#include +#include + + /** @@ -160,7 +150,7 @@ bool xmodem_recv(struct Serial *port, KFile *fd) { /* Give up with CRC and fall back to checksum */ usecrc = false; - XMODEM_PROGRESS("Request Tx (BCC)"); + XMODEM_PROGRESS("Request Tx (BCC)\n"); ser_putchar(XM_NAK, port); } } @@ -178,7 +168,8 @@ bool xmodem_recv(struct Serial *port, KFile *fd) case XM_SOH: /* Start of header (128-byte block) */ blocksize = 128; - + /* Needed to avoid warning if XM_BUFSIZE < 1024 */ + goto getblock; getblock: /* Get block number */ c = ser_getchar(port); @@ -291,7 +282,7 @@ bool xmodem_recv(struct Serial *port, KFile *fd) case XM_EOT: /* End of transmission */ ser_putchar(XM_ACK, port); - XMODEM_PROGRESS("Transfer completed"); + XMODEM_PROGRESS("Transfer completed\n"); return true; case EOF: /* Timeout or serial error */ @@ -299,7 +290,7 @@ bool xmodem_recv(struct Serial *port, KFile *fd) break; default: - XMODEM_PROGRESS("Skipping garbage"); + XMODEM_PROGRESS("Skipping garbage\n"); purge = true; break; }