#ifndef USBHID_INTERFACE_H_ #define USBHID_INTERFACE_H_ #define TASK_REPORT_STACK_SIZE (512/sizeof(portSTACK_TYPE)) #define TASK_REPORT_PRIORITY ( ( UBaseType_t ) 1U ) #define MIN_REPORT_RATE (10) // Delay between reports in millisec. Maximum rate = 1/.01 = 100Hz #define DEFAULT_HID_WAIT_TIME 50 // Clock to the RTT is about 10kHz. This is roughly 5ms typedef enum hid_errors { Hid_Success = 0, Hid_Invalid_Arg = 1, Hid_Unsupported = 2, Hid_Unknown_Error = 3, Hid_Busy_Error = 4, Hid_Timeout_Error = 6 } Hid_Error_T; // HID Feature Report codes for PC->HMD requests #define HID_CODE_FOR_SW_VER ('*') //0x2a #define HID_CODE_FOR_SERIAL_NUM ('%') //0x25 #define HID_CODE_FOR_HMD_SERIAL_NUM ('&') //0x26 #define HID_CODE_FOR_TRACKING_SERIAL ('~') //0x7e #define HID_CODE_FOR_USAGE_TIMER_GET ('Z') //0x5a #define HID_CODE_FOR_USAGE_TIMER_SET ('z') //0x7a #define HID_CODE_FOR_STEREO ('S') //0x53 #define HID_CODE_FOR_GAIN ('G') //0x47 #define HID_CODE_FOR_FRAC_GAIN ('g') //0x67 #define HID_CODE_FOR_FAN ('F') //0x46 #define HID_CODE_FOR_FAN_DEFERRED ('f') //0x66 #define HID_CODE_FOR_RATE ('R') //0x52 #define HID_CODE_FOR_OLED_FLIP ('P') //0x50 #define HID_CODE_FOR_OLED_BRIGHNTESS ('I') //0x49 #define HID_CODE_FOR_OLED_ID ('^') //0x5e #define HID_CODE_FOR_BOOTLOADER ('B') //0x42 #define HID_CODE_FOR_RESET ('C') //0x43 #define HID_CODE_FOR_READ_SIG ('U') //0x55 #define HID_CODE_FOR_RGB_LED ('L') //0x4c #define HID_CODE_FOR_WRITE_SIG ('W') //0x57 #define HID_CODE_FOR_SAVE_SIG ('V') //0x56 #define HID_CODE_FOR_PROX_SETTINGS ('M') //0x4d #define HID_CODE_FOR_CHECK_VXR_CONNECTION ('X') //0x58 #define HID_CODE_FOR_VXR_CHECKSUM ('K') //0x4b #define HID_CODE_FOR_VXR_TAGS ('T') //0x54 #define HID_CODE_FOR_VXR_DELETE ('D') //0x44 #define HID_CODE_FOR_VXR_PROGRAM ('A') //0x41 #define HID_CODE_FOR_VXR_RESET ('Y') //0x59 #define HID_CODE_FOR_VXR_FWNAME ('N') //0x4e #define HID_CODE_FOR_HW_TEST ('J') //0x4a #define HID_CODE_FOR_FATP_MODE ('@') //0x40 #define HID_CODE_FOR_OLED_COMMAND ('o') //0x6f #define HID_CODE_FOR_EDID_SWITCH ('d') //0x64 #define HID_CODE_FOR_PROX_DISABLE ('p') //0x70 #define HID_CODE_FOR_PROX_ENABLE ('[') //0x5b #define HID_CODE_FOR_COLORBARPATTERN ('=') //0x3d #define HID_CODE_FOR_STACK_LEVELS ('s') //0x73 #define HID_CODE_FOR_OLED_POWER_DISABLE ('-') //0x2d #define HID_CODE_FOR_OLED_POWER_ENABLE ('+') //0x2b #define HID_CODE_FOR_FPGA_COMMANDS ('e') //0x65 #define HID_CODE_FOR_VXR_1V_RAIL ('1') //0x31 #define HID_CODE_FOR_PROX_USER_TRIM ('t') //0x74 /* Debugging tools. Triggers a crash * for testing out the crash handler. */ #define HID_CODE_FOR_HARDFAULT (',') //0x2c #define HID_CODE_FOR_UNUSED_IRQ ('.') //0x2e #define HID_CODE_FOR_STACK_OVERFLOW ('>') //0x3e #define HID_SIG_XFER_LENGTH (32u) // Writes/Reads 32 bytes of the signature region per transfer #define VXR_CHECKSUM_LENGTH (4u) // Checksum is always a 4-byte / 32-bit value // HID Feature Report codes for HMD->PC feedback #define HID_CODE_FOR_DATA_REPLY ('#') //0x23 #define HID_CODE_FOR_SW_VER_REPLY HID_CODE_FOR_SW_VER #define HID_CODE_FOR_SERIAL_NUM_REPLY HID_CODE_FOR_SERIAL_NUM #define HID_CODE_FOR_HMD_SERIAL_REPLY HID_CODE_FOR_HMD_SERIAL_NUM #define HID_CODE_FOR_TRACKING_SERIAL_REPLY HID_CODE_FOR_TRACKING_SERIAL #define HID_CODE_FOR_USAGE_TIMER_REPLY HID_CODE_FOR_USAGE_TIMER_GET #define HID_CODE_FOR_SIG_REPLY HID_CODE_FOR_READ_SIG #define HID_CODE_FOR_VXR_CHECKSUM_REPLY HID_CODE_FOR_VXR_CHECKSUM #define HID_CODE_FOR_VXR_TAGS_REPLY HID_CODE_FOR_VXR_TAGS #define HID_CODE_FOR_VXR_FWNAME_REPLY HID_CODE_FOR_VXR_FWNAME #define HID_CODE_FOR_HW_TEST_REPLY HID_CODE_FOR_HW_TEST #define HID_CODE_FOR_OLED_ID_REPLY HID_CODE_FOR_OLED_ID #define HID_CODE_FOR_STACK_LEVELS_REPLY HID_CODE_FOR_STACK_LEVELS #define HID_CODE_FOR_TUNDRA_UART_REPLY (';') //0x3b #define HID_CODE_FOR_SUCCESS_REPLY ('$') //0x24 #define HID_CODE_FOR_ERROR_REPLY ('E') //0x45 // Task notification codes for the HID report reply #define HID_REPORT_TASK_CODE_FOR_SW_VER HID_CODE_FOR_SW_VER #define HID_REPORT_TASK_CODE_FOR_SERIAL HID_CODE_FOR_SERIAL_NUM #define HID_REPORT_TASK_CODE_FOR_HMD_SERIAL HID_CODE_FOR_HMD_SERIAL_NUM #define HID_REPORT_TASK_CODE_FOR_TRACKING_SERIAL HID_CODE_FOR_TRACKING_SERIAL #define HID_REPORT_TASK_CODE_FOR_USAGE_TIMER_GET HID_CODE_FOR_USAGE_TIMER_GET #define HID_REPORT_TASK_CODE_FOR_USAGE_TIMER_SET HID_CODE_FOR_USAGE_TIMER_SET #define HID_REPORT_TASK_CODE_FOR_BOOTLOADER HID_CODE_FOR_BOOTLOADER #define HID_REPORT_TASK_CODE_FOR_RESET HID_CODE_FOR_RESET #define HID_REPORT_TASK_CODE_FOR_OLED_ID HID_CODE_FOR_OLED_ID #define HID_REPORT_TASK_CODE_FOR_SIG HID_CODE_FOR_READ_SIG #define HID_REPORT_TASK_CODE_FOR_VXR_CHECKSUM HID_CODE_FOR_VXR_CHECKSUM #define HID_REPORT_TASK_CODE_FOR_VXR_TAGS HID_CODE_FOR_VXR_TAGS #define HID_REPORT_TASK_CODE_FOR_VXR_DELETE HID_CODE_FOR_VXR_DELETE #define HID_REPORT_TASK_CODE_FOR_VXR_PROGRAM HID_CODE_FOR_VXR_PROGRAM #define HID_REPORT_TASK_CODE_FOR_VXR_FWNAME HID_CODE_FOR_VXR_FWNAME #define HID_REPORT_TASK_CODE_FOR_HW_TEST HID_CODE_FOR_HW_TEST #define HID_REPORT_TASK_CODE_FOR_SUCCESS HID_CODE_FOR_SUCCESS_REPLY #define HID_REPORT_TASK_CODE_FOR_ERROR HID_CODE_FOR_ERROR_REPLY #define HID_REPORT_TASK_CODE_FOR_COLORBARPATTERN HID_CODE_FOR_COLORBARPATTERN #define HID_REPORT_TASK_CODE_FOR_STACK_LEVELS HID_CODE_FOR_STACK_LEVELS #define HID_REPORT_TASK_CODE_FOR_FPGA_COMMANDS HID_CODE_FOR_FPGA_COMMANDS #define HID_REPORT_TASK_CODE_FOR_TUNDRA_UART HID_CODE_FOR_TUNDRA_UART_REPLY void start_usbhid_task(void); void send_code_to_hid_task(uint32_t code); void send_code_to_hid_task_fromISR(uint32_t code); void usbhid_set_feature(uint8_t* report); #endif /* USBHID_INTERFACE_H_ */