OSDN Git Service

Bug fixed.
authorShinichiro Nakamura <shinta.main.jp@gmail.com>
Sun, 29 Apr 2012 07:28:55 +0000 (16:28 +0900)
committerShinichiro Nakamura <shinta.main.jp@gmail.com>
Sun, 29 Apr 2012 07:28:55 +0000 (16:28 +0900)
src/kz_xmodem.c

index 9f58839..3c830a1 100644 (file)
@@ -54,7 +54,8 @@
 #define CODE_CAN            (0x18)
 #define CODE_EOF            (0x1A)
 #define CODE_EOF            (0x1A)
-#define BLOCK_SIZE          (3 + 128 + 1)
+#define XMODEM_DATA_BLKSIZ  (128)
+#define XMODEM_SEND_BLKSIZ  (3 + XMODEM_DATA_BLKSIZ + 1)
 
 #define TIMEOUT_SHORT_MS    (10)
 #define TIMEOUT_LONG_MS     (1000)
@@ -246,8 +247,8 @@ ErrorCode transmit_file(SERIAL *serial, const char *filename)
         goto out;
     }
     long file_size = ftell(fp);
-    int block_count = file_size / BLOCK_SIZE;
-    int block_remainder = file_size % BLOCK_SIZE;
+    int block_count = file_size / XMODEM_DATA_BLKSIZ;
+    int block_remainder = file_size % XMODEM_DATA_BLKSIZ;
     if (fseek(fp, 0L, SEEK_SET) != 0) {
         retval = FileSeekError;
         goto out;
@@ -262,15 +263,15 @@ ErrorCode transmit_file(SERIAL *serial, const char *filename)
         int i;
         for (i = 0; i < block_count; i++) {
             unsigned char c;
-            unsigned char buf[BLOCK_SIZE];
+            unsigned char buf[XMODEM_SEND_BLKSIZ];
             buf[0] = CODE_SOH;
             buf[1] = block_number;
             buf[2] = ~block_number;
-            if (fread(buf + 3, 128, 1, fp) != 1) {
+            if (fread(buf + 3, XMODEM_DATA_BLKSIZ, 1, fp) != 1) {
                 retval = FileReadError;
                 goto out;
             }
-            buf[3 + 128] = CALC_CHECKSUM(&buf[3], 128);
+            buf[3 + XMODEM_DATA_BLKSIZ] = CALC_CHECKSUM(&buf[3], XMODEM_DATA_BLKSIZ);
             do {
                 c = TRANSMIT_BLOCK(serial, buf, sizeof(buf));
                 fprintf(stderr, "%c", (c == CODE_ACK) ? '.' : 'x');
@@ -284,16 +285,16 @@ ErrorCode transmit_file(SERIAL *serial, const char *filename)
     }
     if (block_remainder > 0) {
         unsigned char c;
-        unsigned char buf[BLOCK_SIZE];
+        unsigned char buf[XMODEM_SEND_BLKSIZ];
         buf[0] = CODE_SOH;
         buf[1] = block_number;
         buf[2] = ~block_number;
-        memset(buf + 3, CODE_EOF, 128);
+        memset(buf + 3, CODE_EOF, XMODEM_DATA_BLKSIZ);
         if (fread(buf + 3, block_remainder, 1, fp) != 1) {
             retval = FileReadError;
             goto out;
         }
-        buf[3 + 128] = CALC_CHECKSUM(&buf[3], 128);
+        buf[3 + XMODEM_DATA_BLKSIZ] = CALC_CHECKSUM(&buf[3], XMODEM_DATA_BLKSIZ);
         do {
             c = TRANSMIT_BLOCK(serial, buf, sizeof(buf));
             fprintf(stderr, "%c", (c == CODE_ACK) ? '.' : 'x');