Пример #1
0
static void send_packets(struct usb_device *udev, struct asus_oled_packet *packet,
	char *buf, uint8_t p_type, size_t p_num)
{
	size_t i;
	int act_len;

	for (i = 0; i < p_num; i++) {
		int retval;

		switch (p_type) {
			case ASUS_OLED_ROLL:
				SETUP_PACKET_HEADER(packet, 0x40, 0x80, p_num, i + 1, 0x00, 0x01, 0xff);
			break;
			case ASUS_OLED_STATIC:
				SETUP_PACKET_HEADER(packet, 0x10 + i, 0x80, 0x01, 0x01, 0x00, 0x01, 0x00);
			break;
			case ASUS_OLED_FLASH:
				SETUP_PACKET_HEADER(packet, 0x10 + i, 0x80, 0x01, 0x01, 0x00, 0x00, 0xff);
			break;
		}

		memcpy(packet->bitmap, buf + (ASUS_OLED_PACKET_BUF_SIZE*i), ASUS_OLED_PACKET_BUF_SIZE);

		retval = usb_bulk_msg(udev,
			usb_sndctrlpipe(udev, 2),
			packet,
			sizeof(struct asus_oled_packet),
			&act_len,
			-1);

		if (retval)
			dev_dbg(&udev->dev, "retval = %d\n", retval);
	}
}
Пример #2
0
static void enable_oled(struct asus_oled_dev *odev, uint8_t enabl)
{
	int a;
	int retval;
	int act_len;
	struct asus_oled_packet * packet;

	packet = kzalloc(sizeof(struct asus_oled_packet), GFP_KERNEL);
	
	if (!packet) {
		dev_err(&odev->udev->dev, "out of memory\n");
		return;
	}
	
	SETUP_PACKET_HEADER(packet, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00);
	
	if (enabl) packet->bitmap[0] = 0xaf;
	else packet->bitmap[0] = 0xae;
	
	for (a=0; a<1; a++) {
		retval = usb_bulk_msg(odev->udev,
			usb_sndbulkpipe(odev->udev, 2),
			packet,
			sizeof(struct asus_oled_header) + 1,
			&act_len,
			-1);
	
		if (retval)
			dev_dbg(&odev->udev->dev, "retval = %d\n", retval);
	}
	
	kfree(packet);
}
Пример #3
0
static void send_packet(struct usb_device *udev, struct asus_oled_packet *packet, size_t offset, size_t len, char *buf, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5, uint8_t b6) {
	int retval;
	int act_len;

	SETUP_PACKET_HEADER(packet, b1, b2, b3, b4, b5, b6, 0x00);
	memcpy(packet->bitmap, buf + offset, len);

	retval = usb_bulk_msg(udev,
			usb_sndctrlpipe(udev, 2),
			packet,
			sizeof(struct asus_oled_packet),
			&act_len,
			-1);

	if (retval)
		dev_dbg(&udev->dev, "retval = %d\n", retval);
}