|  | // 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_EXAMPLES_DEMOS_H_ | 
|  | #define OPENTITAN_SW_DEVICE_EXAMPLES_DEMOS_H_ | 
|  |  | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include "sw/device/lib/dif/dif_gpio.h" | 
|  |  | 
|  | /** | 
|  | * This header provides a small library of reuseable demos for use with | 
|  | * OpenTitan example code. | 
|  | */ | 
|  |  | 
|  | /** | 
|  | * Runs a small demo on the GPIO pins to show that things are working. | 
|  | * | 
|  | * @param gpio the GPIO device to actuate. | 
|  | */ | 
|  | void demo_gpio_startup(dif_gpio_t *gpio); | 
|  |  | 
|  | /** | 
|  | * Executes a step of a GPIO -> LOG echo demo, by diffing | 
|  | * the previous GPIO state with the current state, and reporting | 
|  | * the difference. | 
|  | * | 
|  | * The new state is returned, so it can be passed in on the next | 
|  | * iteration. | 
|  | * | 
|  | * @param gpio the GPIO device to pull bits from. | 
|  | * @param prev_gpio_state the previous GPIO state to diff against. | 
|  | * @return the new GPIO state. | 
|  | */ | 
|  | uint32_t demo_gpio_to_log_echo(dif_gpio_t *gpio, uint32_t prev_gpio_state); | 
|  |  | 
|  | /** | 
|  | * Attempts to read at most 32 bytes from SPI, and echo them as printable | 
|  | * characters to LOG. | 
|  | */ | 
|  | void demo_spi_to_log_echo(void); | 
|  |  | 
|  | /** | 
|  | * Attempts to read characters from UART and immediately echo them back, | 
|  | * as well as to write its bits to GPIO pins 8-15. | 
|  | * | 
|  | * @param gpio the GPIO device to actuate. | 
|  | */ | 
|  | void demo_uart_to_uart_and_gpio_echo(dif_gpio_t *gpio); | 
|  |  | 
|  | #endif  // OPENTITAN_SW_DEVICE_EXAMPLES_DEMOS_H_ |