|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | #include <stdbool.h> | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include "sw/device/lib/arch/device.h" | 
|  | #include "sw/device/lib/runtime/hart.h" | 
|  | #include "sw/device/lib/runtime/log.h" | 
|  | #include "sw/device/lib/runtime/print.h" | 
|  | #include "sw/device/lib/testing/test_coverage.h" | 
|  | #include "sw/device/lib/testing/test_main.h" | 
|  |  | 
|  | static void spin_45(uint8_t state) { | 
|  | static const char kSpinnerChars[] = "|/-\\"; | 
|  | base_printf("%c\r", kSpinnerChars[state]); | 
|  | } | 
|  |  | 
|  | static void spin_180(void) { | 
|  | for (uint8_t state = 0; state < 4; ++state) { | 
|  | spin_45(state); | 
|  | usleep(100 * 1000);  // 0.1s | 
|  | } | 
|  | } | 
|  |  | 
|  | const test_config_t kTestConfig; | 
|  |  | 
|  | /** | 
|  | * A simple program for testing the coverage functionality. | 
|  | * | 
|  | * Prints a message and displays a spinning bar. | 
|  | */ | 
|  | bool test_main(void) { | 
|  | // Print an assuring message. | 
|  | LOG_INFO("Collecting coverage data."); | 
|  | // Display a spinning bar. | 
|  | for (uint8_t i = 0; i < 4; ++i) { | 
|  | spin_180(); | 
|  | } | 
|  | return true; | 
|  | } |