commit - b50d70dfe64900956894e2ec1fdbde4b6eef7360
commit + 0bc2d19951e281481a326eb3b2dc898bd5832690
blob - 2c111ca25392034bbe052e66ef09f0677dd6b326
blob + 947c195443fbeb4c476166dbbc528c8839f69dd7
--- mc5000.c
+++ mc5000.c
/* finish programming */
if (devf != NULL) {
- uint8_t resp[3];
+ uint8_t resp[3] = {};
checksum = -checksum >> 2;
emit_byte(checksum);
emit_byte(0x7E); /* end code */
/* read and validate response */
- if (fread(resp, 1, 3, devf) < 3)
- errx(1, "error reading response from board");
+ if ((r = fread(resp, 1, sizeof resp, devf)) < sizeof resp) {
+ for (int i = 0; i < sizeof resp; i++) // XXX
+ fprintf(stderr, " %.2X", resp[i]);
+ fprintf(stderr, "\n");
+ errx(1, "short read (%d bytes) from board: %s%s", r,
+ ferror(devf) ? "read error" : "",
+ feof(devf) ? "end of file" : "");
+ }
if (resp[0] != 0x7F)
- errx(1, "unexpected response received");
+ errx(1, "unexpected response (0x%.2x)", resp[0]);
if (resp[1] != 0x30 + mcu)
errx(1, "wrong chip ID (0x%.2x) in response", resp[1]);
if (resp[2] == 1)