Exemplo n.º 1
0
static void stamp_error(uint32_t cid, uint8_t err)
{
	uint8_t errbuf[HID_PACKET_SIZE];
	struct u2f_hid_msg * res = (struct u2f_hid_msg *)errbuf;
	res->cid = cid;
	res->pkt.init.cmd = U2FHID_ERROR;
	res->pkt.init.payload[0] = err;
	res->pkt.init.bcnth = 0;
	res->pkt.init.bcntl = 1;

	usb_write(errbuf, HID_PACKET_SIZE);
	del_cid(cid);
}
Exemplo n.º 2
0
static inline void disconn_rsp(int level, struct frame *frm)
{
	l2cap_disconn_rsp *h = frm->ptr;
	uint16_t dcid = btohs(h->dcid);
	uint16_t scid = btohs(h->scid);

	del_cid(frm->in, dcid, scid);

	if (p_filter(FILT_L2CAP))
		return;

	printf("Disconn rsp: dcid 0x%4.4x scid 0x%4.4x\n",
			btohs(h->dcid), btohs(h->scid));
}
Exemplo n.º 3
0
void u2f_hid_check_timeouts()
{
	uint8_t i;
	for(i = 0; i < CID_MAX; i++)
	{
		if (CIDS[i].busy && ((get_ms() - CIDS[i].last_used) >= 750))
		{
			u2f_printlx("timeout cid ",2,CIDS[i].cid,get_ms());
			stamp_error(CIDS[i].cid, ERR_MSG_TIMEOUT);
			del_cid(CIDS[i].cid);
			u2f_hid_reset_packet();
		}
	}

}
Exemplo n.º 4
0
static inline void conn_rsp(int level, struct frame *frm)
{
	l2cap_conn_rsp *h = frm->ptr;
	uint16_t scid = btohs(h->scid);
	uint16_t dcid = btohs(h->dcid);
	uint16_t result = btohs(h->result);
	uint16_t status = btohs(h->status);
	uint16_t psm;

	switch (h->result) {
	case L2CAP_CR_SUCCESS:
		if ((psm = get_psm(!frm->in, frm->handle, scid)))
			add_cid(frm->in, frm->handle, dcid, psm);
		break;

	case L2CAP_CR_PEND:
		break;

	default:
		del_cid(frm->in, dcid, scid);
		break;
	}

	if (p_filter(FILT_L2CAP))
		return;

	printf("Connect rsp: dcid 0x%4.4x scid 0x%4.4x result %d status %d\n",
		dcid, scid, result, status);

	p_indent(level + 1, frm);
	printf("%s", connresult2str(result));

	if (result == 0x0001)
		printf(" - %s\n", status2str(status));
	else
		printf("\n");
}