Skip to content

Commit 40f9609

Browse files
committed
HID protocol is now leaner
1 parent f36ddb2 commit 40f9609

File tree

3 files changed

+11
-39
lines changed

3 files changed

+11
-39
lines changed

uf2tool/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
all:
22
mkdir -p ../built
3-
$(CC) -g -Wall tool.c ../hidapi/mac/hid.c -I../hidapi/hidapi -I. -framework IOKit -framework CoreFoundation -o ../built/uf2tool
3+
$(CC) -g -Wall tool.c ../hidapi/mac/hid.c -I../../uf2-samd21/inc -I../hidapi/hidapi -I. -framework IOKit -framework CoreFoundation -o ../built/uf2tool

uf2tool/tool.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,9 @@ void talk_hid(HID_Dev *pkt, int cmd, const void *data, uint32_t len) {
116116
uint32_t saved = read32(pkt->buf);
117117
send_hid(pkt->dev, pkt->buf, 4 + len);
118118
recv_hid(pkt, -1);
119-
if (read32(pkt->buf) != saved)
119+
if ((read32(pkt->buf) & 0x7fffffff) != saved)
120120
fatal("invalid sequence number");
121-
if (read32(pkt->buf + 4) != 0)
121+
if (read32(pkt->buf) & 0x80000000)
122122
fatal("invalid status");
123123
}
124124

@@ -149,7 +149,7 @@ void verify(HID_Dev *cmd, uint8_t *buf, int size, int offset) {
149149
write32(cmd->buf + 8, numpages);
150150
talk_hid(cmd, HF2_CMD_CHKSUM_PAGES, 0, 8);
151151
for (int i = 0; i < numpages; ++i) {
152-
int sum = read16(cmd->buf + 8 + i * 2);
152+
int sum = read16(cmd->buf + 4 + i * 2);
153153
uint16_t crc = 0;
154154
for (int j = 0; j < cmd->pageSize; ++j) {
155155
crc = add_crc(buf[j], crc);
@@ -207,15 +207,15 @@ int main(int argc, char *argv[]) {
207207
}
208208

209209
talk_hid(&cmd, HF2_CMD_INFO, 0, 0);
210-
printf("INFO: %s\n", cmd.buf + 8);
210+
printf("INFO: %s\n", cmd.buf + 4);
211211

212-
serial(&cmd);
212+
//serial(&cmd);
213213

214214
talk_hid(&cmd, HF2_CMD_BININFO, 0, 0);
215-
if (read32(cmd.buf + 8) != HF2_MODE_BOOTLOADER)
215+
if (cmd.buf[4] != HF2_MODE_BOOTLOADER)
216216
fatal("not bootloader");
217217

218-
cmd.pageSize = read32(cmd.buf + 12);
218+
cmd.pageSize = read32(cmd.buf + 8);
219219
printf("page size: %d\n", cmd.pageSize);
220220

221221
srand(millis());
@@ -238,8 +238,9 @@ int main(int argc, char *argv[]) {
238238

239239
for (i = 0; i < sizeof(flashbuf); i += cmd.pageSize) {
240240
write32(cmd.buf + 4, i + 0x2000);
241-
talk_hid(&cmd, HF2_CMD_MEM_READ_PAGE, 0, 4);
242-
if (memcmp(cmd.buf + 8, flashbuf + i, cmd.pageSize)) {
241+
write32(cmd.buf + 8, cmd.pageSize / 4);
242+
talk_hid(&cmd, HF2_CMD_MEM_READ_WORDS, 0, 8);
243+
if (memcmp(cmd.buf + 4, flashbuf + i, cmd.pageSize)) {
243244
printf("%d,%d,%d != %d?\n", cmd.buf[8], cmd.buf[9], cmd.buf[10], flashbuf[i]);
244245
fatal("verification failed");
245246
}

uf2tool/uf2hid.h

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)