New Datasource
This commit is contained in:
164
DataSources/PSUCommunicator/UARTConfig.h
Normal file
164
DataSources/PSUCommunicator/UARTConfig.h
Normal file
@@ -0,0 +1,164 @@
|
||||
/**
|
||||
* @file UARTConfig.h
|
||||
* @brief Header file for class UARTConfig.
|
||||
* @date 16/08/2021
|
||||
* @author Filippo Sartori
|
||||
* @author Pedro Lourenco
|
||||
*
|
||||
* @copyright Copyright 2015 F4E | European Joint Undertaking for ITER and
|
||||
* the Development of Fusion Energy ('Fusion for Energy').
|
||||
* Licensed under the EUPL, Version 1.1 or - as soon they will be approved
|
||||
* by the European Commission - subsequent versions of the EUPL (the "Licence")
|
||||
* You may not use this work except in compliance with the Licence.
|
||||
* You may obtain a copy of the Licence at: http://ec.europa.eu/idabc/eupl
|
||||
*
|
||||
* @warning Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the Licence is distributed on an "AS IS"
|
||||
* basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||
* or implied. See the Licence permissions and limitations under the Licence.
|
||||
*
|
||||
* @details This header file contains the declaration of the class UARTConfig
|
||||
* with all of its public, protected and private members. It may also include
|
||||
* definitions for inline methods which need to be visible to the compiler.
|
||||
*/
|
||||
|
||||
#ifndef UARTCONFIG_H_
|
||||
#define UARTCONFIG_H_
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Standard header includes */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Project header includes */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
#include "AdvancedErrorManagement.h"
|
||||
#include "CompilerTypes.h"
|
||||
#include "GeneralDefinitions.h"
|
||||
#include "StreamString.h"
|
||||
#include INCLUDE_FILE_ENVIRONMENT(FileSystem, L1Portability, ENVIRONMENT, BasicUARTProperties.h)
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Class declaration */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
namespace MARTe {
|
||||
|
||||
/**
|
||||
* @brief UART implementation based on the Linux general terminal interface
|
||||
* that is provided to control asynchronous communications ports.
|
||||
* @details Some of termio parameters are hard-coded as follows:
|
||||
* - eight data bits;
|
||||
* - no parity bit;
|
||||
* - one stop bit;
|
||||
* - noncanonical input processing mode.
|
||||
*/
|
||||
class DLL_API UARTConfig {
|
||||
public:
|
||||
/**
|
||||
* @brief Default constructor.
|
||||
* @details FD_ZERO the file descriptors.
|
||||
*/
|
||||
UARTConfig();
|
||||
|
||||
/**
|
||||
* @brief Destructor.
|
||||
* @details Calls Close().
|
||||
*/
|
||||
virtual ~UARTConfig();
|
||||
|
||||
/**
|
||||
* @brief Sets the speed of the UART. Shall be called before the Open
|
||||
* method.
|
||||
* @param[in] serial the speed to set.
|
||||
* @return true if the speed was successfully updated.
|
||||
*/
|
||||
bool SetSpeed(const uint32 speed);
|
||||
|
||||
/**
|
||||
* @brief Opens the UART described by the provided \a name.
|
||||
* @details The UART is open in read/write mode. Many of the UART
|
||||
* properties are hard-coded for the CRIO use-case.
|
||||
* @param[in] name the UART file descriptor location.
|
||||
* @pre
|
||||
* SetSpeed
|
||||
*/
|
||||
bool Open(const char8 *name);
|
||||
|
||||
/**
|
||||
* @brief Closes the UART.
|
||||
* @pre
|
||||
* Open
|
||||
*/
|
||||
void Close();
|
||||
|
||||
/**
|
||||
* @brief Reads \a size bytes into the \a buffer.
|
||||
* @param[in] buffer the memory where to write the read bytes.
|
||||
* @param[in,out] size the number of bytes to read and the number of bytes
|
||||
* that were actually read.
|
||||
* @return true if the Read operation completes successfully (and reads all
|
||||
* the requested bytes).
|
||||
* @pre
|
||||
* Open
|
||||
*/
|
||||
bool Read(char8 *buffer, uint32 &size);
|
||||
|
||||
/**
|
||||
* @brief Reads \a size bytes into the \a buffer within \a timeoutUsec
|
||||
* micro-seconds.
|
||||
* @param[in] buffer the memory where to write the read bytes.
|
||||
* @param[in,out] size the number of bytes to read and the number of bytes
|
||||
* that were actually read.
|
||||
* @param[in] timeoutUsec the maximum time to complete the read operation.
|
||||
* @return true if the Read operation completes successfully within the
|
||||
* timeout (and reads all the requested bytes).
|
||||
* @pre
|
||||
* Open
|
||||
*/
|
||||
bool Read(char8 *buffer, uint32 &size, const uint32 timeoutUsec);
|
||||
|
||||
/**
|
||||
* @brief Waits \a timeoutUsec micro-seconds for data to be available for
|
||||
* reading in the UART.
|
||||
* @param[in] timeoutUsec the maximum time to wait for data to be
|
||||
* available.
|
||||
* @return true if data is available to be read within the timeout.
|
||||
*/
|
||||
bool WaitRead(const uint32 timeoutUsec);
|
||||
|
||||
/**
|
||||
* @brief Writes \a size bytes from the \a buffer.
|
||||
* @param[in] buffer the memory where to read the bytes to write.
|
||||
* @param[in] size the number of bytes to write.
|
||||
* @param[in] timeoutUsec the maximum time to complete the read operation.
|
||||
* @return true if the Read operation completes successfully within the
|
||||
* timeout (and reads all the requested bytes).
|
||||
* @pre
|
||||
* Open
|
||||
*/
|
||||
bool Write(char8 *buffer, uint32 size);
|
||||
|
||||
/**
|
||||
* @brief Waits \a timeoutUsec micro-seconds for the UART to be available
|
||||
* for writing data.
|
||||
* @param[in] timeoutUsec the maximum time to wait for the write to be
|
||||
* available.
|
||||
* @return true if the UART is available to write within the timeout.
|
||||
*/
|
||||
bool WaitWrite(const uint32 timeoutUsec);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Structure with variables/parameters for different Environments.
|
||||
*/
|
||||
BasicUARTProperties properties;
|
||||
};
|
||||
|
||||
} // namespace MARTe
|
||||
|
||||
/*---------------------------------------------------------------------------*/
|
||||
/* Inline method definitions */
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
#endif /* UARTCONFIG_H_ */
|
||||
Reference in New Issue
Block a user