#include #include #include #include #include "usb.h" #define VENDOR_ID 0xfccf #define PRODUCT_ID 0xa001 #define ENDPOINT_OUT 0x01 #define MAX_SIZE_OUT 64 #define HEIGHT 240 #define WIDTH 320 libusb_device_handle* screenHandle; unsigned char data[MAX_SIZE_OUT]; unsigned short dataPointer = 0; void blackScreen(void) { unsigned char data[] = {0x81, 0x00, 0x00}; int transfered; libusb_bulk_transfer(screenHandle, ENDPOINT_OUT, data, 3, &transfered, 0); } void fillDataWithHeader(void) { data[dataPointer] = 0x82; // HEADER dataPointer++; data[dataPointer] = 0x00; // XPOS dataPointer++; data[dataPointer] = 0x00; // XPOS dataPointer++; data[dataPointer] = 0x00; // YPOS dataPointer++; data[dataPointer] = 0x00; // YPOS dataPointer++; data[dataPointer] = 0x40; // Width 0x40 dataPointer++; data[dataPointer] = 0x01; // Width 0x01 dataPointer++; data[dataPointer] = 0xF0; // Height dataPointer++; data[dataPointer] = 0x00; // Height dataPointer++; data[dataPointer] = 0x00; // Copy dataPointer++; } void fillDataWithSubHeader(void) { data[dataPointer] = 0x02; // HEADER dataPointer++; } void sendUSBData(int i) { //printf("Sending data %d\n", i); int transfered; libusb_bulk_transfer(screenHandle, ENDPOINT_OUT, data, dataPointer, &transfered, 0); dataPointer = 0; fillDataWithSubHeader(); } void displayPicture(char* filename) { FILE* file = NULL; file = fopen(filename, "r"); dataPointer = 0; if(file == NULL) { printf("Unable to open the picture\n"); return; } else printf("Picture successfully opened\n"); fillDataWithHeader(); for(int i=0; ibNumInterfaces; j++) { if(libusb_kernel_driver_active(screenHandle, j) && (libusb_detach_kernel_driver(screenHandle, j) != 0)) { printf("Unable to detach this device\n"); return false; } } ret = libusb_set_configuration(screenHandle, dConfig->bConfigurationValue); if(ret != 0) { printf("Configuration unavailable, error %d\n", ret); return false; } for(int j=0; jbNumInterfaces; j++) if(libusb_claim_interface(screenHandle, j) != 0) { printf("Device not claimed\n"); return false; } else printf("Interface %d ready\n", j); } libusb_free_config_descriptor(dConfig); displayPicture("img/home.boz"); return true; }