Skip to content

Commit d9d9573

Browse files
committed
Fixed update server checksum function
1 parent 93fdc4a commit d9d9573

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

tools/test-update-server/server.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ void alarm_handler(int signo)
7171
if (serialfd >= 0 && pktbuf_size > 0) {
7272
write(serialfd, pktbuf, pktbuf_size);
7373
printf("retransmitting...\n");
74+
alarm(2);
7475
}
7576
}
7677

@@ -106,15 +107,15 @@ static int recv_ack(union usb_ack *ack)
106107
}
107108
}
108109

109-
static void check(uint8_t *pkt)
110+
static void check(uint8_t *pkt, int size)
110111
{
111112
uint16_t *c = (uint16_t *)(pkt + 2);
112113
int i;
113114
uint16_t *p = (uint16_t *)(pkt + 4);
114115
*c = 0;
115116
pkt[0] = 0xA5;
116117
pkt[1] = 0x5A;
117-
for (i = 0; i < 6; i++)
118+
for (i = 0; i < ((size - 4) >> 1); i++)
118119
*c += p[i];
119120
}
120121

@@ -224,7 +225,7 @@ int main(int argc, char** argv)
224225
break;
225226
}
226227
pktbuf_size = res + 4 + sizeof(uint32_t);
227-
check(pktbuf);
228+
check(pktbuf, pktbuf_size);
228229
write(serialfd, pktbuf, pktbuf_size);
229230
len += res;
230231

0 commit comments

Comments
 (0)