Skip to content

Commit

Permalink
Created a UART API definition in softuart.h to allow the example code…
Browse files Browse the repository at this point in the history
… to access UART in a standard manner , irrespective of how it is implemented.
  • Loading branch information
Roarin committed Jul 5, 2016
1 parent 0ddd377 commit e5de956
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 0 deletions.
1 change: 1 addition & 0 deletions examples/lights/lights.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

#include <lights.h>
#include <delay.h>
#include <uart/api.h>

volatile __xdata BYTE* bytes[] = { &D2ON, &D3ON, &D4ON, &D5ON, &D2OFF, &D3OFF, &D4OFF, &D5OFF };

Expand Down
94 changes: 94 additions & 0 deletions include/uart/api.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/** \file include/uart/api.h
* This file is for defining a common API for accessing UARTs.
**/

#ifndef UART_API_H
#define UART_API_H

#include "fx2types.h"
#include "stdarg.h"

/**
* \brief Initalizes UART.
* Returns TRUE if initialization is successful.
* \param Rate See uartX_set_baud().
**/
BOOL uartX_init(enum uart_baud rate, ...);

/**
* \brief enum Standard available baud rates.
* All enum values less than 0 are not to be used unless absolutely necessary.
* Enum values greater than 0 are supported.
**/
typedef enum {
BAUD_FASTEST = -2, ///< The fastest BAUD available on the system.
BAUD_ANY = -1, ///< Virtual baud, Most efficient BAUD rate for the UART.
BAUD_INVALID = 0, ///< A divider between actual baud rates and virtual baud rates.
BAUD_2400 = 1, ///< Sets the baud rate to 2400.
BAUD_4800 = 2, ///< Sets the baud rate to 4800.
BAUD_9600 = 3, ///< Sets the baud rate to 9600.
BAUD_19200 = 4, ///< Sets the baud rate to 19200.
BAUD_38400 = 5, ///< Sets the baud rate to 38400.
BAUD_57600 = 6, ///< Sets the baud rate to 57600.
BAUD_115200 = 7 ///< Sets the baud rate to 115200.
} uart_baud;

/**
* \brief Sets the UART baud rate to one of the allowed parameters.
* Possible Baud rates:
* \li 2400
* \li 4800
* \li 9600
* \li 19200
* \li 28800
* \li 38400
* \li 57600
* \li 115200
* Returns TRUE if successful.
**/
BOOL uartX_set_baud(uart_baud rate);

/**
* \brief Returns the baud rate currently being used.
**/
uart_baud uartX_get_baud();

/**
* \brief Transmits data through UART.
* \param c The character to be sent out.
**/

void uartX_tx(char c);

/**
* \brief Returns if the next transmit call will block.
* FALSE - Non Blocking.
* TRUE - Blocking.
**/

BOOL uartX_tx_will_block();

/**
* \brief Returns how many more bytes can be loaded into the buffer.
**/
BYTE uartX_tx_queue_len();

/**
* \brief Receives data through UART.
* Returns one byte at a time from the queue.
**/
char uartX_rx();

/**
* \brief Returns if the next receive call will block.
* FALSE - Non Blocking.
* TRUE - Blocking.
**/
BOOL uartX_rx_will_block();

/**
* \brief Returns count number of bytes present in the buffer.
**/
BYTE uartX_rx_queue_len();

#endif

0 comments on commit e5de956

Please sign in to comment.