From 9f8a74d8a18f7c4d4ed020b97784a4de299cc73c Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 6 Apr 2011 11:19:50 +0000 Subject: add checksum --- bootloader/bootloader.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bootloader/bootloader.c b/bootloader/bootloader.c index d83db57..9c4f39a 100644 --- a/bootloader/bootloader.c +++ b/bootloader/bootloader.c @@ -26,6 +26,7 @@ int transfer(int fd, struct page *p, int pages, int pagesize) { int n, off; + unsigned char sum; fprintf(stderr, "trying to reboot device\n"); usleep(500); @@ -45,9 +46,14 @@ transfer(int fd, struct page *p, int pages, int pagesize) if (p[n].dirty) { put('D', fd); put(n, fd); - for (off = 0; off < pagesize; off++) + sum = n; + for (off = 0; off < pagesize; off++) { put(p[n].data[off], fd); - assert (get(fd) == 'd'); + sum += p[n].data[off]; + } + put(sum, fd); + if (get(fd) != 'd') + n--; /* resend */ } } fprintf(stderr, "\nrebooting\n"); -- cgit v1.2.3