i believe this is how resync should work

This commit is contained in:
Conor Patrick
2018-05-26 17:41:13 -04:00
parent fdd767cf9f
commit 87429fb8a6
2 changed files with 19 additions and 5 deletions

View File

@@ -94,7 +94,7 @@ static int is_broadcast(CTAPHID_PACKET * pkt)
static int is_init_pkt(CTAPHID_PACKET * pkt)
{
return (pkt->pkt.init.cmd == CTAPHID_INIT) && ctaphid_packet_len(pkt) == 8;
return (pkt->pkt.init.cmd == CTAPHID_INIT);
}
static int is_cont_pkt(CTAPHID_PACKET * pkt)
@@ -294,10 +294,19 @@ start_over:
if (is_init_pkt(pkt))
{
printf("received abort request from %08x\n", pkt->cid);
ctaphid_write_buffer_init(&wb);
wb.cid = active_cid;
active_cid_timestamp = millis();
set_next_cid(active_cid); // reuse last CID in current channel
ctaphid_init();
buffer_packet(pkt);
active_cid = wb.cid;
wb.cmd = CTAPHID_INIT;
wb.bcnt = 0;
ctaphid_write(&wb, ctap_buffer, buffer_len());
ctaphid_write(&wb, NULL, 0);
return;
}
else if (!is_cont_pkt(pkt) && buffer_status() == BUFFERING)
{