blob: 3172f873ae400f2e71ca25a55d2f1e1a0343c528 [file] [log] [blame]
// 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_