| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| |
| #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_SIMPLESERIAL_H_ |
| #define OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_SIMPLESERIAL_H_ |
| |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "sw/device/lib/dif/dif_usbdev.h" |
| #include "sw/device/lib/testing/usb_testutils.h" |
| |
| // This is only here because caller of _init needs it |
| typedef struct usb_testutils_ss_ctx { |
| usb_testutils_ctx_t *ctx; |
| int ep; |
| dif_usbdev_buffer_t cur_buf; |
| int cur_cpos; |
| union usb_ss_b2w { |
| uint32_t data_w; |
| uint8_t data_b[4]; |
| } chold; |
| void (*got_byte)(uint8_t); |
| } usb_testutils_ss_ctx_t; |
| |
| /** |
| * Send a byte on a simpleserial endpoint |
| * |
| * @param ssctx instance context |
| * @param c byte to send |
| */ |
| void usb_testutils_simpleserial_send_byte(usb_testutils_ss_ctx_t *ssctx, |
| uint8_t c); |
| |
| /** |
| * Initialize a simpleserial endpoint |
| * |
| * @param ssctx unintialized simpleserial instance context |
| * @param ctx initialized usbdev context |
| * @param ep endpoint number for this instance |
| * @param got_byte callback function for when a byte is received |
| */ |
| void usb_testutils_simpleserial_init(usb_testutils_ss_ctx_t *ssctx, |
| usb_testutils_ctx_t *ctx, int ep, |
| void (*got_byte)(uint8_t)); |
| |
| #endif // OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_SIMPLESERIAL_H_ |