mbed-os/components/testing/COMPONENT_FPGA_CI_TEST_SHIELD/UARTTester.h

167 lines
3.8 KiB
C++

/*
* Copyright (c) 2019, Arm Limited and affiliates.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef UART_TESTER_H
#define UART_TESTER_H
#include "MbedTester.h"
class UARTTester: public MbedTester {
public:
UARTTester(const PinList *form_factor, const PinList *exclude_pins)
: MbedTester(form_factor, exclude_pins)
{
}
/**
* Set the baudrate for uart TX and RX
*
* @param baudrate Target baudrate in HZ
*/
void set_baud(uint32_t baudrate);
/**
* Set the number of data bits
*
* Supported values for data bits is 1 to 16
*
* @param data_bits The number of data bits in this transfer
*/
void set_bits(uint8_t data_bits);
/**
* Set the number of stop bits
*
* Supported values for stop bits is 1 to 16
*
* @param stop_bits The number of stop bits to end the transfer with
*/
void set_stops(uint8_t stop_bits);
/**
* Enable or disable parity checking
*
* @param enable true to enable parity checking, false to disable it
* @param odd_n_even true of odd parity, false for even
*/
void set_parity(bool enable, bool odd_n_even);
/**
* Enable UART reception
*/
void rx_start();
/**
* Disable UART reception
*/
void rx_stop();
/**
* Get the sum of all bytes received
*
* @return the sum of all bytes received
*/
uint32_t rx_get_checksum();
/**
* Get the number of bytes received
*
* @return the number of bytes received
*/
uint32_t rx_get_count();
/**
* Get the previous data(s) sent
*
* @param prev index of data to get 1 for the previous
* @return data
*/
uint16_t rx_get_data(int prev = 1);
/**
* Get the number of parity errors that have occurred
*
* @return number of parity errors that have occurred
*/
uint32_t rx_get_parity_errors();
/**
* Get the number of stop errors that have occurred
*
* @return number of stop errors that have occurred
*/
uint32_t rx_get_stop_errors();
/**
* Get the number of framing errors that have occurred
*
* @return number of framing errors that have occurred
*/
uint32_t rx_get_framing_errors();
/**
* Start UART transmission
*/
void tx_start(bool cts_enabled = false);
/**
* Stop UART transmission
*/
void tx_stop();
/**
* Set the delay after the tx_start() call and before the actual start
* of UART transmission
*
* @param delay in nanoseconds
*/
void tx_set_delay(uint32_t delay_ns);
/**
* Set the number of bytes to send
*
* @param count Number of bytes to send when started
*/
void tx_set_count(uint32_t count);
/**
* Set next sequence value to send
*
* When TX is started 'count' bytes will be sent. Each value will
* be one greater than the previous.
*
* @param value Next value to send
*/
void tx_set_next(uint16_t value);
/**
* Set the delay seen when deasserting the CTS line
*
* When delay is set to 0 then transmission will be immediately
* stopped when CTS goes to 1.
*
* @param delay in nanoseconds
*/
void cts_deassert_delay(uint32_t delay_ns);
};
#endif