#include "project.h" #include "../common/vendor_req.h" int crypto_control (uint8_t request, uint16_t value, uint16_t index, void *buf, size_t len) { (void) index; (void) buf; (void) len; switch (request) { case VENDOR_REQ_KEYPRESS: send_ascii (value); return 1; case VENDOR_REQ_SET_KEY: key_set (buf, len); return 1; case VENDOR_REQ_SEND_KEY: key_send (); return 1; case VENDOR_REQ_CLEAR_KEY: key_wipe (); return 1; } return 0; } int vendor_control_request (usbd_device * usbd_dev, struct usb_setup_data *req, uint8_t ** buf, uint16_t * len, int (**complete) (usbd_device * usbd_dev, struct usb_setup_data * req)) { (void) usbd_dev; (void) complete; if (req->bmRequestType != (USB_REQ_TYPE_OUT | USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_DEVICE)) return 0; return crypto_control (req->bRequest, req->wValue, req->wIndex, *buf, *len); }