static void destroy(int fd)
{
	struct uhid_event ev;

	memset(&ev, 0, sizeof(ev));
	ev.type = UHID_DESTROY;

	uhid_write(fd, &ev);
}
Beispiel #2
0
void uhid_report_in(bthid_dev_t *dev, uint8_t *report, int size) {
    if (!dev->ds)
        return;

    struct uhid_event ev;
    memset(&ev, 0, sizeof(ev));
    ev.type = UHID_INPUT;
    ev.u.input.size = size;
    memcpy(ev.u.input.data, report, size);
    uhid_write(dev->ds->fd, &ev);
}
static int create(int fd)
{
	struct uhid_event ev;

	memset(&ev, 0, sizeof(ev));
	ev.type = UHID_CREATE;
	strcpy((char*)ev.u.create.name, "test-uhid-device");
	ev.u.create.rd_data = rdesc;
	ev.u.create.rd_size = sizeof(rdesc);
	ev.u.create.bus = BUS_USB;
	ev.u.create.vendor = 0x15d9;
	ev.u.create.product = 0x0a37;
	ev.u.create.version = 0;
	ev.u.create.country = 0;

	return uhid_write(fd, &ev);
}
Beispiel #4
0
static int create(int fd, bthid_dev_t *dev) {
    struct uhid_event ev;
    memset(&ev, 0, sizeof(ev));
    ev.type = UHID_CREATE;

    strncpy((char*)ev.u.create.name, dev->name, sizeof(ev.u.create.name));
    ev.u.create.vendor = dev->vendor_id;
    ev.u.create.product = dev->product_id;
    ev.u.create.version = dev->version;

    ev.u.create.rd_data = dev->descriptor;
    ev.u.create.rd_size = dev->descriptor_len;
    ev.u.create.bus = BUS_BLUETOOTH;

    snprintf((char*)ev.u.create.phys, sizeof(ev.u.create.phys), "tinyhidd-%s", bd_addr_to_str(dev->addr));
    strncpy((char*)ev.u.create.uniq, bd_addr_to_str(dev->addr), sizeof(ev.u.create.uniq));
    return uhid_write(fd, &ev);
}
static int send_event(int fd)
{
	struct uhid_event ev;

	memset(&ev, 0, sizeof(ev));
	ev.type = UHID_INPUT;
	ev.u.input.size = 4;

	if (btn1_down)
		ev.u.input.data[0] |= 0x1;
	if (btn2_down)
		ev.u.input.data[0] |= 0x2;
	if (btn3_down)
		ev.u.input.data[0] |= 0x4;

	ev.u.input.data[1] = abs_hor;
	ev.u.input.data[2] = abs_ver;
	ev.u.input.data[3] = wheel;

	return uhid_write(fd, &ev);
}