//! \file uart.h //! \author tkl //! \date Jul 15, 2012 //! \brief Header file of the architecture independent uart implementation. #ifndef UART_H_ #define UART_H_ //! Function pointer for the uart open function. typedef int (*uart_fp_open_t)(const void*); //! Function pointer for the uart close function. typedef int (*uart_fp_close_t)(const void*); //! Function pointer for the uart read function. typedef int (*uart_fp_read_t)(const void*, char*, int); //! Function pointer for the uart write function. typedef int (*uart_fp_write_t)(const void*, const char*, int); //! Function pointer for the uart set callback function. typedef int (*uart_fp_set_cb_t)(const void*, const void *, const void*); //! \brief Uart access. struct uart_fp { const uart_fp_open_t open; //!< Open. const uart_fp_close_t close; //!< Close. const uart_fp_read_t read; //!< Read. const uart_fp_write_t write; //!< Write. const uart_fp_set_cb_t set_cb; //!< Set callback. }; //! \brief Uart driver object. struct uart { const void *arch_dep_device; //!< Architecture depended uart device. const struct uart_fp *fp; //!< Uart access. struct ringbuffer *buffer; //!< Intermediate buffer. }; //! \brief Open an uart device. //! \param this The uart device to open. //! \retval -1 in error case. int uart_open(const struct uart *this); //! \brief Close an uart device. //! \param this The uart device to close. //! \retval -1 in error case. int uart_close(const struct uart *this); //! \brief Read from an uart device. //! \param this The uart device to read from. //! \param buffer The buffer to read to. //! \param len The size of the buffer. //! \retval -1 in error case, otherwise the number of read characters. int uart_read(const struct uart *this, char *buffer, int len); //! \brief Write to an uart device. //! \param this The uart device to write to. //! \param buffer The buffer to write. //! \param len The number of characters to write. //! \retval -1 in error case, otherwise the number of written characters. int uart_write(const struct uart *this, const char *buffer, int len); #endif /* UART_H_ */