main.c 1.72 KB
#include "libusb_wrapper.h"
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]){
	printf("Hello World :-|\n");

    libusb_context *context;
    usbinit(&context);
    #ifdef DEBUG
    libusb_set_option(context, LIBUSB_OPTION_LOG_LEVEL, LIBUSB_LOG_LEVEL_DEBUG);
    #endif

	if(argc>1){
	    //command mode
        if(strcmp(argv[1], "demo4.1") == 0) { //if 4.1
            printf("\e[91mDemo 4.1\e[39m\n");
            displayDevices(context);
        }
        else if(strcmp(argv[1], "demo4.1plus") == 0) { //if 4.1 bonus
            printf("\e[91mDemo 4.1\e[39m\n");
            displayDevicesMore(context);
        }
        else if(strcmp(argv[1], "demo4.2") == 0){//if 4.2
            printf("\e[91mDemo 4.2\e[39m\n");

            if(argc > 3){
                uint16_t vendor_id;
                uint16_t product_id;
                sscanf(argv[2], "%hu", &vendor_id);
                sscanf(argv[3], "%hu", &product_id);

                libusb_device_handle* handle;
                handle = libusb_open_device_with_vid_pid(context, vendor_id, product_id);
                if(handle != NULL){
                    printf("Show endpoints of VID:%hu;PID:%hu\n", vendor_id, product_id);
                    displayDeviceEndpoints(handle);
                }
                else{
                    printf("Error while getting handle of VID:%hu;PID:%hu\n", vendor_id, product_id);
                }
            }else{
                printf("Error, need VID and PID\n");
            }
        }else{
            printf("Wrong command\n");
        }

	}else{
        //interactive mode
        printf("Welcome to interactive mode\n");

        /*Future code*/

        printf("Finished\n");
	}


	usbclose(context);

	return 0;
}