projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
USB: coding style fixes (structure naming)
[bertos.git]
/
bertos
/
net
/
xmodem.c
diff --git
a/bertos/net/xmodem.c
b/bertos/net/xmodem.c
index 63befb6b8d6761ce086caa626f12e4fd7548021a..fbf43386d151d757d690d14b4563c12438ff241b 100644
(file)
--- a/
bertos/net/xmodem.c
+++ b/
bertos/net/xmodem.c
@@
-38,8
+38,6
@@
*
* \todo Break xmodem_send() and xmodem_recv() in smaller functions.
*
*
* \todo Break xmodem_send() and xmodem_recv() in smaller functions.
*
- * \version $Id$
- *
* \author Bernie Innocenti <bernie@codewiz.org>
* \author Francesco Sacchi <batt@develer.com>
*/
* \author Bernie Innocenti <bernie@codewiz.org>
* \author Francesco Sacchi <batt@develer.com>
*/
@@
-48,9
+46,13
@@
#include "xmodem.h"
#include "cfg/cfg_xmodem.h"
#include "xmodem.h"
#include "cfg/cfg_xmodem.h"
+
#include <cfg/debug.h>
#include <cfg/debug.h>
+// Define log settings for cfg/log.h
+#define LOG_LEVEL CONFIG_XMODEM_LOG_LEVEL
+#define LOG_FORMAT CONFIG_XMODEM_LOG_FORMAT
+#include <cfg/log.h>
-#include <drv/ser.h>
#include <algo/crc.h>
#include <algo/crc.h>
@@
-80,7
+82,7
@@
/**
* \brief Receive a file using the XModem protocol.
*
/**
* \brief Receive a file using the XModem protocol.
*
- * \param
KFile channet
to use for transfer
+ * \param
ch Channel
to use for transfer
* \param fd Destination file
*
* \note This function allocates a large amount of stack (\see XM_BUFSIZE).
* \param fd Destination file
*
* \note This function allocates a large amount of stack (\see XM_BUFSIZE).
@@
-97,7
+99,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
bool usecrc = true;
bool usecrc = true;
-
XMODEM_PROGRESS
("Starting Transfer...\n");
+
LOG_INFO
("Starting Transfer...\n");
purge = true;
kfile_clearerr(ch);
purge = true;
kfile_clearerr(ch);
@@
-108,7
+110,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
{
kfile_putc(XM_CAN, ch);
kfile_putc(XM_CAN, ch);
{
kfile_putc(XM_CAN, ch);
kfile_putc(XM_CAN, ch);
-
XMODEM_PROGRESS
("Transfer aborted\n");
+
LOG_INFO
("Transfer aborted\n");
return false;
}
return false;
}
@@
-121,7
+123,9
@@
bool xmodem_recv(KFile *ch, KFile *fd)
purge = false;
if (kfile_error(ch))
purge = false;
if (kfile_error(ch))
- XMODEM_PROGRESS("Retries %d\n", retries);
+ {
+ LOG_ERR("Retries %d\n", retries);
+ }
kfile_resync(ch, 200);
retries++;
kfile_resync(ch, 200);
retries++;
@@
-130,7
+134,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
{
kfile_putc(XM_CAN, ch);
kfile_putc(XM_CAN, ch);
{
kfile_putc(XM_CAN, ch);
kfile_putc(XM_CAN, ch);
-
XMODEM_PROGRESS
("Transfer aborted\n");
+
LOG_INFO
("Transfer aborted\n");
return false;
}
return false;
}
@@
-139,14
+143,14
@@
bool xmodem_recv(KFile *ch, KFile *fd)
{
if (retries < CONFIG_XMODEM_MAXCRCRETRIES)
{
{
if (retries < CONFIG_XMODEM_MAXCRCRETRIES)
{
-
XMODEM_PROGRESS
("Request Tx (CRC)\n");
+
LOG_INFO
("Request Tx (CRC)\n");
kfile_putc(XM_C, ch);
}
else
{
/* Give up with CRC and fall back to checksum */
usecrc = false;
kfile_putc(XM_C, ch);
}
else
{
/* Give up with CRC and fall back to checksum */
usecrc = false;
-
XMODEM_PROGRESS
("Request Tx (BCC)\n");
+
LOG_INFO
("Request Tx (BCC)\n");
kfile_putc(XM_NAK, ch);
}
}
kfile_putc(XM_NAK, ch);
}
}
@@
-173,22
+177,26
@@
bool xmodem_recv(KFile *ch, KFile *fd)
/* Check complemented block number */
if ((~c & 0xff) != kfile_getc(ch))
{
/* Check complemented block number */
if ((~c & 0xff) != kfile_getc(ch))
{
-
XMODEM_PROGRESS
("Bad blk (%d)\n", c);
+
LOG_WARN
("Bad blk (%d)\n", c);
purge = true;
break;
}
/* Determine which block is being sent */
if (c == (blocknr & 0xff))
purge = true;
break;
}
/* Determine which block is being sent */
if (c == (blocknr & 0xff))
+ {
/* Last block repeated */
/* Last block repeated */
- XMODEM_PROGRESS("Repeat blk %d\n", blocknr);
+ LOG_INFO("Repeat blk %d\n", blocknr);
+ }
else if (c == ((blocknr + 1) & 0xff))
else if (c == ((blocknr + 1) & 0xff))
+ {
/* Next block */
/* Next block */
- XMODEM_PROGRESS("Recv blk %d\n", ++blocknr);
+ LOG_INFO("Recv blk %d\n", ++blocknr);
+ }
else
{
/* Sync lost */
else
{
/* Sync lost */
-
XMODEM_PROGRESS
("Sync lost (%d/%d)\n", c, blocknr);
+
LOG_WARN
("Sync lost (%d/%d)\n", c, blocknr);
purge = true;
break;
}
purge = true;
break;
}
@@
-239,7
+247,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
if (crc)
{
if (crc)
{
-
XMODEM_PROGRESS
("Bad CRC: %04x\n", crc);
+
LOG_ERR
("Bad CRC: %04x\n", crc);
purge = true;
break;
}
purge = true;
break;
}
@@
-247,7
+255,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
/* Compare the checksum */
else if (c != checksum)
{
/* Compare the checksum */
else if (c != checksum)
{
-
XMODEM_PROGRESS
("Bad sum: %04x/%04x\n", checksum, c);
+
LOG_ERR
("Bad sum: %04x/%04x\n", checksum, c);
purge = true;
break;
}
purge = true;
break;
}
@@
-260,7
+268,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
if (last_block_done < blocknr)
{
/* Call user function to flush the buffer */
if (last_block_done < blocknr)
{
/* Call user function to flush the buffer */
- if (kfile_write(fd, block_buffer, blocksize))
+ if (kfile_write(fd, block_buffer, blocksize)
== (size_t)blocksize
)
{
/* Acknowledge block and clear error counter */
kfile_putc(XM_ACK, ch);
{
/* Acknowledge block and clear error counter */
kfile_putc(XM_ACK, ch);
@@
-278,7
+286,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
case XM_EOT: /* End of transmission */
kfile_putc(XM_ACK, ch);
case XM_EOT: /* End of transmission */
kfile_putc(XM_ACK, ch);
-
XMODEM_PROGRESS
("Transfer completed\n");
+
LOG_INFO
("Transfer completed\n");
return true;
case EOF: /* Timeout or serial error */
return true;
case EOF: /* Timeout or serial error */
@@
-286,7
+294,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
break;
default:
break;
default:
-
XMODEM_PROGRESS
("Skipping garbage\n");
+
LOG_INFO
("Skipping garbage\n");
purge = true;
break;
}
purge = true;
break;
}
@@
-299,7
+307,7
@@
bool xmodem_recv(KFile *ch, KFile *fd)
/**
* \brief Transmit some data using the XModem protocol.
*
/**
* \brief Transmit some data using the XModem protocol.
*
- * \param
KFile channet
to use for transfer
+ * \param
ch Channel
to use for transfer
* \param fd Source file
*
* \note This function allocates a large amount of stack for
* \param fd Source file
*
* \note This function allocates a large amount of stack for
@@
-324,7
+332,7
@@
bool xmodem_send(KFile *ch, KFile *fd)
size = kfile_read(fd, block_buffer, XM_BUFSIZE);
kfile_clearerr(ch);
size = kfile_read(fd, block_buffer, XM_BUFSIZE);
kfile_clearerr(ch);
-
XMODEM_PROGRESS
("Wait remote host\n");
+
LOG_INFO
("Wait remote host\n");
for(;;)
{
for(;;)
{
@@
-337,18
+345,20
@@
bool xmodem_send(KFile *ch, KFile *fd)
switch (c = kfile_getc(ch))
{
case XM_NAK:
switch (c = kfile_getc(ch))
{
case XM_NAK:
-
XMODEM_PROGRESS
("Resend blk %d\n", blocknr);
+
LOG_INFO
("Resend blk %d\n", blocknr);
proceed = true;
break;
case XM_C:
if (c == XM_C)
{
proceed = true;
break;
case XM_C:
if (c == XM_C)
{
-
XMODEM_PROGRESS
("Tx start (CRC)\n");
+
LOG_INFO
("Tx start (CRC)\n");
usecrc = true;
}
else
usecrc = true;
}
else
- XMODEM_PROGRESS("Tx start (BCC)\n");
+ {
+ LOG_INFO("Tx start (BCC)\n");
+ }
proceed = true;
break;
proceed = true;
break;
@@
-360,7
+370,7
@@
bool xmodem_send(KFile *ch, KFile *fd)
/* Call user function to read in one block */
size = kfile_read(fd, block_buffer, XM_BUFSIZE);
/* Call user function to read in one block */
size = kfile_read(fd, block_buffer, XM_BUFSIZE);
-
XMODEM_PROGRESS
("Send blk %d\n", blocknr);
+
LOG_INFO
("Send blk %d\n", blocknr);
blocknr++;
retries = 0;
proceed = true;
blocknr++;
retries = 0;
proceed = true;
@@
-369,17
+379,17
@@
bool xmodem_send(KFile *ch, KFile *fd)
case EOF:
kfile_clearerr(ch);
retries++;
case EOF:
kfile_clearerr(ch);
retries++;
-
XMODEM_PROGRESS
("Retries %d\n", retries);
+
LOG_INFO
("Retries %d\n", retries);
if (retries <= CONFIG_XMODEM_MAXRETRIES)
break;
/* falling through! */
case XM_CAN:
if (retries <= CONFIG_XMODEM_MAXRETRIES)
break;
/* falling through! */
case XM_CAN:
-
XMODEM_PROGRESS
("Transfer aborted\n");
+
LOG_INFO
("Transfer aborted\n");
return false;
default:
return false;
default:
-
XMODEM_PROGRESS
("Skipping garbage\n");
+
LOG_INFO
("Skipping garbage\n");
break;
}
}
break;
}
}
@@
-416,8
+426,6
@@
bool xmodem_send(KFile *ch, KFile *fd)
/* Send CRC/Checksum */
if (usecrc)
{
/* Send CRC/Checksum */
if (usecrc)
{
- crc = UPDCRC16(0, crc);
- crc = UPDCRC16(0, crc);
kfile_putc(crc >> 8, ch);
kfile_putc(crc & 0xFF, ch);
}
kfile_putc(crc >> 8, ch);
kfile_putc(crc & 0xFF, ch);
}